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でエラーが発生します。
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つの段階で機能します(詳細については、 ここ を参照してください)。
install-grub
の/boot/grub/core.img
によって生成されたコアイメージ。レスキュープロンプトとモジュールの読み込みを表示できますが、それ以外はほとんど表示できません。normal
モジュールを介して)/boot/grub/grub.cfg
で記述されたブートメニューを表示します。grub-install /dev/sda
を実行してコアイメージを生成し、/boot/grub
にモジュールファイルを入力します。 grub-install
は、指定されたデバイスにブートセクターもインストールします。両方のドライブにブートセクタを設定する場合は、grub-install /dev/sdc
とgrub-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-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
にアクセスする必要があります。
(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
を使用します