UEFI 부팅 순서를 올바르게 구성하려면 패키저(방랑자 상자) 빌드(ER) 구성/스크립트에 대한 도움이 필요합니다.

UEFI 부팅 순서를 올바르게 구성하려면 패키저(방랑자 상자) 빌드(ER) 구성/스크립트에 대한 도움이 필요합니다.

설정

주인

OS: Manjaro XFCE x86_64
Apps: packer (plugins: virtualbox-iso), 

손님

OS:                Arch Linux  
Hypervisor:        Virtualbox 
Architecture:      x64

Packer를 사용하여 Vagrant 상자를 만들었습니다.

내 목표는 VMbox가 Docker 컨테이너 애플리케이션과 같은 애플리케이션을 실행하도록 하는 것입니다. 하지만 애플리케이션에는 파티션을 사용해야 하기 때문에 일부 위험을 피하기 위해 Docker를 사용할 수 없습니다. Vagrant Box는 사용자 정의 가상 머신입니다.
이렇게 하면 다른 사람들도 귀하와 동일한 운영 체제 설정을 가질 수 있습니다.

Virtualbox용으로 하나 만들었지만 아직 완전히 구현되지 않았습니다. VM을 현대화하고 싶어서 UEFI를 사용하고 싶지만 VM용으로 구축하는 방법을
잘 모르겠습니다 .

이것이 내가 이 문제를 겪는 이유입니다:

UEFI fails to load properly. BdsDxe: failed to load Boot0001 "UEFI VBOX Harddisk"

아래를 참조하세요: 여기에 이미지 설명을 입력하세요.

내 상자에 제공된 부팅 순서를 확인하는 것이 virtualbox에서 찾을 수 있는 것과 일치하지 않는다는 것을 알았기 때문에 그 이유가 궁금했습니다.

Virtualbox에는 두 가지 옵션만 있습니다. 첫 번째는 찾을 수 없는 하드 디스크 부팅이고, 두 번째는 일종의 네트워크 부팅을 활성화하는 것입니다.

GRUB에 들어가고 싶습니다.
여기에 이미지 설명을 입력하세요.

Vagrant Box를 만드는 과정에서 efibootmgr내 디스크가 부팅 순서로 무엇을 제공해야 하는지 알아보기 위해 전화를 걸었습니다.

efibootmgr의 출력

SE_bastille-installer-box.virtualbox-iso.archlinux: ==> bootloader.sh: Check boots..
SE_bastille-installer-box.virtualbox-iso.archlinux: BootCurrent: 0001
SE_bastille-installer-box.virtualbox-iso.archlinux: Timeout: 0 seconds
SE_bastille-installer-box.virtualbox-iso.archlinux: BootOrder: 0005,0000,0002,0003,0004
SE_bastille-installer-box.virtualbox-iso.archlinux: Boot0000* UiApp   FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
SE_bastille-installer-box.virtualbox-iso.archlinux: Boot0002* UEFI VBOX HARDDISK    PciRoot(0x0)/Pci(0xf,0x0)/SCSI(0,0){auto_created_boot_option}
SE_bastille-installer-box.virtualbox-iso.archlinux: Boot0003* UEFI PXEv4 (MAC:0800277E9510)   PciRoot(0x0)/Pci(0x3,0x0)/MAC(0800277e9510,1)/IPv4(0.0.0.00.0.0.0,0,0){auto_created_boot_option}
SE_bastille-installer-box.virtualbox-iso.archlinux: Boot0004  EFI Internal Shell   FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
SE_bastille-installer-box.virtualbox-iso.archlinux: Boot0005* GRUB   HD(1,GPT,1e8f8680-99c0-4c28-b83a-eb601805d4c4,0x800,0x96000)/File(\EFI\GRUB\grubx64.efi)

다음은 부트로더를 빌드하는 스크립트입니다. 스크립트/bootloader.sh

#!/usr/bin/env bash

. /root/vars.sh

NAME_SH=bootloader.sh

# stop on errors
set -eu

echo "==> ${NAME_SH}: Installing grub packages.."
/usr/bin/arch-chroot ${ROOT_DIR} /usr/bin/pacman --noconfirm -S edk2-ovmf efibootmgr grub os-prober >/dev/null

echo "==> ${NAME_SH}: Pre-configure grub.."
/usr/bin/arch-chroot ${ROOT_DIR} sed -i 's/#GRUB_DISABLE_OS_PROBER/GRUB_DISABLE_OS_PROBER/' /etc/default/grub

echo "==> ${NAME_SH}: Installing grub.."
/usr/bin/arch-chroot ${ROOT_DIR} grub-install --target=x86_64-efi --efi-directory=${ESP_DIR} --bootloader-id=GRUB &>/dev/null
/usr/bin/arch-chroot ${ROOT_DIR} grub-mkconfig -o /boot/grub/grub.cfg &>/dev/null

echo "==> ${NAME_SH}: Check boots.."
if [[ $PACKER_BUILDER_TYPE == "virtualbox-iso" ]]; then
  /usr/bin/arch-chroot ${ROOT_DIR} efibootmgr --delete-bootnum --bootnum 1
fi
/usr/bin/arch-chroot ${ROOT_DIR} efibootmgr

EFI 파일은 셸에서 찾을 수 있으므로 최소한 올바른 작업을 수행하고 있습니다. 여기에 이미지 설명을 입력하세요.

작동하도록 부팅 옵션을 추가할 수 있지만 상자가 작동하도록 하고 싶습니다.. 음.. 상자에서 꺼낸 후!

내 패키저 빌드 파일 https://raw.githubusercontent.com/safenetwork-community/SE_bastille-installer-box/arch/bib-base/SE_bastille-installer-box.pkr.hcl

내가 뭘 잘못했나요?

답변1

분명히 이 문제는 너무 흔해서 Arch Linux 위키 문제 해결 페이지에 나타납니다.https://wiki.archlinux.org/title/GRUB#Default/fallback_boot_path

스크립트/bootloader.sh

...
echo "==> ${NAME_SH}: Installing grub.."
/usr/bin/arch-chroot ${ROOT_DIR} grub-install --target=x86_64-efi --efi-directory=${ESP_DIR} --bootloader-id=GRUB --removeable &>/dev/null
...

관련 정보