Cara memindahkan partisi boot dan root ke drive lain

27

Saya memiliki dua drive di komputer saya yang memiliki konfigurasi berikut:

Drive 1: 160GB, /home
Drive 2: 40GB, /boot and /

Sayangnya, drive 2 tampaknya sekarat, karena mencoba menulis ke sana memberi saya kesalahan, dan memeriksa pengaturan SMART menunjukkan keadaan yang menyedihkan.

Saya memiliki banyak ruang di Drive 1, jadi yang ingin saya lakukan adalah memindahkan partisi / dan / boot ke sana, menghapus Drive 2 dari sistem, mengganti Drive 2 dengan drive baru, kemudian membalikkan proses.

Saya membayangkan saya perlu melakukan beberapa pembaruan untuk grub, dan saya perlu memindahkan beberapa hal, tetapi saya cukup bingung bagaimana cara tepatnya mengenai hal ini. Karena ini adalah komputer utama saya, saya ingin berhati-hati untuk tidak mengacaukan semuanya sehingga saya tidak bisa boot.

mlissner
sumber
Inilah yang harus saya lakukan juga. Saya menulis blog dengan instruksi lengkap tentang cara memindahkan partisi root ke / home.
Lucas

Jawaban:

29

Anda harus boot dari live cd. Tambahkan partisi untuk mereka ke disk 1, salin semua konten, dan kemudian gunakan sudo blkiduntuk mendapatkan UUID dari setiap partisi. Di disk 1 baru /, edit / etc / fstab untuk menggunakan UUID baru yang baru saja Anda cari.

Memperbarui GRUB tergantung pada apakah itu GRUB1 atau GRUB2. Jika GRUB1, Anda perlu mengedit /boot/grub/device.map

Jika GRUB2, saya pikir Anda perlu me-mount partisi Anda karena mereka akan berada dalam situasi nyata. Sebagai contoh:

sudo mkdir /media/root
sudo mount /dev/sda1 /media/root
sudo mount /dev/sda2 /media/root/boot
sudo mount /dev/sda3 /media/root/home

(Mengisi apa pun partisi sebenarnya yang Anda salin, tentu saja)

Kemudian ikat mount / proc dan / dev di / media / root:

sudo mount -B /proc /media/root/proc
sudo mount -B /dev /media/root/dev
sudo mount -B /sys /media/root/sys

Sekarang chroot ke drive sehingga Anda dapat memaksa GRUB untuk memperbarui sendiri sesuai dengan tata letak baru:

sudo chroot /media/root
sudo update-grub

Perintah kedua akan membuat satu keluhan (saya lupa apa itu ...), tapi tidak apa-apa untuk diabaikan.

Uji dengan menghapus drive yang buruk. Jika tidak berhasil, bad drive masih bisa mem-boot sistem, tapi saya yakin ini semua langkah yang diperlukan.

maco
sumber
3
FYI kepada siapa pun yang melihat ini hari ini, ini tidak berlaku untuk pengaturan EFI. Anda perlu me-mount /media/root/boot/efi, antara lain.
wjandrea
1
Saya perlu ke sudo grub-install /dev/sdasebelumsudo update-grub
William Mortada
5

Jika Anda langsung mengganti drive, Anda dapat menggunakan dd(mencobanya di server saya beberapa bulan yang lalu, dan itu berfungsi seperti pesona).

Anda juga akan memerlukan CD boot untuk ini.

  1. Mulai boot-CD
  2. Hanya pasang Drive 1
  3. Jalankan dd if=/dev/sdb1 of=/media/drive1/backuproot.img- sdb1 menjadi /partisi root ( ) Anda. Ini akan menyimpan seluruh partisi dalam file.
    • sama untuk /boot
  4. Matikan, ganti disk, hidupkan
  5. Jalankan dd if=/media/drive1/backuproot.img of=/dev/sdb1- tulis kembali.
    • sama untuk /boot

Di atas akan membuat 2 partisi dengan ukuran yang sama persis seperti sebelumnya. Anda mungkin perlu menyesuaikan grub (periksa pos makro).

Jika Anda ingin mengubah ukuran partisi Anda (seperti yang saya lakukan):

  1. Buat 2 Partisi pada drive baru (untuk /dan /boot; ukuran apa pun yang Anda inginkan)
  2. Pasang gambar cadangan: mount /media/drive1/backuproot.img /media/backuproot/
  3. Pasang /partisi kosong :mount /dev/sdb1 /media/sdb1/
  4. Salin kontennya ke partisi baru (saya tidak yakin tentang perintah ini, sangat penting untuk mempertahankan kepemilikan, cp -Rtidak akan melakukannya!) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • sama untuk /boot/

Ini harus dilakukan.

sBlatt
sumber
Ternyata drive "40GB" baru yang saya coba instal lebih kecil daripada drive "40GB" saya saat ini. Saya memiliki keduanya terhubung, dan saya boot ke liveCD. Apakah ada cara mudah untuk hanya berpindah dari yang lama ke yang baru, dan menyebutnya kesepakatan yang sudah selesai?
mlissner
Sebenarnya, saya menyortir pertanyaan ini. Partisi yang terlalu besar adalah partisi ext4, jadi saya mem-boot liveCD, dan menggunakan gparted untuk menyusutkannya sedikit.
mlissner
4

Solusi terakhir saya untuk ini adalah kombinasi dari sejumlah teknik:

  1. Saya menghubungkan drive yang sekarat dan penggantinya ke komputer secara bersamaan.
  2. Drive baru lebih kecil dari yang lama, jadi saya menyusut partisi pada yang lama menggunakan GParted.
  3. Setelah melakukan itu, saya menyalin partisi pada drive lama, dan menempelkannya pada yang baru (juga menggunakan GParted).
  4. Selanjutnya, saya menambahkan flag boot ke partisi yang benar pada drive baru, jadi itu secara efektif merupakan cermin dari drive lama.

Ini semua bekerja dengan baik, tetapi saya perlu memperbarui grub2 sesuai instruksi di sini .

Setelah semua ini dilakukan, semuanya tampak berhasil.

mlissner
sumber