diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..1149f5c --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,15 @@ + +[unstable] +build-std = ["core", "compiler_builtins"] +build-std-features = ["compiler-builtins-mem"] + +[build] +target = "x86-unknown-bare_metal.json" + +[target.x86-unknown-bare_metal] +rustflags = [ + "-C", "opt-level=s", + "-C", "debuginfo=0", + "-C", "relocation-model=static", + "--emit=obj" +] \ No newline at end of file diff --git a/.gitignore b/.gitignore index dcaea51..2461756 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ target/ -kernel/target/ \ No newline at end of file +bin/ \ No newline at end of file diff --git a/kernel/Cargo.lock b/Cargo.lock similarity index 85% rename from kernel/Cargo.lock rename to Cargo.lock index 45dc146..d27a482 100644 --- a/kernel/Cargo.lock +++ b/Cargo.lock @@ -3,5 +3,5 @@ version = 4 [[package]] -name = "kernel" +name = "mxrox_kernel" version = "0.1.0" diff --git a/kernel/Cargo.toml b/Cargo.toml similarity index 73% rename from kernel/Cargo.toml rename to Cargo.toml index f84cf70..f592958 100644 --- a/kernel/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "kernel" +name = "mxrox_kernel" version = "0.1.0" edition = "2021" diff --git a/Makefile b/Makefile index e9c76bb..ac6ada7 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,38 @@ -.PHONY: clean run run-iso target_dir +.PHONY: clean run run-iso bin_dir -target/main.iso: target/kernel.elf target_dir - cp 'src/grub.cfg' target/iso/boot/grub - cp '$<' target/iso/boot - grub-mkrescue -o '$@' target/iso +bin/main.iso: bin/kernel.elf bin_dir + cp 'grub.cfg' bin/iso/boot/grub + cp '$<' bin/iso/boot + grub-mkrescue -o '$@' bin/iso -target/boot.o: src/boot.s target_dir +bin/boot.o: boot.s bin_dir nasm -f elf32 '$<' -o '$@' -target/kernel.elf: src/linker.ld target/boot.o target/kernel.o +bin/kernel.elf: linker.ld bin/boot.o bin/kernel.o i686-elf-ld -m elf_i386 -nostdlib -o '$@' -T $^ -target/kernel.o: kernel/ target_dir - cd kernel && cargo build --release - cp kernel/target/x86-unknown-bare_metal/release/deps/kernel-*.o target/kernel.o +bin/kernel.o: bin_dir + rustup override set nightly + cargo build --release + cp target/x86-unknown-bare_metal/release/deps/mxrox_kernel-*.o $@ -target_dir: - mkdir -p target - mkdir -p target/iso - mkdir -p target/iso/lib - mkdir -p target/iso/boot - mkdir -p target/iso/boot/grub +bin_dir: + mkdir -p bin + mkdir -p bin/iso + mkdir -p bin/iso/lib + mkdir -p bin/iso/boot + mkdir -p bin/iso/boot/grub -build: target/main.iso +build: bin/main.iso clean: + rm -rf bin rm -rf target - rm -rf kernel/target - rm -rf kernel/Cargo.lock - mkdir target + rm -rf Cargo.lock + mkdir bin -run-kernel: target/kernel.elf +run-kernel: bin/kernel.elf qemu-system-i386 -kernel '$<' -run: target/main.iso +run: bin/main.iso qemu-system-i386 -cdrom '$<' \ No newline at end of file diff --git a/src/boot.s b/boot.s similarity index 100% rename from src/boot.s rename to boot.s diff --git a/src/grub.cfg b/grub.cfg similarity index 100% rename from src/grub.cfg rename to grub.cfg diff --git a/kernel/.cargo/config.toml b/kernel/.cargo/config.toml deleted file mode 100644 index 4fe674c..0000000 --- a/kernel/.cargo/config.toml +++ /dev/null @@ -1,15 +0,0 @@ - -[unstable] -build-std = ["core", "compiler_builtins"] -build-std-features = ["compiler-builtins-mem"] - -[build] -target = "x86-unknown-bare_metal.json" - -[target.x86-unknown-bare_metal] -rustflags = [ - "-C", "opt-level=s", # Эквивалент GCC -Os - "-C", "debuginfo=0", # Убирает отладочную информацию - "-C", "relocation-model=static", # Для freestanding - "--emit=obj" # Генерация объектного файла -] \ No newline at end of file diff --git a/src/linker.ld b/linker.ld similarity index 100% rename from src/linker.ld rename to linker.ld diff --git a/kernel/src/main.rs b/src/main.rs similarity index 100% rename from kernel/src/main.rs rename to src/main.rs diff --git a/kernel/src/terminal.rs b/src/terminal.rs similarity index 100% rename from kernel/src/terminal.rs rename to src/terminal.rs diff --git a/kernel/x86-unknown-bare_metal.json b/x86-unknown-bare_metal.json similarity index 100% rename from kernel/x86-unknown-bare_metal.json rename to x86-unknown-bare_metal.json