PXEブート可能な10MB以上のDOSイメージの作成



Making Pxe Bootable 10mb



解決:

私はこのプロセスを数回経験しました。非常に簡単ですが、使用した正確な手順を忘れ続けているので、私自身や他の人の参考のためにここに文書化します。ちなみに、私はPXEサーバーとしてSlackware Linux 14.2+を使用しており、BIOSアップデートのためにいくつかの異なるDellOptiplexモデルを起動しています。他の回答で述べたように、大規模なファイルシステム用に起動可能なISOイメージを作成できます。ただし、起動可能なフロッピーイメージについて具体的に質問されたので、そのために使用する手順を次に示します。

まず、質問をコンテキストに入れるためのMEMDISKとFAT12に関するいくつかの背景情報。そこには矛盾した曖昧な情報がたくさんあるので、うまくいけば、これで少し問題が解決します。



2003年のsyslinuxスレッドは、MEMDISKがハードウェアに応じて最大4GBのイメージサイズをサポートすることを示しています(つまり、メモリが制限されていますが、ハードウェア固有の追加の考慮事項がある場合があります)。 2002年の以前のスレッドでも、個別のPXELINUX制限が示されています(Linuxカーネルスペースは最大1GBに制限されていますが、この情報は15年以上前のものです)。

MEMDISKのドキュメントから、memdiskが推測しようとする特定のフロッピーディスクのジオメトリがいくつかあります。



フロッピー画像

ディスクイメージが4,194,304バイト(4096K、4 MiB)未満の場合、フロッピーイメージであると見なされ、MEMDISKはファイルのサイズに基づいてそのジオメトリを推測しようとします。 MEMDISKは、すべての標準フロッピーサイズと一般的な拡張フォーマットを認識します。

163,840バイト(160K)c = 40 h = 1 s = 8 5.25'SSSD 184,320バイト(180K)c = 40 h = 1 s = 9 5.25 'SSSD 327,680バイト(320K)c = 40 h = 2 s = 8 5.25' DSDD 368,640バイト(360K)c = 40 h = 2 s = 9 5.25'DSDD 655,360バイト(640K)c = 80 h = 2 s = 8 3.5 'DSDD 737,280バイト(720K)c = 80 h = 2 s = 9 3.5 'DSDD 1,222,800バイト(1200K)c = 80 h = 2 s = 15 5.25' DSHD 1,474,560バイト(1440K)c = 80 h = 2 s = 18 3.5'DSHD 1,638,400バイト(1600K)c = 80 h = 2 s = 20 3.5'DSHD(拡張)1,720,320バイト(1680K)c = 80 h = 2 s = 21 3.5 'DSHD(拡張)1,763,328バイト(1722K)c = 82 h = 2 s = 21 3.5'DSHD(拡張)1,784,832バイト(1743K )c = 83 h = 2 s = 21 3.5'DSHD(拡張)1,802,240バイト(1760K)c = 80 h = 2 s = 22 3.5 'DSHD(拡張)1,884,160バイト(1840K)c = 80 h = 2 s = 23 3.5'DSHD(拡張)1,966,080バイト(1920K)c = 80 h = 2 s = 24 3.5 'DSHD(拡張)2,949,120バイト(2880K)c = 80 h = 2 s = 36 3.5'DSED 3,194,880バイト(3120K)c = 80 h = 2 s = 39 3.5'DSED(拡張)3,276,800バイト(3200K)c = 80 h = 2 s = 40 3.5 'DSED(拡張)3,604,480バイト(3520K)c = 80 h = 2 s = 44 3.5'DSED (拡張d)3,932,160バイト(3840K)c = 80 h = 2 s = 48 3.5'DSED(拡張) 

MEMDISKが他のサイズに対して選択するジオメトリを決定できる小さなperlスクリプトがMEMDISKディレクトリに含まれています。一般に、MEMDISKは、80シリンダー以上の、使用されているほとんどの物理拡張フォーマットを正しく検出します。



