diff options
| author | andromeda <andromeda@lenovo> | 2026-03-06 16:53:18 +0100 |
|---|---|---|
| committer | andromeda <andromeda@lenovo> | 2026-03-06 16:53:18 +0100 |
| commit | d35463e1959cb64828c3166527b06e4a79cbea5e (patch) | |
| tree | 65017b84447f63eaaac8326c6d18f5c5e34e6bac | |
| parent | fdf5bb9daf8574b7f993e2e38e400c35aedc3b96 (diff) | |
reorganise
| -rw-r--r-- | README.md | 46 | ||||
| -rw-r--r-- | bootle/.cargo/config.toml (renamed from .cargo/config.toml) | 0 | ||||
| -rw-r--r-- | bootle/CHANGELOG.md (renamed from CHANGELOG.md) | 0 | ||||
| -rw-r--r-- | bootle/Cargo.lock (renamed from Cargo.lock) | 0 | ||||
| -rw-r--r-- | bootle/Cargo.toml (renamed from Cargo.toml) | 0 | ||||
| -rw-r--r-- | bootle/README.md | 28 | ||||
| -rw-r--r-- | bootle/package.nix (renamed from nix/pkgs/bootle.nix) | 4 | ||||
| -rw-r--r-- | bootle/rust-toolchain.toml (renamed from rust-toolchain.toml) | 0 | ||||
| -rw-r--r-- | bootle/src/lib.rs (renamed from src/lib.rs) | 0 | ||||
| -rw-r--r-- | bootle/src/linker.ld (renamed from src/linker.ld) | 0 | ||||
| -rw-r--r-- | bootler/CHANGELOG.md | 7 | ||||
| -rw-r--r-- | bootler/README.md | 43 | ||||
| -rw-r--r-- | bootler/asm/boot.asm (renamed from asm/boot.asm) | 0 | ||||
| -rw-r--r-- | bootler/asm/kernel.asm (renamed from asm/kernel.asm) | 0 | ||||
| -rw-r--r-- | bootler/package.nix (renamed from nix/pkgs/bootler.nix) | 2 | ||||
| -rw-r--r-- | flake.nix | 7 | ||||
| -rw-r--r-- | nix/package.nix | 47 |
17 files changed, 89 insertions, 95 deletions
@@ -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 index 74cdc7b..74cdc7b 100644 --- a/.cargo/config.toml +++ b/bootle/.cargo/config.toml diff --git a/CHANGELOG.md b/bootle/CHANGELOG.md index 53c30a7..53c30a7 100644 --- a/CHANGELOG.md +++ b/bootle/CHANGELOG.md diff --git a/Cargo.lock b/bootle/Cargo.lock index f69efc7..f69efc7 100644 --- a/Cargo.lock +++ b/bootle/Cargo.lock diff --git a/Cargo.toml b/bootle/Cargo.toml index c4d5b40..c4d5b40 100644 --- a/Cargo.toml +++ b/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 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 index 22068c5..22068c5 100644 --- a/rust-toolchain.toml +++ b/bootle/rust-toolchain.toml diff --git a/src/lib.rs b/bootle/src/lib.rs index adc1aab..adc1aab 100644 --- a/src/lib.rs +++ b/bootle/src/lib.rs diff --git a/src/linker.ld b/bootle/src/linker.ld index b523bc5..b523bc5 100644 --- a/src/linker.ld +++ b/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 index 5291d58..5291d58 100644 --- a/asm/boot.asm +++ b/bootler/asm/boot.asm diff --git a/asm/kernel.asm b/bootler/asm/kernel.asm index b4cbb30..b4cbb30 100644 --- a/asm/kernel.asm +++ b/bootler/asm/kernel.asm diff --git a/nix/pkgs/bootler.nix b/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 @@ -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<<EOF>$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 - ''; - } |
