Làm cách nào để thêm mục menu GRUB2 để khởi động Ubuntu đã cài đặt trên ổ USB?


23

Tôi không hỏi làm thế nào để khởi động LiveCD từ USB.

Tôi có 2 cài đặt Ubuntu, một trên ổ cứng bên trong máy tính của tôi và một trên ổ USB.

Có cách nào để thêm mục nhập menu GRUB2 (vào GRUB trên ổ cứng bên trong của tôi) để khởi động hệ điều hành Ubuntu mà tôi đã cài đặt vào ổ flash USB có cùng mục menu này vẫn hoạt động sau khi tôi đã nâng cấp nhân Linux cài đặt USB?

Câu trả lời:


33

Mỗi khi bạn nâng cấp kernel bên ngoài, bạn có thể chạy nó để cập nhật stanza boot trong grub trên ổ đĩa trong.

sudo update-grub

Nhưng bạn cũng có thể thêm một khổ khởi động vào 40_custom của grub2 để khởi động phân vùng, không phải kernel cụ thể. Ubuntu cài đặt các liên kết trong / (root) để khởi động cài đặt gần đây nhất. Điều chỉnh ví dụ dưới đây nếu cần thiết cho ổ đĩa & phân vùng của bạn. Ổ đĩa khởi động với grub luôn là hd0, nhưng sau đó các ổ đĩa khác theo thứ tự BIOS được báo cáo có thể thay đổi.

Chỉnh sửa bằng:

gksudo gedit /etc/grub.d/40_custom

sau đó, thêm:

menuentry "Install on sdb1" {
    set root=(hd1,1)
    linux /vmlinuz root=/dev/sdb1 ro quiet splash
    initrd /initrd.img
}

Mặc dù ở trên hoạt động, tôi thấy ổ đĩa có thể thay đổi khi cắm vào ổ flash hoặc bất kỳ thiết bị USB nào khác. Vì vậy, tôi đang chuyển đổi để sử dụng nhãn.

menuentry "Cosmic 18.10 on sdb12 test" {
    search --set=root --label cosmic_b --hint hd2,gpt12
    configfile /boot/grub/grub.cfg 
}

1
Có cách nào để sử dụng UUID của phân vùng hơn /dev/sdb1không?
kiri

sudo update-grub đã làm việc rất tốt, cảm ơn!
Sergiy Migdalskiy

2
Làm thế nào bạn nên tìm những gì nên ở vị trí của (hd1,1)? bạn lấy những con số này từ đâu để chúng phù hợp? Tôi có thể cần điều này để cài đặt thẳng vấn đề khác nhau: askubuntu.com/questions/573502/...
mờ

4
Số đầu tiên là ổ đĩa được báo cáo bởi BIOS. Nhưng ổ đĩa khởi động luôn là hd0, vì vậy thứ tự ổ đĩa có thể thay đổi. Sau đó, số thứ hai là số phân vùng. Trong đó sda3 là hd0,3 nếu bạn khởi động từ ổ đĩa đó là sda. Nhưng nếu bạn khởi động từ sdb, thì đó có thể là hd1,3. Đôi khi bạn chỉ cần thử nghiệm.
oldfred

sudo update-grub cũng hoạt động với việc thêm các mục windows
superl2

9

Tôi đã tìm ra cách sử dụng UUID của ổ đĩa, rất hữu ích nếu bạn có nhiều ổ cắm vào lúc khởi động. Tín dụng cho oldfred cho ghi chú của mình về /vmlinux/initrd.imgliên kết tượng trưng.

Thêm phần này vào tệp /etc/grub.d/40_custom, thay thế UUID=XXXX-YYYYbằng phân vùng UUID (nhận UUID bằng lệnh blkid)

menuentry "Boot from USB Drive" {
    set root=UUID=XXXX-YYYY
    linux /vmlinuz root=UUID=XXXX-YYYY ro quiet splash
    initrd /initrd.img
}

8
Đây chắc chắn không phải là câu trả lời cho câu hỏi trên. Bạn nên chấp nhận trả lời của oldfred.
Demis Palma

1
@kiri: Nó được coi là thực hành xấu để sao chép câu trả lời của người khác và tự công nhận cho nó. Có, ngay cả khi bạn đã thêm phần UUID.
Lennart Rolland

2

Để khởi động từ Ubuntu Live USB, mục nhập trong /etc/grub.d/40_customsẽ giống như thế ( Thay thế DRIVE_UUIDbằng uuid của phân vùng của bạn ):

menuentry "Boot from LIVE USB Drive" {
   search --set=root --fs-uuid DRIVE_UUID
   linux ($root)/casper/vmlinuz boot=casper quiet splash --
   initrd ($root)/casper/initrd.lz
}

Để áp dụng thay đổi chạy:

sudo update-grub
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.