質問: grub=パーティションテーブルなしのext4ディスク全体にインストールする方法は? 現在、ディスク全体を持っています/dev/sda ext4としてフォーマットされ、gentooがインストールされています。(mbrはなく、パーティションもありません。)しかし、最後にgrubをインストールすることはできません。grubはmbrに書き込む必要があるためです。# 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 grubをmbrなしで/ dev/sdaにインストールする方法はありますか?追伸/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
回答: biosはディスクの最初のセクター(512バイト)を読み取り、そこに分岐します。ディスクにpcスタイルのパーティションが含まれている場合、最初のセクターにもパーティションテーブルが含まれています。ディスクに単一のファイルシステムが含まれている場合、最初のセクターには、ファイルシステムがそこに置くことを決定したものすべてが含まれます。 ext 234の場合、最初のセクター1はブートローダー用に予約されています(最初はゼロに設定されています)。 grubは/dev/sdaにインストールできます。そうは言っても、パーティションテーブルが含まれていないデバイスからの起動を拒否するbiosがときどきあります。 (ただし、パーティションテーブルが含まれている場合、一部の外部デバイスからの起動を拒否するbiosもあります。)これらのbiosのいずれかを使用している場合は、パーティションテーブルを作成する必要があります。パーティションテーブルが必要ない場合でも、推奨されます。数キロバイトを無駄にするだけで、linux以外の多くのosで可読性が得られ、共同システム管理者にとって驚きが少なくなります。 windowsを実行しているマシンに誤ってディスクを接続した場合、パーティションテーブルが表示されない場合はディスクを再フォーマットするように勧められることがあります。認識できないパーティションタイプ。1 実際、最初のブロックは、mkfsに渡されるオプションに応じて、ブロックが1kb、2kb、または4kbになると思います。