レスキュー用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が独自のメニューをロードすることができます。
誰でもこれを行う方法を知っていますか?
更新:エントリに基づいて、記事 "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+
コマンドは必要ないと思います。
タイトル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が存在するドライブにコピーします。
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を順番に起動します。それを修正/再構成します。
WindowsシステムでYUMIを使用することは、これを行う最も簡単な方法のようです。