Debian 설치 스크립트는 작동하지만 BIOS가 UEFI 항목을 부팅 목록에 추가하지 않습니다.

Debian 설치 스크립트는 작동하지만 BIOS가 UEFI 항목을 부팅 목록에 추가하지 않습니다.

델 래티튜드 7480을 사용하고 있습니다. 나는 /dev/sda기본 데비안 시스템을 지우고 설치할 목적으로 라이브 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옵션에 설명된 대로데비안 위키. 그래서 주어진:

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

관련 정보