Grub은 GPT RAID에서 부팅되지 않습니다(루트 장치 대기를 포기함)

Grub은 GPT RAID에서 부팅되지 않습니다(루트 장치 대기를 포기함)

단일 하드 드라이브에서 RAID1(mdraid)로 루트 파티션을 마이그레이션한 Debian 8 시스템을 부팅하는 데 문제가 있습니다.

부팅할 때마다 다음과 같은 grub 오류가 발생합니다.

Gave up waiting for root device. Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/2ab18cb4-a23d-4e5c-b37d-cbd3077b878c does not exist.
Dropping to a shell!
modprobe: module ehci-orion not found in modules.dep

(initramfs)

/dev/md0시작되지 않았으므로 루트 파티션을 찾을 수 없습니다.

(initramfs) ls /dev/md*
ls: /dev/md*: No such file or directory
(initramfs)

하지만 수동으로 공격대를 시작할 수 있습니다.

(initramfs) mdadm --assemble --scan
mdadm: /dev/md0 has been started with 2 drives.
(initramfs) ls /dev/md*
/dev/md0

디렉토리를 수동으로 생성한 경우에만 시스템이 시작됩니다./dev/disk/by-uuid및 링크MD0:

(initramfs) mkdir /dev/disk/by-uuid
(initramfs) ln -s /dev/md0 /dev/disk/by-uuid/2ab18cb4-a23d-4e5c-b37d-cbd3077b878c

grub이 자체적으로 md 장치를 부팅하지 않는 이유를 알아내는 데 누군가 도움을 줄 수 있기를 바랍니다. 나는 인터넷에서 검색하고 찾을 수 있는 모든 것을 시도했지만 성공하지 못했습니다. 나는 지금 정말로 길을 잃었습니다.

나는부터 시작하고 싶다BIOS 레거시, 아니요UEFI.

연결된 하드 드라이브(SSD!) 2개만 다음과 같이 포맷됩니다.GPT파티션 테이블은 다음 파티션과 동일합니다.

1      1049kB  2097kB  1049kB                     bios_grub
2      2150MB  12,9GB  10,7GB  ext4               raid

(그럽 컴퓨터첫 번째 파티션에서 부팅해야 함GPT운전사)

Raid1(v0.90 메타데이터)은 다음과 같이 직접 형식화됩니다.외부 4.

라이브 시스템 chroot를 통해 설치했습니다.그럽 컴퓨터도착하다/dev/sda그리고/dev/sdb, 내 것을 변경했습니다시스템 테이블, 실행 update-grubupdate-initramfs -u -k all.

blkid:

/dev/sda2: UUID="b59d3baf-346b-568d-03a2-8b26060640c5" TYPE="linux_raid_member" PARTUUID="0609ba5b-9065-41f8-80ed-6832e3236ec9"
/dev/sdb2: UUID="b59d3baf-346b-568d-03a2-8b26060640c5" TYPE="linux_raid_member" PARTUUID="24ee1040-02dd-4867-b4da-5be11d59bdcd"
/dev/md0: UUID="2ab18cb4-a23d-4e5c-b37d-cbd3077b878c" TYPE="ext4"
/dev/sda1: PARTUUID="df5161cf-b5b3-422c-9ed2-90a7750ac265"
/dev/sdb1: PARTUUID="7d20b55b-ba50-4187-b05e-ae1f18b21de3"

mdadm.conf다음을 포함합니다(만!) mdadm --detail --scan:

ARRAY /dev/md0 metadata=0.90 UUID=b59d3baf:346b568d:03a28b26:060640c5

이건 내 발췌문이야/boot/grub/grub.cfg:

load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod part_gpt
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/b59d3baf346b568d03a28b26060640c5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint='mduuid/b59d3baf346b568d03a28b26060640c5'  2ab18cb4-a23d-4e5c-b37d-cbd3077b878c
else
  search --no-floppy --fs-uuid --set=root 2ab18cb4-a23d-4e5c-b37d-cbd3077b878c
fi
echo        'Linux 3.16.0-4-amd64 wird geladen …'
linux       /boot/vmlinuz-3.16.0-4-amd64 root=UUID=2ab18cb4-a23d-4e5c-b37d-cbd3077b878c ro  rootdelay=20
echo        'Initiale Ramdisk wird geladen …'
initrd      /boot/initrd.img-3.16.0-4-amd64

답변1

실제로 이 작업을 수행하는 것은 grub이 아니라 initramfs입니다. 데비안에서 기본 initramfs 구현은 다음과 같습니다.initramfs-tools. initramfs가 루트 파일 시스템을 얼마나 잘 마운트할 수 있는지는 initramfs마지막 호출 시 설치된 패키지(패키지는 기능 확장을 위해 후크 스크립트를 추가할 수 있음) update-initramfs및 구성 방법을 포함한 여러 요소에 따라 달라집니다.

문제는 mdraid 장치가 재구축되지 않은 것 같으므로 mdadm패키지가 올바르게 구성되지 않은 것 같습니다. 먼저 이 문제를 해결해 보세요.

sudo dpkg-reconfigure mdadm

그 후에는 initramfs가 자동으로 업데이트되어야 합니다.

이렇게 해도 문제가 해결되지 않고 소프트웨어 RAID로 마이그레이션하는 과정에서 새 파일 시스템을 생성한 경우 fstab이전 파일 시스템의 UUID가 더 이상 새 파일 시스템과 일치하지 않을 수 있습니다. 확인하다:

grep $(blkid /dev/md0) /etc/fstab

출력이 생성되지 않으면 /etc/fstab출력을 편집하여 루트 장치에서 지정한 UUID를 바꾸고 blkid /dev/md0다시 실행합니다 update-initramfs.

관련 정보