基本的な作業システムの詳細:
Ubuntu 12.04サーバーCDを使用してサーバーをインストールしました。
4つのディスクがあります。すべてのディスクで、このhowtoと同様に、次のことを行いました。
- 2GBのスワップパーティションを作成しました
- 256 GBの/ bootパーティションを作成
- 64 GB RAID10パーティションを作成(ルート用)
- 残りのスペースを占める大きなRAID10パーティションを作成
ブートをext3としてフォーマットしました。ルートと大きなパーティションにRAID10をセットアップしました。ルートをext4でフォーマットしました。大きなボリューム上に論理ボリュームを作成し、ext4でフォーマットしました。
結果のシステムは正常に動作し、正常に起動します。
問題の詳細:
次に、失敗の手順を文書化することにしました。最初のステップとして、grubを再インストールすることにしました。
# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
そのため、失敗したように見えますが、あきらめて変更を加えなかったようです。だから私は再起動しました。起動に失敗しました。黒い画面でハングし、カーソルが約4行下に点滅します。「Shift」キーを押しながら起動すると、カーソルの左側に「GRUB」という単語が表示されますが、インタラクティブなプロンプトは表示されません。
この時点で、私はこのレポートを生成するためにboot-repair-diskを使用しました:http : //paste.ubuntu.com/966531/
上記のレポートでは、ブートローダーがcore.imgの正しいセクターを指していないと記載されています。(sdaは仮想CDです。sdbはブートディスクです。sdcはsdbのミラーですが、ブートはミラーリングされていません。独立した無関係なパーティションがあり、フォーマットされたext3です。sddとsdeにはブート用のスペースがありますが、フォーマットされていません)
次に、UbuntuサーバーのCDから起動し、レスキューシステムを起動して、エラーなしで完了した次のコマンドを発行しました(sdaは仮想CD、b、c、d、eはa、b、cのディスクです) 、前のgrubコマンドのd):
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
この時点で、私はこのレポートを生成するためにboot-repair-diskを使用しました:http : //paste.ubuntu.com/966561/
上記のレポートでは、core.imgに関する問題は解消されています。正しいセクターを指しているようです。
起動しようとすると、grubプロンプトが表示されます。「set」を実行すると、ルートが見つかり、設定されていることがわかります。「ls /」を実行すると、vmlinuzカーネルファイルを含むraidボリュームのルートディレクトリが表示されます。「ls / vmlinuz」と入力すると、「エラー:ファイルが見つかりません」と表示されます。「linux」コマンドを使用してカーネルをロードしようとすると、同じエラーが表示されます。「ls -l /」を使用すると、vmlinuzファイルがリストされません。
フォローしたい場合のために、過度に詳細な説明:
/boot/grub/grub.cfgもないことに気付いたので、実行しました
# grub-mkconfig -o /boot/grub/grub.cfg
しかし、問題は残っています。
「gptsync」ツールを使用しても、この動作に変更はありません。
EFIが有効なBIOSで起動するように要求するため、boot-repair-diskはシステムを修復しません。私はこれを簡単に調べましたが、それがどのように機能するのかわかりません。ブートオプションでUEFIシェルを見つけましたが、それについて何も知りません。そこからスタートアップを変更する方法がわかりません(たとえば、そのEFIシェルからCDをブートするなど)。
私もこのページを読みましたが、Ubuntuには「grub」コマンドが付属していないため、正確にフォローすることはできません。私は単にそのコマンドをインストールすることができましたが、別のセットアップをするのではなく、Ubuntuインストーラーがそれをインストールする方法を見つけたいと思っています。ブロックリストを使用しましたか?
boot-repair-diskで起動されたときのpartedの出力は次のとおりです(ここでsdbは最初のハードディスク、ディスクから起動された場合はsda、2番目の貼り付けリンクで「boot」は「bios_grub」に変わります)。
Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000MB 2000MB linux-swap(v1) swap1
2 2000MB 2256MB 256MB ext3 boot1 boot (this says bios_grub in 2nd link)
3 2256MB 66.3GB 64.0GB root1 raid
4 66.3GB 3001GB 2934GB data1 raid
これは、比較のための無関係な超古い仮想マシンです(boot-repair-diskに慣れていない人向け):http : //paste.ubuntu.com/966799/
上記のgrub-mkconfigを実行し、「bios_grub」を「boot」に戻した後の、問題のあるシステムからの最新の貼り付けは次のとおりです。 http://paste.ubuntu.com/966808/
2つを比較すると、これは興味深いように見えます。
sdb2: __________________________________________________________________________
File system:
Boot sector type: Grub2's core.img
Boot sector info:
Mounting failed: mount: unknown filesystem type ''
md/bcserver8:0: ________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
raidにブートファイルがあり、sdb2がフォーマットされていないようです。(これにもかかわらず、grub-installを実行する前にシステムが起動しました)。レスキューCDから、「mount -t ext3 / dev / sdb2 / boot」が失敗します。しかし、grubはパーティション2を明示的に使用するため(bios_grubをオンに設定するpartedコマンドの2)、これは混乱を招くのは当然です。
だから私はこのようなことをしました:
# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
その後、再起動すると、再び黒い画面が表示され、プロンプトは表示されません。 http://paste.ubuntu.com/966848/
したがって、この時点で、私の推測では、bios_grubが設定されている場合、grubはMBRにインストールされず、ext3のext3ファイルシステムにはインストールされず、パーティション自体にインストールされます。そこにext3ファイルシステムをセットアップします。EFIについての簡単な説明から、EFIは最初のパーティションがブートであると想定しているようですが、私の場合、最初のパーティションはスワップであり、マウントできないものではなくFATである必要があります...感覚、私はまだ手掛かりなしで完全に失われています。[編集:今私は手がかりを持っています...更新のために少しスキップしてください]
そして今、boot-repair-diskでrepairをクリックすると、別の質問が表示されます。前回、エラーがウィンドウの下に隠れていたので、それを表示するためにもう一方をドラッグしなければなりませんでした。今回はメインウィンドウがなくなり、新しいウィンドウには次のように表示されます。
GPT detected. You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?
だから私は「はい」をクリックすると、それは正常に修復されたと言い、別のペーストを作成しました:http : //paste.ubuntu.com/966862/
しかし、まだカーソルが点滅している黒い画面があります。
今私の理論は、ブートが非脂肪で非EFIの物によって上書きされたというものです。これは、以前はセクター0〜63にあったはずの単なるコードです。幸いにも、このページで非常に明確な声明に出くわしました。おそらく、これがすべての意味を理解できたと思います。そして、私がそれを見つけた後、ジェレミーは答えを投稿しました。真の場合、これは欠けている重要な概念であることを確認します。 http://blog.psych0tik.net/2011/08/grub-embedding-blocklists-and-bios_grub-partitions/
質問:
何が起こっている?grubが起動しないのはなぜですか?「ファイルが見つかりません」と表示されるのはなぜですか?
partedで設定したこの設定(Ubuntuインストーラーによって設定されなかった)なしでgrubがインストールしないのはなぜですか?ルートはRAIDにあり、パーティションテーブルはGPTなので、インストールに必要なのは、LVMにもソフトウェアRAIDにもない個別の/ bootだけだと思いました。
Ubuntu CDインストーラーは、この問題なしで、bios_grub設定なしでどのようにインストールしますか?
EFIの使用も検討します。これが良いアイデアであり、標準的な設定方法がある場合、私は常に新しいことを学ぶ用意があります。
すべての質問に答えなくても私を幸せにする最も速い答えは、インストールCDが行ったのと同じ方法でブートローダーを修正するためにレスキューCDから実行できる一連のコマンドです。CDの代わりに、起動したシステムで実行できれば、さらにすばらしいでしょう。