Fedora Server 27로 업그레이드한 후 Grub2

Fedora Server 27로 업그레이드한 후 Grub2

F27로 업그레이드하고 재부팅 후 비상 쉘로 이동했습니다. Google과 실험으로 몇 시간을 보낸 후 설치 CD에서 복구를 로드하고 OS 이미지를 찾아 /usr/lib/os-release를 /etc/os-release에 복사했습니다.

grub>

그래서 부팅하면 부팅할 수 있다는 것을 알았습니다

grub> set boot=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)
grub> insmod normal
normal

그런 다음 커널 선택 프롬프트(이제 "Fedora" 대신 "dracut"이라고 표시됩니까?)가 표시되고 'e'를 눌러 4.14.18-300.fc27.x86_64를 편집하고 "set root='hd0,msdos1'"을 다음으로 변경합니다. "set root='hd0,msdos3'" 그런 다음 ctrl-x를 눌러 시작하면 Fedora 27이 마침내 부팅됩니다.

내 문제는 재부팅할 때마다 그렇게 해야 한다는 것입니다. 나는 달렸다

# grub2-mkconfig -o /boot/grub2/grub.cfg

성공했다고 했지만 달라지는 건 없었다. 머신을 부팅하려면 여전히 전체 절차를 수행해야 하며 이는 다소 번거롭습니다. 다행스럽게도 자주 재부팅할 필요가 없습니다.

내 질문은: 이러한 파티션 변경 사항을 재부팅 후에도 유지하려면 어떻게 해야 합니까?

감사해요!

grub.cfg에는 올바른 값이 있는 것 같지만 머신을 부팅하려면 여전히 위의 작업을 수행해야 합니다. /etc/grub.cfg는 /boot/grub2/grub.cfg에 연결됩니다:

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

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif [ -s $prefix/grubenv ]; then
  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="${saved_entry}"
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 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
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/01_users ###
if [ -f ${prefix}/user.cfg ]; then
  source ${prefix}/user.cfg
  if [ -n "${GRUB2_PASSWORD}" ]; then
    set superusers="root"
    export superusers
    password_pbkdf2 root ${GRUB2_PASSWORD}
  fi
fi
### END /etc/grub.d/01_users ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'dracut (4.14.18-300.fc27.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.18-300.fc27.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.14.18-300.fc27.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.14.18-300.fc27.x86_64.img
}
menuentry 'dracut (4.11.12-100.fc24.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.12-100.fc24.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.12-100.fc24.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.12-100.fc24.x86_64.img
}
menuentry 'dracut (4.11.10-100.fc24.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.10-100.fc24.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.10-100.fc24.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.10-100.fc24.x86_64.img
}
menuentry 'dracut (4.14.18-300.fc27.x86_64+debug) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.18-300.fc27.x86_64+debug-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.14.18-300.fc27.x86_64+debug root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.14.18-300.fc27.x86_64+debug.img
}
menuentry 'dracut (4.11.12-100.fc24.x86_64+debug) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.12-100.fc24.x86_64+debug-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.12-100.fc24.x86_64+debug root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.12-100.fc24.x86_64+debug.img
}
menuentry 'dracut (4.11.10-100.fc24.x86_64+debug) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.10-100.fc24.x86_64+debug-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.10-100.fc24.x86_64+debug root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.10-100.fc24.x86_64+debug.img
}
menuentry 'dracut (0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b.img
}

### 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_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

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

### 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 ###

blkid의 출력:

 [root@vh02 ~]# blkid
/dev/sda1: UUID="e5576283-fa19-4b57-8c1a-4d44227e8b8c" TYPE="ext4" PARTUUID="348d6d2c-01"
/dev/sda2: LABEL="home" UUID="5c592a5a-9819-40d5-a1aa-9e04688cecfa" TYPE="ext4" PARTUUID="348d6d2c-02"
/dev/sda3: UUID="14f0dc3e-9ff4-4051-a8a8-302730b552fb" TYPE="xfs" PARTUUID="348d6d2c-03"
/dev/sda5: UUID="4f19f0d8-badf-4dd3-8105-0bfb3d12609c" TYPE="swap" PARTUUID="348d6d2c-05"

답변1

/boot 볼륨이 sda1에 있다면 메뉴 항목이 확실히 잘못된 것입니다. 다음 상단 항목을 살펴보세요.

### BEGIN /etc/grub.d/10_linux ###
menuentry 'dracut (4.14.18-300.fc27.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.18-300.fc27.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.14.18-300.fc27.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.14.18-300.fc27.x86_64.img
}

set root='hd0,msdos3'이 올바르지 않습니다. 'hd0,msdos1'로 읽어야 합니다. 이것이 /boot 파티션에서 GRUB를 가리키는 것이며, 커널에 대한 root= 인수("linux16"으로 시작하는 줄)는 /의 파일 시스템 UUID를 가리켜야 합니다.

/와 /boot에 grub 파일이 있을 수 있으며 업그레이드 중에 /boot가 마운트 해제되었을 수 있습니다. 제공된 정보로는 말하기 어렵지만 이것이 일반적인 원인입니다. grub-mkconfig/dev/sda1이 /boot에 마운트되어 있는지 확인하면서 grub 구성을 다시 생성하면 이 문제를 쉽게 해결할 수 있습니다 . 실제로 문제가 있는 경우 먼저 / 파일 시스템의 /boot 디렉토리를 정리할 수도 있습니다.

귀하의 초안 문제는 별개이지만 관련되어 있습니다. 커널의 root=UUID= 행을 살펴보고 거기에 있는 UUID가 실제로 다른 것이 아닌 루트 파일 시스템에 대한 것인지 확인합니다. blkid실행 중인 시스템 내에서는 마운트된 지점 옆에 UUID와 기타 세부 정보가 인쇄됩니다. grub 구성 생성이 페도라 설치를 제대로 감지하지 못했기 때문에 메뉴와 기타 항목에 'dracut'이라고 표시됩니다. 다시 말하지만, 이는 마운트 해제된 /boot 또는 심지어 마운트된 / 중에 바인드 때문일 수 있습니다 grub-mkconfig.

관련 정보