IDで代替項目を設定したり、サブメニューから項目を選択したりするにはどうすればよいですか?現在有効な唯一のオプションは、番号付きの項目(たとえばset fallback=0
)を使用することです。
背景
私たちのチームは、Debianを実行しているデバイスをリモートで更新します。これらのデバイスはリモートでデプロイされ、物理的または KVM アクセスがほとんどないため、実行可能なソリューションではありません。新しいシステムイメージを同じパーティション(この場合は/ dev / sda2)にコピーします。
root@widget:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 186.3G 0 disk
├─sda1 8:1 1 953M 0 part /boot
├─sda2 8:2 1 23.3G 0 part /
├─sda3 8:3 1 23.3G 0 part /alt
パーティションを再マウントした後、イメージが破損していないことを/alt
確認したいと思います。これをテストするためにカスタム項目を作成します(例newimg
:)/etc/grub.d/40_custom
。 ()で始まるUUIDはxxxxxxxx
マウントされたパーティション、()で始まるUUIDはマウントされたパーティションです。/boot
dev/sda1
yyyyyyyy
/
/dev/sda3
menuentry 'Debian 10 (buster) newimg' --id newimg {
insmod part_msdos
insmod ext2
search --no-floppy --fs-uuid --set=root xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
linux /vmlinuz-4.2 root=UUID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy ro nomodeset panic=5 quiet
initrd /initrd.img-4.2
}
set fallback='1>2'
次に、再起動を実行してupdate-grub
実行します。grub-reboot newimg
イメージが破損した場合、端末へのアクセス権を失わないように代替イメージが必要です。過去には、最初のgrubメニュー項目を置換(set fallback=0
)として使用していました。ただし、new は/vmlinuz-4.2
最新またはアイテム内で使用されるため、0
無意味に置き換えられます。破損した画像を使用して代替をテストしてきましたvmlinuz-4.2
。 ~によるとGRUBドキュメント、
項目は、数値(階層の各レベルで0から始まる)、タイトル、またはIDで識別できます。
しかし、私が見た唯一の方法は数字を使用することです(サブメニュー項目も機能しません)。他のすべてのオプションについては、次のエラーメッセージが表示されますFailed to boot both default and fallback entries
。
私が試したこと:
- フォールバックを()
40_custom
に変更すると項目が選択されますが、代わりに...同じ破損したvmlinuzイメージが選択されます。set fallback='1>2'
Advanced options for Debian GNU/Linux > Debian GNU/Linux, with Linux 4.1
1
1>0
1>2
1>0
defaultimg
また、以前のカーネル()を使用して別のカスタムブートエントリを追加しようset fallback=defaultimg
としましたdefaultimg
。set
一重引用符と二重引用符なしで最初の2つのオプションを変更してみました。
GRUBバージョン:2.02+dfsg1-20