Làm cách nào để sửa UUID trong Grub sau khi khôi phục từ máy khác?


22

Tôi muốn khôi phục bản sao lưu tar hoàn chỉnh của Ubuntu 12.04 với tất cả các tùy chỉnh, tài liệu, phần mềm đã cài đặt, v.v. của tôi cho một máy khác.

Tôi đã thực hiện sao lưu với các lệnh sau:

sudo su
cd /
tar cvpzf ububackup.tgz --exclude=/ububackup.tgz --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/mnt --exclude=/tmp --exclude=/media /

Trên máy tính mới, tôi đã cài đặt Ubuntu 12.04 mới, di chuyển tệp sao lưu sang tệp đó và sau đó được khôi phục với tệp sao lưu như sau:

tar xvpfz backup.tgz -C /

Như mong đợi (xem câu trả lời của Mike Dù cho câu hỏi này: Sao chép bản phân phối Ubuntu với tất cả các cài đặt từ một máy tính sang một máy tính khác ) điều này đã phá vỡ. Khi tôi bật máy tính, tôi gặp lỗi:

error: no such device: ...

press any key to continue ...

Tôi tin rằng lý do khiến Grub bị hỏng là vì UUID mà nó đang tìm kiếm các trận đấu trên ổ cứng cũ không phải trên ổ cứng cho máy tính.

Làm cách nào tôi có thể sửa lỗi grub của mình để nhận ra ổ cứng mới? Tôi đã tìm kiếm trực tuyến để được trợ giúp "Khắc phục GRUB UUID" nhưng các bước có vẻ đã lỗi thời hoặc phức tạp. Phản hồi từ Mike tôi liên kết đến ở trên cho tôi hy vọng rằng có một cách khá đơn giản để sửa chữa điều này.


1
Tại sao bạn không sử dụng clonezilla (clonezilla.org) để tạo ảnh chụp nhanh máy tính cũ của bạn và khôi phục nó trên máy tính mới? Tôi nghĩ rằng nó sẽ thực sự dễ dàng hơn bởi vì bạn dường như muốn giữ hoàn toàn mọi thứ như hiện tại. Mặt khác, tạo bản sao lưu (/ home, / etc, / usr / local, / var) và khôi phục dữ liệu và các tùy chỉnh của bạn, ngoại trừ phần mềm cũng thực sự dễ dàng ... Để giải quyết vấn đề hiện tại của bạn, bạn sẽ phải thay đổi UUID (s) trong / etc / fstab và /boot/grub/menu.lst. Bạn có thể sử dụng đĩa CD cài đặt Ubuntu để lấy UUID (gparted hoặc dòng lệnh] và thực hiện các thay đổi.
Golboth

Câu trả lời:


19

Để giải quyết vấn đề hiện tại của bạn, bạn sẽ phải thay đổi (các) UUID trong "/ etc / fstab" và "/boot/grub/grub.cfg" (rất khó).

Bạn có thể sử dụng CD cài đặt Ubuntu để lấy UUID (g) với gparted (bạn chỉ cần nhấp chuột phải vào phân vùng mà bạn muốn lấy UUID và nhấp vào "Thông tin", sau đó chọn UUID và sao chép nó bằng CTRL + C) hoặc dòng lệnh ( sudo blkid).

Sau đó, bạn phải chỉnh sửa "/ etc / fstab" trên âm lượng phù hợp với gedit, nano hoặc loại khác.

Trong một thiết bị đầu cuối, gõ:

gksudo gedit /etc/fstab

và thay thế các UUID cũ bằng các UUID mới.

QUAN TRỌNG: Tất nhiên, nếu bạn sử dụng CD khởi động để làm điều đó, bạn sẽ phải thêm "/ media / xxxxx" trước "/ etc / fstab": "/ media / xxxxx / etc / fstab". Bạn cũng có thể sử dụng gksudo geditvà mở tệp để tự chỉnh sửa.

CẢNH BÁO: Sửa đổi "/boot/grub/grub.cfg" là rất khó. Nó thường được tạo ra bằng lệnh sudo update-grub.

Thay thế UUID cũ bằng UUID mới trong "/boot/grub/grub.cfg" bằng cách nhập thông tin sau vào thiết bị đầu cuối:

gksudo gedit /boot/grub/grub.cfg

QUAN TRỌNG: Tất nhiên, nếu bạn sử dụng CD khởi động để làm điều đó, bạn sẽ phải thêm "/ media / xxxxx" trước "/boot/grub/grub.cfg": "/ media / xxxxx / boot / grub / grub. cfg ". Bạn cũng có thể sử dụng gksudo geditvà mở tệp để tự chỉnh sửa.

Nếu bạn sử dụng giải pháp phức tạp, tôi khuyên bạn nên khởi chạy sudo update-grubmột khi bạn đã khởi động hệ thống thành công.

Một cách đơn giản nhưng đơn giản để cấu hình lại grub đúng cách có thể là sử dụng đĩa sửa chữa khởi động như "Boot-Repair-Disk": http://sourceforge.net/p/boot-repair-cd/home/Home/

