bzt 31d20593cf More docs | 1 kuukausi sitten | |
---|---|---|
.. | ||
ABI.md | 1 kuukausi sitten | |
README.md | 1 kuukausi sitten | |
debug.md | 1 kuukausi sitten | |
menu.cfg | 1 kuukausi sitten | |
plugins.md | 1 kuukausi sitten | |
secureboot.md | 1 kuukausi sitten | |
stivale.md | 1 kuukausi sitten |
Easyboot は、さまざまな OS カーネルと Multiboot2 準拠カーネルをさまざまな形式でロードできるオールインワンのブート マネージャーおよび起動可能なディスク イメージ作成ツールです。
[[TOC]]
easyboot [-v|-vv] [-s <mb>] [-b <mb>] [-u <guid>] [-p <t> <u> <i>] [-e] [-c] <indir> <outfile|device>
-v, -vv 冗長性/検証性を高める
-s <mb> ディスクイメージのサイズをメガバイト単位で設定します (デフォルトは 35M)
-b <mb> ブートパーティションのサイズをメガバイト単位で設定します (デフォルトは 33M)。
-u <guid> ブート パーティションの一意の識別子を設定します (デフォルトはランダム)
-p <t> <u> <i> 追加のパーティションを追加する (タイプ guid、一意の guid、イメージ ファイル)
-e El Torito Boot Catalogを追加 (BIOS / EFI CDROM ブートのサポート)
-c 画像ファイルが存在する場合でも、常に新しい画像ファイルを作成します
<indir> このディレクトリの内容をブート パーティションに使用します
<outfile> 出力イメージまたはデバイスファイル名
Easyboot ツールは、GUID パーティション テーブルを使用して、FAT32 としてフォーマットされ、「EFI システム パーティション」(略して ESP) と名付けられた単一のパーティションを持つ
(outfile)
という名前の起動可能なディスク イメージを作成します。そのパーティションの内容は、指定した (indir)
から取得されます。そのディレクトリに、easyboot/menu.cfg
という単純なプレーン テキスト構成ファイルを配置する必要があります。行末が NL または CRLF であれば、任意のテキスト エディターで簡単に編集できます。構成によっては、このディレクトリに
easyboot/*.plg
という プラグイン も必要になる場合があります。
このイメージは Raspberry Pi でも起動でき、qemu でも動作します。ただし、実際のマシンで起動するには、(indir)
ディレクトリにさらにファームウェア ファイル
bootcode.bin
、fixup.dat
、start.elf
、および .dtb ファイルが必要になります。これらは、Raspberry Pi の 公式リポジトリ
からダウンロードできます。
このツールには、オプションのコマンドライン フラグもいくつかあります。-s (mb)
は、生成されたディスク イメージの全体サイズをメガバイト単位で設定し、-b (mb)
はブート パーティションのサイズをメガバイト単位で設定します。当然、前者は後者よりも大きくなければなりません。指定しない場合は、
パーティション サイズは指定されたディレクトリのサイズ (最小の FAT32 である 33 MB) から計算され、ディスク サイズはデフォルトでそれより 2 MB 大きくなります
(パーティション テーブルに必要なアラインメントとスペースのため)。これら 2 つのサイズ値の間に 2 MB 以上の差がある場合は、fdisk
などのサード パーティ ツールを使用して、
必要に応じてイメージにパーティションを追加できます (または、以下の -p
を参照してください)。予測可能なレイアウトが必要な場合は、-u <guid>
フラグを使用して、
ブート パーティションの一意の識別子 (UniquePartitionGUID) を指定することもできます。
オプションで、-p
フラグを使用してパーティションを追加することもできます。これには、(PartitionTypeGUID)、(UniquePartitionGUID)、
およびパーティションの内容を含むイメージ ファイルの名前の 3 つの引数が必要です。このフラグは複数回繰り返すことができます。
-e
フラグは、生成されたイメージに El Torito ブート カタログを追加するので、USB スティックとしてだけでなく、BIOS / EFI CDROM としても起動できるようになります。
(outfile)
がデバイス ファイル (例: Linux では /dev/sda
、BSD では /dev/disk0
、Windows では \\.\PhysicalDrive0
) の場合、GPT も ESP も作成されず、
デバイス上に既に存在するものを検索します。(indir)
内のすべてのファイルは引き続きブート パーティションにコピーされ、ローダーがインストールされます。
(outfile)
が既に存在するイメージ ファイルの場合も、この方法は機能します (この場合、-c
フラグを使用して、常に最初に新しい空のイメージ ファイルを作成します)。
easyboot/menu.cfg
ファイルには、次の行が含まれている場合があります (grub.cfg の構文と非常によく似ており、設定ファイルの例は こちら にあります)。
#
で始まるすべての行はコメントと見なされ、行末までスキップされます。
verbose
で始まる行を使用して詳細レベルを設定できます。
verbose (0-3)
これは、ブート コンソールに出力する情報量をローダーに指示します。Verbose 0 は完全に静か (デフォルト) を意味し、 Verbose 3 はロードされたカーネル セグメントとエントリ ポイントのマシン コードをダンプします。
framebuffer
で始まる行で特定の画面解像度を要求できます。形式は次のとおりです。
framebuffer (幅) (高さ) (ピクセルあたりのビット数) [#(前景色)] [#(背景色)] [#(プログレスバーの色)]
Easyboot は、この行が存在しない場合でもフレームバッファを設定します (デフォルトでは 800 x 600 x 32bpp)。ただし、この行が存在する場合は、 指定された解像度を設定しようとします。パレット モードはサポートされていないため、ピクセルあたりのビット数は少なくとも 15 である必要があります。
4 番目のオプションの色パラメータが指定されている場合、ハッシュマークで始まり、その後に 6 桁の 16 進数 (赤赤緑緑青青) が続く HTML 表記にする必要があります。たとえば、
#ff0000
は明るい赤で、#007f7f
は暗いシアンです。これは前景色、つまりフォントの色を設定します。同様に、5 番目のオプションの色パラメータが指定されている場合も
HTML 表記にする必要があり、背景色を設定します。最後のオプションの色パラメータも同様で、プログレス バーの背景色を設定します。
色が指定されていない場合は、デフォルトで黒の背景に白の文字が表示され、進行状況バーの背景は濃い灰色になります。
default
で始まる行は、指定されたタイムアウト後にユーザーの操作なしで起動するメニュー エントリを設定します。
default (メニューエントリインデックス) (タイムアウトミリ秒)
メニューエントリ インデックスは 1 から 9 までの数字です。タイムアウトはミリ秒単位なので、1000 は 1 秒になります。
menualign
で始まる行は、ブート オプションの表示方法を変更します。
menualign ("vertical"|"horizontal")
デフォルトではメニューは水平 (horizontal
) ですが、垂直 (vertical
) に変更できます。
menuentry
で始まる行で最大 9 個のメニューエントリを指定できます。形式は次のとおりです。
menuentry (アイコン) [ラベル]
各アイコンについて、ブート パーティションに easyboot/(アイコン).tga
ファイルが存在する必要があります。画像は、ラン レングス エンコードされ、カラー マップされた
Targa 形式 である必要があります。これは、これが最も圧縮された形式であるためです (ファイルの最初の 3 バイトは、この順序で 0
、1
、9
である必要があります。仕様のデータ型 9 を参照してください)。その寸法は、高さ 64 ピクセル、幅 64 ピクセルである必要があります。
GIMP からこの形式で保存するには、まず「Image > Mode > Indexed...」を選択し、ポップアップ ウィンドウで「Maximum number of colors」を 256 に設定します。次に「File > Export As...」を選択し、.tga
で終わるファイル名を入力し、ポップアップ ウィンドウで「RLE compression」をチェックします。コマンド ライン変換ツールの場合は、ImageMagick の convert (任意の画像ファイル) -colors 256 -compress RLE アイコン.tga
を使用できます。
オプションの ラベル パラメータは、メニューに ASCII のバージョンまたはリリース情報を表示するためのもので、任意の文字列用ではありません。したがって、
スペースを節約するために、easyboot/font.sfn
も提供しない限り、UTF-8 はサポートされません。(UNICODE フォントは、スケーラブル スクリーン フォント
は非常に効率的ですが、それでも約 820K あり、多くのストレージを必要とします。対照的に、GRUB の unicode.pf2 ははるかに大きく、約 2392K ですが、
両方のフォントには 8x16 および 16x16 ビットマップに約 55600 個のグリフが含まれています。埋め込まれた ASCII フォントには、8x16 ビットマップと 96 個のグリフしかありません。)
menuentry
行の後に続くすべての行は、その行が別の menuentry 行である場合を除き、その menuentry に属します。便宜上、GRUB のようにブロックを使用できますが、
これは単なる構文上の糖衣です。中括弧は空白文字として処理されます。必要に応じて、Python スクリプトや Makefile のように中括弧を省略してタブを使用することもできます。
例えば
menuentry FreeBSD backup
{
kernel bsd.old/boot
}
partition
で始まる行は GPT パーティションを選択します。menuentry
行が前になければなりません。
partition (パーティション固有のUUID)
このパーティションは、ブート オプションのルート ファイル システムとして使用されます。カーネルとモジュールはこのパーティションからロードされ、 ブート プロトコルに応じてカーネルにも渡されます。指定されたパーティションはブート ディスクとは別のディスクに存在する可能性があります。 Easyboot はブート中にすべての GPT パーティション ディスクを反復して、そのパーティションを見つけます。
便宜上、パーティションは kernel
行でも検索されます (下記参照)。指定されたブート コマンド ラインに root=(UUID)
または root=*=(UUID)
文字列が含まれている場合、
別の partition
行は必要ありません。
パーティションが明示的に指定されていない場合は、カーネルとモジュールはブート パーティションからロードされます。
kernel
で始まる行は、どのファイルをどのパラメータで起動するかを指定します。menuentry
行が前になければなりません。
kernel (カーネルファイルへのパス) (オプションのブートコマンドライン引数)
パスは、既存のファイル、実行可能なカーネル バイナリを指している必要があり、ルート (またはブート) パーティション上の絶対 UTF-8 パスである必要があります。
カーネルがパーティションのルート ディレクトリにない場合、ディレクトリ区切り文字は常に /
です (UEFI システムの場合も同様)。名前にスペースが含まれている場合は、
\
でエスケープする必要があります。パスの後に、スペースで区切られたコマンド ライン引数が続く場合があります。Multiboot2 準拠のカーネルの場合、
これらのコマンド ライン引数は ブートコマンドライン (タイプ 1) タグで渡されます。Easyboot によって変更されることはなく、パーティション指定子の検索以外は解析されません。
デフォルトでは、Easyboot は ELF64 および PE32+/COFF 形式の Multiboot2 準拠カーネルを起動できます (UEFI システムでは UEFI アプリケーションも同様)。 通常、このプロトコルは上位半分カーネルを許可しませんが、Easyboot は、上位半分カーネル以外の通常のカーネルを壊さない方法でプロトコルに少し違反します。 他のカーネルを起動する場合は、カーネル ローダー プラグイン が必要になります。
注: ブート プロトコルを選択するために「linux」や「multiboot」などの特別なコマンドを使用する必要がある GRUB とは異なり、ここではコマンドが 1 つだけあり、 プロトコルは実行時にカーネルから自動検出されます。
module
で始まる行を使用して、カーネルとともに任意のファイル (初期 RAM ディスク、カーネル ドライバーなど) をロードできます。menuentry
行が前になければなりません。
この行は各 menuentry 内で複数回繰り返すことができることに注意してください。ブート プロトコルが initrd をサポートしている場合、最初の module
行が initrd と見なされます。
module (ファイルへのパス) (オプションのモジュールコマンドライン引数)
パスは既存のファイルを指す必要があり、ルート (またはブート) パーティション上の絶対 UTF-8 パスである必要があります。スペースで区切られたコマンド ライン引数が続く場合があります。 ファイルが圧縮されており、解凍 プラグイン がある場合、モジュールは透過的に解凍されます。これらのロードされた (および解凍された) モジュールに関する情報は、 モジュール (タイプ 3) タグで Multiboot2 準拠カーネルに渡されます。
特別なケースは、モジュールがバイト DSDT
、GUDT
、または 0xD00DFEED
で始まる場合です。これらの場合、ファイルは モジュール タグに追加されず、ACPI
テーブルがパッチされ、その DSDT ポインタがこのファイルの内容を指すようになります。これにより、バグのある BIOS の ACPI テーブルをユーザー提供のテーブルに簡単に置き換えることができます。
bootsplash
で始まる行を配置すると、ブート オプションが選択されたときに画面の中央にロゴを表示することもできます。menuentry
行が前になければなりません。
bootsplash [#(背景色)] (tga ファイルへのパス)
背景色はオプションであり、ハッシュマークで始まり、その後に 6 桁の 16 進数 (赤赤緑緑青青) が続く HTML 表記で指定する必要があります。最初の引数が #
で始まらない場合は、パス引数であるとみなされます。
パスは既存のファイルを指す必要があり、ブート (ルートではない) パーティション上の絶対 UTF-8 パスである必要があります。画像は、メニュー アイコンと同様に、 ラン レングス エンコードされたカラー マップの Targa 形式である必要があります。サイズは、画面に収まるものであれば何でもかまいません。
すべてのプロセッサ コアでカーネルを一度に起動するには、multicore
ディレクティブを指定します (64 ビット カーネルのみ)。menuentry
行が前になければなりません。
multicore
問題が発生した場合は、easyboot -vv
フラグを付けて実行してください。これにより検証が実行され、イメージ作成時に結果が詳細に出力されます。それ以外の場合は、
詳細な起動時メッセージを取得するには、easyboot/menu.cfg
に verbose 3
を追加します。
左上隅に赤い背景のPMBR-ERR
文字列が表示されている場合は、CPU が非常に古く、64 ビット ロング モードをサポートしていないか、
ブート セクターがローダーをブートストラップできなかったことを意味します。これは BIOS マシンでのみ発生する可能性があり、UEFI または RaspberryPi では発生しません。
メッセージ | 説明 |
---|---|
Booting [X]... |
Xブートオプション(メニューエントリインデックス)が選択されたことを示します |
Loading 'X' (Y bytes)... |
長さ Y のファイル X がロードされています |
Parsing kernel... |
カーネルが見つかりました。現在そのフォーマットを検出しています |
Starting X boot... |
Xシステムのブートローダーが検出されたことを示しています |
Starting X kernel... |
Xシステムのカーネルが検出されたことを示しています |
Transfering X control to Y |
YアドレスのXモードエントリポイントが呼び出されようとしていることを示します |
最後のメッセージが表示された後に問題が発生した場合、問題は Easyboot ローダーではなく、オペレーティング システムのブート手順で発生したことを意味します。そのため、 回答については、特定のオペレーティング システムのドキュメントを参照する必要があります。それ以外の場合は、gitlab で 問題 を開いてください。
必要なプラグイン: grubmb1
これは最も柔軟性が高く、プラグインを介して複数のバリエーションがサポートされています。
違いに注意してください: 簡素化された Multiboot2 は埋め込みタグを必要とせず、上位半分のカーネルをサポートし、Multiboot2、SysV、および fastcall ABI に従って渡されるパラメーターを備えたクリーンな 64 ビット エントリ ポイントもサポートします。
一方、GRUB 互換の Multiboot2 は埋め込みタグを必要とし、
上位半分のカーネルも 64 ビット カーネルもサポートせず、エントリ ポイントは常に 32 ビットであり、パラメータは eax
、ebx
でのみ渡されます。
プラグインは必要ありませんが、Secure Bootを設定する必要があります。
menuentry win {
kernel EFI/Microsoft/BOOT/BOOTMGRW.EFI
}
カーネルがブート パーティションに配置されていない場合は、コマンド ラインを使用してルート パーティションを指定できます。
menuentry linux {
kernel vmlinuz-linux root=PARTUUID=01020304-0506-0708-0a0b0c0d0e0f1011
}
menuentry openbsd {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel boot
}
警告! OpenBSD を起動する場合は elf32 プラグインを使用しないでください。その boot
は、32 ビット SysV ABI
エントリ ポイントを持つ ELF であると誤って主張していますが、実際には 16 ビットのリアル モード エントリがあります。
レガシー BIOS システムでは、ローダー boot
を指定します。
menuentry freebsd {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel boot/boot
}
UEFI マシンでは、ブート パーティションで loader.efi
を使用します (プラグインは不要です)。
menuentry freebsd {
kernel boot/loader.efi
}
ルート ファイル システムが ZFS の場合は、この 1 つのファイル (BIOS では boot
、UEFI では loader.efi
) を (indir)
にコピーし、ルート パーティションを指定しないでください。
必要なプラグイン: fdos
FreeDOS のファイルを (indir)
に移動します (FreeDOS はブート パーティションをルート パーティションとして使用します)。
menuentry freedos {
kernel KERNEL.SYS
}
著作権と - InitDisk
を印刷した後に起動が停止する場合、FreeDOS カーネルは FAT32 サポートなしでコンパイルされています。名前に f32
を含む別のカーネルをダウンロードしてください。
必要なプラグイン: reactos
menuentry reactos {
kernel FREELDR.SYS
}
必要なプラグイン: menuet
menuentry menuetos {
kernel KERNEL.MNT
module CONFIG.MNT
module RAMDISK.MNT
}
自動構成をオフにするには、コマンドラインに noauto
を追加します。
必要なプラグイン: kolibri
menuentry kolibrios {
kernel KERNEL.MNT syspath=/rd/1/ launcher_start=1
module KOLIBRI.IMG
module DEVICES.DAT
}
このプラグインは UEFI マシンでも動作しますが、ブート パーティションで uefi4kos.efi
を使用することもできます (プラグインは必要ありません)。
必要なプラグイン: grubmb1
menuentry serenityos {
kernel boot/Prekernel
module boot/Kernel
}
menuentry haiku {
partition 01020304-0506-0708-0a0b0c0d0e0f1011
kernel system/packages/haiku_loader-r1~beta4_hrev56578_59-1-x86_64.hpkg
}
UEFI マシンでは、ブート パーティションで haiku_loader.efi
を使用します (プラグインは不要です)。
menuentry osz {
kernel ibmpc/core
module ibmpc/initrd
}
プラグインは必要ありません。