Cách di chuyển phân vùng khởi động và root sang ổ đĩa khác


27

Tôi có hai ổ đĩa trên máy tính có cấu hình như sau:

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

Thật không may, ổ đĩa 2 dường như sắp chết, vì cố gắng ghi vào nó đang gây ra lỗi cho tôi và kiểm tra cài đặt SMART cho thấy tình trạng đáng buồn.

Tôi có nhiều không gian trên Drive 1, vì vậy điều tôi muốn làm là di chuyển phân vùng / và / boot sang nó, xóa Drive 2 khỏi hệ thống, thay thế Drive 2 bằng một ổ đĩa mới, sau đó đảo ngược quá trình.

Tôi tưởng tượng rằng tôi cần thực hiện một số cập nhật cho grub, và tôi cần di chuyển một số thứ xung quanh, nhưng tôi khá bối rối làm thế nào để thực hiện chính xác điều này. Vì đây là máy tính chính của tôi, tôi muốn cẩn thận không làm hỏng mọi thứ để tôi không thể khởi động.


Đây chính xác là những gì tôi đã phải làm là tốt. Tôi đã viết một blog với hướng dẫn đầy đủ về cách di chuyển phân vùng gốc / đến / nhà.
Lucas

Câu trả lời:


29

Bạn sẽ cần phải khởi động từ một đĩa CD trực tiếp. Thêm phân vùng cho chúng vào đĩa 1, sao chép tất cả nội dung qua, sau đó sử dụng sudo blkidđể lấy UUID của mỗi phân vùng. Trên đĩa 1 mới /, chỉnh sửa / etc / fstab để sử dụng các UUID mới mà bạn vừa tra cứu.

Cập nhật GRUB tùy thuộc vào việc GRUB1 hay GRUB2. Nếu GRUB1, bạn cần chỉnh sửa /boot/grub/device.map

Nếu GRUB2, tôi nghĩ bạn cần gắn kết các phân vùng của mình vì chúng sẽ ở trong một tình huống thực tế. Ví dụ:

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

(Tất nhiên là điền vào bất kỳ phân vùng thực tế nào mà bạn đã sao chép mọi thứ)

Sau đó liên kết mount / Proc và / dev trong / media / root:

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

Bây giờ hãy chroot vào ổ đĩa để bạn có thể buộc GRUB tự cập nhật theo bố cục mới:

sudo chroot /media/root
sudo update-grub

Lệnh thứ hai sẽ đưa ra một khiếu nại (tôi quên nó là gì ...), nhưng không thể bỏ qua.

Kiểm tra nó bằng cách loại bỏ các ổ đĩa xấu. Nếu nó không hoạt động, ổ đĩa xấu vẫn có thể khởi động hệ thống, nhưng tôi tin rằng đây là tất cả các bước cần thiết.


3
FYI cho bất cứ ai xem điều này những ngày này, điều này không áp dụng cho các thiết lập EFI. Bạn cần phải gắn kết /media/root/boot/efi, trong số những thứ khác.
wjandrea

1
Tôi cần phải đến sudo grub-install /dev/sdatrướcsudo update-grub
William Mortada

5

Nếu bạn thay thế ổ đĩa ngay lập tức, bạn có thể sử dụng dd(đã thử nó trên máy chủ của tôi vài tháng trước và nó hoạt động như một bùa mê).

Bạn cũng sẽ cần một đĩa CD khởi động cho việc này.

  1. Bắt đầu boot-CD
  2. Chỉ gắn ổ 1
  3. Chạy dd if=/dev/sdb1 of=/media/drive1/backuproot.img- sdb1 là /phân vùng root ( ) của bạn . Điều này sẽ lưu toàn bộ phân vùng trong một tập tin.
    • giống với /boot
  4. Tắt nguồn, thay đĩa, bật nguồn
  5. Chạy dd if=/media/drive1/backuproot.img of=/dev/sdb1- viết lại.
    • giống với /boot

Ở trên sẽ tạo 2 phân vùng với kích thước chính xác như trước đây. Bạn có thể cần điều chỉnh grub (kiểm tra bài macos).

Nếu bạn muốn thay đổi kích thước phân vùng của mình (như tôi đã làm):

  1. Tạo 2 phân vùng trên ổ đĩa mới (cho //boot; kích thước bất cứ thứ gì bạn muốn)
  2. Gắn ảnh sao lưu: mount /media/drive1/backuproot.img /media/backuproot/
  3. Gắn kết /phân vùng trống :mount /dev/sdb1 /media/sdb1/
  4. Sao chép nội dung của nó vào phân vùng mới (tôi không chắc về lệnh này, điều thực sự quan trọng là giữ gìn quyền sở hữu, cp -Rsẽ không làm điều đó!) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • giống với /boot/

Điều này nên làm điều đó.


Hóa ra ổ đĩa "40 GB" mới mà tôi đang cố cài đặt nhỏ hơn ổ "40 GB" hiện tại của tôi. Tôi có cả hai kết nối và tôi đã khởi động vào một liveCD. Có một cách dễ dàng để chỉ dd từ cái cũ sang cái mới, và gọi nó là một thỏa thuận được thực hiện?
mlissner

Trên thực tế, tôi đã sắp xếp câu hỏi này. Phân vùng quá lớn là phân vùng ext4, vì vậy tôi đã khởi động một liveCD và sử dụng gparted để thu nhỏ nó một chút.
mlissner

4

Giải pháp cuối cùng của tôi cho vấn đề này là sự kết hợp của một số kỹ thuật:

  1. Tôi kết nối ổ đĩa chết và thay thế nó vào máy tính cùng một lúc.
  2. Ổ đĩa mới nhỏ hơn ổ đĩa cũ, vì vậy tôi đã thu nhỏ các phân vùng trên ổ đĩa cũ bằng GParted.
  3. Sau khi làm điều đó, tôi đã sao chép các phân vùng trên ổ đĩa cũ và dán chúng vào ổ đĩa mới (cũng sử dụng GParted).
  4. Tiếp theo, tôi đã thêm cờ khởi động vào phân vùng chính xác trên ổ đĩa mới, vì vậy nó thực sự là một tấm gương của ổ đĩa cũ.

Tất cả đều hoạt động tốt, nhưng tôi cần cập nhật grub2 theo hướng dẫn ở đây .

Sau khi tất cả điều này đã được thực hiện, mọi thứ dường như làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.