C言語で0から作るOSを開発について説明していきます。このシリーズではカーネルの開発における、そのドライバーについて説明しています。 今回はマルチブート仕様に従うカーネルを簡単に作成し、仮想PC上でGRUBからカーネルを起動する方法について見ていきます。 【注意】本書はGRUBのレスキューディスクからフロッピーディスクに格納されているカーネルを起動する方法についてのみの簡易的な説明に留まっています。その他の詳細な説明はしていませんので注意してください。 【注意】本書は『0から作るOS開発』のVol.ナンバリングのタイトルではありません。Vol.ナンバリング以外のタイトルはカーネル編以降どのタイミングでも導入することができます。 GRUBからの自作カーネル起動 本書について ブートローダー 初期のコンピューター 初期の商用コンピューター IBM System/360と後継機 ROMを使用したコンピューター 現在のパソコン GRUB GRUBの簡単な歴史 GRUBの特徴 対応ファイルシステムとデバイス インターフェース ネットワークからの起動 マルチブート GRUBのブート処理 GRUB 2のブート処理 推奨 GRUB 2のインストール CygwinでGRUB 2をインストールします。 Cygwin上でGRUB 2のパス設定をします。 GRUB 2のパッケージ内容 インストールされる内容 インストールされるGRUB 2のツール grub-bin2hのオプション grub-editenvのオプション grub-fstestのオプション grub-mkelfimageのオプション grub-mkfontのオプション grub-mkimageのオプション grub-mkisofsのオプション grub-mkpasswd-pbkdf2のオプション grub-mkrelpathのオプション grub-mkrescueのオプション grub-script-checkのオプション grub-installのオプション grub-mkconfigのオプション grub-mkdevicemapのオプション grub-probeのオプション grub-rebootのオプション grub-set-defaultのオプション grub-setupのオプション 重要なGRUBのコマンドと設定ファイル grub-installコマンド grub-mkconfigコマンド grub-mkrescueコマンド GRUB 2のレスキューイメージの作成 GRUBのレスキューイメージを作成してみる GRUBをVirtualBoxで起動してみる VirtualBoxでGRUBのレスキューイメージを読み込む設定を行う。 GRUBから起動できる自作OS(カーネル)の作成 マルチブート仕様(ベーシック) マルチブート仕様の概略 マルチブートヘッダー マルチブートヘッダーの実装 カーネルをロードする物理アドレスの定義 magicフィールドの定義 flagsフィールドの定義 checksumフィールド 残りのアドレスフィールドについて グラフィックフィールドの定義 C言語用のマルチブートヘッダー定義 OS起動時のマシン状態 マルチブート情報 マルチブート情報の定義 マルチブート仕様のヘッダー定義まとめ GRUBから起動するカーネルを作成する マルチブートヘッダーを作成する multiboot.S カーネル本体を作成する カーネルをコンパイルする [multiboot.S] [kernel.c] マルチブートヘッダーとカーネルイメージの結合 (補足)ELFフォーマット以外のカーネルイメージの作成 GRUBから自作OS(カーネル)を起動する 自作カーネルをフロッピーディスクに入れる GRUBを起動する GRUBから自作カーネルを起動する GRUBの設定とメニューからの自作OS起動 編集したgrub.cfgをレスキューイメージに入れる 付録その1 カーネルをメモリーの3GBにロードするには カーネルをメモリーの3GB(0xC0000000)にロードするには カーネルをなぜ0xC0000000に置くのか 物理アドレスアドレスから仮想アドレスへのマッピング カーネルを0x00000000からストレートマッピングする場合 カーネルを0x00100000からストレートにマッピングする場合 カーネルを0xC0000000からストレートにマッピングする場合 カーネルを0xC0000000にロードする マルチブートヘッダーとカーネルのロード部を作成する 1.ページディレクトリの作成 2.ページディレクトリの設定 3.ページサイズを4MBに設定 4.ページングON 5.パイプラインのフラッシュ 6.カーネルのエントリーを呼び出します ここまでのまとめ。multiboot.Sの全体。 リンカースクリプトの作成 付録その2 マルチブート仕様 マルチブート仕様概要 マルチブート仕様について マルチブート仕様が想定しているアーキテクチャー マルチブート仕様が想定しているOS マルチブート仕様に基いて設計するブートローダーについて ブート時にOSに渡すパラメーター情報について OSの開発について ブートモジュールについて マルチブート仕様で使用する型式 マルチブート仕様で仕様する助詞の定義について マルチブート仕様 マルチブートヘッダー マシン状態 (参考)CR0制御レジスターとEFLAGSレジスター CR0制御レジスター EFLAGSレジスター ESPレジスター、GDTR、IDTRについて ブートローダーが設定しておくべきのその他のマシン状態 マルチブート情報のフォーマット 実装例と注意事項 パソコンでの注意事項 マルチブート情報のflagsのビット0について マルチブート情報のflagsのビット1について マルチブート情報のflagsのビット6について BIOSデバイスマッピングテクニック データ比較テクニック I/O制限テクニック OSのプログラム例 [multiboot.h] [boot.S] [kernel.c] コンパイル [2016/1/12] GRUBのインストールをソースコードからインストールする説明に変更しました。
Populaire auteurs
Cram101 Textbook Reviews (948) J.S. Bach (447) Wolfgang Amadeus Mozart (305) Collectif (268) Schrijf als eerste een recensie over dit item (259) Doug Gelbert (238) Princess of Patterns (211) Charles Dickens (209) R.B. Grimm (197) Carolyn Keene (187) Jules Verne (183) Philipp Winterberg (180) William Shakespeare (174) Youscribe (172) Lucas Nicolato (169) Edgar Allan Poe (166) Herman Melville (166) Anonymous (165) Gilad Soffer (164) Robert Louis Stevenson (159)Populaire gewichtsboeken
418 KB 425 KB 435 KB 459 KB 445 KB 439 KB 386 KB 413 KB 493 KB 432 KB 455 KB 471 KB 421 KB 451 KB 485 KB 472 KB 416 KB 369 KB 419 KB 427 KB