Grub은 GPU가 연결되어 있지 않으면 데비안을 부팅할 수 없습니다

Grub은 GPU가 연결되어 있지 않으면 데비안을 부팅할 수 없습니다

문제의 결론: 시스템에 GPU나 기타 그래픽 지원 하드웨어가 없는 최신 Debian Buster(UEFI 모드에서 새로 설치, 테스트용으로만 설치, 데스크탑 환경이나 X11 또는 이와 유사한 것은 설치되지 않음)를 부팅하고 싶습니다. 내가 알 수 있는 한, 이것은 심각한 문제인 것 같습니다. 저는 실제로 AsRock Extreme4에서 Xeon 1231v3을 실행하고 있습니다.

자세한 내용과 내가 지금까지 수행하고 알고 있는 내용은 다음과 같습니다. 나는 이것이 두 가지 이유로 마더보드 제한(또는 기타 하드웨어 관련 문제)이 아니라는 것을 알고 있습니다.

  1. 나는 ASRock 지원팀에 문의했고 그들은 나와 매우 유사한 설정이 그래픽 카드 없이도 작동할 것이라고 말했습니다.
  2. Windows 10은 구성이나 설정을 변경하지 않고도 동일한 컴퓨터에서 완벽하게 시작됩니다. 보드의 디버그 코드(예상대로 코드 AA로 부팅)를 통해 이를 볼 수 있으며, 그렇게 구성하면 사운드가 재생되고 네트워크가 올바르게 시작됩니다(openvpn 연결로 테스트).

지금까지 테스트한 내용은 다음과 같습니다.

  1. GPU가 있는 데비안(화면이 있든 없든 여기서는 아무런 차이가 없습니다): GPU로 머신을 부팅하면 완벽하게 작동합니다. 진단 모니터에 AA가 표시되고 Linux는 예상한 대로 정확하게 작동합니다. SSH를 통해 머신에 연결할 수 있습니다.

  2. Windows 10: GPU 유무에 관계없이 부팅이 잘 작동합니다. 몇 초 후에 진단 디스플레이에 AA가 표시되고 Windows는 정확히 동일하게 작동합니다.

  3. 데비안 부팅 성공 후 GPU 제거: 컴퓨터 부팅 후 GPU(전용 PCIe GPU)를 제거했습니다. 문제 없습니다. 모든 것이 예상대로 작동합니다. 3주째 아무 문제 없이 잘 쓰고 있습니다. 명백한 이유로 다시 시작이 작동하지 않습니다.

  4. GPU가 없는 데비안: 커널이나 initramfs를 로드하기 전에 중지됩니다. 온보드 진단 디스플레이의 오류 코드는 Ad입니다. 이 오류 코드로 인해 무슨 일이 일어나고 있는지 GPU로 확인했습니다. grub 메뉴가 표시됩니다. 항목을 선택하고 OS를 부팅할 때까지 진단이 Ad 상태로 유지되는지 확인하기 위해 거기서 잠시 멈췄습니다. 드롭베어를 설치해봤습니다. GPU가 연결되면 암호가 해독됩니다. GPU 없이는 머신이 네트워크에 접속할 수 없습니다. 이는 이것이 심각한 문제라는 것을 확인시켜 줍니다. 이것은 중요할 수 있지만 어떻게 이해해야 할지 잘 모르겠습니다. 이 광고 단계에서는 키보드 입력도 무시됩니다. CTRL+ALT+DEL을 누르면 일반적으로 컴퓨터가 grub 메뉴에서 재부팅됩니다. 그렇지 않습니다. 따라서 현재로서는 grub/debian 키보드 입력에 대한 응답이 없습니다.

내가 알 수 있는 한, 여기에는 두 가지 옵션이 있습니다. Grub이 작동하려면 GPU가 필요하거나 선택한 grub 항목을 실제로 부팅하려면 GPU가 필요합니다. 내 눈에는 둘 다 이상해 보인다. 제 생각에는 grub이나 debian의 구성에 뭔가 빠진 것 같습니다. 하지만 솔직히 헤드리스 Linux 박스를 부팅하는 것은 문제가 되지 않을 것이라고 생각합니다. [저는 데비안이 하지 않는 일을 Windows가 한다고 믿지 않습니다. 2008년에 Linux를 사용하기 시작한 이후로는 그런 일이 일어나지 않았습니다 ;-) 하지만 이번이 Windows 없이 처음으로 시도한 것이기 때문에 실제로 Linux에서 무언가를 실행하는 것입니다. GPU 또는 기타 그래픽 출력 장치에 뭔가가 누락되었을 수 있습니다.

