Debian 11 라이브 이미지에 GRUB를 설치하면 "재정의"에 대한 정식 경로를 얻을 수 없습니다.

Debian 11 라이브 이미지에 GRUB를 설치하면 "재정의"에 대한 정식 경로를 얻을 수 없습니다.

우리는 데비안 기반 제품을 만들고 있습니다. 공장에서 이들을 구축하는 과정을 단순화하기 위해 기본 운영 체제를 설치하기 위한 라이브 디스크를 구축하려고 합니다. 이 프로세스를 사용하는 이전 제품이 있지만 Debian 7을 기반으로 합니다. 저는 데비안 11을 사용하고 있습니다. 내 Debian 11 복구 프로세스 및 이미지는 Debian 7을 기반으로 합니다. 둘 다 사용됩니다 . Debian 11 시스템은 우리 비트를 호스팅하는 패키지를 얻기 위해 live-build메인라인 저장소와 내 저장소에서 운영 체제를 가져옵니다 . 이는 빌드 OS를 실행하고 이를 squashfs에 압축한 다음 드라이브 파티션, squashfs 파일을 적절한 파티션에 압축 해제 등의 작업을 수행하는 스크립트를 사용하여 주변에 라이브 OS를 빌드하는 bullseye다단계 프로세스입니다 . live-build심각하게 작동하지 않으면 GRUB를 사용하십시오.

빌드의 일부는 다음을 수행합니다.

install -d /boot/seed
grub-mkimage -Ox86_64-efi -o /boot/seed/BOOTX64.EFI -p '(hd0,1)/EFI/BOOT/grub' \
    part_gpt part_msdos fat
grub-mkimage -Oi386-pc -o /boot/seed/mbr-core.img -p '(hd0,msdos1)/biosgrub' \
    part_msdos fat biosdisk
grub-mkimage -Oi386-pc -o /boot/seed/gpt-core.img -p '(hd0,gpt1)/biosgrub' \
    part_gpt fat biosdisk
cp -a /usr/lib/grub/i386-pc/boot.img /boot/seed/boot.img
cp -a /usr/lib/grub/i386-pc/modinfo.sh /boot/seed/modinfo.sh
grub-editenv /boot/seed/grubenv create

이러한 파일은 실제 운영 체제에 저장되며 GRUB 설치를 시도하기 전에 ESP 파티션에 복사됩니다. 이러한 파일과 다양한 GRUB 모듈은 모두 설치 스크립트 도중에 복사됩니다.

나중에 스크립트에서 grub-install.

grub-install \
    --directory /mnt/biosgrub \
    --boot-image boot.img \
    --core-image core_img \
    /dev/sda

여기서 문제는 최신 버전이 grub-install더 이상 지원되지 않으며 core-imageDebian boot-image7 버전과 같은 전환이 즉시 실패한다는 것입니다. boot-image및 스위치를 꺼냈는데 core-image이제 실패합니다.

grub-install: error: failed to get canonical path of `overlay'.

예, 실제로 왼쪽 백틱과 오른쪽 작은따옴표가 있습니다 overlay.

GRUB 단계를 제거하고 모든 것을 압축 해제한 다음 Manjaro(이미 배치됨)를 실행하는 그래픽 라이브 디스크로 부팅하여 GRUB 상황에 대한 추가 정보를 얻으려고 했습니다. 거기서 실행해도 grub-install같은 방식으로 실패합니다.

인터넷 검색을 통해 대상 장치가 overlayfs를 사용하고 있다고 생각되고 어떤 실제 장치를 사용할지 알 수 없기 때문에 이것이 발생한다는 것을 이해 grub-install하지만 여기에서 어디로 가야할지 또는 어떤 질문을 해야할지 잘 모르겠습니다. 독점 소프트웨어로 인해 일부 내용을 편집해야 했지만 자세한 내용을 기꺼이 제공해 드리겠습니다.

중요한 경우 생성된 OS 파티션을 시스템 외부에 수동으로 설치하면 모든 것이 올바른 위치에 있고 코드가 제 위치에 있으며 부트로더가 있으면 제대로 실행될 수 있음을 알 수 있습니다.

/procETA: 여기서는 압축되지 않은 OS를 라이브 디스크의 디렉터리에 설치하고 , /sys, 및 를 /dev해당 디렉터리에 마운트하고, EFI 파티션을 마운트한 다음 chrooting하는 등 약간의 진전을 이루었습니다 . 그런 다음 실행되지만 grub-install /dev/sda부팅할 때 grub이 여전히 누락됩니다.

답변1

debos이 문제에 대해 많은 양의 트래픽이 발생한다는 알림을 받은 후, 질문에 설명된 프로세스를 사용하려고 하기보다는 빌드된 이미지와 플래셔 이미지를 사용하여 결국 문제를 해결했다고 게시해야겠다고 생각했습니다 .

데보스:https://github.com/go-debos/debos

관련 정보