pxe를 사용하여 qemu를 통해 이전 버전의 grub을 부팅합니다.

pxe를 사용하여 qemu를 통해 이전 버전의 grub을 부팅합니다.

저는 pxe를 사용하여 qemu를 통해 이전 버전의 grub을 부팅하려고 했습니다. 어떤 이유로 grub은 메뉴를 표시하지 않고 다음 오류를 표시한 후 명령 모드로 들어갑니다.

Error15: File not found.
grub rescue>

이것은 내 디렉토리 구조입니다.

/var/lib/tftpboot
| - pxelinux.0
| - pxegrub.0
| - pxelinux.cfg
    | default
| - boot
    | grub
          |default        
          |fat_stage1_5
          |menu.lst
          |stage1
          |device.map
          |installed-version  
          |minix_stage1_5     
          |stage2
          |e2fs_stage1_5 
          |jfs_stage1_5
          |reiserfs_stage1_5  
          |xfs_stage1_5
 |x86_64

pxelinux.cfg/default의 내용:

 default vesamenu.c32
prompt 0

menu title Available Installations (scroll down for more options)
menu autoboot Starting grub2 in # Seconds
timeout 30

label local
  menu label Boot From Local Disk
  localboot 0

label grub
  menu label grub
  menu default
        kernel pxegrub.0

menu end

menu.lst의 내용:

timeout 0

# spawnd is used to control which cpus are booted
#
# "spawnd boot" will use the skb and pci to figure out and
#  boot all cores in the machine
#
# "spawnd boot bootapic-x86_64=1-5" will not use the skb and
# boot the list of cores passed as argument.
# The APIC id of the cores to boot should be specified.
# This list may not include the bsp core id.

title   Barrelfish
root    (nd)
kernel  /x86_64/sbin/elver loglevel=4
module  /x86_64/sbin/cpu loglevel=4
module  /x86_64/sbin/init

# Domains spawned by init
module  /x86_64/sbin/mem_serv
module  /x86_64/sbin/monitor

# Special boot time domains spawned by monitor
module  /x86_64/sbin/ramfsd boot
module  /x86_64/sbin/skb boot
modulenounzip /skb_ramfs.cpio.gz nospawn
module  /x86_64/sbin/kaluga boot
module  /x86_64/sbin/acpi boot
module  /x86_64/sbin/spawnd boot

#bootapic-x86_64=1-15
module  /x86_64/sbin/startd boot
module /x86_64/sbin/routing_setup boot

# Drivers
module /x86_64/sbin/pci auto
module /x86_64/sbin/ahcid auto
module /x86_64/sbin/rtl8029 auto
module /x86_64/sbin/e1000n auto
module /x86_64/sbin/NGD_mng auto
module /x86_64/sbin/netd auto

# General user domains
module  /x86_64/sbin/serial
module  /x86_64/sbin/fish
module  /x86_64/sbin/hellotest
module  /x86_64/sbin/ahcialloctest
module  /x86_64/sbin/idctest client
module  /x86_64/sbin/idctest server

다음 명령을 사용하여 grub 이미지를 생성합니다.

grub-mkimage --format=i386-pc-pxe --output=grub.pxe --prefix='(pxe)/boot/grub' pxe pxecmd

답변1

grub-mkimageGRUB 레거시 이미지가 아닌 GRUB 2 이미지를 생성합니다. grub rescue>이는 GRUB 2를 부팅하고 있다는 신호이기도 합니다.

stage2여기 대신 로드해야 합니다 pxegrub.0.

GRUB 레거시 일부 버전netboot를 지원하지만 무엇을 어디서 사용할지 추천하려면 운영 체제나 최소한 에뮬레이트하는 QEmu 네트워크 카드 모델을 알아야 합니다(MirBSD에는 netboot를 지원하는 사전 컴파일된 GRUB 레거시 이미지가 많이 있습니다).

관련 정보