Debian / Grub2: Di chuyển phân vùng gốc sang ổ đĩa mới?


30

Có ai có gợi ý về cách di chuyển phân vùng gốc sang ổ đĩa mới và thiết lập grub2 để khởi động trên ổ đĩa đó không? Tôi dường như không có may mắn hướng dẫn grub-mkconfig những gì tôi muốn làm (ví dụ: chroot'int vào root mới của tôi chỉ làm lẫn lộn tất cả các tập lệnh).

Bối cảnh Tôi đang chạy Debian Squeeze trên một NAS công suất thấp không đầu. Thiết lập hiện tại của tôi là /bật sda0/bootbật sde0(thẻ CF): Tôi cần tách riêng /bootsd[a-d]cần thực hiện thao tác quay chậm. Bây giờ tôi đã tìm thấy một đĩa IDE 2,5 "cũ để sử dụng /bao gồm cả /bootcho phép tôi quay tất cả các đĩa lớn xuống.

Những gì tôi đã cố gắng Về cơ bản tôi đã đi

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot

Sau đó tôi đã thử

chroot /mnt/newroot
update-grub

Nhưng điều đó đã thất bại với grub hỏi nếu root được gắn kết. Sau đó, tôi đã thực hiện một nỗ lực nửa vời trong việc thiết lập /mnt/newroot/grub/grub.cfgđể tìm hình ảnh hạt nhân trên sdf5, theo sau là a grub-install --root-directory=/mnt/newroot /dev/sdf. Nhưng điều này chỉ mang lại cho tôi một dấu nhắc cứu hộ khi tôi cố gắng khởi động từ sdf.

Kế hoạch dự phòng của tôi là chỉ cài đặt lại, vì vậy một câu hỏi về phần thưởng (không có dấu kiểm cho cái này): Tôi phải làm gì để có được cấu hình lvm2 và mdadm của mình? Có phải tất cả được lưu trữ trong các hệ thống tập tin (và nó sẽ được tự động phát hiện) hay tôi cần phải tự mình lấy nó?

Giải pháp (nhờ Maciej Piechotka): Như Maciej chỉ ra, tôi cần phải có một chroot thích hợp cho tất cả các công cụ grub hoạt động. Để tham khảo, đây là cách tôi đã làm:

janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot

Tất cả các tệp hiện được sao chép (xem tại đây để thảo luận về các chiến lược sao chép). Sửa lỗi mới etc/fstabđể trỏ đến root mới:

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

Cuối cùng, gắn kết dev, sysprocđến root và chroot mới:

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 .

Chúng tôi hiện đang được chọn để root tương lai chính xác như nó sẽ nhìn. Theo Maciej, chỉ cần gọi là được grub-install, nhưng tôi đã làm một cái update-grubđầu tiên để xem cái được tạo /boot/grub/grub.cfgtrước khi cài đặt bộ nạp khởi động. Tôi không chắc chắn nó sẽ được tự động cập nhật?

root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb

Đăng nội dung /etc/default/grubvà bảng điểm chính xác từ update-grub.
Gilles 'SO- ngừng trở nên xấu xa'

(suy nghĩ sau khi thêm giải pháp): Thực sự có thể vấn đề là tôi đã không cập nhật /etc/fstabtrong chroot(điều này sẽ phù hợp với việc update-grubphàn nàn rằng "\ không được gắn kết"). Tôi đã làm điều này một lần nữa, tôi sẽ thử trước mà không bận tâm đến việc gắn các hệ thống tập tin đặc biệt trong chroot.
Janus

chỉ là một lưu ý: đừng quên ngắt kết nối / mnt / newroot trước khi khởi động lại!
Giacomo Tesio

Dưới đây là hướng dẫn về cách di chuyển phân vùng gốc / vào ổ đĩa nvme mới, trong khi vẫn giữ / home trên hdd. lucasmanual.com/blog/ từ
Lucas

Câu trả lời:


20

Gắn kết các hệ thống tệp cơ bản và sao chép / sửa đổi các tệp trong khi chroot như:

  • / 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 hoạt động với tôi khi cài đặt Grub 2 trong vòm và nhiều lần trên Gentoo. Sau đó, chroot để /path/to/chrootchỉ huy đơn giản là:

grub-install /dev/<boot_disk>

Kể từ lvm2 (và tôi tin madm nhưng tôi chưa sử dụng nó), cấu hình được lưu trữ trên đĩa. Có cấu hình những gì nên đọc để khám phá các thiết bị. Giả sử thiết bị của bạn ở vị trí tiêu chuẩn ( /dev/sd*hoặc /dev/hd*) sẽ không có vấn đề gì.


Tái bút Tôi sẽ không tin tưởng cp đơn giản của hệ thống trực tiếp vì có một số nơi có thể sai:

  • Quên thay đổi /etc/fstabvà các tập tin hữu ích khác
  • Tập tin đã thay đổi trong quá trình truy cập
  • Xử lý rác ( /tmpvv)

Cảm ơn. Vì vậy, về cơ bản, bạn đang nói rằng tôi làm một chroot cẩu thả :) Tôi sẽ thử nó với một chroot thích hợp. cp -axsẽ ổn (có thể sau khi giảm xuống runlevel một người dùng) theo cách cũ này: tldp.org/HOWTO/Hard-Disk-UpTHER/copy.html
Janus

Làm việc một cách quyến rũ! Cảm ơn bạn rất nhiều vì sự giúp đỡ.
Janus

1
@Janus: Tôi sẽ sao chép dữ liệu từ Live distro để ở bên an toàn. Tôi rất vui vì nó đã làm việc.
Maciej Piechotka

Tôi phải làm update-grubtrước đây install-grub.
Aryeh Leib Taurog

3

bạn có thể cài đặt grub từ bản phân phối trực tiếp mà không cần chroot:

grub-install /dev/hda --root-directory=/mnt/guest/

Cảm ơn. Tôi không chắc điều này sẽ hoạt động ở đây: vì tôi hiểu nó, grub-installchỉ cập nhật các tệp hình ảnh grub và ghi MBR: Đặc biệt, grub.cfgkhông được cập nhật. Như tôi đã nhận xét ở trên, việc gắn các thư mục đặc biệt có thể là quá mức cần thiết, nhưng tôi vẫn nghĩ rằng chroot là cách để cập nhật grub.cfgmột cách đơn giản?
Janus

Vâng, điều này cũng không làm việc cho tôi. Bạn phải đi update-grublàm và người đó không có --root-directoryhoặc cái gì đó, không?
Mitar

0

BTW nếu bạn đang thêm một phân vùng (như cửa sổ) mà bạn không muốn viết grub trong phần khởi động, nhưng bạn muốn grub biết về nó khi máy tính khởi động, bạn có thể quét lại các phân vùng và tạo một tệp grub.cfg mới bằng cách sử dụng lệnh grub_mkconfig như sau trong một phiên cuối

cd / boot / grub

sudo cp grub.cfg ./grub.cfg.old

sudo grub_mkconfig -o ./grub.cfg

Bây giờ khi bạn khởi động khỏi phân vùng linux hiện tại của bạn (đã khởi động grub nó) thì bây giờ nó sẽ biết về phân vùng khá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.