grub2는 대체 /boot 파티션의 파일 시스템을 볼 수 없습니다

grub2는 대체 /boot 파티션의 파일 시스템을 볼 수 없습니다

나는 2개의(곧 더 빨리) 별도의 운영 체제를 가지고 있습니다. 현재 CentOS 6.6, 7만 있지만 앞으로 더 많은 버전이 추가될 예정입니다.

CentOS 7을 깔끔하게 부팅할 수 있지만 6.6은 부팅되지 않습니다. 오류는 다음과 같습니다

error: no such device (long UUID here)
error: unknown filesystem

참고로 디스크는 GPT이고 gdisk/parted를 사용하여 파티션이 나누어져 있습니다. /boot7용 버전 /dev/sda2과 6.6용 버전이 있습니다 /dev/sda9. 둘 다 전체 /boot/grub2/디렉토리를 가지고 있지만 (그것은 중요하지 않습니다) 동일한 grub2.cfg.

작업 7 one( sda2)이 형식화되었습니다 xfs. 실패 6.6 one( sda9)이 표시 또는 ext2에서 실패합니다 .ext4xfs

grub 명령줄을 입력하여 파티션 나열을 시도했습니다. 모든 파티션을 볼 수 있지만 다음을 제외한 파일 시스템은 볼 수 없습니다 sda2.

grub> ls (hd0,2)
      Partition hd0,2: Filesystem type xfs, UUID 97df.... - Partition start at 2048 KiB - Total size 512000 KiB
grub> ls (hd0,9)
      Partition hd0,9: No known filesystem detected - Partition start at 279393720 KiB - Total size 495616 KiB

7로 부팅하면 sda9직접 마운트할 수 있고 모든 것이 괜찮아 보입니다.

parted의 파티션 테이블:

(parted) p
Model: DELL PERC H730 Mini (scsi)
Disk /dev/sda: 8397GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name            Flags
 1      1049kB  2097kB  1049kB                               bios_grub
 2      2097kB  526MB   524MB   xfs
 3      526MB   537GB   537GB                                lvm
 4      537GB   1074GB  537GB                                lvm
 5      1074GB  1504GB  430GB                                lvm
 6      1504GB  1933GB  430GB                                lvm
 7      1933GB  2324GB  391GB                                lvm
 8      2324GB  2861GB  537GB                Linux LVM       lvm
 9      2861GB  2861GB  508MB   xfs          centos_66_boot
10      2861GB  2961GB  99.5GB               centos_66_root  lvm
11      2961GB  2971GB  9999MB               smart_data1
12      2971GB  3071GB  100GB                smart_data2

(* 대체 애플리케이션 콘텐츠의 경우 파티션에 아무것도 없습니다 smart_).

gdisk를 선호하는 경우:

