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/default/grub
, dan transkrip yang tepat dariupdate-grub
./etc/fstab
dalamchroot
(ini akan konsisten denganupdate-grub
mengeluh bahwa "\ tidak dipasang"). Jika saya melakukan ini lagi, saya akan coba dulu tanpa repot me-mount sistem file khusus di chroot.Jawaban:
Pasang sistem file dasar dan salin / modifikasi file sambil chroot seperti:
mount -o bind /dev/ /path/to/chroot/dev
)mount -t proc none /path/to/chroot/proc
)mount -t sysfs none /path/to/chroot/sys
)IIRC yang berfungsi untuk saya saat menginstal Grub 2 di arch dan berkali-kali di Gentoo. Kemudian setelah
/path/to/chroot
perintah chroot cukup:Pada lvm2 (dan saya percaya madm tapi saya belum menggunakannya) konfigurasi disimpan pada disk. Ada konfigurasi apa yang harus dibaca untuk menemukan perangkat. Dengan asumsi perangkat Anda berada di lokasi standar (
/dev/sd*
atau/dev/hd*
) seharusnya tidak ada masalah.PS. Saya tidak akan mempercayai cp sederhana dari sistem hidup karena ada beberapa tempat yang salah:
/etc/fstab
dan file berguna lainnya/tmp
dll.)sumber
cp -ax
harus baik-baik saja (mungkin setelah turun ke runlevel pengguna tunggal) sesuai dengan howto lama ini: tldp.org/HOWTO/Hard-Disk-Upgrade/copy.htmlupdate-grub
sebelumnyainstall-grub
.Anda dapat menginstal grub dari distro langsung tanpa chroot:
sumber
grub-install
hanya memperbarui file gambar grub dan menulis MBR: Secara khusus,grub.cfg
tidak diperbarui. Seperti yang saya komentari di atas, pemasangan dir khusus mungkin berlebihan, tetapi saya masih berpikir chroot adalah cara untuk memperbaruigrub.cfg
dengan cara yang sederhana?update-grub
bekerja dan yang tidak Anda miliki--root-directory
atau tidak, tidak?BTW jika Anda menambahkan partisi (seperti windows) di mana Anda tidak ingin grub menulis di sektor boot, tetapi Anda ingin grub tahu tentang hal itu ketika komputer Anda boot, Anda dapat memindai ulang partisi dan menghasilkan file grub.cfg baru dengan menggunakan perintah grub_mkconfig seperti berikut dalam sesi terminal
Sekarang ketika Anda mem-boot dari partisi linux Anda saat ini (yang telah mem-boot grub) sekarang akan tahu tentang partisi lain.
sumber