Adakah yang punya saran tentang 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 berdaya rendah tanpa kepala. Pengaturan saya saat ini adalah /
di sda0
dan /boot
di sde0
(kartu CF):Saya membutuhkan /boot
yang terpisah karena sd[a-d]
perlu melakukan spin-up tertunda. Sekarang saya telah menemukan disk IDE 2,5″ lama untuk digunakan sebagai /
termasuk /boot
untuk memungkinkan saya memutar semua disk besar.
Yang telah 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 menanyakan apakah root sudah terpasang.
Kemudian saya melakukan upaya setengah hati untuk menyiapkan /mnt/newroot/grub/grub.cfg
untuk menemukan gambar kernel di sdf5
, diikuti oleh grub-install --root-directory=/mnt/newroot /dev/sdf
. Tapi ini baru saja memberi saya prompt penyelamatan grub ketika saya mencoba mem-boot dari sdf
.
Rencana cadangan saya adalah menginstal ulang saja, 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 akan ditemukan secara otomatis), atau apakah saya perlu mengambilnya sendiri?
Solusi (terima kasih kepada Maciej Piechotka):Seperti yang ditunjukkan Maciej, saya perlu melakukan chroot yang tepat agar semua alat grub berfungsi. Untuk referensi, ini adalah bagaimana saya melakukannya:
[email protected]:/mnt/newroot$ sudo cp -ax / /mnt/newroot
[email protected]:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Semua file sekarang disalin (lihat di sini untuk diskusi tentang strategi penyalinan). Perbaiki etc/fstab
yang baru untuk menunjuk ke root baru:
[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
Terakhir, pasang dev
,sys
dan proc
ke root dan chroot baru:
[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 .
Kami sekarang di-chroot ke root masa depan persis seperti yang akan terlihat. Menurut Maciej, sebaiknya panggil saja grub-install
, tapi saya melakukan update-grub
pertama untuk melihat /boot/grub/grub.cfg
yang dihasilkan sebelum menginstal bootloader. Saya tidak yakin itu akan diperbarui secara otomatis?
[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
Jawaban yang Diterima:
Pasang sistem file dasar dan salin/modifikasi file saat melakukan chroot seperti:
- /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 yang bekerja untuk saya saat menginstal Grub 2 di arch dan berkali-kali di Gentoo. Kemudian setelah chroot ke /path/to/chroot
perintahnya sederhana:
grub-install /dev/<boot_disk>
Pada lvm2 (dan saya percaya madm tetapi saya belum menggunakannya) konfigurasi disimpan di 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 live karena ada beberapa tempat yang bisa salah:
- Lupa mengubah
/etc/fstab
dan file berguna lainnya - File diubah selama akses
- Mengatasi sampah (
/tmp
dll.)