Як додати запис меню GRUB2 для завантаження встановленого Ubuntu на USB-накопичувач?


23

Я не запитую, як запустити LiveCD з USB.

У мене є 2 установки Ubuntu, одна на внутрішньому жорсткому диску мого комп'ютера та інша на USB-накопичувачі.

Чи є спосіб додати запис меню GRUB2 (до GRUB на моєму внутрішньому жорсткому диску) для завантаження ОС Ubuntu, яку я встановив на флеш-накопичувач USB, і щоб ця сама запис меню все ще працювала після оновлення ядра Linux на встановлення USB?

Відповіді:


33

Кожен раз, коли ви оновлюєте ядро ​​на зовнішній, ви можете запустити це для оновлення строфи завантаження в grub на внутрішньому диску.

sudo update-grub

Але ви також можете додати строфу завантаження до 40_custom grub2, який завантажує розділ, а не конкретне ядро. Ubuntu встановлює посилання в / (root) для завантаження останньої установки. Прикладіть приклад нижче, якщо це необхідно для вашого диска та перегородки. Завантажувальний диск із grub завжди hd0, але тоді інші диски в порядку BIOS, про який повідомляється, може змінюватися.

Редагувати за допомогою:

gksudo gedit /etc/grub.d/40_custom

потім додайте:

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

Хоча це працює вище, я вважаю, що накопичувач може змінитися під час підключення флешки або будь-якого іншого USB-пристрою. Тому я перетворюю на використання міток.

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

1
Чи є спосіб використовувати UUID розділу, а не /dev/sdb1?
кірі

sudo update-grub працював чудово, дякую!
Сергій Мігдальський

2
як ви повинні зрозуміти, що має бути замість (hd1,1)? звідки ви берете ці цифри, щоб вони підходили? Мені це може знадобитися для встановлення іншої проблеми: askubuntu.com/questions/573502/…
мат

4
Перше число - це накопичувач, про який повідомляє BIOS. Але завантажувальний привід завжди hd0, тому порядок диска може змінюватися. Тоді другий номер - номер розділу. Де sda3 hd0,3, якщо ви завантажуєте з диска, який є sda. Але якщо ви завантажуєтесь із sdb, то це може бути hd1,3. Іноді просто потрібно експериментувати.
Олдфред

sudo update-grub працює і з додаванням записів Windows
superl2

9

Я дізнався, як використовувати UUID накопичувача, корисно, якщо у вас підключено декілька дисків під час завантаження. Подяку Олдфреду за його замітку /vmlinuxі /initrd.imgсимволічні посилання.

Додайте це у файл /etc/grub.d/40_custom , замінивши UUID=XXXX-YYYYUUID розділу (отримати UUID з командою blkid)

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

8
Це, безумовно, не є відповіддю на вищезазначене питання. Ви повинні прийняти відповідь Олдфреда.
Деміс Пальма ツ

1
@kiri: Вважається поганою практикою копіювати чужу відповідь і давати собі за це заслугу. Так, навіть якщо ви додали частину UUID.
Леннарт Ролланд

2

Для завантаження з меню Ubuntu Live USB в меню /etc/grub.d/40_customмає виглядати так ( Замініть DRIVE_UUIDна uuid вашого розділу ):

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
}

Щоб застосувати зміни, виконайте:

sudo update-grub
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.