OS

Multiboot2メモ

OS

今日は、この前のサイトのコードを理解しようと思って、multiboot2 の仕様を読みました。 ヘッダーは以下のようになっていることがわかった。 Multiboot2 Header Offset Type Field Note 0 u32 magic required 4 u32 architecture required 8 u32 header_len…

自作64bitOSの最初の部分

OS

Making a 64-bit Operating System from Scratchbithin.wordpress.com Thank you!!! Thank you!! Thank you! 自分が探してた情報がやっと見つかった。めっちゃ嬉しいです。 OS X で 64bit OSのとっかかりを試してみました。 grubとmultiboot2を使ってい…

OS日記~Makefileの整理~

OS

今日はMakefileを整理しました。 AS := x86_64-elf-as CC := x86_64-elf-gcc OBJS := boot.o kernel.o IMAGE := myos %.o: %.S Makefile $(AS) $*.S -o $@ %.o: %.c Makefile $(CC) -c $*.c -o $@ -std=gnu99 -ffreestanding -O2 -Wall -Wextra $(IMAGE).bin…

OSメモ(5)

OS

grub2 のソースコード読み始めた。 最初のセクタを0x7c00にロード BIOS → ブートセクタ → ブートローダ → カーネル MBRは、ハードディスクの先頭セクタに書かれている512バイトの領域。最初のコードとパーティションテーブルが書かれている。 grub2/grub-cor…

OSメモ(4)

OS

ページディレクトリ 32bitアドレスの場合、ページングは、以下の順番 リニアアドレスの上位 10 bitと CR3 レジスタから、PDE(ページディレクトリエントリ)を取得 ページディレクトリエントリからページテーブルのアドレスを取得 リニアアドレスの中位 10 bit…

OSメモ(3)

OS

64bitのメモリを理解するために、Linuxのブートプロセスをみるを読む。 64bitのOSでは、DS, ES, FS, GS, SS は、使わないようだ。これは、フラットモデルを使うからみたいだ。もしかしたら、フラットモデルじゃないモデルを使うなら、使えるのかもしれない。…

OSメモ(2)

OS

wiki.osdev.org 今日はリンカスクリプトを読んだ。 KERNEL_VMAは仮想アドレスのベースとなるアドレスだと思う。 ADDRは、 Return the absolute address (the VMA) of the named section. と書いてあったので、VMAを含んだ(含んだという言い方はおかしいか).t…

OSメモ(1)

OS

wiki.osdev.org 64bitOSが作りたいなぁと思っています。(30日OS自作本やったので) 手始めに、上記のサイトをやっていく。できれば毎日やりたい。 "まともに動く"を目標にやっていきたいかも。 x86_64-elf-gcc -ffreestanding -mcmodel=large -mno-red-zone -…