Adakah yang punya saran untuk cara memindahkan partisi root ke drive baru dan mengatur grub2 untuk boot di drive itu? Sepertinya saya tidak beruntung menginstruksikan grub-mkconfig apa yang ingin saya lakukan (misalnya chroot'int ke root baru saya hanya membingungkan semua skrip).
Latar Belakang Saya menjalankan Debian Squeeze pada NAS berkekuatan rendah tanpa kepala. Pengaturan saya saat ini /
aktif sda0
dan /boot
aktif sde0
(kartu CF): Saya perlu terpisah /boot
karena sd[a-d]
perlu melakukan spin-up yang tertunda. Sekarang saya telah menemukan disk 2,5 "IDE lama untuk digunakan sebagai /
termasuk /boot
untuk memungkinkan saya untuk memutar semua disk besar ke bawah.
Apa yang saya coba Pada dasarnya saya pergi
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Kemudian saya mencoba
chroot /mnt/newroot
update-grub
Tapi itu gagal dengan grub yang menanyakan apakah root sudah di-mount. Kemudian saya melakukan upaya setengah hati dalam pengaturan /mnt/newroot/grub/grub.cfg
untuk menemukan kernel image aktif sdf5
, diikuti oleh a grub-install --root-directory=/mnt/newroot /dev/sdf
. Tapi ini baru saja membuat saya merasa tidak aman ketika saya mencoba booting sdf
.
Paket cadangan saya hanya menginstal ulang, jadi pertanyaan bonus (tidak ada tanda centang untuk yang ini): Apa yang harus saya lakukan untuk mendapatkan konfigurasi lvm2 dan mdadm saya? Apakah semuanya disimpan dalam sistem file (dan apakah akan secara otomatis ditemukan), atau apakah saya harus mengambilnya sendiri?
Solusi (terima kasih kepada Maciej Piechotka): Seperti yang ditunjukkan Maciej, saya perlu melakukan chroot yang tepat agar semua alat grub bekerja. Untuk referensi, ini adalah bagaimana saya melakukannya:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Semua file sekarang disalin (lihat di sini untuk diskusi tentang strategi salin). Perbaiki yang baru etc/fstab
untuk menunjuk ke root baru:
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
Akhirnya, mount dev
, sys
dan proc
ke root dan chroot yang baru:
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 .
Kami sekarang chroot ke root masa depan persis seperti yang akan terlihat. Menurut Maciej, seharusnya tidak apa-apa untuk hanya menelepon grub-install
, tapi saya melakukan yang update-grub
pertama untuk melihat yang dihasilkan /boot/grub/grub.cfg
sebelum menginstal bootloader. Saya tidak yakin ini akan diperbarui secara otomatis?
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/fstab
dalam chroot
(ini akan konsisten dengan update-grub
mengeluh bahwa "\ tidak dipasang"). Jika saya melakukan ini lagi, saya akan coba dulu tanpa repot me-mount sistem file khusus di chroot.
/etc/default/grub
, dan transkrip yang tepat dariupdate-grub
.