web-dev-qa-db-ja.com

どうすればsyslinuxからGRUB=をチェーンロードできますか?

私のセットアップの現在の状態のため、GRUB2をチェーンロードするためのメインブートローダーであるSyslinuxを作成します。 Googleは、GRUB2からSyslinuxをチェーンロードする方法について多くの情報を提供していますが、私が求めている逆のシナリオには実際には何も役立ちません。

6
bill

Syslinuxと同じパーティション上の/boot/grubにGRUBのファイルがあるとすると、次のように、最初のGRUBという名前のboot.imgというイメージをチェーンロードできます。

LABEL GRUB
  MENU LABEL Grub2 chainload
  COM32 CHAIN.C32
  APPEND file=/boot/grub/boot.img
1
CostinStroie

私はこれを自分で試したことがありませんが、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
1
slm

これを行うにはいくつかの方法があります。ブートローダーのパブリックソースコードを持たないチェーンロードウィンドウとは異なり、grubはさまざまな形式で利用でき、さらに追加することは難しくありません。 CostinStroieのアプローチは、ブートセクターのロードのバリエーションを使用しており、GRUBがインストールされていて、従来のBIOSがあり、ネットワークブートではない場合に問題なく機能します。他のgrubイメージを使用することもできます。私はかつて、syslinuxのカーネルキーワードでロードできるLinuxイメージヘッダーが付いた古いレガシーイメージを持っていました。 syslinux固有のc32イメージとしてgrubをコンパイルすることはできます(誰も持っていることは知りません)。その他の興味深いものには、pxelinuxからのpxe grubイメージのロード、memdiskを使用したgrubフロッピーイメージのロードなどがあります。

0
hildred

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でテストされ、問題なし

0
ben_sa2000