LABEL floppy_image LINUX memdisk INITRD floppy.img 

画像が4MiBより大きく、フロッピー画像である場合は、MEMDISKにそれをフロッピー画像として処理させることができます。

LABEL floppy_image LINUX memdisk INITRD floppy.img APPEND floppy

実際には、私は運がなかったAPPENDフロッピーパラメータ。私はMEMDISK:RAMディスクイメージが指定されていません!使用するとエラーが発生します。

従来、フロッピーイメージはFAT12形式を使用しており、16MBと8kクラスターの制限があります。 32MBまたは256MB(64kクラスター)を許可するFAT12の拡張機能があるようですが、詳細は不明です。

起動可能な「フロッピー」イメージの最大FAT12サイズ(16,736,256バイト)をターゲットにすると、次のことができます。

dd if = / dev / zero of = FAT12_16MB.img bs = 1 count = 16736256

ただし、そのコマンドが完了するまでに1分かかる場合があります。より大きなブロックサイズを使用すると、同じことを1秒未満で達成できます。

dd if = / dev / zero of = FAT12_16MB.img bs = 8192 count = 2043

'空のフロッピーディスク'ができたので、それをFAT12としてフォーマットする必要があります(このコマンドで使用可能なパラメーターに興味がある場合は、man mkfs.fatでmanページを表示):

mkfs.fat -D 0x00 -F 12 -n FREEDOSBIOS FAT12_16MB.img

これで、フォーマットされたFAT12 'フロッピーディスク'イメージができました。フォルダを作成してマウントできます。

mkdirフロッピーマウント-tmsdos -o loopFAT12_16MB.imgフロッピー

これで、ファイルのコピーを開始できます。 FreeDOS OEMブートディスクをfdos.orgからダウンロードし、より大きなイメージにコピーしました。

wget http://www.fdos.org/bootdisks/autogen/FDOEM.288.imz unzip FDOEM.288.imz

FreeDOSイメージの新しいマウントポイントを作成してマウントします。

mkdir freedos12 mount -t msdos -o loop FDOEM.288 freedos12

FreeDOSオペレーティングシステムをより大きなフロッピーにコピーします。

cp -r freedos12 / *フロッピー

次に、FreeDOSパーティションをアンマウントし、不要になった場合はマウントポイントを削除します。

umount freedos12 rmdir freedos12

これで16MBのフロッピーイメージができました(FAT12_16MB.img)FreeDOSオペレーティングシステムを含みます。ただし、これをPXE経由で起動しようとすると、次のエラーが発生します。

ブートセクタを読み込んでいます...起動しています...これは起動可能なディスクではありません。起動可能なフロッピーを挿入し、任意のキーを押して再試行してください...

このイメージにブートセクターを作成する必要があります。 重要: イメージファイルに直接書き込むため、次の手順の前にフロッピーイメージがマウントされていないことを確認してください。

umountフロッピー

FreeDOSイメージからブートセクタをコピーします(FDOEM.288から大きな画像 `FAT12_16MB.img 'へ:

dd if = FDOEM.288 of = FAT12_16MB.img bs = 1 count = 446 seek = 62 skip = 62 conv = notrunc

これで、FreeDOSを使用したPXEブート可能な16MBFAT12フロッピーイメージができました。この時点で、イメージを再マウントして、必要な追加ファイルをコピーできます。

このイメージの起動に使用している正確なPXE構成は次のとおりです。

labelbiosメニューラベルFreeDOSカーネルmemdisk追加initrd = FAT12_16MB.img

この回答を作成する際に私が参考にした、他にも役立つステップバイステップのリソースがいくつかあります。


これは簡単に行うことはできませんが、不可能ではありません。

すべてのファームウェアアップグレードを含む起動可能なFreeDOSISOを作成できます。次に、PXELINUXとmemdiskを使用してそのISOをPXE起動します。

LABEL BIOSUPGメニューLABELBios Upg KERNEL memdisk APPEND iso initrd = FreDosBiosUpg.iso