2 export CC
= i686-elf-gcc
3 export QEMU
= qemu-system-i386
-monitor stdio
4 export GIT_REV
= $(shell git describe
--long HEAD
)
7 default
: kernel
/kernel.elf bootloader
8 all: default boot
/x86
/disk.img
10 $(QEMU
) boot
/x86
/disk.img
12 $(QEMU
) -s
-S boot
/x86
/disk.img
19 boot
/x86
/disk.img
: bootloader boot
/x86
/disk.dump kernel
/kernel.elf
20 truncate
-s1G boot
/x86
/disk.img
21 sfdisk boot
/x86
/disk.img
< boot
/x86
/disk.dump
22 mkfs.fat
-F
32 --offset
2048 boot
/x86
/disk.img
23 dd if
=boot
/x86
/mbr of
=boot
/x86
/disk.img bs
=440 count
=1 conv
=notrunc
24 dd if
=boot
/x86
/vbr-fat32 of
=boot
/x86
/disk.img bs
=1 skip
=90 seek
=1048666 conv
=notrunc
25 mcopy
-i boot
/x86
/disk.img@@
1M boot
/x86
/stage3
/LOADER.BIN
::.
26 mcopy
-i boot
/x86
/disk.img@@
1M kernel
/kernel.elf
::.
/KERNEL.ELF
29 $(MAKE
) -C boot
/x86
clean
30 $(MAKE
) -C kernel
clean
32 # Even though kernel.elf is a real target, it's considered phony so that the
33 # kernel Makefile is always run. We don't check is the kernel binary up-to-date
34 # here because we want to be more recursive.
35 .PHONY
: default
all clean run debug bootloader kernel
/kernel.elf