Disk /dev/sda: 16401301504 sectors, 7.6 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 5B41D43E-6D17-4E34-9068-E66BD3753D70
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 16401301470
Partitions will be aligned on 2048-sector boundaries
Total free space is 10403256253 sectors (4.8 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048            4095   1024.0 KiB  EF02
   2            4096         1028095   500.0 MiB   0700
   3         1028096      1049612287   500.0 GiB   8E00
   4      1049612288      2098196479   500.0 GiB   8E00
   5      2098196480      2937065471   400.0 GiB   8E00
   6      2937065472      3775934463   400.0 GiB   8E00
   7      3775934464      4539299839   364.0 GiB   8E00
   8      4539299840      5587875839   500.0 GiB   8E00  Linux LVM
   9      5587875840      5588867071   484.0 MiB   0700  centos_66_boot
  10      5588867072      5783203839   92.7 GiB    8E00  centos_66_root
  11      5783203840      5802733567   9.3 GiB     0700  smart_boot
  12      5802733568      5998047231   93.1 GiB    BF00  smart_data

관련 부품 /boot/grub2/grub.cfg:

menuentry 'CentOS Linux 7 (Core), with Linux 3.10.0-229.14.1.el7.x86_64' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-229.14.1.el7.x86_64-advanced-d171cb6d-c39b-45d5-b09a-33f641c3f397' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod xfs
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 --hint='hd0,gpt2'  97dfd142-3423-459a-a39e-9a6099b3e5fc
        else
          search --no-floppy --fs-uuid --set=root 97dfd142-3423-459a-a39e-9a6099b3e5fc
        fi
        linux16 /vmlinuz-3.10.0-229.14.1.el7.x86_64 root=/dev/mapper/root-lv_root ro rd.lvm.lv=root/lv_root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet
        initrd16 /initramfs-3.10.0-229.14.1.el7.x86_64.img
}
    menuentry 'CentOS release 6.6 (Final) (on /dev/mapper/vg_centos6-lv_centos6_root)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-b5002a5f-a521-423c-bae5-82e0aefe5e17' {
        insmod part_gpt
        insmod xfs
        set root='hd0,gpt9'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt9 --hint-efi=hd0,gpt9 --hint-baremetal=ahci0,gpt9 --hint='hd0,gpt9'  5715cdc8-9d49-49c3-814f-eb887d69b7d4
        else
          search --no-floppy --fs-uuid --set=root 5715cdc8-9d49-49c3-814f-eb887d69b7d4
        fi
        linux /vmlinuz-2.6.32-504.el6.x86_64 root=/dev/dm-5
        initrd /initramfs-2.6.32-504.el6.x86_64.img
}

또한 대체 파티션 코드를 시도했지만 sda9아무것도 작동하지 않았습니다. 내가 무엇을 놓치고 있나요?

그만한 가치가 있는 경우 grub2 버전은 다음과 같습니다.

# rpm -qi grub2
Name        : grub2
Epoch       : 1
Version     : 2.02
Release     : 0.17.0.1.el7.centos.4
Architecture: x86_64
Install Date: Mon 26 Oct 2015 05:48:42 PM IST
Group       : System Environment/Base
Size        : 7394739
License     : GPLv3+
Signature   : RSA/SHA256, Wed 23 Sep 2015 07:13:19 PM IDT, Key ID 24c6a8a7f4a80eb5
Source RPM  : grub2-2.02-0.17.0.1.el7.centos.4.src.rpm
Build Date  : Wed 23 Sep 2015 05:51:07 PM IDT
Build Host  : kbuilder.dev.centos.org
Relocations : (not relocatable)
URL         : http://www.gnu.org/software/grub/
Summary     : Bootloader with support for Linux, Multiboot and more

댓글 작성자의 요청에 따라 출력은 다음과 같습니다.

# file -s /dev/sda9
/dev/sda9: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
# file -s /dev/sda2
/dev/sda2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

두 가지 모두에 만족하는 것 같습니다 grub2-probe:

# grub2-probe --device /dev/sda2
xfs
# grub2-probe --device /dev/sda9
xfs

grub2-fstest이 파티션도 깔끔하게 반환되는 것 같습니다.

