0

多くの「独自のオペレーティング システムを構築する方法」のチュートリアル
に従って、フロッピー ディスクのブート セクタにカスタム ローダーを書き込むことになっています 。

#include <sys/types.h> /* unistd.h needs this */
#include <unistd.h>    /* contains read/write */
#include <fcntl.h>

int main()
{
    char boot_buf[512];
    int floppy_desc, file_desc;

    file_desc = open("./boot", O_RDONLY);
    read(file_desc, boot_buf, 510);
    close(file_desc);

    boot_buf[510] = 0x55;
    boot_buf[511] = 0xaa;

    floppy_desc = open("/dev/fd0", O_RDWR);
    lseek(floppy_desc, 0, SEEK_CUR);
    write(floppy_desc, boot_buf, 512);
    close(floppy_desc);
}

私はフロッピー ドライブを備えた PC を持っていなかったので、VirtualBox を介して仮想マシン上でプロジェクト全体を試すことを好みます。

では、仮想マシンによって呼び出される仮想 CD イメージにカスタム ブート セクタを書き込む方法は? :)
別の方法がある場合は、それを提案してください:)

4

1 に答える 1

0

(注:これはLinuxを使用していることを前提としています)

実際のフロッピー ドライブを必要とするに書き込む代わりに、/dev/fd0VirtualBox の起動に使用できるディスク イメージを書き込むことができます。ただし、通常のフロッピーは 1.44MiB であるため、ファイルを 1.44MiB にパディングする必要があります。

さらに良い方法は、最初にブートセクタ バイナリを (0xAA55 'マジック コード' を使用して)dd if=MyBootsectorBin of=Floppy.flp bs=512 count=2880作成し、次に出力ファイル Floppy.flp を作成するようなことを行うことです。これは、VirtualBox (または私の好みの QEMU 経由qemu -fda Floppy.flp) を介して起動できます。

仮想 CD についてはよくわかりませんが、ディスクに書き込む ISO を簡単に作成できます。これに必要なプログラムは mkisofs で、詳細についてはここから読むことができます。

于 2012-06-25T09:45:03.577 に答える