2つのGrub2インストールをチェーンロードする


14

これは本当に私を失望させています。GentooとUbuntuがあり、どちらもGrub2を使用しています。Gentooには専用/bootパーティションがありますが、Ubuntuにはありません。私はmenuentryGentooで/etc/grub.d/40_customUbuntuを起動します(Ubuntuは起動します)。

UbuntuにはGrubが付属しているため、ルート、カーネル、initrdなどを設定するエントリを維持するのではなく、Grubにチェーンロードしたいと考えています。これは私がチェーンローダー用に持っているものです(Ubuntuはオン/dev/sda4になっていて、すでにGrubをインストールしています):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

それは私に与えているものでerror: Invalid signatureあり、解決策はありません。誰かが何かを指摘できますか?

これはの結果です </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

これはの結果ですfdisk -l/dev/sda1/bootGentooのもので、Gentooはにあり/dev/sda2、Ubuntuはにあり/dev/sda4ます。Ubuntu /bootも入ってい/dev/sda4ます。

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

にエラーはありません grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.

明らかにブートローダーをインストールしていません/dev/sda4。複数のディスクがありますか?あなたのパーティションテーブルは何ですか?の出力とfdisk -lからのメッセージを投稿してくださいgrub-install /dev/sda4 --no-floppy --force
ジル「SO-悪であるのをやめる」

はい、私は疑問に更新
phunehehe

回答:


4

GRUB2からGRUB2をチェーンロードできます。私はあなたが説明した方法で試してみましたが、動作します。ただし、指定した情報により、ブートイメージがディスクのMBRに埋め込まれていないように見えます(または、すべてゼロではありません)。

私はこれを試してみましたが、UbuntuのGRUB2を正確には使用していません(構成ファイルだけです)。Ubuntu構成ファイルをロードするGentoo GRUB2構成ファイルにメニューエントリを作成できます。これを行うには、2つの方法があります。

使用するのはnormalコマンドで、これにより、通常モード用にロードする構成ファイルを指定できます。このルートに行くと、normal_exitと呼ばれるコマンドがあります。これをUbuntu設定にカスタム項目として追加すると、Gentoo設定に戻ることができます。

もう1つのオプションはconfigfileコマンドです。このコマンドを使用すると、ロードする代替構成ファイルを指定できます。ただし、このオプションを「バックアウト」するのは難しいようです。

これらのコマンドの詳細については、こちらをご覧ください


3

起動プロセスの最初の部分は、ハードドライブの最初のセクター、いわゆるマスターブートレコード(MBR)からコードを読み込むことで構成されます。通常、Grubは/ bootを保持するパーティションの最初のセクターではなく、この最初のハードドライブセクターに書き込まれます。ただし、通常はLinuxのインストール中にこれを変更できますが、最近のインストールルーチンでは、多くの場合これは隠されています。

Grubが/ dev / sda4にインストールされていると言いますが、設定は正しく見え、投稿したエラーメッセージは、Grubがチェーンロードしたいパーティションに正しくインストールされていない可能性があることを示唆しています。Gentooを起動してから、Ubuntuパーティションにchrootする必要があります。/ bootがGentooではなくUbuntu- / bootを正しく指していることを確認してください!次に、Grub 2をUbuntu-Partition / dev / sda4の最初のセクターにインストールしますgrub-install /dev/sda4 --no-floppy

いつものように、MBRとパーティションをいじるときは、開始する前に機能する最新のバックアップがあることを確認してください。


Ubuntuを起動してgrub-installを実行すると、違いが生じますか?cosそれは私がやったことであり、それは動作しません:(
phunehehe

チェーンローディングが機能しないため、Ubuntuを起動できないと思いましたか?しかし、Ubuntuを起動したり、chrootしたりしても違いはありません。
fschmitt

@phunehehe:エラーメッセージは、Grubが最初のセクターでブートローダーシグネチャを見つけられなかったことを意味します/dev/sda4(最後の2バイトはでなければなりません0x55 0xaa)。の出力を投稿できます</dev/sda4 head -c 512 | hdか?
ジル「SO-悪であるのをやめる」

@Gilles:結果を質問に追加しました。正しく見えませんか?
プネヘヘ

実際に私が実行する必要がありgrub-install /dev/sda4 --no-floppy --forceそうでない場合、ブロックリストに関するいくつかの苦情があるだろう、
phunehehe

-1

sda4はgrubで(hd0,3)にならないのですか、それともgrub2でこの種のものが変更されたのですか?


うん、私は確かに/ dev / SDA4(hd0,4)になりますよ、私はUbuntuのを起動するために使用されているものだというために
phunehehe

3
はい、Grubの2はまだ0でカウントディスクを起動しますが、は/ dev / SDA4だから1とパーティションのカウントを開始0でGrubの0.97開始カウントのハードディスクやパーティションは、GRUB 2にグラブ0.97でhd0,3とhd0,4ある
fschmitt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.