# grub2-fstest -vvv -r /dev/sda2 /dev/sda ls -- -l
Device proc: Filesystem type procfs - Sector size 512B - Total size 0KiB
Device loop0: No known filesystem detected - Sector size 512B - Total size 8200650752KiB
    Partition loop0,gpt12: No known filesystem detected - Partition start at 2901366784KiB - Total size 97656832KiB
    Partition loop0,gpt11: No known filesystem detected - Partition start at 2891601920KiB - Total size 9764864KiB
    Partition loop0,gpt10: No known filesystem detected - Partition start at 2794433536KiB - Total size 97168384KiB
    Partition loop0,gpt9: Filesystem type xfs, UUID b5c911d7-4f55-46da-80fd-d956bad72234 - Partition start at 2793937920KiB - Total size 495616KiB
    Partition loop0,gpt8: No known filesystem detected - Partition start at 2269649920KiB - Total size 524288000KiB
    Partition loop0,gpt7: No known filesystem detected - Partition start at 1887967232KiB - Total size 381682688KiB
    Partition loop0,gpt6: No known filesystem detected - Partition start at 1468532736KiB - Total size 419434496KiB
    Partition loop0,gpt5: No known filesystem detected - Partition start at 1049098240KiB - Total size 419434496KiB
    Partition loop0,gpt4: No known filesystem detected - Partition start at 524806144KiB - Total size 524292096KiB
    Partition loop0,gpt3: No known filesystem detected - Partition start at 514048KiB - Total size 524292096KiB
    Partition loop0,gpt2: Filesystem type xfs, UUID 97dfd142-3423-459a-a39e-9a6099b3e5fc - Partition start at 2048KiB - Total size 512000KiB
    Partition loop0,gpt1: No known filesystem detected - Partition start at 1024KiB - Total size 1024KiB

돕다?

답변1

사용 중인 시스템 디스크가 2TiB보다 훨씬 큽니다. 파티션이 있지만 bios_grubEFI 시스템 파티션이 없으면 GPT 파티션을 사용하더라도 레거시 BIOS 부팅 모드를 사용하고 있음을 나타냅니다.

파티션 sda9이 디스크의 처음 2TiB를 초과합니다.

grub2-probe파일 시스템은 잘 인식되는 것으로 보이며 실제 GRUB 부트 로더 설치에서 파일 시스템 드라이버와 동일한 코드 기반을 사용합니다. 이는 CentOS 6.x에서 XFS를 이해하지 못하는 GRUB의 문제가 아님을 강력히 시사합니다.

따라서 GRUB 코드베이스의 XFS 감지 루틴은 디스크 액세스를 위해 Linux 커널에 의존할 때 제대로 작동하지만 부팅 시 시스템 펌웨어 위에서 실행될 때는 실패합니다.시스템 펌웨어가 레거시 BIOS 기능을 사용하여 처음 2TiB 이상의 데이터에 액세스하는 것을 지원하지 않는 것 같습니다.이것이 GRUB이 CentOS 6 부팅 파티션을 찾을 수 없는 이유일 수 있습니다.

2TiB 제한을 없애는 것은 x86 아키텍처용 GPT 파티셔닝 및 UEFI를 개발하는 주요 이유 중 하나입니다. 레거시 BIOS 및 GPT 파티션을 사용하여 2TiB보다 큰 디스크에서 부팅하는 것은 Windows(여전히 x86 플랫폼에서 "상업적으로 지배적인" 운영 체제)에서 지원되지 않는 특별한 경우이므로 하드웨어 공급업체는 이를 테스트하지 않습니다. 하드웨어를 사용하여 새롭고 테스트되지 않은 작업을 수행할 수도 있습니다.

내가 아는 한, 귀하의 선택은 다음과 같습니다:

  • BIOS 스타일 부팅을 계속 사용하려면 /boot디스크의 처음 2TiB 내에 모든 운영 체제 파티션(또는 동등한 파티션)을 정렬해야 합니다.
  • 또는 기본 UEFI 스타일 부팅으로 전환하고 최소보다 큰 EFI 시스템 파티션(줄여서 ESP)을 생성한 다음 모든 운영 체제가 UEFI 부트 로더를 여기에 설치하도록 할 수 있습니다. UEFI 사양에서는 다음을 명시적으로 허용합니다. 모든 운영 체제는 <ESP root>/EFI/<vendor_or_distribution_name>/ESP 내의 하위 디렉터리에 부트로더를 설치해야 합니다.

설치하려는 모든 운영 체제가 UEFI를 지원한다면 두 번째 옵션을 권장합니다. 새로운 것을 배우고 오래된 "사실"을 잊어야 하지만, 성가신 기존 2TiB 제한에 대해 전혀 생각할 필요 없이 시스템을 사용할 수 있습니다.

관련 정보