web-dev-qa-db-ja.com

Grub2 RAID / boot

HomeServerでGentooを使用しています。私のHDDはmdadmでミラーリングされたraid1です。

私の問題は、/ bootパーティションを正しく起動する方法ですか?

_/dev/md1 consists of /dev/sdc2 & /dev/sdd2 mounted on /boot
_

私の_grub.cfg_には_/dev/md1_のuuidがありますが、起動時にアレイの準備ができていません。

最も簡単な方法は/ bootパーティションをレイド解除することですが、それは私がやりたいことではありません。

では、レイドメンバーのUUIDを確認するにはどうすればよいですか? _ls -l /dev/disk/by-uuid_は_/dev/md1_のuuidのみを表示します。また、ディスクをレイド解除すると、UUIDを取得するためにディスクをマウントできません_mount: unknown filesystem type 'linux_raid_member'_

では、どうすればGrub2にこれらのディスクを起動させることができますか?それらがレイドされる前にコンテンツを判別できますか? (実際にはext2です)。

Gptパーティションテーブルを使用していることを追加する必要があるかもしれません。したがって、bios_grubパーティションをホストするために両方のドライブに小さなパーティション_/dev/sdc1 and /dev/sdd1_があります。それらは襲撃されたATMではありません。

以下のコメントで指摘されているように、Gillesの回答は私の問題が解決しない。 Grubはデバイスを見つけられず、教えてくれます

_error: no such device: 9f81a-(device uuid)-5580.
entering rescue mode...
grub rescue> 
_

その後、行を追加しました

_insmod part_msdos
insmod part_gpt
insmod raid
insmod mdraid
_

grub.cfgに対して、rootが定義されている行のすぐ上にroot='(md0)'同じエラーが発生します。

私はさらに調査を行いましたが、uuidに関連するエラーだと思います。

_# grub-probe -d --target=fs_uuid /dev/md1
9f81a35d-0813-481f-9ae0-e4fba57c5580
# blkid
/dev/sdc2: UUID="11adb545-0e80-61d1-61f6-565f18e8c3f0" UUID_SUB="88826c5e-d12b-307d-6e54-556d1ebb2458" LABEL="livecd:1" TYPE="linux_raid_member"
/dev/sdd2: UUID="11adb545-0e80-61d1-61f6-565f18e8c3f0" UUID_SUB="15150fb2-5066-edba-d39b-08b63219453c" LABEL="livecd:1" TYPE="linux_raid_member"
/dev/md1: UUID="9f81a35d-0813-481f-9ae0-e4fba57c5580" TYPE="ext2"
(I cut away the other drives here)
_

ご覧のとおり、両方のパーティションのUUIDが同じであるため、grub.cfgでドライブのUUIDを編集し、もう一度_grub-install /dev/sdx_を実行しましたが、「古い」/ dev/md1UUIDでエラーが発生します。

4
Baarn

Gentoo Wiki には、Grub1とGrub2の両方について説明する情報があります。Grub1とGrub2では状況が完全に異なることに注意してください。Grub1はRAIDについて何も知りませんが、ディスクの1つを読み取ることによるRAID-1デバイス(これには、1.1または1.2ではなく0.9または1.0 mdraidスーパーブロック形式が必要です)。 Grub 2は、Linuxmdraidボリュームをネイティブにサポートします。

Grub 2は3つの段階で機能します(詳細については、 ここ を参照してください)。

  1. ブートセクター。
  2. install-grub/boot/grub/core.imgによって生成されたコアイメージ。レスキュープロンプトとモジュールの読み込みを表示できますが、それ以外はほとんど表示できません。
  3. ロード可能なモジュールを備えた完全なシステム。通常は(normalモジュールを介して)/boot/grub/grub.cfgで記述されたブートメニューを表示します。

コアイメージの生成

grub-install /dev/sdaを実行してコアイメージを生成し、/boot/grubにモジュールファイルを入力します。 grub-installは、指定されたデバイスにブートセクターもインストールします。両方のドライブにブートセクタを設定する場合は、grub-install /dev/sdcgrub-install /dev/sddの両方を実行します。

grub-installがドライブを正しく検出しない場合は、次のスクリプトを/usr/local/sbin/grub-probe-verboseとして作成し、grub-install --grub-probe=/usr/local/sbin/grub-probe-verboseを実行して何が起こっているかを確認します。

#!/bin/sh
exec /usr/sbin/grub-probe "$@" | tee /dev/stderr

bash -x /sbin/grub-install /dev/sdcからのトランスクリプトから、grub-probe/dev/md1をRAIDアレイとして検出していないようです(/sbin/grub-probe --device-map=/boot/grub/device.map --target=partmap --device /dev/md1/sbin/grub-probe --device-map=/boot/grub/device.map --target=abstraction --device /dev/md1は何も返しません)。問題がgrub-probeのみにあり、ブートコードにはない場合は、その決定を上書きしてみてください。

grub-install --modules='biosdisk ext2 msdos raid mdraid' /dev/sdc

Mdraid1.xスーパーブロックのサポートはまだ最近です。 Grub 1.98にはないので、少なくとも 2010年7月20日付けのBazaarリビジョン255 (コードは数か月前に ブランチ にありました)が必要です。 DebiansqueezeとUbuntu10.10には、1.xスーパーブロックがサポートされています。 Gentooは今では1.99になると思います。

Grub.cfgの生成

grub-mkconfig -o /boot/grub/grub.cfg.grub-mkconfigを実行して、暫定的なGrub構成ファイルを作成します。確認し、正しいと思われる場合は、名前を/boot/grub/grub.cfgに変更します。

デバイスマップ

/boot/grub/device.mapの出力を正しく取得するには、grub-mkconfigを微調整する必要がある場合があります。このファイルは、存在しない場合はgrub-mkdevicemapによって自動的に生成されますが、多くのディスクを使用するセットアップでは混乱する傾向があります。私はそれが次のようなものを含むことを期待します

(md0) /dev/md1
(hd0) /dev/sdc
(hd1) /dev/sdd

ここで、md0はGrubボリューム名であり、/dev/md1はLinuxでの名前です。 Grubは、次の2つの目的で/boot/grubにアクセスする必要があります。

  • Grubのブートセクタは、BIOSでサポートされているディスク上の固定位置にあるコアイメージを読み取ります(選択肢はあまりありません)。 PC BIOSの場合、(hd0)はBIOSがブートセクターを読み取るディスク(ブートセクターを含むディスク)であり、(hd1)は他のディスクです(常にアクセスできるとは限りません)。選択)。 (hd0)/boot/grubを含むディスク(またはRAID-1アレイを備えたディスク)の場合は、より簡単です。
  • コアイメージは、モジュールとgrub.cfgおよびLinuxカーネルを、grub-installによって決定されるファイルシステムの場所からロードします。通常は、RAIDアレイまたは任意のデバイスから/grubまたは/boot/grubをロードします。 Grubでサポートされている他のボリュームタイプ。

device.mapを変更した場合は、grub-installを再度実行する必要があります。すべてをsearchコマンドに依存していない場合は、grub-mkconfigを再度実行する必要がある場合があります。

UUIDに関する質問に答えるには:blkidを使用します

0
Nils