web-dev-qa-db-ja.com

grubからsyslinuxにブートをチェーンするにはどうすればよいですか?

レスキュー用USBフラッシュディスクを拡張しています。 USBのパーティションは起動可能であり、GRUBをジャンプドライブのMBRにインストールしました。それはかなりうまくいきます-起動できます Freedos といくつかのユーティリティを実行し、起動できます [〜#〜] ping [〜#〜]

このレスキューUSBドライブにUbuntu 9.10 LiveCDを追加したいと思います。ジャンプドライブが動作しているので、ファイルを簡単にコピーできます。私は必要なmenu.lstエントリはGRUBに必要ですが、Ubuntu LiveUSBはかなり複雑なsyslinux構成を使用します。さらに、syslinuxの設定をGRUBに移植せずに、現在のLiveCD/LiveUSBのルックアンドフィールをできる限り維持したいと思います。

〜quackの提案で、私はmenu.lstエントリ:

 title Ubuntu 9.10 LiveCD
 root=(hd0,0)
 kernel /ubuntu-9.10/syslinux/isolinux.bin

しかしGRUBはError 13: Invalid or unsupported executable format。 GRUBコマンドラインで、私は次に試しました:

 grub> root=(hd0,0)
 grub> kernel /syslinux/isolinux.bin

2つ目のisolinux.binファイルはその場所にありますが、GRUBは同じエラーで応答しました。私も試しました:

 grub> chainloader /syslinux/isolinux.bin

そして、もう一度エラー13を受け取りました。最後に、GRUBコマンドラインを試しました。

 grub> root=(hd0,0)
 grub> kernel /ubuntu-9.10/install/mt86plus
 grub> boot

そしてそれはうまくいった

私が本当に望んでいるのは、GRUB call syslinux/isolinux bootloaderを実行する方法です。それから、syslinuxが独自のメニューをロードすることができます。

誰でもこれを行う方法を知っていますか?

4
pcapademic

更新:エントリに基づいて、記事 "Grub chainloads syslinux and back" を見つけました。これは基本的に「パッチgrub ":

  • GRUBからのsyslinuxのチェーンロードは可能ではないようです パッチなし 。私はしませんt GRUB2について知っている。これはマルチブート(syslinuxベース)パーティションに役立ちます。

  • GRUB4dos(異なるパーティション上)からsyslinuxをチェーンロードすることが可能です。 (再度) ここ で説明したマッピングを通じて管理しました。 マルチブートUSBデバイスの問題 を解決します。

パッチページには、Grub v2の同様のパッチが grub-devel に投稿されたと記載されています。 この投稿 はそのパッチかもしれません。または このメッセージこのバグレポート を指します Grub v2パッチ の場合、2009年11月に発行されたため、非常に新しいものです。

パッチの1つを使用するには、優先するGrubバージョンのGrubソースコードをダウンロードし、パッチにまだ含まれていないことを確認し、パッチを適用して、新しいGrubを再コンパイルして再インストールする必要があります。


元の答え:

最初に簡単なGrubエントリをテストしてみます。これは、Debianシステム上のMemtest86 +ユーティリティの標準のGrubエントリです。

title           Debian, memtest86+
root            (hd0,0)
kernel          /boot/memtest86+.bin

これらを自分の値で微調整してみてください(必要に応じてルートパーティションまたはカーネルパスを変更してください)。

title           Ubuntu LiveUSB SysLinux boot
root            (hd0,0)
kernel          /syslinux/isolinux.bin

このタスクにはchainloader+コマンドは必要ないと思います。

4
quack quixote

タイトルUBUNTU 9.1 ISOブート

検索--set-root /ubuntu9.1.iso

マップ/ubuntu9.1.iso(hd32)

map --hook

ルート(hd32)

チェーンローダー(hd32)

これをur menu.lstに追加し、ubuntu9.1.isoをmenu.lstが存在するドライブにコピーします。

1
likhi

Syslinuxをgrub2から簡単にチェーンロードできます。最も簡単で一般的な方法は次のとおりです。

コマンドラインを取得するには、grubメニューで「c」を押します。

set root='hd1,msdos1'
chainloader +1
boot

ここで、 'hd1、msdos1'は、USBから起動する一般的な十分な値ですが、lsを使用してほとんどのファイルシステムを検索できます。たとえば、ls (hd1,msdos1)はパーツについて通知し、ls (hd1,msdos1)/はファイルを表示します。 grub normalが認識しないファイルシステムの場合は、insmodを使用してfsモジュールをインストールする必要がある場合があります。あなたはそれを見つけるためにgrubのsearchコマンドを使うことができます。 search --no-floppy --set=root

ただし、おそらくsyslinux(またはその他)をチェーンロードする必要はありません。グラブは柔軟です。たとえば、私のAlpine USBスティックでは、次のようにします。

set root='hd2,msdos1'
configfile /boot/grub/grub.cfg

これはメニューに入ります。もちろん、それにはGRUBのcfgが含まれています。ディスク上のsyslinuxまたはgrubなしのgrubからブートを手動でセットアップすることもできます。

set root='hd2,msdos1' # or search...
linux /boot/vmlinuz
initrd /boot/initramfs

私にとっては、Xen'd up Alpine USBスティックでこのようなこともできます

multiboot2 /boot/xen.gz
module2 /boot/vmlinuz-Vanilla modules=loop,squashfs,sd-mod,usb-storage
module2 /boot/initramfs-Vanilla

しかし、それは基本的に、現在アルパインに付属しているように見える/boot/grub.cfgの内容です。ポイントは、異なるさまざまなOS、initramfs、カーネルを実行できることです。 syslinuxバイナリをchainloader $path_to_binで直接ロードすることもできると思います。私のgrubには実際にsyslinux_configfileおよびsyslinux_sourceコマンドがあるので、これも機能するようです。

syslinux_source /boot/syslinux.bin
syslinux_configfile /boot/syslinux/syslinux.cfg

それらの1つがあなたのために働くことを願っています。私のgrubの使い方を学ぶことは、これまで何度も命の恩人でした。破損した構成のLinuxインストール、またはアムステルダムのリモートマシンで移動または変更されたHDDを米国から保存しました。シリアル経由でgrub-rescue>を押して、既存のHDDからモジュールをロードし、古いパーティション/ OSを順番に起動します。それを修正/再構成します。

0
jjwatt

WindowsシステムでYUMIを使用することは、これを行う最も簡単な方法のようです。

http://www.pendrivelinux.com/yumi-multiboot-usb-creator

0
pcapademic