Как добавить пункт меню GRUB2 для загрузки установленной Ubuntu на USB-накопитель?

Я не спрашиваю, как загрузить LiveCD с USB.

У меня есть 2 установки Ubuntu, одна на внутреннем жестком диске моего компьютера, а другая на USB-накопителе.

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

Каждый раз, когда вы обновляете ядро на внешнем диске, вы можете запустить это, чтобы обновить загрузочную строку в 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 }

Я узнал, как использовать UUID диска, что полезно, если у вас подключено несколько дисков во время загрузки. Спасибо Олдфреду за его заметку о /vmlinux и /initrd.img символические ссылки.

Добавьте это в файл /etc/grub.d/40_custom, заменяющий UUID=XXXX-YYYY с UUID раздела (получить UUID с помощью команды blkid)

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

Для загрузки с 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