Files
RedBear-OS/local/patches/bootloader/P5-live-preload-cap-1gib.patch
vasilito c27a28a0c8 fix: consolidate bootloader patches
Absorb P1-P4 bootloader patches into P5 carrier. Move absorbed
patches to local/patches/bootloader/absorbed/ for reference.
2026-05-11 10:08:39 +01:00

54 lines
2.0 KiB
Diff

--- a/src/main.rs
+++ b/src/main.rs
@@ -556,9 +556,21 @@
let live_opt = if live {
let size = fs.header.size();
- print!("live: 0/{} MiB", size / MIBI as u64);
-
- let live_size = match usize::try_from(size) {
+ let max_preload: u64 = 1024 * MIBI as u64;
+ let preload_size = if size > max_preload {
+ println!(
+ "live: filesystem is {} MiB, capping preload at {} MiB",
+ size / MIBI as u64,
+ max_preload / MIBI as u64
+ );
+ max_preload
+ } else {
+ size
+ };
+
+ print!("live: 0/{} MiB", preload_size / MIBI as u64);
+
+ let live_size = match usize::try_from(preload_size) {
Ok(live_size) => live_size,
Err(_) => {
println!("\rlive: disabled (image too large for bootloader address space)");
@@ -590,14 +602,23 @@
if let Some(live) = live {
let mut i = 0;
for chunk in live.chunks_mut(MIBI) {
- print!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
+ print!("\rlive: {}/{} MiB", i / MIBI as u64, preload_size / MIBI as u64);
i += unsafe {
fs.disk
.read_at(fs.block + i / redoxfs::BLOCK_SIZE, chunk)
.expect("Failed to read live disk") as u64
};
}
- println!("\rlive: {}/{} MiB", i / MIBI as u64, size / MIBI as u64);
+ println!("\rlive: {}/{} MiB", i / MIBI as u64, preload_size / MIBI as u64);
+
+ if preload_size < size {
+ println!(
+ "live: preloaded {} MiB of {} MiB filesystem (remaining {} MiB from disk)",
+ preload_size / MIBI as u64,
+ size / MIBI as u64,
+ (size - preload_size) / MIBI as u64
+ );
+ }
println!("Switching to live disk");
unsafe {