diff --git a/Makefile b/Makefile index 10fa994..856e798 100644 --- a/Makefile +++ b/Makefile @@ -3,18 +3,20 @@ # Created: 07/09/04 FLOPPY=/dev/fd0 -FLOPPY_MOUNT=./mnt_flp FLOPPY_IMAGE=hos.flp +FLOPPY_MOUNT=./mnt_flp GRUB_IMAGE=grub.flp INITRD=hos_initrd INITRD_DIR=initrd INITRD_MOUNT=./mnt_initrd INITRD_SIZE=100 #initrd size in kb +MOUNT=sudo mount +UMOUNT=sudo umount # Do not print "Entering directory ..." MAKEFLAGS += --no-print-directory -.PHONY: initrd +.PHONY: all clean initrd apps grub_image install install_img all: make -C kernel @@ -28,47 +30,53 @@ clean: apps: make -C apps -grub: - -mkdir $(FLOPPY_MOUNT) - mke2fs $(FLOPPY) - mount -t ext2 $(FLOPPY) $(FLOPPY_MOUNT) - grub-install --root-directory=$(FLOPPY_MOUNT) fd0 - umount $(FLOPPY_MOUNT) - -rmdir $(FLOPPY_MOUNT) - grub_image: - dd if=$(FLOPPY) of=$(GRUB_IMAGE) + dd if=/dev/zero of=$(GRUB_IMAGE) bs=1024 seek=1440 count=0 + -mkdir $(FLOPPY_MOUNT) + mke2fs -F $(GRUB_IMAGE) + $(MOUNT) -t ext2 -o loop $(GRUB_IMAGE) $(FLOPPY_MOUNT) + -mkdir -p $(FLOPPY_MOUNT)/boot/grub + -cp /boot/grub/stage1 /boot/grub/stage2 /boot/grub/e2fs_stage1_5 $(FLOPPY_MOUNT)/boot/grub + $(UMOUNT) $(FLOPPY_MOUNT) + -rmdir $(FLOPPY_MOUNT) + echo "(fd0) $(GRUB_IMAGE)" > grub_image_device.map.tmp + echo "root (fd0)" > grub_commands.tmp + echo "setup (fd0)" >> grub_commands.tmp + echo "quit" >> grub_commands.tmp + grub --device-map grub_image_device.map.tmp < grub_commands.tmp + rm grub_commands.tmp + rm grub_image_device.map.tmp install: gzip -c $(INITRD) > $(INITRD).gz -mkdir $(FLOPPY_MOUNT) - mount -t ext2 $(FLOPPY) $(FLOPPY_MOUNT) - cp kernel/kernel.bin $(FLOPPY_MOUNT) - cp rmmod/rmmod.bin $(FLOPPY_MOUNT) - cp menu.lst $(FLOPPY_MOUNT)/boot/grub - cp $(INITRD).gz $(FLOPPY_MOUNT)/$(INITRD).gz - umount $(FLOPPY_MOUNT) + $(MOUNT) -t ext2 $(DEVICE) $(FLOPPY_MOUNT) + -cp kernel/kernel.bin $(FLOPPY_MOUNT) + -cp rmmod/rmmod.bin $(FLOPPY_MOUNT) + -cp menu.lst $(FLOPPY_MOUNT)/boot/grub + -cp $(INITRD).gz $(FLOPPY_MOUNT)/$(INITRD).gz + $(UMOUNT) $(FLOPPY_MOUNT) -rmdir $(FLOPPY_MOUNT) install_img: gzip -c $(INITRD) > $(INITRD).gz -mkdir $(FLOPPY_MOUNT) cp $(GRUB_IMAGE) $(FLOPPY_IMAGE) - mount -t ext2 -o loop $(FLOPPY_IMAGE) $(FLOPPY_MOUNT) - cp kernel/kernel.bin $(FLOPPY_MOUNT) - cp rmmod/rmmod.bin $(FLOPPY_MOUNT) - cp menu.lst $(FLOPPY_MOUNT)/boot/grub - cp $(INITRD).gz $(FLOPPY_MOUNT)/$(INITRD).gz - umount $(FLOPPY_MOUNT) + $(MOUNT) -t ext2 -o loop $(FLOPPY_IMAGE) $(FLOPPY_MOUNT) + -cp kernel/kernel.bin $(FLOPPY_MOUNT) + -cp rmmod/rmmod.bin $(FLOPPY_MOUNT) + -cp menu.lst $(FLOPPY_MOUNT)/boot/grub + -cp $(INITRD).gz $(FLOPPY_MOUNT)/$(INITRD).gz + $(UMOUNT) $(FLOPPY_MOUNT) -rmdir $(FLOPPY_MOUNT) initrd: dd if=/dev/zero of=$(INITRD) bs=1024 count=$(INITRD_SIZE) mke2fs -Fv -m0 -r0 -i1024 $(INITRD) -mkdir $(INITRD_MOUNT) - mount -t ext2 -o loop $(INITRD) $(INITRD_MOUNT) + $(MOUNT) -t ext2 -o loop $(INITRD) $(INITRD_MOUNT) cp -Pr $(INITRD_DIR)/* $(INITRD_MOUNT) - umount $(INITRD_MOUNT) + $(UMOUNT) $(INITRD_MOUNT) rm -rf $(INITRD_MOUNT) diff --git a/kernel/Makefile b/kernel/Makefile index 4c25972..b232c9e 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -1,78 +1,82 @@ # Makefile for HOS # Josh Holtrop # Created: 07/08/04 -# Modified: 08/22/04 +# Modified: 06/13/05 # Assembler Information: NASM=nasm NASM_FLAGS=-f aout -# C Information: +# C/C++ Information: +CPPFLAGS=-fleading-underscore -fno-builtin -nostdlib -nostartfiles -nodefaultlibs -I. -Wall CC=gcc -CPP=g++ -CC_FLAGS=-fleading-underscore -fno-builtin -nostdlib -nostartfiles -nodefaultlibs -I. -Wall -CPP_FLAGS=$(CC_FLAGS) -fno-rtti -fno-exceptions +CXX=g++ +CXXFLAGS=-fno-rtti -fno-exceptions # Linker Information: LD=ld -LD_FLAGS=-nodefaultlibs -nostdlib --no-demangle -T link.ld +LDFLAGS=-nodefaultlibs -nostdlib --no-demangle -T link.ld -all: Asm_Kernel C_Kernel - @echo ' LD kernel.bin' - @$(LD) $(LD_FLAGS) -Map kernel.map \ - boot.o kernel.o lang_a.o mm.o vmm.o conv.o kout.o \ - vconsole.o display.o devices.o pic.o keyboard.o \ - ramdisk.o vfs.o lang_c.o \ - string.o new.o ext2.o misc_char.o -o kernel.bin +# Files +OBJS=boot.o kernel.o lang/lang_a.o mm/mm.o mm/vmm.o lang/conv.o \ + display/kout.o char/vconsole.o display/display.o devices.o \ + sys/pic.o char/keyboard.o block/ramdisk.o fs/vfs.o \ + lang/lang.o lang/string.o lang/new.o fs/ext2.o char/misc_char.o +CSRC=kernel.c mm/mm.c mm/vmm.c lang/conv.c display/kout.c display/display.c sys/pic.c char/keyboard.c lang/lang.c +CXXSRC=lang/string.cpp lang/new.cpp fs/vfs.cpp fs/ext2.cpp char/misc_char.cpp block/ramdisk.cpp char/vconsole.cpp devices.cpp + +.PHONY: all depend clean html + +all: $(OBJS) + $(LD) $(LDFLAGS) -Map kernel.map $(OBJS) -o kernel.bin @echo ' Kernel built: ' `ls -sk kernel.bin | cut -d' ' -f1`kb -Asm_Kernel: - @echo ' NASM boot.o' - @$(NASM) $(NASM_FLAGS) -l boot.lst boot.asm -o boot.o - @echo ' NASM lang_a.o' - @$(NASM) $(NASM_FLAGS) -l lang.lst lang/lang.asm -o lang_a.o +depend: + makedepend -- $(CPPFLAGS) -- $(CSRC) $(CXXSRC) -C_Kernel: - @echo ' CC kernel.o' - @$(CC) $(CC_FLAGS) -c kernel.c -o kernel.o - @echo ' CC mm.o' - @$(CC) $(CC_FLAGS) -c mm/mm.c -o mm.o - @echo ' CC vmm.o' - @$(CC) $(CC_FLAGS) -c mm/vmm.c -o vmm.o - @echo ' CC conv.o' - @$(CC) $(CC_FLAGS) -c lang/conv.c -o conv.o - @echo ' CC kout.o' - @$(CC) $(CC_FLAGS) -c display/kout.c -o kout.o - @echo ' CC display.o' - @$(CC) $(CC_FLAGS) -c display/display.c -o display.o - @echo ' CC pic.o' - @$(CC) $(CC_FLAGS) -c sys/pic.c -o pic.o - @echo ' CC keyboard.o' - @$(CC) $(CC_FLAGS) -c char/keyboard.c -o keyboard.o - @echo ' CC lang_c.o' - @$(CC) $(CC_FLAGS) -c lang/lang.c -o lang_c.o +boot.o: boot.asm + $(NASM) $(NASM_FLAGS) -l boot.lst boot.asm -o boot.o - @echo ' CPP string.o' - @$(CPP) $(CPP_FLAGS) -c lang/string.cpp -o string.o - @echo ' CPP new.o' - @$(CPP) $(CPP_FLAGS) -c lang/new.cpp -o new.o - @echo ' CPP vfs.o' - @$(CPP) $(CPP_FLAGS) -c fs/vfs.cpp -o vfs.o - @echo ' CPP ext2.o' - @$(CPP) $(CPP_FLAGS) -c fs/ext2.cpp -o ext2.o - @echo ' CPP misc_char.o' - @$(CPP) $(CPP_FLAGS) -c char/misc_char.cpp -o misc_char.o - @echo ' CPP ramdisk.o' - @$(CPP) $(CPP_FLAGS) -c block/ramdisk.cpp -o ramdisk.o - @echo ' CPP vconsole.o' - @$(CPP) $(CPP_FLAGS) -c char/vconsole.cpp -o vconsole.o - @echo ' CPP devices.o' - @$(CPP) $(CPP_FLAGS) -c devices.cpp -o devices.o +lang/lang_a.o: lang/lang.asm + $(NASM) $(NASM_FLAGS) -l lang.lst lang/lang.asm -o lang/lang_a.o -################################################# -# Clean up the source directory of any binaries # -################################################# clean: - -rm -f *.o *.bin *.map *.lst *.out *~ fs/*~ sys/*~ block/*~ char/*~ lang/*~ mm/*~ display/*~ + -rm -f $(OBJS) *.bin *.map *.lst *.out *~ fs/*~ sys/*~ block/*~ char/*~ lang/*~ mm/*~ display/*~ +html: + -rm -rf html + -mkdir html + source-highlight --output-dir=html -f xhtml -n $(CSRC) $(CXXSRC) +# The following is used by 'make' to automatically +# generate dependency information +# DO NOT DELETE + +kernel.o: kernel.h hos_defines.h multiboot.h module.h lang/lang.h functions.h +kernel.o: sys/io.h mm/mm.h mm/vmm.h lang/conv.h devices.h display/display.h +kernel.o: display/kout.h sys/pic.h char/keyboard.h block/ramdisk.h fs/vfs.h +kernel.o: fs/ext2.h fs/vfs.h +mm/mm.o: kernel.h hos_defines.h multiboot.h mm/mm.h +mm/vmm.o: hos_defines.h kernel.h multiboot.h mm/vmm.h lang/lang.h mm/mm.h +lang/conv.o: lang/conv.h hos_defines.h +display/kout.o: hos_defines.h display/kout.h lang/conv.h devices.h +display/kout.o: char/misc_char.h char/misc_char.h +display/display.o: devices.h hos_defines.h char/vconsole.h display/display.h +display/display.o: lang/lang.h kernel.h multiboot.h display/vesafb.h +display/display.o: char/keyboard.h display/kout.h +sys/pic.o: hos_defines.h sys/pic.h sys/io.h +char/keyboard.o: hos_defines.h char/keyboard.h sys/io.h functions.h +char/keyboard.o: lang/conv.h display/kout.h display/display.h devices.h +lang/lang.o: lang/lang.h hos_defines.h +lang/string.o: lang/string.h lang/lang.h hos_defines.h +lang/new.o: hos_defines.h mm/vmm.h multiboot.h +fs/vfs.o: hos_defines.h display/kout.h fs/vfs.h lang/vector.h lang/string.h +fs/vfs.o: devices.h +char/misc_char.o: hos_defines.h devices.h char/misc_char.h sys/io.h +block/ramdisk.o: functions.h hos_defines.h sys/io.h mm/vmm.h multiboot.h +block/ramdisk.o: lang/lang.h block/ramdisk.h devices.h +char/vconsole.o: hos_defines.h mm/vmm.h multiboot.h lang/lang.h +char/vconsole.o: display/display.h devices.h functions.h sys/io.h +char/vconsole.o: char/vconsole.h +devices.o: hos_defines.h devices.h char/misc_char.h char/misc_char.h +devices.o: char/vconsole.h block/ramdisk.h diff --git a/kernel/fs/vfs.h b/kernel/fs/vfs.h index f1e7a33..6b76661 100644 --- a/kernel/fs/vfs.h +++ b/kernel/fs/vfs.h @@ -75,7 +75,7 @@ protected: int myRefs; string myMountPoint; inode_num_t myMountInode; - VFSMount + public: VFSMount(device_t dev, FileSystem *fs, string mountPoint, inode_num_t mountInode); ~VFSMount();