web-dev-qa-db-ja.com

USBドライブにインストールされたUbuntuをブートするためのGRUB2メニューエントリを追加する方法

USBからLiveCDを起動する方法を尋ねているのではありません。

Ubuntuを2つインストールしています。1つはコンピューターの内部ハードドライブに、もう1つはUSBドライブにインストールしています。

USBフラッシュドライブにインストールしたUbuntu OSを起動するためにGRUB2メニューエントリを(内部ハードドライブのGRUBに)追加する方法はありますかおよび USBインストールでLinuxカーネルをアップグレードした後も、同じメニューエントリは機能しますか?

23
kiri

ドライブのUUIDを使用する方法を見つけました。ブート時に複数のドライブが接続されている場合に便利です。 /vmlinuxおよび/initrd.imgシンボリックリンクに関するメモに対するoldfredの功績。

これをファイル/etc/grub.d/40_customに追加し、UUID=XXXX-YYYYをパーティションUUIDに置き換えます(コマンドblkidでUUIDを取得します)

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

外部でカーネルをアップグレードするたびに、これを実行して、内部ドライブのgrubのブートスタンザを更新できます。

Sudo update-grub

ただし、特定のカーネルではなく、パーティションをブートするブートスタンザをgrub2の40_customに追加することもできます。 Ubuntuは、/(ルート)にリンクをインストールして、最新のインストールを起動します。必要に応じて、ドライブとパーティションに以下の例を調整します。 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 
}
33
oldfred

/etc/grub.d/40_customのUbuntu Live USBメニューエントリから起動するには、次のようになります(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
1
wiktor.2200