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です。 Debian では、デフォルトの 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

関連情報