feat: Create minimal Zero-OS initramfs with console support

- Fixed build system to clone source repositories instead of downloading binaries
- Enhanced scripts/fetch-github.sh with proper git repo cloning and branch handling
- Updated scripts/compile-components.sh for RFS compilation with build-binary feature
- Added minimal firmware installation for essential network drivers (73 modules)
- Created comprehensive zinit configuration set (15 config files including getty)
- Added util-linux package for getty/agetty console support
- Optimized package selection for minimal 27MB initramfs footprint
- Successfully builds bootable vmlinuz.efi with embedded initramfs
- Confirmed working: VM boot, console login, network drivers, zinit init system

Components:
- initramfs.cpio.xz: 27MB compressed minimal Zero-OS image
- vmlinuz.efi: 35MB bootable kernel with embedded initramfs
- Complete Zero-OS toolchain: zinit, rfs, mycelium compiled from source
This commit is contained in:
2025-08-16 23:25:59 +02:00
parent 446eb02fb3
commit bf62e887e8
109 changed files with 7645 additions and 1945 deletions

View File

@@ -931,29 +931,6 @@ version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[package]]
name = "docker2fl"
version = "0.1.0"
dependencies = [
"anyhow",
"bollard",
"clap",
"futures-util",
"git-version",
"log",
"regex",
"rfs",
"serde",
"serde_json",
"simple_logger",
"tempdir",
"tokio",
"tokio-async-drop",
"toml",
"uuid",
"walkdir",
]
[[package]]
name = "dotenvy"
version = "0.15.7"
@@ -1023,49 +1000,6 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6"
[[package]]
name = "fl-server"
version = "0.1.0"
dependencies = [
"anyhow",
"askama",
"async-trait",
"axum",
"axum-macros",
"bollard",
"chrono",
"clap",
"docker2fl",
"futures-util",
"git-version",
"hostname-validator",
"hyper 1.4.1",
"jsonwebtoken",
"log",
"mime",
"mime_guess",
"percent-encoding",
"regex",
"rfs",
"serde",
"serde_json",
"sha256",
"simple_logger",
"tempdir",
"thiserror",
"time",
"tokio",
"tokio-async-drop",
"toml",
"tower",
"tower-http",
"tracing",
"utoipa",
"utoipa-swagger-ui",
"uuid",
"walkdir",
]
[[package]]
name = "flate2"
version = "1.0.30"
@@ -1755,9 +1689,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.153"
version = "0.2.172"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
[[package]]
name = "libm"
@@ -2649,34 +2583,60 @@ version = "0.2.0"
dependencies = [
"aes-gcm",
"anyhow",
"askama",
"assert_cmd",
"async-trait",
"axum",
"axum-macros",
"bb8-redis",
"blake2b_simd",
"bollard",
"bytes",
"chrono",
"clap",
"daemonize",
"futures",
"futures-util",
"git-version",
"hex",
"hostname-validator",
"hyper 1.4.1",
"jsonwebtoken",
"libc",
"log",
"lru",
"mime",
"mime_guess",
"nix",
"openssl",
"percent-encoding",
"polyfuse",
"rand 0.8.5",
"regex",
"reqwest 0.11.27",
"rust-s3",
"serde",
"serde_json",
"sha2",
"sha256",
"simple_logger",
"snap",
"sqlx",
"tempdir",
"tempfile",
"thiserror",
"time",
"tokio",
"tokio-async-drop",
"toml",
"tower",
"tower-http",
"tracing",
"url",
"utoipa",
"utoipa-swagger-ui",
"uuid",
"walkdir",
"which",
"workers",
]