私のセットアップの現在の状態のため、GRUB2をチェーンロードするためのメインブートローダーであるSyslinuxを作成します。 Googleは、GRUB2からSyslinuxをチェーンロードする方法について多くの情報を提供していますが、私が求めている逆のシナリオには実際には何も役立ちません。
Syslinuxと同じパーティション上の/boot/grub
にGRUBのファイルがあるとすると、次のように、最初のGRUBという名前のboot.img
というイメージをチェーンロードできます。
LABEL GRUB
MENU LABEL Grub2 chainload
COM32 CHAIN.C32
APPEND file=/boot/grub/boot.img
私はこれを自分で試したことがありませんが、ArchLinux wikiでこれらの詳細を見つけました。タイトルが適切な記事: Syslinux 。 他のLinuxシステムのチェーンロード というタイトルのセクションがあります。
抜粋
Windowsなどの別のブートローダーをチェーンロードすることは、明白なブートローダーがあるため、かなり明白です。ただし、Syslinuxでは、構成ファイルと同じパーティションにあるファイルのみをロードできます。したがって、別のパーティションに別のバージョンのLinuxがあり、/ bootが共有されていない場合、Extlinuxを使用する必要があります。基本的に、Extlinuxはパーティションのスーパーブロックにインストールして、SyslinuxによってインストールされたMBRとは別のブートローダーとして呼び出すことができます。 ExtlinuxはSyslinuxプロジェクトの一部であり、syslinuxパッケージに含まれています。
したがって、次のようなGrub2を備えたシステムがあるとします。
/dev/sda3
(/
)/dev/sda2
(/boot
)次のようにマウントします。
$ mount /dev/sda3 /mnt
$ mount /dev/sda2 /mnt/boot (only necessary for separate /boot)
次に、extlinux
をインストールして、次のことを行います。
$ extlinux -i /mnt/boot/syslinux
$ cp /usr/lib/syslinux/{chain,menu}.c32 /mnt/boot/syslinux
そして、このファイルを作成します:/mnt/boot/syslinux/syslinux.cfg
:
timeout 10
ui menu.c32
label Other Linux
linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
append root=/dev/sda3 ro quiet
label MAIN
com32 chain.c32
append hd0 0
これを行うにはいくつかの方法があります。ブートローダーのパブリックソースコードを持たないチェーンロードウィンドウとは異なり、grubはさまざまな形式で利用でき、さらに追加することは難しくありません。 CostinStroieのアプローチは、ブートセクターのロードのバリエーションを使用しており、GRUBがインストールされていて、従来のBIOSがあり、ネットワークブートではない場合に問題なく機能します。他のgrubイメージを使用することもできます。私はかつて、syslinuxのカーネルキーワードでロードできるLinuxイメージヘッダーが付いた古いレガシーイメージを持っていました。 syslinux固有のc32イメージとしてgrubをコンパイルすることはできます(誰も持っていることは知りません)。その他の興味深いものには、pxelinuxからのpxe grubイメージのロード、memdiskを使用したgrubフロッピーイメージのロードなどがあります。
GRUB2がPBR(MBRではなく)にインストールされていて、同じディスクにSyslinux(たとえば:sda)として別のパーティション(たとえば:sda3)にインストールされている場合、次のコマンドでGRUB2をチェーンロードできます。
LABEL Other Linux (Linux installed on sda3 & Syslinux installed on sda)
MENU LABEL Grub2 chainload
COM32 chain.c32
APPEND boot 3
YUMIでテストされ、問題なし