GPU 없이는 작동하지 않지만 GPU /etc/default/grub을 사용하면 완벽하게 부팅됩니다.

GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_RECORDFAIL_TIMEOUT=0
GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null || echo Debian'
GRUB_CMDLINE_LINUX_DEFAULT="nomodset"
GRUB_CMDLINE_LINUX="nomodset"
GRUB_TERMINAL=serial

GRUB_TERMINAL "QUIET"로 "CONSOLE"에 대해 다양한 CMDLINE 입력을 시도했지만 그 중 어느 것도 문제에 아무런 영향을 미치지 않습니다. 동일한 AD 진단 출력 및 동작입니다.

시스템은 매우 깨끗하며 실제로 관련된 그래픽을 실행하지 않습니다.

systemctl list-unit-files --state=enabled

그냥 나한테 줘

apparmor.service
[email protected]
console-setup.service
cron.service
dbus-org.freedesktop.timesync1.service
[email protected]
keyboard-setup.service
networking.service
rsyslog.service
ssh.service
sshd.service
syslog.service
systemd-timesyncd.service
remote-fs.target
apt-daily-upgrade.timer
apt-daily.timer
logrotate.timer
man-db.timer

grub 문서를 많이 읽었지만 문제가 무엇인지 이해하지 못합니다. 나는 생각하기 시작했습니다. 하드웨어로는 그것을 할 수 없습니다. 그러나 Windows가 아무런 문제 없이 시작된다면 Windows가 작동하지 않는 이유는 설명되지 않습니다. grub.cfg를 사용해 보았지만(예: 비디오 관련 옵션에 댓글 달기) 결과에는 아무런 변화가 없었습니다. 기본 cfg 항목(위 동작 포함)은 다음과 같습니다.

[...]
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
        set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuen$
    load_video
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_gpt
    insmod ext2
    set root='hd1,gpt2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 -$
    else
      search --no-floppy --fs-uuid --set=root efac4a91-d7a7-43c2-b27a-db5f9ac1c2f2
    fi
    echo    'Linux 4.19.0-9-amd64 wird geladen …'
    linux   /vmlinuz-4.19.0-9-amd64 root=UUID=38f85418-3071-44d7-b027-b1965060d07a ro no$
    echo    'Initiale Ramdisk wird geladen …'
    initrd  /initrd.img-4.19.0-9-amd64
}
[...]

질문은 다음과 같습니다. GPU 없이 Debian Buster를 부팅하도록 grub을 얻으려면 어떻게 해야 합니까(그리고 더 중요한 것은 왜 부팅되지 않습니까?!)? 이 문제를 추가로 디버깅하고 완료하는 방법에 대한 도움을 주시면 매우 감사하겠습니다!

추가 편집

데비안 헤드리스 설치를 테스트했습니다. 일반 설치 프로그램을 시작하고 ssh를 활성화한 후 GPU를 제거했기 때문에 실제로 설치 및 구성되는 동안 GPU가 연결되지 않았습니다. 결과는 동일합니다. 시작 시 오류 코드 광고가 초과되지 않습니다.

언급하는 것을 잊었습니다: systemd를 통해 multi-user.target을 설정했습니다.

보충 01

방금 Ubuntu 서버(LTS 20.04)를 테스트했습니다. 동일한 오류 코드가 있으며 GPU 없이는 Grub 이상으로 부팅할 수 없습니다.

답변1

다음 줄을 3번 읽으세요.

GRUB_CMDLINE_LINUX_DEFAULT="nomodset"

...그리고 오타를 찾아보세요...

그런 다음 누락된 항목을 e에 추가하고 nomodset로 변경합니다 nomodeset.

관련 정보