Qualcuno ha un suggerimento su come spostare la partizione di root su una nuova unità e configurare grub2 per l'avvio su quell'unità? Sembra che non abbia fortuna a istruire grub-mkconfig su cosa voglio fare (ad esempio chroot'int nella mia nuova radice confonde solo tutti gli script).
Sfondo Sto eseguendo Debian Squeeze su un NAS a bassa potenza senza testa. La mia configurazione attuale è /
su sda0
e /boot
su sde0
(una scheda CF):avevo bisogno del /boot
separato perché sd[a-d]
bisogno di fare uno spin-up ritardato. Ora ho trovato un vecchio disco IDE da 2,5″ da usare come /
incluso /boot
per permettermi di far girare tutti i dischi grandi.
Quello che ho provato Fondamentalmente ci sono andato
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Poi ho provato
chroot /mnt/newroot
update-grub
Ma ciò non è riuscito con grub che ha chiesto se root fosse stato montato.
Poi ho fatto un tentativo poco convinto di impostare /mnt/newroot/grub/grub.cfg
per trovare l'immagine del kernel su sdf5
, seguito da un grub-install --root-directory=/mnt/newroot /dev/sdf
. Ma questo mi ha appena ottenuto un prompt di salvataggio di grub quando ho provato ad avviare da sdf
.
Il mio piano di backup è semplicemente reinstallare, quindi una domanda bonus (nessun segno di spunta per questo):cosa devo fare per ottenere la mia configurazione lvm2 e mdadm? È tutto memorizzato nei filesystem (e verrà rilevato automaticamente) o devo prenderlo io stesso?
Soluzione (grazie a Maciej Piechotka):Come sottolinea Maciej, ho bisogno di un chroot adeguato per far funzionare tutti gli strumenti di grub. Per riferimento, ecco come l'ho fatto:
[email protected]:/mnt/newroot$ sudo cp -ax / /mnt/newroot
[email protected]:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Tutti i file sono ora copiati (vedi qui per una discussione sulle strategie di copia). Correggi il nuovo etc/fstab
per puntare a una nuova radice:
[email protected]:/mnt/newroot$ diff -u etc/fstab.old etc/fstab
-UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 / ext3 errors=remount-ro 0 1
-UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults 0 2
+UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 / ext3 noatime,errors=remount-ro 0 1
Infine, monta dev
,sys
e proc
alla nuova radice e chroot:
[email protected]:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
[email protected]:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
[email protected]:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
[email protected]:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
[email protected]:/mnt/newroot$ sudo chroot .
Ora siamo chroot alla radice futura esattamente come apparirà. Secondo Maciej, dovrebbe essere ok chiamare semplicemente grub-install
, ma ho eseguito un update-grub
per prima cosa dare un'occhiata al /boot/grub/grub.cfg
generato prima di installare il bootloader. Non sono sicuro che verrà aggiornato automaticamente?
[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
Risposta accettata:
Monta i filesystem di base e copia/modifica i file durante il chroot come:
- /dev (
mount -o bind /dev/ /path/to/chroot/dev
) - /proc (
mount -t proc none /path/to/chroot/proc
) - /sys (
mount -t sysfs none /path/to/chroot/sys
)
IIRC che ha funzionato per me durante l'installazione di Grub 2 in arch e numerose volte su Gentoo. Quindi dopo chroot su /path/to/chroot
il comando era semplicemente:
grub-install /dev/<boot_disk>
A partire da lvm2 (e credo matto ma non l'ho usato) la configurazione è memorizzata su disco. C'è una configurazione che dovrebbe essere letta per scoprire i dispositivi. Supponendo che i tuoi dispositivi si trovino in posizioni standard (/dev/sd*
o /dev/hd*
) non dovrebbero esserci problemi.
PS. Non mi fiderei del semplice cp del sistema live in quanto ci sono diversi posti in cui può andare storto:
- Dimenticato di modificare
/etc/fstab
e altri file utili - File modificati durante l'accesso
- Fare fronte all'immondizia (
/tmp
ecc.)