私はHomeServerでGentooを使用しています。私のHDDはmdadmを介してミラーリングされるraid1です。
私の質問は/ bootパーティションを正しく起動する方法です。
/dev/md1 consists of /dev/sdc2 & /dev/sdd2 mounted on /boot
私のシステムにはgrub.cfg
uuidがありますが、/dev/md1
もちろん起動時にアレイはまだ準備されていません。
最も簡単な方法は/ bootパーティションへの攻撃をキャンセルすることですが、私が望むものではありません。
それでは、攻撃隊員のUUIDはどのようにわかりますか?ls -l /dev/disk/by-uuid
uuidのみが表示されます/dev/md1
。ディスクアレイをマウント解除すると、UUIDを取得するためにマウントできなくなります。mount: unknown filesystem type 'linux_raid_member'
それでは、Grub2にこれらのディスクを起動させるにはどうすればよいですか? Grub2がRAIDに入る前に内容を確認できますか? (実際にはext2です)。
gptパーティションテーブルを使用することを追加する必要があるため、/dev/sdc1 and /dev/sdd1
bios_grubパーティションをホストしている両方のドライブに小さなパーティションがあります。そのATMは急襲されたATMではありません。
Gilesの答え以下のコメントで指摘したように、私の問題は残ります。 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='(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 / md1 UUIDのエラーが発生しました。
答え1
これGentoo WikiGrub 1とGrub 2に関する情報があります。 Grub 1とGrub 2では、状況はまったく異なります。 Grub 1はRAIDについて何も知りませんが、RAID-1デバイスの1つを読み取ることで、RAID-1デバイスからの読み取りを偽にすることができます。ディスク(1.1または1.2以外の0.9または1.0 mdraidスーパーブロック形式が必要です)Grub 2はデフォルトでLinux mdraidボリュームをサポートしています。
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
ログによれば、RAIDアレイとして検出されず、何も返さないようにbash -x /sbin/grub-install /dev/sdc
見えます。問題が起動コードにのみ存在し、起動コードには存在しない場合は、その決定を上書きしてください。grub-probe
/dev/md1
/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
mdraid 1.xスーパーブロックのサポートはまだ非常に最新です。 Grub 1.98にはありません。少なくとも必要です。バザーリビジョン 2550 日付 2010-07-20(このコードは次の場所にあります。木の枝数ヶ月前)。 Debian squeezeとUbuntu 10.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
Linuxの名前であるmd0
Grubボリューム名はどこにありますか?/dev/md1
Grubは次の2つにアクセスする必要があります/boot/grub
。
- Grubのブートセクタは、BIOSがサポートしているディスクの固定位置からコアイメージを読み取ります(選択肢はあまりありません)。 PC BIOSの場合、
(hd0)
BIOSはブートセクタを読み取るディスク(ブートセクタを含むディスク)であり、(hd1)
他のディスク(常に選択の余地はありません)です。(hd0)
ディスク(またはRAID-1アレイを持つディスク)に/boot/grub
。 - コアイメージは、決定されたファイルシステムの場所(通常はGrubでサポートされているRAIDアレイまたは他のボリュームタイプ)からモジュールとLinuxカーネルをロードします
grub.cfg
。grub-install
/grub
/boot/grub
変更があったら、もう一度実行するdevice.map
必要がありますgrub-install
。grub-mkconfig
すべてのタスクを完了するためにコマンドを使用しない場合は、そのコマンドを再実行する必要がありますsearch
。
答え2
UUIDに関する質問に答えるには、以下を使用してください。blkid
答え3
ライブ〜#mdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sdc2 /dev/sdd2
ライブ〜#幼虫
幼虫>ルート(hd0,1)
Filesystem type is ext2fs, partition type 0xfd
幼虫>設定(hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes Checking if
"/boot/grub/e2fs_stage1_5" exists... yes Running "embed
/boot/grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded. succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p
(hd0,0)/boot/grub/stage2 /boot/ grub/menu.lst"... succeeded Done.