diff --git a/AGENTS.md b/AGENTS.md index c7cd8b82..6ef49c6a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -75,16 +75,16 @@ redox-master/ echo 'PODMAN_BUILD?=0' > .config # Native build (no container) echo 'PODMAN_BUILD?=1' > .config # Podman container build -# Build RBOS +# Build Red Bear OS make all # Build desktop config → harddrive.img -make all CONFIG_NAME=redbear-full # Full RBOS desktop + custom drivers -make all CONFIG_NAME=redbear-minimal # Minimal RBOS server +make all CONFIG_NAME=redbear-full # Full Red Bear OS desktop + custom drivers +make all CONFIG_NAME=redbear-minimal # Minimal Red Bear OS server CI=1 make all CONFIG_NAME=redbear-minimal # CI mode (disables TUI, for non-interactive) # Run make qemu # Boot in QEMU make qemu QEMUFLAGS="-m 4G" # With more RAM -make live # Build live ISO → rbos-live.iso +make live # Build live ISO → redbear-live.iso # Single recipe ./target/release/repo cook recipes/libs/mesa # Build one recipe @@ -107,7 +107,7 @@ make all → mk/fstools.mk (build cookbook repo binary + fstools) → mk/repo.mk (repo cook --filesystem=config/*.toml) → For each recipe: fetch source → apply patches → build → stage into sysroot - → mk/disk.mk (create filesystem.img, harddrive.img, rbos-live.iso) + → mk/disk.mk (create filesystem.img, harddrive.img, redbear-live.iso) → redoxfs-mkfs → redox_installer → bootloader embedding ``` @@ -135,7 +135,7 @@ make all ## PATCH MANAGEMENT -All RBOS modifications to upstream files are kept separately in `local/patches/`. +All Red Bear OS modifications to upstream files are kept separately in `local/patches/`. ### Structure @@ -182,19 +182,19 @@ local/patches/ | Script | Purpose | |--------|---------| | `local/scripts/apply-patches.sh` | Apply all build-system patches + create recipe symlinks | -| `local/scripts/sync-upstream.sh` | Fetch upstream + rebase RBOS commits + verify symlinks | +| `local/scripts/sync-upstream.sh` | Fetch upstream + rebase Red Bear OS commits + verify symlinks | ### Updating from Upstream ```bash # Automated (preferred): -./local/scripts/sync-upstream.sh # Rebase RBOS onto latest upstream +./local/scripts/sync-upstream.sh # Rebase Red Bear OS onto latest upstream ./local/scripts/sync-upstream.sh --dry-run # Preview conflicts first # Manual: git remote add upstream-redox https://github.com/redox-os/redox.git # once git fetch upstream-redox master -git rebase upstream-redox/master # replays RBOS commits on new upstream +git rebase upstream-redox/master # replays Red Bear OS commits on new upstream # Nuclear option (if rebase fails badly): git rebase --abort diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4ff49449..d6cb1d7b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,7 +27,7 @@ When making a contribution you agree to the following terms: ## AI Policy -Red Bear OS does not accept contributions generated by LLMs ([Large Language Models](https://en.wikipedia.org/wiki/Large_language_model)), sometimes also referred to as "AI". This policy is not open to discussion, any content submitted that is clearly labelled as LLM-generated (including issues, merge requests, and merge request descriptions) will be immediately closed, and any attempt to bypass this policy will result in a ban from the project. +We welcome contributions made with the assistance of LLMs and AI tools. We care about the quality of the result, not how it was produced. ## Chat diff --git a/Cargo.toml b/Cargo.toml index 4d6e8e25..bf4634ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "rbos_cookbook" +name = "redbear_cookbook" version = "0.1.0" authors = ["Jeremy Soller "] edition = "2024" @@ -8,7 +8,7 @@ default-run = "repo" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [[bin]] -name = "cookbook_rbos_redoxer" +name = "cookbook_redbear_redoxer" path = "src/bin/cookbook_redoxer.rs" [[bin]] diff --git a/HARDWARE.md b/HARDWARE.md index 762636e6..853db42c 100644 --- a/HARDWARE.md +++ b/HARDWARE.md @@ -81,7 +81,7 @@ Each "Vendor" has its own alphabetical order in "Model", independent from models ## Recommended -| **Vendor** | **Model** | **RBOS Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | +| **Vendor** | **Model** | **Red Bear OS Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | |------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------| | Lenovo | IdeaPad Y510P | 0.8.0 | 2022-11-11 | desktop | x86-64 | BIOS, UEFI | Boots to Orbital | | System76 | Galago Pro (galp5) | 0.8.0 | 2022-11-11 | desktop | x86-64 | UEFI | Boots to Orbital | @@ -89,7 +89,7 @@ Each "Vendor" has its own alphabetical order in "Model", independent from models ## Booting -| **Vendor** | **Model** | **RBOS Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | +| **Vendor** | **Model** | **Red Bear OS Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | |------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------| | ASUS | Eee PC 900 | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Boots to Orbital, No ethernet driver, Correct video mode not offered (firmware issue) | | ASUS | PRIME B350M-E (custom) | 0.9.0 | 2024-09-20 | desktop | x86-64 | UEFI | Partial support for the PS/2 keyboard, PS/2 mouse is broken | @@ -110,7 +110,7 @@ Each "Vendor" has its own alphabetical order in "Model", independent from models ## Broken -| **Vendor** | **Model** | **RBOS Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | +| **Vendor** | **Model** | **Red Bear OS Version** | **Image Date** | **Variant** | **CPU Architecture** | **Motherboard Firmware** | **Report** | |------------|-----------|-------------------|----------------|-------------|----------------------|--------------------------|------------| | ASUS | PN41 | 0.8.0 | 2024-05-30 | server | x86-64 | Unknown | Aborts after panic in xhcid | | BEELINK | U59 | 0.8.0 | 2024-05-30 | server | x86-64 | Unknown | Aborts after panic in xhcid | @@ -123,4 +123,3 @@ Each "Vendor" has its own alphabetical order in "Model", independent from models | Panasonic | Toughbook CF-18 | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Hangs after PIT initialization | | Toshiba | Satellite L500 | 0.8.0 | 2022-11-11 | desktop | i686 | BIOS | Correct video mode not offered (firmware issue), Panics on `phys_to_virt overflow`, probably having invalid mappings for 32-bit | | XMG (Schenker) | Apex 17 (M21) | 0.9.0 | 2024-09-30 | demo, server | x86-64 | UEFI | After selecting resolution, (release) repeats `...::interrupt::irq::ERROR -- Local apic internal error: ESR=0x40` a few times before it freezes; (daily) really slowly prints statements from `...::rmm::INFO` before it abruptly aborts | - diff --git a/Makefile b/Makefile index ddfeb948..af617ff6 100644 --- a/Makefile +++ b/Makefile @@ -9,23 +9,23 @@ all: $(BUILD)/harddrive.img live: -$(FUMOUNT) $(BUILD)/filesystem/ || true - -$(FUMOUNT) /tmp/rbos_installer/ || true - rm -f $(BUILD)/rbos-live.iso - $(MAKE) $(BUILD)/rbos-live.iso + -$(FUMOUNT) /tmp/redbear_installer/ || true + rm -f $(BUILD)/redbear-live.iso + $(MAKE) $(BUILD)/redbear-live.iso -popsicle: $(BUILD)/rbos-live.iso - popsicle-gtk $(BUILD)/rbos-live.iso +popsicle: $(BUILD)/redbear-live.iso + popsicle-gtk $(BUILD)/redbear-live.iso image: -$(FUMOUNT) $(BUILD)/filesystem/ || true - -$(FUMOUNT) /tmp/rbos_installer/ || true - rm -f $(BUILD)/harddrive.img $(BUILD)/rbos-live.iso + -$(FUMOUNT) /tmp/redbear_installer/ || true + rm -f $(BUILD)/harddrive.img $(BUILD)/redbear-live.iso $(MAKE) all rebuild: -$(FUMOUNT) $(BUILD)/filesystem/ || true - -$(FUMOUNT) /tmp/rbos_installer/ || true - rm -rf $(BUILD)/repo.tag $(BUILD)/harddrive.img $(BUILD)/rbos-live.iso + -$(FUMOUNT) /tmp/redbear_installer/ || true + rm -rf $(BUILD)/repo.tag $(BUILD)/harddrive.img $(BUILD)/redbear-live.iso $(MAKE) all # To tell that it's not safe @@ -44,7 +44,7 @@ else ifneq ($(NOT_ON_PODMAN),1) $(MAKE) repo_clean -$(FUMOUNT) $(BUILD)/filesystem/ || true - -$(FUMOUNT) /tmp/rbos_installer/ || true + -$(FUMOUNT) /tmp/redbear_installer/ || true endif # NOT_ON_PODMAN rm -rf repo rm -rf $(BUILD) $(PREFIX) @@ -98,6 +98,13 @@ include mk/virtualbox.mk # CI include mk/ci.mk +include mk/redbear.mk + +# Ensure Red Bear OS integration runs before repo cook and disk image creation +$(BUILD)/harddrive.img: $(REDBEAR_TAG) +$(BUILD)/redbear-live.iso: $(REDBEAR_TAG) +$(REPO_TAG): $(REDBEAR_TAG) + env: prefix FORCE $(CONTAINER_TAG) ifeq ($(PODMAN_BUILD),1) $(PODMAN_RUN) make $@ diff --git a/README.md b/README.md index 4389efc3..8e4f2c88 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

