私はオペレーティング システムに非常に興味があり、関連するコースを受講しています。そこで、プロジェクトとして、簡単なオペレーティング システムを実装するように指示されました。
彼らは私にシンプルなオペレーティングシステムの実装を提供してくれた。ジョシュ。
与えられた指示に従い、NASM アセンブラを使用してブート セクターと基本的なカーネル部分をコンパイルできます。また、マシンの追加情報を表示するための独自のコードも追加しました。
総括する、ジョシュフロッピー ディスク ドライブから起動するように設計されたオペレーティング システムです。ただし、フロッピー ディスク ドライブで動作するデバイスがありません。
JOSH の設計者は、dd if=boot.bin bs=512 count=1 of=/dev/fd0
boot.bin ファイルをフロッピー ディスクに入れることを提案しました。
仮想フロッピー ディスク パーツを USB ドライブ上に作成できるかどうか、またそこからこのオペレーティング システムを起動できるかどうかを知る必要があります。
私は Ubuntu を使用しているので、USB 上にこの仮想フロッピー ディスクを作成する方法と、その仮想ドライブに boot.bin ファイルと kernel.bin ファイルを配置する方法を教えていただけると大変助かります。
私の理解では、この boot.bin ファイルには 512 バイトのセクターが必要です。
誰かがこの件について私を助けてくれたら本当に感謝いたします。
答え1
調べてみるべきPXEブート。
フロッピーの代わりに必ず PXE を使用する必要があると言っているわけではありません (最終的にはそうすることになるかもしれませんが)。
しかし、PXE ブート テクノロジでは、仮想フロッピーを使用して、最終的なオペレーティング システムの読み込みをブートストラップします。また、仮想フロッピーを操作する (仮想フロッピーにデータを書き込む、ファイルとして保存する) ためのさまざまな関連ツールや、仮想フロッピーをネットワーク経由で送信してターゲット マシンがそこから起動するためのツールもあります。そのため、PXE の世界では必要なものが見つかる可能性が非常に高くなります。
以前は、このために Tftpd32 を使用しました。リンクを投稿するつもりでしたが、Chrome ではそのサイトでマルウェアの警告が表示されるようになったので注意してください。Windows にも、現在ではこの種の機能が含まれていると思います (Windows Server の WDS の下)。
答え2
気にしないでください。解決策が見つかりました。
ジョシュシングルタスクの割り込み駆動型オペレーティング システムです。有効なブート署名を持つ 512 バイトのブート ファイルをサイトから取得し、実際のオペレーティング システムである単純なカーネル ファイルも取得します。
現在、このブート セクターは FAT12 ファイル システムのみを認識するため、これを実行するにはフロッピー ディスク ドライブを使用する必要があります。
私がやったことは、仮想フロッピー ディスクを作成し、そのディスクの MBR にブート ファイルを書き込み、そこにカーネル ファイルをコピーして、仮想マシンで実行することです。
私が見つけたのはここ以下のコマンドを使用してフロッピー ディスク イメージを作成できます。
~$ cd /media // open the terminal in your home directory and head to /media
/media$ sudo mkdir floppy // create a directory in media
// go back to home directory again
~$ mkfs.msdos -C myfloppy.img 1440 // create a floppy disk image of size 1.44 MB
~ $ sudo mount -o loop myfloppy.img /media/floppy/ // mount the image with the floppy directory.
// now open another terminal where your boot.bin file and kernel.bin file is and enter the following
/os$ lsblk // get the name of the mounted floppy image, you can identify it from the list with a disk that has 1.5 MB size
/os$ sudo dd if=./boot.bin of=/dev/loop0 // now burn the boot file to the MBR
/os$ sudo cp kernel.bin /media/floppy/ // copy the kernel file to the disk image
その後、仮想マシンを使用してこのフロッピー ディスク イメージから起動できます。
答え3
フロッピー ディスク エミュレーション機能を備えた古い USB スティックがあります。これにフロッピー イメージを書き込むと、スティックは USB フロッピー ドライブとして検出されます。