背景
(タイトルにスキップ=problem
LiveUSB、ISO、GRUB2などの専門家の場合)
マルチブート/マルチISO Linux LiveUSBを設定しています。詳細ここ、複数のホスト(たとえば、起動する必要があると判断したすべてのPC)で使用しようとしています。プロセスは簡単に見えます。
- 設定してください開発ホスト:つまり、LiveUSBを使用して起動するボックスではなく、LiveUSBを作成するために使用するボックスです。
- USBドライブのインポート/作成
- 起動したいすべてのISOに十分大きいサイズ
- 起動可能
- 持つGRUB2 インストール済み
- 目的のISOを指定した場所に簡単に配置します。
- 編集する
/boot/grub/grub.cfg
:- グローバル変数@top(つまり、
menuentry
s上)を設定します。root
menuentry
各ISOに対して1つ以上を作成します。
- グローバル変数@top(つまり、
主な問題は、各ISOに対してmenuentry
正しく起動するファイルを1つ以上生成することです。これは簡単に見える:
- ISOインストール:
- ISOの構造を確認してください。対応する
grub.cfg
、、、 (またはGRUB構成、初期RAMdiskイメージinitrd*
、vmlinuz
およびカーネルイメージと呼ばれるすべて)へのパスを取得します。 grub.cfg
ISOからmenuentry
- ISOの構造を確認してください。対応する
- それぞれ作ろう
menuentry
- ISOブートパスの設定
loopback
ISOを使用したデバイスの作成- ISOに提供されているパスの代わりにループバックデバイスのパスを使用してください
grub.cfg
。initrd /casper/initrd.lz
->initrd (loop)/casper/initrd.lz
linux /live/vmlinuz
->linux (loop)/live/vmlinuz
- LiveUSBをテストしてください:
- 開発ホストにまだインストールされている間:
grub-script-check
精神健康のために:-) umount
開発ホストで- 各テストホストに対して、次の操作を行います。
- 電源が切れたテストホストに接続する
- 電源オン!
- 開発ホストにまだインストールされている間:
質問
多くのISOは、grub.cfg
「実際に」起動する前にビデオを設定しようとしています。すべて少しずつ異なる動作をするため、各ISOのビデオコードを対応するmenuentry
ISOに挿入します。しかし、これまで私が使用したISOはgrub.cfg
おおよそ次のようになります。
if loadfont /path/to/font/file ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
# usually followed by more menu and background tweaking
良いニュースは私ですできる起動時にフォントファイルのパスを決定します。言い換えれば、loadfont
幸せです。悪いニュースは、一度if
近所に来たとき、
- モジュールの1つだけがロードされます。
- Casper(UbuntuベースのMint、LMDE1など)またはDebian Live(Clonezilla、LMDE2など)を使用しているISOにも同じ問題があります。
GRUBに検索させる方法みんな基準寸法?
サンプルコード
Clonezillaのin-ISOは以下/boot/grub/grub.cfg
にのみ配信されます/EFI/boot/grub.cfg
。
# This file is for compatibility to Ubuntu Linux's uEFI secure boot.
# The real config file for grub is /EFI/boot/grub.cfg.
configfile /EFI/boot/grub.cfg
私のLiveUSB /boot/grub/grub.cfg
(すべてのISOの外側)には、次のコードが含まれています。
# isofile_abspath==path to the ISO from the root of my LiveUSB.
set isofile_abspath='/ISOs/clonezilla-live-2.4.2-10-amd64.iso'
set root=(hd0,1)
loopback loop ($root)$isofile_abspath
...
set clonezilla_prefix='(loop)/EFI/boot'
...
set loadfont_fp="$clonezilla_prefix/unicode.pf2"
echo -e "About to 'loadfont $loadfont_fp' ..."
if loadfont "$loadfont_fp" ; then
set gfxmode=auto
echo -e 'about to `insmod efi_gop` ...'
insmod efi_gop
echo -e 'about to `insmod efi_uga` ...'
insmod efi_uga
echo -e 'about to `insmod gfxterm` ...'
insmod gfxterm
echo -e 'about to `terminal_output gfxterm` ...'
terminal_output gfxterm
fi
echo -e 'Done loadfont.'
開始結果:
About to 'loadfont (loop)/EFI/boot/unicode.pf2' ...
about to `insmod efi_gop` ...
error: file not found.
about to `insmod efi_uga` ...
error: file not found.
about to `insmod gfxterm` ...
about to `terminal_output gfxterm` ...
error: no suitable mode found
Done loadfont.