네트워크에서 GRUB 부팅: grub.cfg를 찾을 수 없습니까?

네트워크에서 GRUB 부팅: grub.cfg를 찾을 수 없습니까?

저는 다음 설정을 진행 중입니다.

  • Debian 11 서버의 DHCP 서버,워곤(192.168.50.9)
  • Debian 12 서버의 TFTP 서버조른(192.168.50.111)
  • 현재 VirtualBox VM에 있는 클라이언트

관련 구성워곤:

subnet 192.168.50.0 netmask 255.255.255.0 {
  range 192.168.50.10 192.168.50.190;
  option routers 192.168.50.1;
  option broadcast-address 192.168.50.255;
  option boot-size 8208;
  next-server 192.168.50.111;
  option tftp-server-address 192.168.50.111;
  option bootfile-name "/boot/grub/x86_64-efi/core.efi";
  filename "/boot/grub/x86_64-efi/core.efi";
}

존재하다조른grub-mknetdir을 사용하여 grub.cfg 디렉토리를 생성합니다.

# ll /srv/tftp/boot/grub/x86_64-efi/*cfg
-rw-r--r-- 1 root root 291 Jun 30 09:52 /srv/tftp/boot/grub/x86_64-efi/grub.cfg
# cat /srv/tftp/boot/grub/x86_64-efi/*cfg
menuentry 'Boot Debian 12' {
  set background_color=black
  linux /debian12/boot/vmlinuz-6.1.0-9-amd64 console=tty0 console=ttyS0 ip=dhcp root=/dev/nfs ro nfsroot=192.168.50.111:/image/debian12,vers=3,nolock panic=60 ipv6.disable=1 rootwait
  initrd /debian12/boot/initrd.img-6.1.0-9-amd64
}

COM1/ttyS0의 출력을 파일로 보내도록 VM 클라이언트를 구성했습니다.ttyS0.log. 가상 머신을 시작하면 부트로더가 다운로드되고,core.efi, 그리고 결국 GRUB 쉘로 들어갑니다. 로그 파일에는 더 이상 드러나는 내용이 표시되지 않습니다. 그것은 다음과 같습니다그럽 구성 파일실제로 GRUB 명령줄을 조금 사용하면 전혀 발견되지 않는 것 같습니다.(tftp)장치가 전혀 감지되지 않음:

grub> ls (tftp)
Device tftp:
grub> ls (tftp,192.168.50.111)
        Partition tftp,192.168.50.111:
grub>

내가 여기서 뭘 잘못하고 있는 걸까?

답변1

따라서 짧은 대답은 다음과 같습니다. grub.cfg작업 디렉터리 아래에 있어야 합니다 boot/grub/. 일반적으로 실행 중인 프로세스를 보면 값을 찾을 수 있습니다.tftp/srv/tftp/etc/default/tftp

# ps -ef | grep tftp
root       16120       1  0 13:49 ?        00:00:00 /usr/sbin/in.tftpd --listen --user tftp --address :69 -vv -s /srv/tftp

PXE를 통해 부팅하면 파일이 TFTP를 통해 다운로드됩니다. 불행하게도 내 시스템(Debian 12)에서는 tftp 데몬이 tftp 데몬에 기록되지 않지만 /var/log/syslog제가 발견한 대로 tftp 로그에 기록되므로 다음 메시지를 확인하세요.

# journalctl | grep tftpd
...
Jun 30 14:25:22 zorn in.tftpd[16382]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-01-08-00-27-ae-a4-19
Jun 30 14:25:22 zorn in.tftpd[16382]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16383]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0A8325D
Jun 30 14:25:22 zorn in.tftpd[16383]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16384]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0A8325
Jun 30 14:25:22 zorn in.tftpd[16384]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16385]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0A832
Jun 30 14:25:22 zorn in.tftpd[16385]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16386]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0A83
Jun 30 14:25:22 zorn in.tftpd[16386]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16387]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0A8
Jun 30 14:25:22 zorn in.tftpd[16387]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16388]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0A
Jun 30 14:25:22 zorn in.tftpd[16388]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16389]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C0
Jun 30 14:25:22 zorn in.tftpd[16389]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16390]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg-C
Jun 30 14:25:22 zorn in.tftpd[16390]: sending NAK (1, File not found) to 192.168.50.93
Jun 30 14:25:22 zorn in.tftpd[16391]: RRQ from 192.168.50.93 filename /boot/grub/x86_64-efi/command.lst
Jun 30 14:25:22 zorn in.tftpd[16392]: RRQ from 192.168.50.93 filename /boot/grub/x86_64-efi/fs.lst
Jun 30 14:25:22 zorn in.tftpd[16393]: RRQ from 192.168.50.93 filename /boot/grub/x86_64-efi/crypto.lst
Jun 30 14:25:22 zorn in.tftpd[16394]: RRQ from 192.168.50.93 filename /boot/grub/x86_64-efi/terminal.lst
Jun 30 14:25:22 zorn in.tftpd[16395]: RRQ from 192.168.50.93 filename /boot/grub/grub.cfg
...

이는 다음에서 수행할 수 있는 작업과 유사합니다.GRUB 매뉴얼, 8장- 여기서는 메뉴 파일을 찾고 있다는 것을 알 수 있으며 /boot/grub, tftp 데몬은 작업 디렉터리로 루트가 지정되어 있으므로 /srv/tftp실제로 이 경로는 입니다 /srv/tftp/boot/grub.

관련 정보