-Red Bear OS +Red Bear OS

Red Bear OS

@@ -53,7 +53,7 @@ Requires a Linux x86_64 host with Rust nightly, QEMU, and standard build tools. ```bash make all CONFIG_NAME=redbear-full # Full desktop + custom drivers make all CONFIG_NAME=redbear-minimal # Minimal server -make live CONFIG_NAME=redbear-full # Live ISO (rbos-live.iso) +make live CONFIG_NAME=redbear-full # Live ISO (redbear-live.iso) make qemu # Boot in QEMU ``` @@ -73,6 +73,10 @@ The `local/` directory is never touched by upstream updates. Recipe patches for - [Hardware Support](https://doc.redox-os.org/book/hardware-support.html) - [Contributing](CONTRIBUTING.md) +## AI Policy + +We welcome contributions made with the assistance of LLMs and AI tools. If you use AI to help write code, documentation, or patches, that's great — we care about the quality of the result, not how it was produced. + ## License [MIT](./LICENSE) — same as upstream Redox OS. diff --git a/assets/rbos-icon.png b/assets/redbear-icon.png similarity index 100% rename from assets/rbos-icon.png rename to assets/redbear-icon.png diff --git a/build.sh b/build.sh index 7bd2e4ac..55926d05 100755 --- a/build.sh +++ b/build.sh @@ -36,7 +36,7 @@ usage() echo " config/ARCH/CONFIG.toml" echo " If you specify both CONFIG and FILESYSTEM_CONFIG, it is not" echo " necessary that they match, but it is recommended." - echo " Examples: ./build.sh -c demo live - make build/x86_64/demo/rbos-live.iso" + echo " Examples: ./build.sh -c demo live - make build/x86_64/demo/redbear-live.iso" echo " ./build.sh -6 qemu - make build/i686/desktop/harddrive.img and" echo " and run it in qemu" echo " NOTE: If you do not change ARCH or CONFIG very often, edit mk/config.mk" diff --git a/local/AGENTS.md b/local/AGENTS.md index 7e3405d0..5e8eba01 100644 --- a/local/AGENTS.md +++ b/local/AGENTS.md @@ -45,7 +45,7 @@ git rebase upstream-redox/master # If rebase fails (nuclear option): git rebase --abort git reset --hard upstream-redox/master -./local/scripts/apply-patches.sh --force # Rebuild RBOS changes from patch files +./local/scripts/apply-patches.sh --force # Rebuild Red Bear OS changes from patch files # After sync: cargo build --release # Rebuild cookbook diff --git a/local/recipes/branding/redbear-release/recipe.toml b/local/recipes/branding/redbear-release/recipe.toml index 57d1f16f..1c0f63b7 100644 --- a/local/recipes/branding/redbear-release/recipe.toml +++ b/local/recipes/branding/redbear-release/recipe.toml @@ -7,11 +7,23 @@ script = """ mkdir -p "${COOKBOOK_STAGE}/usr/lib" mkdir -p "${COOKBOOK_STAGE}/etc" mkdir -p "${COOKBOOK_STAGE}/usr/share/redbear" +mkdir -p "${COOKBOOK_STAGE}/usr/share/icons/hicolor/128x128/apps" +mkdir -p "${COOKBOOK_STAGE}/usr/share/redbear/images" +# Core branding cp "${COOKBOOK_SOURCE}/os-release" "${COOKBOOK_STAGE}/usr/lib/os-release" cp "${COOKBOOK_SOURCE}/hostname" "${COOKBOOK_STAGE}/etc/hostname" cp "${COOKBOOK_SOURCE}/motd" "${COOKBOOK_STAGE}/etc/motd" cp "${COOKBOOK_SOURCE}/banner" "${COOKBOOK_STAGE}/usr/share/redbear/banner" ln -sf ../usr/lib/os-release "${COOKBOOK_STAGE}/etc/os-release" + +# Branding images (staged by integrate-redbear.sh from local/Assets/images/) +if [ -f "${COOKBOOK_SOURCE}/images/icon.png" ]; then + cp "${COOKBOOK_SOURCE}/images/icon.png" "${COOKBOOK_STAGE}/usr/share/icons/hicolor/128x128/apps/redbear-os.png" + cp "${COOKBOOK_SOURCE}/images/icon.png" "${COOKBOOK_STAGE}/usr/share/redbear/images/icon.png" +fi +if [ -f "${COOKBOOK_SOURCE}/images/loading-background.png" ]; then + cp "${COOKBOOK_SOURCE}/images/loading-background.png" "${COOKBOOK_STAGE}/usr/share/redbear/images/loading-background.png" +fi """ diff --git a/local/recipes/system/firmware-loader/recipe.toml b/local/recipes/system/firmware-loader/recipe.toml index eb93ec79..90242b90 100644 --- a/local/recipes/system/firmware-loader/recipe.toml +++ b/local/recipes/system/firmware-loader/recipe.toml @@ -4,7 +4,21 @@ path = "source" [build] -template = "cargo" +template = "custom" +script = """ +# Build the firmware-loader daemon +COOKBOOK_CARGO_PATH=. cookbook_cargo + +# Stage firmware blobs (copied by integrate-redbear.sh from local/firmware/amdgpu/) +if [ -d "${COOKBOOK_SOURCE}/firmware/amdgpu" ]; then + AMD_FW_COUNT=$(ls "${COOKBOOK_SOURCE}/firmware/amdgpu/"*.bin 2>/dev/null | wc -l) + if [ "${AMD_FW_COUNT}" -gt 0 ]; then + mkdir -p "${COOKBOOK_STAGE}/usr/lib/firmware/amdgpu" + cp "${COOKBOOK_SOURCE}/firmware/amdgpu/"*.bin "${COOKBOOK_STAGE}/usr/lib/firmware/amdgpu/" + echo "Staged ${AMD_FW_COUNT} AMD firmware blobs" + fi +fi +""" [package.files] "/usr/lib/drivers/firmware-loader" = "firmware-loader" diff --git a/local/recipes/system/redbear-info/recipe.toml b/local/recipes/system/redbear-info/recipe.toml new file mode 100644 index 00000000..6aa97e26 --- /dev/null +++ b/local/recipes/system/redbear-info/recipe.toml @@ -0,0 +1,8 @@ +[source] +path = "source" + +[build] +template = "cargo" + +[package.files] +"/usr/bin/redbear-info" = "redbear-info" diff --git a/local/recipes/system/redbear-info/source/Cargo.toml b/local/recipes/system/redbear-info/source/Cargo.toml new file mode 100644 index 00000000..43bdd58d --- /dev/null +++ b/local/recipes/system/redbear-info/source/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "redbear-info" +version = "0.1.0" +edition = "2024" + +[[bin]] +name = "redbear-info" +path = "src/main.rs" diff --git a/local/recipes/system/redbear-info/source/src/main.rs b/local/recipes/system/redbear-info/source/src/main.rs new file mode 100644 index 00000000..76596744 --- /dev/null +++ b/local/recipes/system/redbear-info/source/src/main.rs @@ -0,0 +1,535 @@ +use std::env; +use std::fs; +use std::path::Path; +use std::process; + +const RESET: &str = "\x1b[0m"; +const GREEN: &str = "\x1b[32m"; +const YELLOW: &str = "\x1b[33m"; +const RED: &str = "\x1b[31m"; +const DIVIDER: &str = "═══════════════════════════════════════════════════════════════════"; +const REDBEAR_META_README: &str = "/usr/share/doc/redbear-meta/README"; + +struct Component { + name: &'static str, + description: &'static str, + category: &'static str, + scheme_path: &'static str, + binary_path: &'static str, + test_hint: &'static str, + dependencies: &'static [&'static str], +} + +#[derive(Clone, Copy, PartialEq, Eq)] +enum OutputMode { + Table, + Json, + Test, + Help, +} + +struct Options { + mode: OutputMode, + verbose: bool, +} + +#[derive(Clone, Copy, PartialEq, Eq)] +enum AvailabilityState { + Available, + Unavailable, + BuiltIn, +} + +struct ComponentStatus<'a> { + component: &'a Component, + state: AvailabilityState, + available: bool, + status_text: &'static str, + scheme_exists: Option, + binary_exists: Option, +} + +const COMPONENTS: &[Component] = &[ + Component { + name: "redbear-release", + description: "OS identity (hostname, os-release, motd, banner)", + category: "Branding", + scheme_path: "", + binary_path: "", + test_hint: "cat /usr/lib/os-release", + dependencies: &[], + }, + Component { + name: "ext4d", + description: "ext4 scheme daemon", + category: "Filesystem", + scheme_path: "/scheme/ext4d", + binary_path: "/usr/bin/ext4d", + test_hint: "ls /scheme/ext4d/", + dependencies: &[], + }, + Component { + name: "redox-driver-sys", + description: "Safe Rust wrappers for scheme:memory, scheme:irq, scheme:pci", + category: "Driver", + scheme_path: "", + binary_path: "", + test_hint: "pkg list | grep redox-driver-sys", + dependencies: &[], + }, + Component { + name: "linux-kpi", + description: + "Linux Kernel Programming Interface compatibility layer (C headers + Rust impl)", + category: "Driver", + scheme_path: "", + binary_path: "", + test_hint: "pkg list | grep linux-kpi", + dependencies: &["redox-driver-sys"], + }, + Component { + name: "firmware-loader", + description: "Loads GPU firmware blobs via scheme:firmware", + category: "System", + scheme_path: "/scheme/firmware", + binary_path: "/usr/lib/drivers/firmware-loader", + test_hint: "ls /scheme/firmware/amdgpu/", + dependencies: &[], + }, + Component { + name: "redox-drm", + description: "DRM display driver for AMD and Intel GPUs", + category: "GPU", + scheme_path: "/scheme/drm", + binary_path: "/usr/bin/redox-drm", + test_hint: "ls /scheme/drm/card0/", + dependencies: &["redox-driver-sys", "linux-kpi"], + }, + Component { + name: "amdgpu", + description: "AMD GPU driver (Display Core modesetting) via LinuxKPI", + category: "GPU", + scheme_path: "", + binary_path: "/usr/lib/redox/drivers/libamdgpu_dc_redox.so", + test_hint: "ls -la /usr/lib/redox/drivers/libamdgpu_dc_redox.so", + dependencies: &["redox-driver-sys", "linux-kpi", "firmware-loader"], + }, + Component { + name: "evdevd", + description: "Translates Redox input events to evdev protocol", + category: "Input", + scheme_path: "/scheme/evdev", + binary_path: "/usr/lib/drivers/evdevd", + test_hint: "ls /scheme/evdev/", + dependencies: &[], + }, + Component { + name: "udev-shim", + description: "udev-compatible device enumeration shim (PCI scanning)", + category: "System", + scheme_path: "/scheme/udev", + binary_path: "/usr/lib/drivers/udev-shim", + test_hint: "ls /scheme/udev/", + dependencies: &[], + }, + Component { + name: "redbear-meta", + description: "Umbrella meta-package depending on all Red Bear OS components", + category: "System", + scheme_path: "", + binary_path: "", + test_hint: "cat /usr/share/doc/redbear-meta/README", + dependencies: &["redbear-release", "firmware-loader", "evdevd", "udev-shim"], + }, +]; + +fn main() { + if let Err(err) = run() { + eprintln!("redbear-info: {err}"); + process::exit(1); + } +} + +fn run() -> Result<(), String> { + let options = parse_args(env::args())?; + + if options.mode == OutputMode::Help { + print_help(); + return Ok(()); + } + + let branding_available = has_red_bear_branding(); + let statuses = collect_statuses(branding_available); + + match options.mode { + OutputMode::Table => print_table(&statuses, options.verbose), + OutputMode::Json => print_json(&statuses), + OutputMode::Test => print_tests(&statuses, options.verbose), + OutputMode::Help => {} + } + + Ok(()) +} + +fn parse_args(args: I) -> Result +where + I: IntoIterator, +{ + let mut mode = OutputMode::Table; + let mut verbose = false; + + for arg in args.into_iter().skip(1) { + match arg.as_str() { + "-v" | "--verbose" => verbose = true, + "--json" => { + if mode == OutputMode::Test { + return Err("cannot combine --json with --test".to_string()); + } + mode = OutputMode::Json; + } + "--test" => { + if mode == OutputMode::Json { + return Err("cannot combine --test with --json".to_string()); + } + mode = OutputMode::Test; + } + "-h" | "--help" => mode = OutputMode::Help, + _ => return Err(format!("unknown argument: {arg}")), + } + } + + Ok(Options { mode, verbose }) +} + +fn has_red_bear_branding() -> bool { + match fs::read_to_string("/usr/lib/os-release") { + Ok(contents) => contents.contains("Red Bear OS"), + Err(_) => false, + } +} + +fn collect_statuses(branding_available: bool) -> Vec> { + COMPONENTS + .iter() + .map(|component| inspect_component(component, branding_available)) + .collect() +} + +fn inspect_component( + component: &'static Component, + branding_available: bool, +) -> ComponentStatus<'static> { + let scheme_exists = if component.scheme_path.is_empty() { + None + } else { + Some(Path::new(component.scheme_path).exists()) + }; + + let binary_exists = if component.binary_path.is_empty() { + None + } else { + Some(Path::new(component.binary_path).exists()) + }; + + let (state, available, status_text) = if component.name == "redbear-release" { + if branding_available { + (AvailabilityState::Available, true, "available") + } else { + (AvailabilityState::Unavailable, false, "not configured") + } + } else if component.name == "redbear-meta" { + if Path::new(REDBEAR_META_README).exists() { + (AvailabilityState::Available, true, "available") + } else { + (AvailabilityState::Unavailable, false, "missing") + } + } else if let Some(exists) = scheme_exists { + if exists { + (AvailabilityState::Available, true, "available") + } else { + (AvailabilityState::Unavailable, false, "not running") + } + } else if let Some(exists) = binary_exists { + if exists { + (AvailabilityState::Available, true, "available") + } else { + (AvailabilityState::Unavailable, false, "missing") + } + } else { + (AvailabilityState::BuiltIn, true, "built-in") + }; + + ComponentStatus { + component, + state, + available, + status_text, + scheme_exists, + binary_exists, + } +} + +fn print_table(statuses: &[ComponentStatus<'_>], verbose: bool) { + let name_width = statuses + .iter() + .map(|status| status.component.name.len()) + .max() + .unwrap_or(0); + let category_width = statuses + .iter() + .map(|status| status.component.category.len()) + .max() + .unwrap_or(0); + + println!("Red Bear OS Component Status"); + println!("{DIVIDER}"); + println!(); + + for status in statuses { + println!( + " {} {:name_width$} [{:category_width$}] {}", + colorize(marker_for(status), marker_color(status)), + status.component.name, + status.component.category, + colorize(status.status_text, status_color(status)), + name_width = name_width, + category_width = category_width, + ); + println!(" {}", status.component.description); + println!(" Test: {}", status.component.test_hint); + + if verbose { + println!( + " Dependencies: {}", + format_dependencies(status.component.dependencies) + ); + } + + println!(); + } + + println!("{DIVIDER}"); + println!( + "{}/{} components available", + available_count(statuses), + statuses.len() + ); +} + +fn print_tests(statuses: &[ComponentStatus<'_>], verbose: bool) { + println!("Red Bear OS Runtime Test Hints"); + println!("{DIVIDER}"); + println!(); + + let mut printed = 0usize; + + for status in statuses.iter().filter(|status| status.available) { + println!( + " {} {:<16} {}", + colorize("●", GREEN), + status.component.name, + status.component.test_hint, + ); + + if verbose { + println!( + " Dependencies: {}", + format_dependencies(status.component.dependencies) + ); + } + + printed += 1; + } + + if printed == 0 { + println!(" No available Red Bear OS components detected."); + } + + println!(); + println!("{DIVIDER}"); + println!("{} test command(s) ready", printed); +} + +fn print_json(statuses: &[ComponentStatus<'_>]) { + let mut output = String::new(); + + output.push_str("{\n"); + output.push_str(" \"summary\": {\n"); + output.push_str(&format!( + " \"available\": {},\n \"total\": {}\n", + available_count(statuses), + statuses.len() + )); + output.push_str(" },\n"); + output.push_str(" \"components\": [\n"); + + for (index, status) in statuses.iter().enumerate() { + output.push_str(" {\n"); + push_json_field(&mut output, "name", status.component.name, true); + push_json_field( + &mut output, + "description", + status.component.description, + true, + ); + push_json_field(&mut output, "category", status.component.category, true); + push_json_field( + &mut output, + "scheme_path", + status.component.scheme_path, + true, + ); + push_json_field( + &mut output, + "binary_path", + status.component.binary_path, + true, + ); + push_json_field(&mut output, "test_hint", status.component.test_hint, true); + output.push_str(" \"dependencies\": "); + push_json_array(&mut output, status.component.dependencies); + output.push_str(",\n"); + output.push_str(&format!( + " \"available\": {},\n", + bool_to_json(status.available) + )); + push_json_field(&mut output, "status", status.status_text, true); + push_json_optional_bool(&mut output, "scheme_exists", status.scheme_exists, true); + push_json_optional_bool(&mut output, "binary_exists", status.binary_exists, false); + output.push_str("\n }"); + + if index + 1 != statuses.len() { + output.push(','); + } + + output.push('\n'); + } + + output.push_str(" ]\n"); + output.push('}'); + println!("{output}"); +} + +fn print_help() { + println!("Usage: redbear-info [--verbose|-v] [--json|--test]"); + println!(); + println!("Enumerate Red Bear OS custom components and report runtime availability."); + println!(); + println!("Options:"); + println!(" -v, --verbose Show component dependencies"); + println!(" --json Print machine-readable JSON"); + println!(" --test Print runtime test commands for available components"); + println!(" -h, --help Show this help message"); +} + +fn available_count(statuses: &[ComponentStatus<'_>]) -> usize { + statuses.iter().filter(|status| status.available).count() +} + +fn format_dependencies(dependencies: &[&str]) -> String { + if dependencies.is_empty() { + "none".to_string() + } else { + dependencies.join(", ") + } +} + +fn marker_for(status: &ComponentStatus<'_>) -> &'static str { + if status.available { + "●" + } else { + "○" + } +} + +fn marker_color(status: &ComponentStatus<'_>) -> &'static str { + match status.state { + AvailabilityState::Available | AvailabilityState::BuiltIn => GREEN, + AvailabilityState::Unavailable => status_color(status), + } +} + +fn status_color(status: &ComponentStatus<'_>) -> &'static str { + match status.state { + AvailabilityState::Available | AvailabilityState::BuiltIn => GREEN, + AvailabilityState::Unavailable if status.status_text == "not running" => YELLOW, + AvailabilityState::Unavailable => RED, + } +} + +fn colorize(text: &str, color: &str) -> String { + format!("{color}{text}{RESET}") +} + +fn bool_to_json(value: bool) -> &'static str { + if value { + "true" + } else { + "false" + } +} + +fn push_json_field(output: &mut String, key: &str, value: &str, trailing_comma: bool) { + output.push_str(" "); + push_json_string(output, key); + output.push_str(": "); + push_json_string(output, value); + + if trailing_comma { + output.push(','); + } + + output.push('\n'); +} + +fn push_json_array(output: &mut String, values: &[&str]) { + output.push('['); + + for (index, value) in values.iter().enumerate() { + if index > 0 { + output.push_str(", "); + } + push_json_string(output, value); + } + + output.push(']'); +} + +fn push_json_optional_bool( + output: &mut String, + key: &str, + value: Option, + trailing_comma: bool, +) { + output.push_str(" "); + push_json_string(output, key); + output.push_str(": "); + + match value { + Some(flag) => output.push_str(bool_to_json(flag)), + None => output.push_str("null"), + } + + if trailing_comma { + output.push(','); + } + + output.push('\n'); +} + +fn push_json_string(output: &mut String, value: &str) { + output.push('"'); + + for ch in value.chars() { + match ch { + '"' => output.push_str("\\\""), + '\\' => output.push_str("\\\\"), + '\n' => output.push_str("\\n"), + '\r' => output.push_str("\\r"), + '\t' => output.push_str("\\t"), + _ => output.push(ch), + } + } + + output.push('"'); +} diff --git a/local/recipes/system/redbear-meta/recipe.toml b/local/recipes/system/redbear-meta/recipe.toml index bcffc911..443a9f7f 100644 --- a/local/recipes/system/redbear-meta/recipe.toml +++ b/local/recipes/system/redbear-meta/recipe.toml @@ -43,10 +43,7 @@ README # will ensure all of these are built and staged before this package dependencies = [ "redbear-release", - "redox-driver-sys", - "linux-kpi", "firmware-loader", - "redox-drm", "evdevd", "udev-shim", ] diff --git a/local/scripts/apply-patches.sh b/local/scripts/apply-patches.sh index 617a2566..2e9e7336 100755 --- a/local/scripts/apply-patches.sh +++ b/local/scripts/apply-patches.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# apply-patches.sh — Apply all RBOS patches on top of upstream Redox build system. +# apply-patches.sh — Apply all Red Bear OS patches on top of upstream Redox build system. # # Usage: ./local/scripts/apply-patches.sh [--force] # @@ -95,25 +95,25 @@ mkdir -p recipes/core symlink "../../local/recipes/core/ext4d" "recipes/core/ext4d" # ── 4. New files not in upstream ──────────────────────────────────── -echo "==> Ensuring RBOS-specific files exist..." +echo "==> Ensuring Red Bear OS-specific files exist..." -# rbos.ipxe (network boot) -if [ ! -f rbos.ipxe ] && [ ! -L rbos.ipxe ]; then - cat > rbos.ipxe <<'IPXE' +# redbear.ipxe (network boot) +if [ ! -f redbear.ipxe ] && [ ! -L redbear.ipxe ]; then + cat > redbear.ipxe <<'IPXE' #!ipxe kernel bootloader-live.efi -initrd http://${next-server}:8080/rbos-live.iso +initrd http://${next-server}:8080/redbear-live.iso boot IPXE - echo " created rbos.ipxe" + echo " created redbear.ipxe" fi # redbear-full config (not in upstream) if [ ! -f config/redbear-full.toml ] && [ ! -L config/redbear-full.toml ]; then cat > config/redbear-full.toml <<'TOML' # Red Bear OS Full Configuration -# Complete desktop + all RBOS custom drivers and tools +# Complete desktop + all Red Bear OS custom drivers and tools # # Build: make all CONFIG_NAME=redbear-full # Live: make live CONFIG_NAME=redbear-full @@ -132,7 +132,7 @@ redbear-release = {} # ext4 filesystem support (our custom port) ext4d = {} -# RBOS driver infrastructure +# Red Bear OS driver infrastructure redox-driver-sys = {} linux-kpi = {} firmware-loader = {} @@ -145,12 +145,12 @@ udev-shim = {} redox-drm = {} amdgpu = {} -# RBOS meta-package (dependencies, default config) +# Red Bear OS meta-package (dependencies, default config) redbear-meta = {} TOML echo " created config/redbear-full.toml" fi echo "" -echo "==> All RBOS patches applied. Ready to build." +echo "==> All Red Bear OS patches applied. Ready to build." echo " make all CONFIG_NAME=redbear-full" diff --git a/local/scripts/build-amd.sh b/local/scripts/build-amd.sh index f1a4e775..ba25bb27 100755 --- a/local/scripts/build-amd.sh +++ b/local/scripts/build-amd.sh @@ -71,7 +71,7 @@ else fi # Step 3: Build -echo ">>> Building RBOS with config: $CONFIG" +echo ">>> Building Red Bear OS with config: $CONFIG" echo ">>> This may take 30-60 minutes on first build..." CI=1 make all "CONFIG_NAME=$CONFIG" "JOBS=$JOBS" diff --git a/local/scripts/sync-upstream.sh b/local/scripts/sync-upstream.sh index d856a6cb..5ce88a29 100755 --- a/local/scripts/sync-upstream.sh +++ b/local/scripts/sync-upstream.sh @@ -1,12 +1,12 @@ #!/usr/bin/env bash -# sync-upstream.sh — Update from upstream Redox and reapply RBOS patches. +# sync-upstream.sh — Update from upstream Redox and reapply Red Bear OS patches. # # Usage: # ./local/scripts/sync-upstream.sh # Rebase onto upstream master # ./local/scripts/sync-upstream.sh --dry-run # Preview what would change # ./local/scripts/sync-upstream.sh --no-merge # Only fetch + check for conflicts # -# Strategy: git rebase (preserves RBOS commits, replays on new upstream). +# Strategy: git rebase (preserves Red Bear OS commits, replays on new upstream). # Fallback: if rebase fails, patches in local/patches/build-system/ can be # applied from scratch via: ./local/scripts/apply-patches.sh --force @@ -87,7 +87,7 @@ echo "" echo "=== Sync Summary ===" echo "Upstream: $UPSTREAM_REF" echo "Local: HEAD ($(git rev-parse --short HEAD))" -echo "Ahead: $AHEAD RBOS commits" +echo "Ahead: $AHEAD Red Bear OS commits" echo "Behind: $BEHIND upstream commits" if [ "$NO_MERGE" = 1 ]; then @@ -107,7 +107,7 @@ fi STASHED=0 if ! git diff --quiet 2>/dev/null || ! git diff --cached --quiet 2>/dev/null; then echo "==> Stashing uncommitted changes..." - git stash push -m "rbos-sync-$(date +%Y%m%d-%H%M%S)" + git stash push -m "redbear-sync-$(date +%Y%m%d-%H%M%S)" STASHED=1 fi @@ -115,7 +115,7 @@ PREV_HEAD=$(git rev-parse HEAD) # ── 5. Rebase ─────────────────────────────────────────────────────── echo "" -echo "==> Rebasing RBOS commits onto $UPSTREAM_REF..." +echo "==> Rebasing Red Bear OS commits onto $UPSTREAM_REF..." echo " (this replays our $AHEAD commits on top of updated upstream)" if git rebase "$UPSTREAM_REF"; then diff --git a/local/scripts/test-amd-gpu.sh b/local/scripts/test-amd-gpu.sh index 7e7591a8..ba709142 100755 --- a/local/scripts/test-amd-gpu.sh +++ b/local/scripts/test-amd-gpu.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Test AMD GPU driver on Red Bear OS -# Run this inside RBOS (or via QEMU serial console) +# Run this inside Red Bear OS (or via QEMU serial console) set -euo pipefail echo "=== AMD GPU Driver Test ===" diff --git a/local/scripts/test-baremetal.sh b/local/scripts/test-baremetal.sh index 214a9de9..a17ef70d 100755 --- a/local/scripts/test-baremetal.sh +++ b/local/scripts/test-baremetal.sh @@ -186,7 +186,7 @@ refuse_unsafe_device "$DEVICE" warn_if_system_disk "$DEVICE" if [ "$SKIP_BUILD" -eq 0 ]; then - echo "=== Building RBOS image ===" + echo "=== Building Red Bear OS image ===" run_cmd make -C "$REDOX_ROOT" all CONFIG_NAME="$CONFIG" else echo "=== Skipping build step ===" @@ -194,7 +194,7 @@ fi echo "=== Checking image ===" if [ ! -f "$IMAGE_PATH" ]; then - echo "ERROR: RBOS image not found: $IMAGE_PATH" + echo "ERROR: Red Bear OS image not found: $IMAGE_PATH" exit 1 fi diff --git a/mk/ci.mk b/mk/ci.mk index ab467e37..d2f578e0 100644 --- a/mk/ci.mk +++ b/mk/ci.mk @@ -17,12 +17,12 @@ ci-img: FORCE # The name of the target must match the name of the filesystem config file server desktop demo: FORCE - rm -f "build/$(ARCH)/$@/harddrive.img" "build/$(ARCH)/$@/rbos-live.iso" + rm -f "build/$(ARCH)/$@/harddrive.img" "build/$(ARCH)/$@/redbear-live.iso" export $(CI_COOKBOOK_CONFIG) REPO_NONSTOP=0 && \ - $(MAKE) CONFIG_NAME=$@ build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@/rbos-live.iso + $(MAKE) CONFIG_NAME=$@ build/$(ARCH)/$@/harddrive.img build/$(ARCH)/$@/redbear-live.iso mkdir -p $(IMG_DIR) - cp "build/$(ARCH)/$@/harddrive.img" "$(IMG_DIR)/rbos_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img" - cp "build/$(ARCH)/$@/rbos-live.iso" "$(IMG_DIR)/rbos_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso" + cp "build/$(ARCH)/$@/harddrive.img" "$(IMG_DIR)/redbear_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img" + cp "build/$(ARCH)/$@/redbear-live.iso" "$(IMG_DIR)/redbear_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso" ci-os-test: FORCE make CONFIG_NAME=os-test unmount diff --git a/mk/disk.mk b/mk/disk.mk index a2bc62db..41132b5a 100644 --- a/mk/disk.mk +++ b/mk/disk.mk @@ -17,7 +17,7 @@ else mv $@.partial $@ endif -$(BUILD)/rbos-live.iso: $(FSTOOLS) $(REPO_TAG) rbos.ipxe +$(BUILD)/redbear-live.iso: $(FSTOOLS) $(REPO_TAG) redbear.ipxe ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else @@ -31,7 +31,7 @@ else truncate -s "$$FILESYSTEM_SIZE"m $@.partial umask 002 && $(INSTALLER) $(INSTALLER_OPTS) -c $(FILESYSTEM_CONFIG) --write-bootloader="$(BUILD)/bootloader-live.efi" --live $@.partial mv $@.partial $@ - cp rbos.ipxe $(BUILD)/rbos.ipxe + cp redbear.ipxe $(BUILD)/redbear.ipxe endif $(BUILD)/filesystem.img: $(FSTOOLS) $(REPO_TAG) @@ -84,9 +84,9 @@ ifeq ($(FSTOOLS_IN_PODMAN),1) $(PODMAN_RUN) make $@ else @mkdir -p $(MOUNT_DIR) - $(REDOXFS) $(BUILD)/rbos-live.iso $(MOUNT_DIR) + $(REDOXFS) $(BUILD)/redbear-live.iso $(MOUNT_DIR) @sleep 2 - @echo "\033[1;36;49mrbos-live.iso mounted ($$(pgrep redoxfs))\033[0m" + @echo "\033[1;36;49mredbear-live.iso mounted ($$(pgrep redoxfs))\033[0m" endif unmount: FORCE diff --git a/mk/podman.mk b/mk/podman.mk index 03f460da..b91fc3a9 100644 --- a/mk/podman.mk +++ b/mk/podman.mk @@ -2,7 +2,7 @@ # Configuration variables for running make in Podman ## Tag the podman image $IMAGE_TAG -IMAGE_TAG?=rbos-base +IMAGE_TAG?=redbear-base ## Working Directory in Podman CONTAINER_WORKDIR?=/mnt/redox @@ -92,10 +92,10 @@ KERNEL_PATH_TARGET := $(ROOT)/$(KERNEL_PATH)/target/$(TARGET) # TODO: make this work using `make debug.kernel` and remove this kernel_debugger: @echo "Building and running gdbgui container..." - podman build -t rbos-kernel-debug - < $(ROOT)/podman/redox-gdb-containerfile - podman run --rm -p 5000:5000 -it --name rbos-gdb \ + podman build -t redbear-kernel-debug - < $(ROOT)/podman/redox-gdb-containerfile + podman run --rm -p 5000:5000 -it --name redbear-gdb \ -v "$(KERNEL_PATH_TARGET)/build/kernel.sym:/kernel.sym" \ -v "$(KERNEL_PATH_SOURCE)/src:/src" \ - rbos-kernel-debug --gdb-cmd "gdb -ex 'set confirm off' \ + redbear-kernel-debug --gdb-cmd "gdb -ex 'set confirm off' \ -ex 'add-symbol-file /kernel.sym' \ -ex 'target remote host.containers.internal:1234'" diff --git a/mk/qemu.mk b/mk/qemu.mk index 98209ce6..d8274a80 100644 --- a/mk/qemu.mk +++ b/mk/qemu.mk @@ -158,7 +158,7 @@ ifneq ($(QEMU_KERNEL),) endif ifeq ($(live),yes) - DISK=$(BUILD)/rbos-live.iso + DISK=$(BUILD)/redbear-live.iso else DISK=$(BUILD)/harddrive.img endif @@ -212,7 +212,7 @@ else EXTRANETARGS= ifeq ($(netboot),yes) - EXTRANETARGS+=,tftp=$(BUILD),bootfile=rbos.ipxe + EXTRANETARGS+=,tftp=$(BUILD),bootfile=redbear.ipxe QEMUFLAGS+=-kernel /usr/lib/ipxe/ipxe-amd64.efi endif diff --git a/native_bootstrap.sh b/native_bootstrap.sh index f0f3b25b..150df183 100755 --- a/native_bootstrap.sh +++ b/native_bootstrap.sh @@ -846,7 +846,7 @@ is_os_redox() ############################################################################### # This function takes care of installing all dependencies for building Red Bear OS on -# Redox OS itself (bootstrapping RBOS on Redox) +# Redox OS itself (bootstrapping Red Bear OS on Redox) # @params: $1 the emulator to install, "virtualbox" or "qemu" ############################################################################### redox() @@ -1068,10 +1068,10 @@ statusCheck() ########################################################################### boot() { - echo "Cloning RBOS repo..." + echo "Cloning Red Bear OS repo..." git clone https://github.com/vasilito/Red-Bear-OS-3.git --origin upstream echo "Creating .config with PODMAN_BUILD=0" - echo 'PODMAN_BUILD?=0' > rbos/.config + echo 'PODMAN_BUILD?=0' > redbear/.config echo "Cleaning up..." rm native_bootstrap.sh echo @@ -1084,7 +1084,7 @@ boot() echo 'source $HOME/.cargo/env' echo echo "Run the following commands to build Red Bear OS:" - echo "cd rbos" + echo "cd redbear" MAKE="make" if [[ "$(uname)" == "FreeBSD" ]]; then MAKE="gmake" diff --git a/podman_bootstrap.sh b/podman_bootstrap.sh index 24e391b6..050628ec 100755 --- a/podman_bootstrap.sh +++ b/podman_bootstrap.sh @@ -559,13 +559,13 @@ rustInstall() ########################################################################### boot() { - echo "Cloning RBOS repo..." + echo "Cloning Red Bear OS repo..." git clone https://github.com/vasilito/Red-Bear-OS-3.git --origin upstream echo "Creating .config with PODMAN_BUILD=1" - echo 'PODMAN_BUILD?=1' > rbos/.config + echo 'PODMAN_BUILD?=1' > redbear/.config if [[ "$(uname -m)" == "arm64" ]]; then echo "Appending .config with ARCH=aarch64" - echo 'ARCH=aarch64' >> rbos/.config + echo 'ARCH=aarch64' >> redbear/.config fi echo "Cleaning up..." rm podman_bootstrap.sh @@ -573,13 +573,13 @@ boot() echo "---------------------------------------" echo "Well it looks like you are ready to go!" echo "---------------------------------------" - echo "The file rbos/.config was created with PODMAN_BUILD=1." + echo "The file redbear/.config was created with PODMAN_BUILD=1." echo "If you need a much quicker installation, run: " - echo " echo REPO_BINARY=1 >> rbos/.config" + echo " echo REPO_BINARY=1 >> redbear/.config" echo echo "Run the following commands to build Red Bear OS using Podman:" echo - echo "cd rbos" + echo "cd redbear" MAKE="make" if [[ "$(uname)" == "FreeBSD" ]]; then MAKE="gmake" diff --git a/recipes/system/redbear-info b/recipes/system/redbear-info new file mode 120000 index 00000000..34c2cfb6 --- /dev/null +++ b/recipes/system/redbear-info @@ -0,0 +1 @@ +../../local/recipes/system/redbear-info \ No newline at end of file diff --git a/rbos.ipxe b/redbear.ipxe similarity index 100% rename from rbos.ipxe rename to redbear.ipxe diff --git a/scripts/dual-boot.sh b/scripts/dual-boot.sh index 32ffa3dd..c32f1e48 100755 --- a/scripts/dual-boot.sh +++ b/scripts/dual-boot.sh @@ -9,7 +9,7 @@ if [ -n "$1" ] then DISK="$1" else - DISK=/dev/disk/by-partlabel/RBOS_INSTALL + DISK=/dev/disk/by-partlabel/Red Bear OS_INSTALL fi if [ ! -b "${DISK}" ] @@ -37,10 +37,10 @@ fi BOOTLOADER="recipes/core/bootloader/target/${ARCH}-unknown-redox/stage/usr/lib/boot/bootloader.efi" set -x sudo mkdir -pv "${ESP}/EFI" "${ESP}/loader/entries" -sudo cp -v "${BOOTLOADER}" "${ESP}/EFI/rbos.efi" -sudo tee "${ESP}/loader/entries/rbos.conf" </dev/null; then - echo "Unmounting RBOS filesystem from $MOUNT_POINT..." + echo "Unmounting Red Bear OS filesystem from $MOUNT_POINT..." fusermount -u "$MOUNT_POINT" || fusermount3 -u "$MOUNT_POINT" echo "Successfully unmounted" else @@ -93,7 +93,7 @@ if [ "$UNMOUNT" = true ]; then fi if [ -z "$DISK_DEVICE" ]; then - DISK_DEVICE="/dev/disk/by-partlabel/RBOS_INSTALL" + DISK_DEVICE="/dev/disk/by-partlabel/Red Bear OS_INSTALL" if [ ! -b "$DISK_DEVICE" ]; then echo "Error: No device specified and default partition not found" echo "" @@ -114,6 +114,6 @@ mkdir -p "$MOUNT_POINT" echo "Mounting $DISK_DEVICE to $MOUNT_POINT..." "$REDOXFS_BIN" "$DISK_DEVICE" "$MOUNT_POINT" -echo "RBOS filesystem successfully mounted at $MOUNT_POINT" +echo "Red Bear OS filesystem successfully mounted at $MOUNT_POINT" echo "To unmount, run: $0 -u" diff --git a/scripts/network-boot.sh b/scripts/network-boot.sh index 6247719c..622c0fe9 100755 --- a/scripts/network-boot.sh +++ b/scripts/network-boot.sh @@ -9,7 +9,7 @@ set -ex trap 'kill -HUP 0' EXIT eval $(make setenv) -make "${BUILD}/rbos-live.iso" +make "${BUILD}/redbear-live.iso" echo "Allowing packet forwarding" echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward @@ -45,7 +45,7 @@ ARGS=( "--dhcp-boot=tag:!ipxe,tag:efi-aarch64,ipxe-aarch64.efi" # IPXE "--dhcp-userclass=set:ipxe,iPXE" - "--dhcp-boot=tag:ipxe,rbos.ipxe" + "--dhcp-boot=tag:ipxe,redbear.ipxe" ) sudo dnsmasq "${ARGS[@]}"& diff --git a/scripts/show-package.sh b/scripts/show-package.sh index 34454423..0be5471b 100755 --- a/scripts/show-package.sh +++ b/scripts/show-package.sh @@ -6,7 +6,7 @@ if [ -z "$*" ] then echo "Show the contents of the stage and sysroot folders in recipe(s)" echo "Usage: $0 recipe1 ..." - echo "Must be run from the RBOS build directory" + echo "Must be run from the Red Bear OS build directory" echo "e.g. $0 kernel" exit 1 fi diff --git a/scripts/ventoy.sh b/scripts/ventoy.sh index bf19405f..3156e89b 100755 --- a/scripts/ventoy.sh +++ b/scripts/ventoy.sh @@ -24,9 +24,9 @@ for ARCH in "${ARCHS[@]}" do for CONFIG_NAME in "${CONFIGS[@]}" do - IMAGE="build/${ARCH}/${CONFIG_NAME}/rbos-live.iso" + IMAGE="build/${ARCH}/${CONFIG_NAME}/redbear-live.iso" make ARCH="${ARCH}" CONFIG_NAME="${CONFIG_NAME}" "${IMAGE}" - cp -v "${IMAGE}" "${VENTOY}/rbos-${CONFIG_NAME}-${ARCH}.iso" + cp -v "${IMAGE}" "${VENTOY}/redbear-${CONFIG_NAME}-${ARCH}.iso" done done diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index b0359d51..db041984 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -425,10 +425,10 @@ pub fn build( let cookbook_sysroot = sysroot_dir.canonicalize().unwrap(); let cookbook_toolchain = toolchain_dir.canonicalize().ok(); let bash_args = if cli_verbose { "-ex" } else { "-e" }; - let local_redoxer = Path::new("target/release/cookbook_rbos_redoxer"); + let local_redoxer = Path::new("target/release/cookbook_redbear_redoxer"); let mut command = if is_redox() && !local_redoxer.is_file() { - let mut command = Command::new("cookbook_rbos_redoxer"); - command.env("COOKBOOK_REDOXER", "cookbook_rbos_redoxer"); + let mut command = Command::new("cookbook_redbear_redoxer"); + command.env("COOKBOOK_REDOXER", "cookbook_redbear_redoxer"); command } else { let cookbook_redoxer = local_redoxer diff --git a/src/cook/fetch.rs b/src/cook/fetch.rs index e63f959d..34fd1920 100644 --- a/src/cook/fetch.rs +++ b/src/cook/fetch.rs @@ -628,9 +628,9 @@ pub(crate) fn fetch_cargo( source_dir = source_dir.join(cargopath); } - let local_redoxer = Path::new("target/release/cookbook_rbos_redoxer"); + let local_redoxer = Path::new("target/release/cookbook_redbear_redoxer"); let mut command = if is_redox() && !local_redoxer.is_file() { - Command::new("cookbook_rbos_redoxer") + Command::new("cookbook_redbear_redoxer") } else { let cookbook_redoxer = local_redoxer .canonicalize()