Debian インストールスクリプトは機能しますが、BIOS は UEFI エントリをブートリストに追加しません。

Debian インストールスクリプトは機能しますが、BIOS は UEFI エントリをブートリストに追加しません。

Dell Latitude 7480を使用しています。私は/dev/sdaデフォルトのDebianシステムを消去してインストールするためにLive Linuxディストリビューションで実行するように設計されたbashスクリプトを作成しました。

スクリプトは次のとおりです。

#!/bin/bash

# Set up partitions
echo "Set up partitions..."
sgdisk --zap-all /dev/sda
parted /dev/sda mklabel gpt
parted /dev/sda mkpart primary ext4 512MB 100%
parted /dev/sda mkpart primary fat32 0% 512MB
yes | mkfs.ext4 /dev/sda1
mount /dev/sda1 /mnt

echo "Setting up base system..."
debootstrap --arch=amd64 buster /mnt http://ftp.us.debian.org/debian/ > /dev/null 2>&1

# Set up bindings
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

# Set up EFI partition
yes | mkfs.fat -F32 /dev/sda2
mkdir /mnt/boot/efi
mount /dev/sda2 /mnt/boot/efi

# Chroot to set up grub
chroot /mnt /bin/bash << "EOT"
echo "deb http://deb.debian.org/debian/ stable main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://deb.debian.org/debian/ stable main contrib non-free" >> /etc/apt/sources.list
dpkg --add-architecture i386
apt update -y
apt upgrade -y
apt install -y linux-image-amd64 grub-efi-amd64
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --no-floppy
update-grub
EOT

これまではうまくいくようです。しかし、私のDellワークステーションでは強制的にBIOSに入り、grubx64.efiブートリストにファイルを手動で追加する必要があります。他の人のためにこのインストールを自動化できる必要があります。つまり、この手順を避けることができるはずです。

.efi新しく作成したレジストリをコンピュータのBIOSの下のプロファイルに自動的に登録するには、上記のbashスクリプトで何を追加または変更できますか?

答え1

UEFIにデータを書き込むには、/sys/firmware/efi/efivarschrootにマウントする必要があります。

それでは仮定しましょう。エピバルスホストにすでにインストールされています。

$ findmnt /sys/firmware/efi/efivars 
TARGET                    SOURCE   FSTYPE   OPTIONS
/sys/firmware/efi/efivars efivarfs efivarfs rw,nosuid,nodev,noexec,relatime

これ:

mount --bind /sys /mnt/sys

少なくとも次に増やす必要があります。

mount --bind /sys /mnt/sys
mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars

だからgrub-install(そしてefibootmgrあるいは、同様のツール)をchrootで使用してUEFIブートエントリを読み書きできます。

grub-install十分でない場合は、UEFIブートエントリが指すファイルに加えて、EFIファイルシステムに追加のEFIブートファイルを作成できます。

次へ追加--force-extra-removableオプションの説明に従ってDebian Wiki。だから与えられた:

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --no-floppy --force-extra-removable

UEFIブートエントリがなくても使用する必要がある追加エントリを作成します。

本当にこれを行う必要がある場合は、アップグレード時にそのまま残すようにするには、chrootで次を実行する必要があります。

echo 'grub-efi-amd64        grub2/force_efi_extra_removable boolean true' | debconf-set-selections

関連情報