Grub: CD-ROM으로 부팅한 다음 SD 카드로 계속 부팅하시겠습니까?

Grub: CD-ROM으로 부팅한 다음 SD 카드로 계속 부팅하시겠습니까?

내 문제는Grub: USB 드라이브에서 부팅한 다음 SD 카드에서 계속 부팅하시겠습니까?그 외에도 나중에 CD로 구울 grub iso 파일을 만들려고 하는데, 이것이 Linux를 부팅하는 방법입니다.

저는 grub과 커널을 처음 접했고 SDCard에 설치된 Ubuntu를 CD에서 부팅할 수 있는지 잘 모르겠습니다.

지금까지 시도한 것은 SDCard의 LiveUSB에서 Ubuntu를 설치하는 것입니다. 파티션은 다음과 같습니다.

우분투 파티션

둘째, 이 스레드를 기반으로 합니다.https://www.linuxquestions.org/questions/linux-general-1/creating-a-grub2-boot-cd-with-a-grub-cfg-menu-my-solution-754835/Brasero를 통해 CD로 구울 수 있는 grub iso 파일을 만들 수 있었습니다. Ubuntu 설치의 루트(/) 파티션인 /dev/sdb5에서 시작 폴더를 복사하고 다음 명령을 실행했기 때문에 문제가 여기에 있을 수 있다고 생각했습니다.

grub-mkrescue --modules="linux ext2 fshelp ls boot pc" --output=grub2-boot.iso ~/Desktop/boot

그러나 위의 명령을 실행한 후 다음을 얻습니다.

grub-mkrescue: error: cannot open `/usr/lib/grub/i386-pc/pc.mod': No such file or directory.

이 문제에 대해 몇 가지 조사를 했으며 해결 방법을 실행 중일 수 있습니다.

sudo apt-get install grub-pc-bin

그러나 pc.mod가 생성되지 않았기 때문에 명령에서 해당 모듈을 제거했습니다(다시 말하지만, 정확히 내가 무엇을 하고 있는지, PC 모듈이 무엇을 해야 하는지 잘 모르겠습니다).

마지막으로 시스템을 재부팅했을 때 CD에서 grub이 부팅되는 것을 발견했지만 문제는 (적어도 그 중 하나) grub에서 "ls"를 실행할 때 grub.cfg의 (hd1,msdos5)가 나타나지 않는다는 것입니다. . 사용 가능한 유일한 파일 시스템은 (cd1) (cd1,msdos1)입니다. 이는 부팅 단계에서 SDCard 리더 드라이버가 존재하지 않는 것과 관련이 있을 수 있습니다. 어떻게든 솔루션은 SDCard 드라이버를 grub iso에 통합하지만 이것이 가능한지는 확실하지 않습니다.

다음은 /media/ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d(UUID인 것 같습니다)로 설치된 /dev/sdb5 부팅 폴더의 전체 grub.cfg입니다.

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}
function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd1,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
else
  search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
  set timeout=30
else
  if [ x$feature_timeout_style = xy ] ; then
    set timeout_style=hidden
    set timeout=0
  # Fallback hidden-timeout code in case the timeout_style feature is
  # unavailable.
  elif sleep --interruptible 0 ; then
    set timeout=0
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30,0; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=1
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d' {
    recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd1,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
    else
      search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
    fi
        linux   /boot/vmlinuz-5.4.0-122-generic root=UUID=ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d ro  quiet splash $vt_handoff
    initrd  /boot/initrd.img-5.4.0-122-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d' {
    menuentry 'Ubuntu, with Linux 5.4.0-122-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-122-generic-advanced-ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        else
          search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        fi
        echo    'Loading Linux 5.4.0-122-generic ...'
            linux   /boot/vmlinuz-5.4.0-122-generic root=UUID=ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-122-generic
    }
    menuentry 'Ubuntu, with Linux 5.4.0-122-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-122-generic-recovery-ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d' {
        recordfail
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        else
          search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        fi
        echo    'Loading Linux 5.4.0-122-generic ...'
            linux   /boot/vmlinuz-5.4.0-122-generic root=UUID=ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d ro recovery nomodeset dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-122-generic
    }
    menuentry 'Ubuntu, with Linux 5.4.0-42-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-42-generic-advanced-ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        else
          search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        fi
        echo    'Loading Linux 5.4.0-42-generic ...'
            linux   /boot/vmlinuz-5.4.0-42-generic root=UUID=ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d ro  quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-42-generic
    }
    menuentry 'Ubuntu, with Linux 5.4.0-42-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-42-generic-recovery-ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d' {
        recordfail
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_msdos
        insmod ext2
        set root='hd1,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        else
          search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
        fi
        echo    'Loading Linux 5.4.0-42-generic ...'
            linux   /boot/vmlinuz-5.4.0-42-generic root=UUID=ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d ro recovery nomodeset dis_ucode_ldr 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-5.4.0-42-generic
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry 'Memory test (memtest86+)' {
    insmod part_msdos
    insmod ext2
    set root='hd1,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
    else
      search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
    fi
    knetbsd /boot/memtest86+.elf
}
menuentry 'Memory test (memtest86+, serial console 115200)' {
    insmod part_msdos
    insmod ext2
    set root='hd1,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos5 --hint-efi=hd1,msdos5 --hint-baremetal=ahci1,msdos5  ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
    else
      search --no-floppy --fs-uuid --set=root ca8dc83c-7795-4dbd-8ee9-3e59ec526e6d
    fi
    linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

시간 내 주셔서 감사합니다!

답변1

문제를 해결한 것 같습니다. /boot의 모든 필수 파일이 grub에 있는 것 같습니다.

ls /

이제 내가 직면한 문제는 grub을 입력해야 할 때마다

linux /vmlinuz-5.4.0-122-generic root=/dev/sda5
initrd /initrd.img-5.4.0-122-generic
boot

우분투에서 부팅합니다. 이 단계를 자동화할 수 있는 방법이 있나요? grub.cfg에 이러한 명령을 추가하고 새 ISO를 만들 수 있을까요?

관련 정보