Qualcuno ha un suggerimento su come spostare la partizione di root su una nuova unità e impostare grub2 per l'avvio su quella unità? Sembra che non abbia fortuna nel dare istruzioni a grub-mkconfig su cosa voglio fare (es. 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 è /
accesa sda0
e /boot
accesa sde0
(una scheda CF): avevo bisogno del separato /boot
perché ho sd[a-d]
bisogno di fare un spin-up ritardato. Ora ho trovato un vecchio disco IDE da 2,5 "da utilizzare come /
incluso /boot
per permettermi di far girare tutti i dischi grandi.
Quello che ho provato Fondamentalmente 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ò fallì con grub che chiedeva se root fosse montato. Poi ho fatto un tentativo sincero di impostare /mnt/newroot/grub/grub.cfg
per trovare l'immagine del kernel sdf5
, seguito da un grub-install --root-directory=/mnt/newroot /dev/sdf
. Ma questo mi ha appena lanciato un prompt di salvataggio di grub quando ho provato a fare il boot sdf
.
Il mio piano di backup è semplicemente reinstallare, quindi una domanda bonus (nessun segno di spunta per questo): cosa devo fare per ottenere la configurazione di lvm2 e mdadm? È tutto memorizzato nei filesystem (e verrà scoperto automaticamente) o devo occuparmene da solo?
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:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/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
in modo che punti alla nuova radice:
janus@nasguld:/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:
janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
janus@nasguld:/mnt/newroot$ sudo chroot .
Ora siamo passati alla radice futura esattamente come apparirà. Secondo Maciej, dovrebbe essere ok solo per chiamare grub-install
, ma ho fatto una update-grub
prima occhiata al generato /boot/grub/grub.cfg
prima di installare il bootloader. Non sono sicuro che verrà aggiornato automaticamente?
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/fstab
in chroot
(questo sarebbe coerente con il update-grub
lamentarsi che "\ non è montato"). Se dovessi farlo di nuovo, proverei prima senza preoccuparmi di montare i file system speciali nel chroot.
/etc/default/grub
e l'esatta trascrizione diupdate-grub
.