From d35463e1959cb64828c3166527b06e4a79cbea5e Mon Sep 17 00:00:00 2001 From: andromeda Date: Fri, 6 Mar 2026 16:53:18 +0100 Subject: [PATCH] reorganise --- README.md | 46 ++---------------- {.cargo => bootle/.cargo}/config.toml | 0 CHANGELOG.md => bootle/CHANGELOG.md | 0 Cargo.lock => bootle/Cargo.lock | 0 Cargo.toml => bootle/Cargo.toml | 0 bootle/README.md | 28 +++++++++++ nix/pkgs/bootle.nix => bootle/package.nix | 4 +- .../rust-toolchain.toml | 0 {src => bootle/src}/lib.rs | 0 {src => bootle/src}/linker.ld | 0 bootler/CHANGELOG.md | 7 +++ bootler/README.md | 43 +++++++++++++++++ {asm => bootler/asm}/boot.asm | 0 {asm => bootler/asm}/kernel.asm | 0 nix/pkgs/bootler.nix => bootler/package.nix | 2 +- flake.nix | 7 +-- nix/package.nix | 47 ------------------- 17 files changed, 89 insertions(+), 95 deletions(-) rename {.cargo => bootle/.cargo}/config.toml (100%) rename CHANGELOG.md => bootle/CHANGELOG.md (100%) rename Cargo.lock => bootle/Cargo.lock (100%) rename Cargo.toml => bootle/Cargo.toml (100%) create mode 100644 bootle/README.md rename nix/pkgs/bootle.nix => bootle/package.nix (93%) rename rust-toolchain.toml => bootle/rust-toolchain.toml (100%) rename {src => bootle/src}/lib.rs (100%) rename {src => bootle/src}/linker.ld (100%) create mode 100644 bootler/CHANGELOG.md create mode 100644 bootler/README.md rename {asm => bootler/asm}/boot.asm (100%) rename {asm => bootler/asm}/kernel.asm (100%) rename nix/pkgs/bootler.nix => bootler/package.nix (98%) delete mode 100644 nix/package.nix diff --git a/README.md b/README.md index e206ab9..3a9246b 100644 --- a/README.md +++ b/README.md @@ -2,53 +2,15 @@ Call me Terry Davis because... actually please don't. I have visions: aspiration # bootle -hobby kernel written in rust. It's just for playing around... for now :p +hobby kernel -run with `nix run git+https://git.mtgmonkey.net/andromeda/bootler#bootle` +status: basically nothing, come back later # bootler -hobby bootloader written in asm. It's just for playing around... for now :p +hobby 1-stage legacy mode bootloader -run with `nix run git+https://git.mtgmonkey.net/andromeda/bootler#bootler` - -### memory map - -``` -+------ 0x00100000 ------+ -| hardware, bios stuff | -+------ 0x00080000 ------+ -| | -| | -+------ 0x00010200 ------+ -| x86_64 kernel | -+------ 0x00010000 ------+ -| | -| | -+------ 0x00009000 ------+ -| IDT | -+------ 0x00008000 ------+ -| | -| | -+------ 0x00007E00 ------+ -| bootloader (boot.asm) | -+------ 0x00007C00 ------+ -| stack | TODO get real stack -+------ 0x00005000 ------+ -| PT | -+------ 0x00004000 ------+ -| PDT | -+------ 0x00003000 ------+ -| PDPT | -+------ 0x00002000 ------+ -| PML4T | -+------ 0x00001000 ------+ -| | -| | -+------ 0x00000500 ------+ -| bios stuff | -+------ 0x00000000 ------+ -``` +status: gets to long mode, loads+jumps to kernel, starts idt and gdt... :) --- diff --git a/.cargo/config.toml b/bootle/.cargo/config.toml similarity index 100% rename from .cargo/config.toml rename to bootle/.cargo/config.toml diff --git a/CHANGELOG.md b/bootle/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to bootle/CHANGELOG.md diff --git a/Cargo.lock b/bootle/Cargo.lock similarity index 100% rename from Cargo.lock rename to bootle/Cargo.lock diff --git a/Cargo.toml b/bootle/Cargo.toml similarity index 100% rename from Cargo.toml rename to bootle/Cargo.toml diff --git a/bootle/README.md b/bootle/README.md new file mode 100644 index 0000000..da47027 --- /dev/null +++ b/bootle/README.md @@ -0,0 +1,28 @@ +# bootle + +hobby kernel written in rust. It's just for playing around... for now :p + +run with `nix run git+https://git.mtgmonkey.net/andromeda/bootler#bootle` + +### memory map + +``` ++------ 0x00100000 ------+ +| hardware, bios stuff | ++------ 0x00080000 ------+ +| | +| | ++------ 0x00010200 ------+ +| kernel | ++------ 0x00010000 ------+ +| bootloader stuff | +| includes stack, gdt, | +| idt for the time being | ++------ 0x00000500 ------+ +| bios stuff | ++------ 0x00000000 ------+ +``` + +--- + +this project follows [Common Changelog](https://common-changelog.org) guidelines diff --git a/nix/pkgs/bootle.nix b/bootle/package.nix similarity index 93% rename from nix/pkgs/bootle.nix rename to bootle/package.nix index 99bdb55..a5de5eb 100644 --- a/nix/pkgs/bootle.nix +++ b/bootle/package.nix @@ -6,14 +6,14 @@ qemu, ... }: let - rust-toolchain = rust-bin.fromRustupToolchainFile ../../rust-toolchain.toml; + rust-toolchain = rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; naersk' = callPackage naersk { cargo = rust-toolchain; rustc = rust-toolchain; clippy = rust-toolchain; }; in (naersk'.buildPackage { - src = ../../.; + src = ./.; # deps for rust-src additionalCargoLock = "${rust-toolchain.availableComponents.rust-src}/lib/rustlib/src/rust/library/Cargo.lock"; diff --git a/rust-toolchain.toml b/bootle/rust-toolchain.toml similarity index 100% rename from rust-toolchain.toml rename to bootle/rust-toolchain.toml diff --git a/src/lib.rs b/bootle/src/lib.rs similarity index 100% rename from src/lib.rs rename to bootle/src/lib.rs diff --git a/src/linker.ld b/bootle/src/linker.ld similarity index 100% rename from src/linker.ld rename to bootle/src/linker.ld diff --git a/bootler/CHANGELOG.md b/bootler/CHANGELOG.md new file mode 100644 index 0000000..eff4a62 --- /dev/null +++ b/bootler/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +## [0.1.0] - 2026-03-06 + +### Added + +- initialised CHANGELOG.md diff --git a/bootler/README.md b/bootler/README.md new file mode 100644 index 0000000..bf50ce2 --- /dev/null +++ b/bootler/README.md @@ -0,0 +1,43 @@ +# bootler + +hobby bootloader, 1-stage, legacy mode :p + +run with `nix run git+https://git.mtgmonkey.net/andromeda/bootler#bootler` + +### memory map + +``` +. . +: : +| longmode kernel | ++------ 0x00010000 ------+ +| | +| | ++------ 0x00009000 ------+ +| IDT | ++------ 0x00008000 ------+ +| | +| | ++------ 0x00007E00 ------+ +| bootloader (boot.asm) | ++------ 0x00007C00 ------+ +| stack | ++------ 0x00005000 ------+ +| PT | ++------ 0x00004000 ------+ +| PDT | ++------ 0x00003000 ------+ +| PDPT | ++------ 0x00002000 ------+ +| PML4T | ++------ 0x00001000 ------+ +| | +| | ++------ 0x00000500 ------+ +| bios stuff | ++------ 0x00000000 ------+ +``` + +--- + +this project follows [Common Changelog](https://common-changelog.org) guidelines diff --git a/asm/boot.asm b/bootler/asm/boot.asm similarity index 100% rename from asm/boot.asm rename to bootler/asm/boot.asm diff --git a/asm/kernel.asm b/bootler/asm/kernel.asm similarity index 100% rename from asm/kernel.asm rename to bootler/asm/kernel.asm diff --git a/nix/pkgs/bootler.nix b/bootler/package.nix similarity index 98% rename from nix/pkgs/bootler.nix rename to bootler/package.nix index 3e5d2e4..4e18816 100644 --- a/nix/pkgs/bootler.nix +++ b/bootler/package.nix @@ -9,7 +9,7 @@ in stdenv.mkDerivation { pname = "bootler"; version = "0.1.0"; - src = ../../.; + src = ./.; buildPhase = '' ${nasm}/bin/nasm asm/boot.asm -o boot.bin ${nasm}/bin/nasm asm/kernel.asm -o dummy.bin diff --git a/flake.nix b/flake.nix index 81b9289..a631534 100644 --- a/flake.nix +++ b/flake.nix @@ -18,14 +18,15 @@ ... }: let system = "x86_64-linux"; - pkgs = import nixpkgs { + pkgs = nixpkgs.legacyPackages.${system}; + pkgsWithRustOverlay = import nixpkgs { inherit system; overlays = [(import rust-overlay)]; }; in { packages.${system} = { - bootler = pkgs.callPackage ./nix/pkgs/bootler.nix {}; - bootle = pkgs.callPackage ./nix/pkgs/bootle.nix { + bootler = pkgs.callPackage ./bootler/package.nix {}; + bootle = pkgsWithRustOverlay.callPackage ./bootle/package.nix { naersk = naersk; bootler = self.packages.${system}.bootler; }; diff --git a/nix/package.nix b/nix/package.nix deleted file mode 100644 index 3d56a51..0000000 --- a/nix/package.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - stdenv, - nasm, - qemu, - ... -}: let - bootImg = "boot"; -in - stdenv.mkDerivation { - pname = "bootler"; - version = "0.1.0"; - src = ../.; - buildPhase = '' - ${nasm}/bin/nasm asm/boot.asm -o boot.bin - ${nasm}/bin/nasm asm/kernel.asm -o kernel.bin - - dd if=/dev/zero of=${bootImg} bs=512 count=2 - dd if=boot.bin of=${bootImg} conv=notrunc - dd if=kernel.bin of=${bootImg} bs=512 seek=1 conv=notrunc - ''; - installPhase = '' - mkdir -p $out/bin - cp ${bootImg} $out/bin - - # create emulation binary - cat<$out/bin/bootler - #!/usr/bin/env bash - - # create temp dir - mkdir -p ./.bootler - cp $(echo $out)/bin/${bootImg} ./.bootler/${bootImg} - chmod a+w ./.bootler/${bootImg} - - # run image - ${qemu}/bin/qemu-system-x86_64 \ - -nographic \ - -drive file=./.bootler/${bootImg},format=raw,index=0,media=disk - - # clean up - rm ./.bootler -r - - EOF - - chmod +x $out/bin/${bootImg} - chmod +x $out/bin/bootler - ''; - }