Debian GRUB2의 FreeBSD 문제

Debian GRUB2의 FreeBSD 문제

FreeBSD의 초보자가 여기에 있습니다.

저는 Windows 10, Debian Linux 및 최근 FreeBSD를 240GB SSD에 설치했으며 파일 보존 전용 1TB HDD를 사용하고 있습니다. 사용 가능한 단계를 주의 깊게 따랐기 때문에 FreeBSD 설치는 매우 순조롭게 진행되었지만 GRUB를 인식하는 데 어려움이 있었기 때문에 시스템으로 부팅할 수 없었습니다.

편집했어요/etc/grub.d/40_customGRUB를 업데이트하기 전에 다음 코드를 추가했습니다.

menuentry "FreeBSD" {
    insmod ufs2
    set root=(hd0,gpt3)
    kfreebsd /boot/loader
}

하나 만들기그럽 업데이트, 터미널은 나에게 다음을 출력합니다.

Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Imagem Linux encontrada: /boot/vmlinuz-4.19.0-6-amd64
Imagem initrd encontrada: /boot/initrd.img-4.19.0-6-amd64
Imagem Linux encontrada: /boot/vmlinuz-4.19.0-5-amd64
Imagem initrd encontrada: /boot/initrd.img-4.19.0-5-amd64
Encontrado unknown Linux distribution em /dev/sda6
Encontrado Windows Boot Manager em /dev/sdb1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for EFI firmware configuration
concluído

산출fdisk -l다음과 같이:

Disco /dev/sda: 223,6 GiB, 240065183744 bytes, 468877312 setores
Modelo de disco: SanDisk SSD PLUS
Unidades: setor de 1 * 512 = 512 bytes
Tamanho de setor (lógico/físico): 512 bytes / 512 bytes
Tamanho E/S (mínimo/ótimo): 512 bytes / 512 bytes
Tipo de rótulo do disco: gpt
Identificador do disco: 51AF3127-339F-4F6D-A1D0-4A7E66BCEBDE

Dispositivo    Início       Fim   Setores Tamanho Tipo
/dev/sda1          34     32767     32734     16M Microsoft reservado
/dev/sda2       32768 305035263 305002496  145,4G Microsoft dados básico
/dev/sda3   305035264 305036287      1024    512K FreeBSD inicialização
/dev/sda4   367949824 368158719    208896    102M Sistema EFI
/dev/sda5   368158720 468875263 100716544     48G Linux sistema de arquivos
/dev/sda6   305036288 367949823  62913536     30G FreeBSD UFS

설정을 해보았습니다루트=(hd0,gptX)3과 6으로 이동하여 "gpt"를 제거하고 많은 작업을 수행했지만 아무것도 작동하지 않았습니다. 내 출력은 여전히 ​​​​동일합니다.

error: disk 'hd0,gpt3' not found.

GRUB이 어떻게 이러한 파티션을 인식하지 못하는지 모르겠습니다. 어쩌면 제가 잘못 구성했을 수도 있습니다. Windows 10 및 Debian은 문제 없이 정상적으로 부팅됩니다.

답변1

(hd0)GRUB 라벨이 무엇을 가리키는지 확실합니까 /dev/sda? 존재하는 경우 /boot/grub/device.map최소한 sda및 이 있는 것으로 보이기 때문에 다른 태그 순서를 정의할 수 있습니다 sdb.

잠깐만요... 시스템이 기본 UEFI 스타일로 부팅되더라도 BIOS 스타일 FreeBSD 부팅 파티션을 만든 것 같습니다. 이러한 파티션의 부팅 코드는 레거시 16비트 코드이고 UEFI에는 최신 64비트 코드가 필요하기 때문에 이 방법이 작동하지 않을 수 있습니다.

따라야 할 지침에서는 GPT 파티션이 있는 경우에도 시스템이 레거시 BIOS 모드에서 부팅된다고 가정합니다. 기본 UEFI Windows 부트로더 /dev/sdb1와 "EFI 펌웨어 구성을 위한 부팅 메뉴 항목 추가"는 시스템이 현재 이 방식으로 작동하도록 설정되어 있지 않음을 나타냅니다.

대신 FreeBSD의 GRUB 구성을 사용하여 다음을 수행할 수 있습니다:

menuentry "FreeBSD" {
    insmod ufs2
    search --file --set root --no-floppy /boot/loader.efi
    chainloader /boot/loader.efi
}

Google에서 검색하는 내용을 올바르게 이해했다면(최신 버전의 FreeBSD를 사용하지 않음) 장치에서 BSD 로더 코드의 UEFI 버전을 찾아서 /dev/sda6거기에서 직접 로드해야 합니다. (hdN)GRUB가 할당된 것과 관계없이 말이죠. 어느 라벨에 sda.

UEFI의 "표준" 방법은 /EFI/FreeBSDEFI 시스템 파티션에 디렉터리를 만들고(분명히 /dev/sda4) FreeBSD를 /boot/loader.efi여기에 복사하는 것입니다. 그러나 GRUB에는 UFS2를 직접 읽는 모듈이 있으므로 위 코드도 제대로 작동합니다.

/dev/sda4데비안이 일반적으로 하는 것처럼 현재 에 설치하는 경우 /boot/efi표준 UEFI 스타일 FreeBSD 부팅 디렉터리가 에 생성되어야 합니다 /boot/efi/EFI/FreeBSD.

UEFI는 모든 부트 로더를 ESP 파티션의 일반 파일로 간단히 처리할 수 있으므로 별도의 FreeBSD 부팅 파티션이 전혀 필요하지 않습니다. 전체 FreeBSD 부팅 코드가 이 loader.efi파일에 포함될 수 있습니다.

관련 정보