Tôi hy vọng rằng điều này sẽ giúp bạn giải quyết vấn đề của bạn.

Tuy nhiên, bạn có thể cân nhắc sử dụng Clonezilla để sao chép máy tính cũ trên máy tính mới như được nêu trong nhận xét của tôi.


Cảm ơn Golboth. Tôi đã kết thúc bằng cách sử dụng đề nghị của bạn về việc sử dụng đĩa sửa chữa khởi động và điều đó đã làm việc.
snowguy

xin lưu ý rằng clonezilla có thể không thực sự khắc phục điều này. tôi vừa sao chép toàn bộ hdd của mình (thông qua clonezilla) vào ổ SSD và có cùng UUID cho hdd và SSD, cuối cùng thay đổi uuid bằng tay trên ssd và sau đó trong các tệp được đề cập ở trên trên ssd vẫn có hdd hệ điều hành khởi động có thể
Dennis Nolte

3

Có lẽ điều này có nghĩa là grub bắt đầu và hiển thị một tùy chọn để khởi động lên Ubuntu nhưng khi bạn chọn nó không khởi động?

Có hai lựa chọn, tôi nghĩ:

  1. Sử dụng trình chỉnh sửa dòng GRUB để sửa đổi tùy chọn khởi động linux để tải chính xác linux (và sau đó chạy grub-install làm root để đặt cấu hình chính xác vĩnh viễn).
  2. Khởi động từ thanh USB Ubuntu, gắn phân vùng đĩa Ubuntu, chroot vào nó và sau đó chạy grub-install.

Trường hợp đầu tiên sẽ dễ dàng hơn nếu bạn chỉ có Ubuntu và chỉ có một đĩa cứng duy nhất, trong trường hợp đó chọn tùy chọn "Khôi phục Ubuntu" và nhấn "e" để chỉnh sửa:

Mục nhập sẽ trông giống như:

insmod gzio
insmod part_msdos
insmod ext2
set root=('hd0,msdos0')
search --no-floppy --fs-uuid --set=root XXXXXX
linux /boot/vmlinuz-YYYYY root=UUID=XXXXXX ro recovery nomodeset
initrd /boot/initrd.img-YYYYY

Xóa dòng "tìm kiếm" và thay thế "root = UUID = XXXXX" trong dòng "linux" bằng "root = / dev / sda1". Hãy thử và khởi động nó và hy vọng sau một thời gian ngắn, nó sẽ cung cấp cho bạn menu khôi phục Ubuntu, có tùy chọn grub, nên cài đặt lại grub đúng cách.

Mặt khác, hoặc nếu bạn không muốn gây rối trực tiếp với grub (cần cảnh báo về sức khỏe, hãy sử dụng thẻ CD / USB như được ghi lại trong https://help.ubfox.com/community/Grub2/Installing#Reinstalling_GRUB_2


FYI, khi tôi bắt đầu, tôi không thấy tùy chọn khởi động grub (có thể vì nó chỉ khởi động trực tiếp vào Ubuntu vì đây là HĐH duy nhất). Trong mọi trường hợp tôi đánh giá cao sự giúp đỡ của bạn. Tôi đã kết thúc việc tạo ra một đĩa sửa chữa khởi động.
snowguy

Cảm ơn rất nhiều! Câu trả lời của bạn đã cứu tôi khỏi một kết cục tồi tệ, khi tôi dại dột thay đổi UUID của fstab của mình và Ubuntu không còn có thể bắt đầu!
reexmonkey

0

Trong trường hợp của tôi, UUID mà grub đã cài đặt khác với UUID ( sudo blkid) hiện tại của tôi cho phân vùng Windows của tôi (được xác nhận trong grub.cfg). Tôi đã thử các phương pháp khác nhau không thành công. Cuối cùng tôi đã gắn phân vùng Windows với trình quản lý tệp và chạy update-grublại và UUID đã được cập nhật thành công trong grub.cfg.


Chương trình được gọi update-grubvà không grub-update. Điều này không thoát khỏi rõ ràng vì các lệnh grub nhất bắt đầu bằng grub-....
Fa11enAngel

0

Những gì tôi đã làm thay vì chỉnh sửa fstab và grub:

  1. Tôi đã sao lưu các tệp đó trên bản cài đặt mới của ubfox ( tar -cvf /somedir/boot.tar /etc/fstab /boot/grub/grub.cfg)
  2. Đã khôi phục từ bản sao lưu ( tar -xvpf /mnt/remotebk/full.tar)
  3. sao chép tập tin fstab được khôi phục ( cp /etc/fstab /somedir/fstab.restored)
  4. khôi phục tập tin khởi động cài đặt mới của tôi ( tar -xvpf /somedir/boot.tar -C /)
  5. Khởi động lại và nó hoạt động.

Tôi đang sử dụng máy ảo vmware, tôi đã thực hiện quá trình này để di chuyển một máy chủ linux từ máy chủ này sang máy chủ 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.