2055dcdd44
Three improvements derived from running CachyOS 2026-06-28 in QEMU and comparing to the Red Bear OS boot sequence. drivers/pcid/src/main.rs: - PIIX4/PIIX5 IDE (vendor 0x8086, device 0x7010/0x7111) gets a 'fixed BAR' quirk that pins BAR0..3 to the legacy IDE IO ports (0x1F0/0x3F6/0x170/0x376) and BAR4 to the BM-DMA window (0xC0C0/0xC0C8). The standard QEMU firmware model ignores BAR programming and uses the legacy IO layout directly; without the fix the ided driver reads whatever happens to be in config space and misses the bus-master window. Linux applies the same quirk in drivers/ata/ata_piix.c. - Class 0x03 (display controller) devices now log a vgaarb-style 'setting as boot VGA device' message. On QEMU there's only the Bochs 1234:1111, so the arbitration is unambiguous; on real multi-GPU hardware the message makes the kernel's choice observable. Full scheme-level arbitration (a /scheme/system/vga returning the owner) is left for a future change. initfs/tools/Cargo.toml + initfs/tools/src/bin/loop_mnt.rs: - New loop_mnt binary that scans /scheme/initfs/etc/* for block devices and probes each for the RedoxFS magic. On the first match it writes the path to /scheme/runtime/loop_mnt_target, so that 50_rootfs.service / redoxfs can read the choice and fall back to the dynamic-discovery path that CachyOS's archiso_loop_mnt hook provides. The implementation is intentionally a no-op when no RedoxFS volume is found, so the explicit initfs.toml path remains the source of truth on a normal boot. init.initfs.d/45_loop_mnt.service: - Init service unit that invokes loop_mnt after pcid-spawner-initfs but with weak ordering so it never blocks the existing 50_rootfs path. Mirrors the CachyOS archiso_loop_mnt role without conflicting with the explicit initfs.toml flow. recipes/core/base-initfs/recipe.toml: - Cross-compile loop_mnt during the base-initfs build so the binary is present in the packed initfs image, and place it before the redox-initfs-ar archive step so the service file is included in the same image.
36 lines
783 B
TOML
36 lines
783 B
TOML
[package]
|
|
name = "redox-initfs-tools"
|
|
version = "0.2.0"
|
|
authors = ["4lDO2 <4lDO2@protonmail.com>", "Kamil Koczurek <koczurekk@gmail.com>"]
|
|
edition = "2021"
|
|
description = "Tooling to archive a directory into an userspace bootstrap image (initfs)"
|
|
license = "MIT"
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[[bin]]
|
|
name = "redox-initfs-ar"
|
|
path = "src/bin/archive.rs"
|
|
|
|
[[bin]]
|
|
name = "redox-initfs-dump"
|
|
path = "src/bin/dump.rs"
|
|
|
|
[[bin]]
|
|
name = "loop_mnt"
|
|
path = "src/bin/loop_mnt.rs"
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
clap = {workspace = true, features = ["cargo"]}
|
|
env_logger = "0.8"
|
|
log.workspace = true
|
|
pathdiff = "0.2.1"
|
|
plain.workspace = true
|
|
twox-hash = "1.6"
|
|
|
|
redox-initfs = {path = ".."}
|
|
|
|
[lints]
|
|
workspace = true
|