GRUBをパーティションテーブルなしでext4ディスク全体にインストールする方法は?


15

現在、私はディスク全体/dev/sdaをext4としてフォーマットし、Gentooをインストールしています。

(MBRもパーティションもありません。)

しかし最後に、GRUBをMBRに書き込む必要があるように見えるため、GRUBをインストールできません。

# grub-install /dev/sda
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
The file /boot/grub/stage1 not read correctly. 

どちらも機能しないgrub

# grub
grub> root (hd0)
 Filesystem type unknown, using whole disk

grub> setup (hd0)
 Error 17: Cannot mount selected partition

MBRなしでGRUBを/ dev / sdaにインストールする方法はありますか?

PS /bootディレクトリとgrub.confファイル:

# tree /boot 
/boot
|-- boot -> .
|-- grub
|   |-- default
|   |-- device.map
|   |-- e2fs_stage1_5
|   |-- fat_stage1_5
|   |-- ffs_stage1_5
|   |-- grub.conf
|   |-- iso9660_stage1_5
|   |-- jfs_stage1_5
|   |-- menu.lst -> grub.conf
|   |-- minix_stage1_5
|   |-- reiserfs_stage1_5
|   |-- splash.xpm.gz
|   |-- stage1
|   |-- stage2
|   |-- stage2_eltorito
|   |-- ufs2_stage1_5
|   |-- vstafs_stage1_5
|   `-- xfs_stage1_5
`-- kernel-2.6.36-gentoo-r5

# cat /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.36-r5
root (hd0)
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda

title Gentoo Linux 2.6.36-r5 Rescue
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda init=/bin/bb

# cat /boot/grub/devices
(fd0)   /dev/fd0
(hd0)   /dev/sda

使用したコマンドとインストールしようとしたときに表示されたエラーメッセージを含めることができれば便利です。たとえば、試してみましたgrub-install /dev/sdaか?
プネヘヘ

MBRを使用してディスクレイアウトを作成し直し、rawファイルシステムをディスクの単一パーティションにコピーしました。ただし、新しいGentoインストールを再試行し、しばらくしてからエラーメッセージを貼り付けます。おかげで
謝Jìléi

編集エラーメッセージを追加しました。
謝Jìléi

回答:


5

BIOSはディスクの最初のセクター(512バイト)を読み取り、そこに分岐します。ディスクにPCスタイルのパーティションが含まれる場合、最初のセクターにはパーティションテーブルも含まれます。ディスクに単一のファイルシステムが含まれる場合、最初のセクターには、ファイルシステムがそこに置くことを決定したものがすべて含まれます。ext [234](および他の多くのファイルシステム)の場合、最初のセクター¹はブートローダー用に予約されています(最初はゼロになっています)。Grubはにインストールでき/dev/sdaます。

そうは言っても、パーティションテーブルを含まないデバイスからの起動を拒否するBIOSがときどきあります。(ただし、パーティションテーブルが含まれている場合、一部の外部デバイスからの起動を拒否するBIOSもあります!)これらのBIOSのいずれかがある場合は、パーティションテーブルを作成する必要があります。

パーティションテーブルが不要な場合でも、お勧めします。ほんの数キロバイトを無駄にするだけで、多くの非Linux OSで読みやすくなり、共同システム管理者にとっても驚きは少なくなります。誤ってWindowsを実行しているマシンにディスクを接続した場合、パーティションテーブルが表示されない場合はディスクを再フォーマットすることをお勧めしますが、認識されないパーティションタイプ。

¹ 実際、最初のブロックは、ブロックに渡されるオプションに応じて1kB、2kB、または4kB mkfsです。


5
VirtualBoxのゲストGentoo OSによって使用されます。rawによってバックエンドする.vmdk仮想ディスクを作成しましたimage.ext4。1つのファイルシステムにディスク全体を使用する理由は、などのトリッキーなパーティションオフセットを使用せずに、ホストOSにボリュームを直接マウントするためです-o loop,offset=1048576
謝Jìléi

1
関連するケースでは、システムにFCディスクが接続されています。これらは、データベースまたはLVMで使用するためのJBODであり、パーティションレスにすることを目的としています。でGrubを再インストールするとき--recheck、パーティションのないドライブでマップテーブルを更新し、存在しないパーティションテーブルをチェックすると文句を言います。これらのドライブパスをマップファイルから削除すると、警告は消えます。
オテウス


0

ほぼすべてがパーティションテーブルを想定しています。再インストールし、少なくとも/ boot、swap、および/ rootパーティションを作成するという推奨ガイドラインに従う必要があると思います。あなたのスワップはどこですか?


4
Linuxは気にしません。ほとんどのBIOSは気にしません(ただし、一部のBIOSは気にしません)。個別のスワップパーティションとブートパーティションは不要であり/boot、最新のハードウェアでは推奨されなくなりました(ディスクサイズのBIOS制限とGrub 1のLVMなどの高度なディスクモードのサポート不足を回避するのは面倒でした)。
ジル「SO-悪であるのをやめる」

@Gillesつまり、分離せずにLVMを使用でき/bootますか?もしそうなら、なぜ/boot同じパーティションに残した方が良いの/ですか?
プネヘヘ

2
@phunehehe:あなたが別々せずにLVMを持つことができます/bootが、グラブ1. Aが分離しないと、LILOやグラブ2と/boot管理コストを(あなたが1つの以上のパーティションを作成する必要があり、そしてあなたが混同しないように注意する必要があり/boot/)、そのため、理由がある場合(ブートローダーがLVMを理解していないなど)にのみ使用します。
ジル 'SO-悪であるのをやめる'

1
@Gilles今、あなたは...私は再インストールするような気分にさせる
phunehehe

1
ディスク全体の暗号化なども使用できます:)
XTL
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.