ゼロからオペレーティングシステムを作成します。このオペレーティングシステムは、I386+ 32ビットIntel X86用にビルドされています。他のプラットフォームは機能しない可能性があり、テストされていません。
QEMUエミュレータで必要なすべてのファイルを作成して実行すると、 make runだけです。 Makefileは修羅場であるため、より良いMakefilesに関する提案は高く評価されています。
nasmブートローダーを組み立てるためgccカーネルをコンパイルしてCライブラリを含むldすべてのカーネルファイルを一緒にリンクするためobjcopyエルフファイルからカーネルバイナリを作成するためar Cライブラリライブラリを作成するためmake makefileを実行しますqemu OSを実行するWindows Linux subsystem :cmd Linuxサブシステム端子でWindowsコマンドを使用するためpartcopy - ブートセクターを作成するためのWindows CMDimdisk -Floppy画像を作成およびマウントするためのWindowsCMDcopy - フロッピー画像にファイルをコピーするためのWindowsCMSこれにより、人々がWindowsとLinuxを一緒に使用しているように見ているのを傷つけることを申し訳ありません。 MakeFilesは私にとって新しいので、変更があれば何でもコメントできます。何が起こっているのか理解できます。特に、Linuxコマンドを使用するだけのMakeFileが最適です。 Bootセクターを作成するためにddを使用してみましたが、正しく機能することはできませんでした。変更があれば、[email protected]にメールで送信できます。
必要なすべてのファイルを作成してQEMUエミュレータで実行するmake debug実行できます。次に、.gdbinitに行を追加するか、コマンドを直接入力して、GDBデバッガーを添付できます。
set architecture i386
target remote localhost:1234
br *0x7c00
c
これにより、アーキテクチャは16ビットx86に設定されます。これは、ブートローダーが最初にコーディングされるものであるためです。次に、ポート1234のエミュレータに接続します(QEMUのデフォルト)。次に、ブートローダーの先頭にブレークポイントを設定します。 OSを開始し、ブートローダーの開始時に停止します。
カーネルの先頭で壊れたい場合は、ロードされているアドレスは0x100000です。したがって、 br *0x7c00 br *0x100000に置き換えます。
あなたは私のオペレーティングシステムを実際のハードウェアであなた自身のリスクで実行します。 OSを実行してもハードウェアが破損しないという保証はありません。したがって、安全のために仮想マシンまたはエミュレータで実行します。