From 727da844338640d718bfaa690f66ec541914b6ee Mon Sep 17 00:00:00 2001 From: Mark Sta Ana Date: Tue, 30 Jan 2018 11:46:24 +0000 Subject: [PATCH 1/8] initial commit --- Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7fbd7e8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM rustlang/rust:nightly +# add intermezzOS deps +ENV DEBIAN_FRONTEND noninteractive +RUN apt-get update && apt-get install -y \ + nasm \ + xorriso \ + qemu \ + build-essential \ No newline at end of file From 340ba4123d1fe36073bc2de158291627861df6b8 Mon Sep 17 00:00:00 2001 From: Mark Sta Ana Date: Tue, 30 Jan 2018 11:46:43 +0000 Subject: [PATCH 2/8] (fix) bad cdrom image --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7fbd7e8..665eb33 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,4 +5,5 @@ RUN apt-get update && apt-get install -y \ nasm \ xorriso \ qemu \ - build-essential \ No newline at end of file + build-essential \ + grub-pc-bin \ No newline at end of file From 5e48626f86b7743ddfbe683fae4fb85fc5417ad7 Mon Sep 17 00:00:00 2001 From: Mark Sta Ana Date: Tue, 30 Jan 2018 12:47:56 +0000 Subject: [PATCH 3/8] (feat) add hello world demo --- test/Makefile | 28 ++++++++++++++++++++++++++++ test/boot.asm | 19 +++++++++++++++++++ test/grub.cfg | 7 +++++++ test/linker.ld | 16 ++++++++++++++++ test/multiboot_header.asm | 14 ++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 test/Makefile create mode 100644 test/boot.asm create mode 100644 test/grub.cfg create mode 100644 test/linker.ld create mode 100644 test/multiboot_header.asm diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..d03e063 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,28 @@ +default: run + +.PHONY: default build run clean + +build/multiboot_header.o: multiboot_header.asm + mkdir -p build + nasm -f elf64 multiboot_header.asm -o build/multiboot_header.o + +build/boot.o: boot.asm + mkdir -p build + nasm -f elf64 boot.asm -o build/boot.o + +build/kernel.bin: build/multiboot_header.o build/boot.o linker.ld + ld -n -o build/kernel.bin -T linker.ld build/multiboot_header.o build/boot.o + +build/os.iso: build/kernel.bin grub.cfg + mkdir -p build/isofiles/boot/grub + cp grub.cfg build/isofiles/boot/grub + cp build/kernel.bin build/isofiles/boot/ + grub-mkrescue -o build/os.iso build/isofiles + +run: build/os.iso + qemu-system-x86_64 -curses -net none -cdrom build/os.iso + +build: build/os.iso + +clean: + rm -rf build diff --git a/test/boot.asm b/test/boot.asm new file mode 100644 index 0000000..cb69197 --- /dev/null +++ b/test/boot.asm @@ -0,0 +1,19 @@ +global start + +section .text +bits 32 +start: + mov word [0xb8000], 0x0248 ; H + mov word [0xb8002], 0x0265 ; e + mov word [0xb8004], 0x026c ; l + mov word [0xb8006], 0x026c ; l + mov word [0xb8008], 0x026f ; o + mov word [0xb800a], 0x022c ; , + mov word [0xb800c], 0x0220 ; + mov word [0xb800e], 0x0277 ; w + mov word [0xb8010], 0x026f ; o + mov word [0xb8012], 0x0272 ; r + mov word [0xb8014], 0x026c ; l + mov word [0xb8016], 0x0264 ; d + mov word [0xb8018], 0x0221 ; ! + hlt \ No newline at end of file diff --git a/test/grub.cfg b/test/grub.cfg new file mode 100644 index 0000000..98bfeb6 --- /dev/null +++ b/test/grub.cfg @@ -0,0 +1,7 @@ +set timeout=0 +set default=0 + +menuentry "intermezzOS" { + multiboot2 /boot/kernel.bin + boot +} \ No newline at end of file diff --git a/test/linker.ld b/test/linker.ld new file mode 100644 index 0000000..b5f1f76 --- /dev/null +++ b/test/linker.ld @@ -0,0 +1,16 @@ +ENTRY(start) + +SECTIONS { + . = 1M; + + .boot : + { + /* ensure that the multiboot header is at the beginning */ + *(.multiboot_header) + } + + .text : + { + *(.text) + } +} \ No newline at end of file diff --git a/test/multiboot_header.asm b/test/multiboot_header.asm new file mode 100644 index 0000000..a802f1c --- /dev/null +++ b/test/multiboot_header.asm @@ -0,0 +1,14 @@ +section .multiboot_header +header_start: + dd 0xe85250d6 ; magic number + dd 0 ; protected mode code + dd header_end - header_start ; header length + + ; checksum + dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start)) + + ; required end tag + dw 0 ; type + dw 0 ; flags + dd 8 ; size +header_end: From bb17222f577c613c72bc5738f52356443130de5a Mon Sep 17 00:00:00 2001 From: Mark Sta Ana Date: Tue, 30 Jan 2018 12:48:39 +0000 Subject: [PATCH 4/8] (feat) test hello world --- docker-compose.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5018634 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +# docker-compose.yml +test: + build: . + command: make + volumes: + - ./test:/src + working_dir: /src \ No newline at end of file From cd4f56097924f030644f62cd49f6b6529027aa41 Mon Sep 17 00:00:00 2001 From: booyaa Date: Wed, 31 Jan 2018 18:08:48 +0000 Subject: [PATCH 5/8] (chore) exclude build artifacts --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d163863 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file From e5a2b6f4a4ff78b3476d24ab5b17b62dda954fdd Mon Sep 17 00:00:00 2001 From: booyaa Date: Thu, 22 Feb 2018 19:40:46 +0000 Subject: [PATCH 6/8] (refactor) add cleanup --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 665eb33..d9b060f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,4 +6,4 @@ RUN apt-get update && apt-get install -y \ xorriso \ qemu \ build-essential \ - grub-pc-bin \ No newline at end of file + grub-pc-bin && apt-get clean \ No newline at end of file From dcaec9ec3e83c5876d16a7822d4ff3210da7219c Mon Sep 17 00:00:00 2001 From: Mark Sta Ana Date: Sun, 4 Mar 2018 16:12:26 +0000 Subject: [PATCH 7/8] (feat) add xargo and rust src --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d9b060f..b7250a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,11 @@ FROM rustlang/rust:nightly # add intermezzOS deps ENV DEBIAN_FRONTEND noninteractive -RUN apt-get update && apt-get install -y \ +RUN apt-get update && apt-get install -y \ nasm \ xorriso \ qemu \ build-essential \ - grub-pc-bin && apt-get clean \ No newline at end of file + grub-pc-bin && apt-get clean \ + && cargo install xargo \ + && rustup component add rust-src \ No newline at end of file From 5582e8e5f9891ea7e1a5f79e129f2f953d84bf11 Mon Sep 17 00:00:00 2001 From: Mark Sta Ana Date: Sun, 4 Mar 2018 16:23:53 +0000 Subject: [PATCH 8/8] initial commit --- README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..b60d265 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Usage + +To build a new image - `docker-compose build` + +To test against the intermezzOS chapter 3 - `docker-compose run test` \ No newline at end of file