diff --git a/README.md b/README.md index 711ca23..de428d9 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,5 @@ Call me Terry Davis because... actually please don't. I have visions: aspirations, not hallucinations :p -# bootle - -hobby kernel - -status: basically nothing, come back later - # bootler hobby 1-stage legacy mode bootloader @@ -16,4 +10,4 @@ status: gets to long mode, loads+jumps to kernel, starts idt and gdt... :) hobby self-hosted assembler -status: basically nothing, come back later +status: tokenises a lot of common stuff, compiles a lot of common stuff... not good enough for anything real-world yet diff --git a/bootle/.cargo/config.toml b/bootle/.cargo/config.toml deleted file mode 100644 index 74cdc7b..0000000 --- a/bootle/.cargo/config.toml +++ /dev/null @@ -1,5 +0,0 @@ -[build] -target = "x86_64-unknown-none" -rustflags = [ - "-Crelocation-model=static" -] diff --git a/bootle/CHANGELOG.md b/bootle/CHANGELOG.md deleted file mode 100644 index 53c30a7..0000000 --- a/bootle/CHANGELOG.md +++ /dev/null @@ -1,7 +0,0 @@ -# Changelog - -## [0.1.0] - 2026-03-05 - -### Added - -- CHANGELOG.md diff --git a/bootle/Cargo.lock b/bootle/Cargo.lock deleted file mode 100644 index f69efc7..0000000 --- a/bootle/Cargo.lock +++ /dev/null @@ -1,359 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "addr2line" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9acbfca36652500c911ddb767ed433e3ed99b032b5d935be73c6923662db1d43" -dependencies = [ - "cpp_demangle", - "fallible-iterator", - "gimli", - "memmap2", - "object", - "rustc-demangle", - "smallvec", - "typed-arena", -] - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - -[[package]] -name = "bootle" -version = "0.1.0" -dependencies = [ - "addr2line", - "cfg-if", - "dlmalloc", - "fortanix-sgx-abi", - "getopts", - "hashbrown", - "hermit-abi", - "object", - "r-efi", - "r-efi-alloc", - "rustc-demangle", - "rustc-literal-escaper", - "unwinding", - "wasi", -] - -[[package]] -name = "cfg-if" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" - -[[package]] -name = "cpp_demangle" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "dlmalloc" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa3a2dbee57b69fbb5dbe852fa9c0925697fb0c7fbcb1593e90e5ffaedf13d51" -dependencies = [ - "cfg-if", - "libc", - "windows-sys", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - -[[package]] -name = "flate2" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "fortanix-sgx-abi" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efc85edd5b83e8394f4371dd0da6859dff63dd387dab8568fece6af4cde6f84" - -[[package]] -name = "getopts" -version = "0.2.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" -dependencies = [ - "fallible-iterator", - "stable_deref_trait", -] - -[[package]] -name = "hashbrown" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "libc" -version = "0.2.182" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "memmap2" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" -dependencies = [ - "libc", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "object" -version = "0.37.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fd943161069e1768b4b3d050890ba48730e590f57e56d4aa04e7e090e61b4a" -dependencies = [ - "flate2", - "memchr", - "ruzstd", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi-alloc" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2f58ef3ca9bb0f9c44d9aa8537601bcd3df94cc9314a40178cadf7d4466354" -dependencies = [ - "r-efi", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" - -[[package]] -name = "rustc-literal-escaper" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ee29da77c5a54f42697493cd4c9b9f31b74df666a6c04dfc4fde77abe0438b" - -[[package]] -name = "ruzstd" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ff0cc5e135c8870a775d3320910cd9b564ec036b4dc0b8741629020be63f01" -dependencies = [ - "twox-hash", -] - -[[package]] -name = "simd-adler32" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "twox-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" - -[[package]] -name = "typed-arena" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" - -[[package]] -name = "unwinding" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d80f6c2bfede213d9a90b4a14f3eb99b84e33c52df6c1a15de0a100f5a88751" -dependencies = [ - "gimli", - "libc", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/bootle/Cargo.toml b/bootle/Cargo.toml deleted file mode 100644 index c4d5b40..0000000 --- a/bootle/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "bootle" -version = "0.1.0" -edition = "2024" - -[lib] -crate-type = ["staticlib"] - -[dependencies] - -[profile.release] -panic = "abort" -opt-level = 'z' -debug = false - -[profile.dev] -panic = "abort" diff --git a/bootle/README.md b/bootle/README.md deleted file mode 100644 index da47027..0000000 --- a/bootle/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# 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/bootle/package.nix b/bootle/package.nix deleted file mode 100644 index 822cf89..0000000 --- a/bootle/package.nix +++ /dev/null @@ -1,68 +0,0 @@ -{ - callPackage, - rust-bin, - naersk, - bootler, - qemu, - ... -}: let - rust-toolchain = rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; - naersk' = callPackage naersk { - cargo = rust-toolchain; - rustc = rust-toolchain; - clippy = rust-toolchain; - }; -in (naersk'.buildPackage { - src = ./.; - - # deps for rust-src - additionalCargoLock = "${rust-toolchain.availableComponents.rust-src}/lib/rustlib/src/rust/library/Cargo.lock"; - - # just library build - copyBins = false; - copyLibs = true; - release = true; - - # build std - cargoBuildOptions = x: - x - ++ [ - "-Zbuild-std" - ]; - - postInstall = '' - ld --oformat binary \ - -o kernel.bin \ - -T src/linker.ld \ - -e _start \ - target/x86_64-unknown-none/release/libbootle.a - - dd if=/dev/zero of=disk bs=512 count=2880 - dd if=${bootler}/bin/boot.bin of=disk conv=notrunc - dd if=kernel.bin of=disk bs=512 seek=1 conv=notrunc - - mkdir -p $out/lib - mkdir -p $out/bin - - cat<$out/bin/bootle - #!/usr/bin/env bash - - mkdir -p ./.bootle - cp $(echo $out)/bin/disk ./.bootle/disk - chmod a+w ./.bootle/disk - - ${qemu}/bin/qemu-system-x86_64 \ - -nographic \ - -drive file=./.bootle/disk,format=raw,index=0,media=disk - - rm ./.bootle -r - - EOF - - chmod +x $out/bin/bootle - - cp target/x86_64-unknown-none/release/libbootle.a $out/lib - cp kernel.bin $out/bin - cp disk $out/bin - ''; -}) diff --git a/bootle/rust-toolchain.toml b/bootle/rust-toolchain.toml deleted file mode 100644 index 22068c5..0000000 --- a/bootle/rust-toolchain.toml +++ /dev/null @@ -1,5 +0,0 @@ -[toolchain] -channel = "nightly" -components = ["rust-src"] -targets = ["x86_64-unknown-none"] -profile = "default" diff --git a/bootle/src/lib.rs b/bootle/src/lib.rs deleted file mode 100644 index adc1aab..0000000 --- a/bootle/src/lib.rs +++ /dev/null @@ -1,55 +0,0 @@ -#![no_std] -#![no_main] - -use core::panic::PanicInfo; - -#[unsafe(no_mangle)] -pub extern "C" fn _start() -> ! { - welcome_serial(); - halt() -} - -fn print_serial(s: &str) { - let mut bytes = s.bytes(); - while let Some(b) = bytes.next() { - unsafe { - core::arch::asm!( - "out dx, al" - , in("al") b - ) - }; - } -} - -fn println_serial(s: &str) { - print_serial(s); - print_serial("\n"); -} - -fn welcome_serial() { - print_serial(ANSI_PINK); - println_serial("\nWelcome to Bootle OS"); - println_serial("All code GPL licensed and freely available on git.mtgmonkey.net"); - print_serial("Enjoy your time! Press "); - print_serial(ANSI_RED); - print_serial("ctrl+a x"); - print_serial(ANSI_PINK); - println_serial(" to escape Qemu"); - print_serial(ANSI_CLEAR); -} - -#[panic_handler] -fn panic(_: &PanicInfo) -> ! { - print_serial("panicked"); - halt() -} - -fn halt() -> ! { - unsafe { core::arch::asm!("hlt") }; - halt() -} - -const ANSI_CLEAR: &str = "\x1b[0m"; -const ANSI_RED: &str = "\x1b[31m"; -const ANSI_PINK: &str = "\x1b[35m"; -const ANSI_GREEN: &str = "\x1b[32m"; diff --git a/bootle/src/linker.ld b/bootle/src/linker.ld deleted file mode 100644 index b523bc5..0000000 --- a/bootle/src/linker.ld +++ /dev/null @@ -1,8 +0,0 @@ -SECTIONS -{ - . = 0x00010000; - .text : { - *(.text._start) - *(.text*) - } -} diff --git a/flake.lock b/flake.lock index 6816b48..e7b90a8 100644 --- a/flake.lock +++ b/flake.lock @@ -1,55 +1,12 @@ { "nodes": { - "fenix": { - "inputs": { - "nixpkgs": [ - "naersk", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1752475459, - "narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "naersk": { - "inputs": { - "fenix": "fenix", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1769799857, - "narHash": "sha256-88IFXZ7Sa1vxbz5pty0Io5qEaMQMMUPMonLa3Ls/ss4=", - "owner": "nix-community", - "repo": "naersk", - "rev": "9d4ed44d8b8cecdceb1d6fd76e74123d90ae6339", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1772173633, - "narHash": "sha256-MOH58F4AIbCkh6qlQcwMycyk5SWvsqnS/TCfnqDlpj4=", + "lastModified": 1774701658, + "narHash": "sha256-CIS/4AMUSwUyC8X5g+5JsMRvIUL3YUfewe8K4VrbsSQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c0f3d81a7ddbc2b1332be0d8481a672b4f6004d6", + "rev": "b63fe7f000adcfa269967eeff72c64cafecbbebe", "type": "github" }, "original": { @@ -61,46 +18,7 @@ }, "root": { "inputs": { - "naersk": "naersk", - "nixpkgs": "nixpkgs", - "rust-overlay": "rust-overlay" - } - }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1752428706, - "narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "591e3b7624be97e4443ea7b5542c191311aa141d", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-overlay": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1772507320, - "narHash": "sha256-GdGXniFvtIfRiakc+ncdQYnoQjKbTCv9Imjfl4ggquI=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "1775eafa1879ac098ee436849bc9c3d963206f89", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index 1ce6341..56fd715 100644 --- a/flake.nix +++ b/flake.nix @@ -1,39 +1,21 @@ { - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - naersk = { - url = "github:nix-community/naersk"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; outputs = { nixpkgs, - naersk, - rust-overlay, self, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; - pkgsWithRustOverlay = pkgs.extend (import rust-overlay); in { packages.${system} = { bootler = pkgs.callPackage ./bootler/package.nix {}; - bootle = pkgsWithRustOverlay.callPackage ./bootle/package.nix { - inherit naersk; - bootler = self.packages.${system}.bootler; - }; twasm = pkgs.callPackage ./twasm/package.nix { bootler = self.packages.${system}.bootler; }; }; devShells.${system}.default = pkgs.mkShell { inputsFrom = [ - self.packages.${system}.bootle self.packages.${system}.bootler self.packages.${system}.twasm ];