diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-02 15:34:45 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-02 15:34:45 +0200 |
| commit | c6827451bce4cd3774a9e066a4a1bf51bb83592e (patch) | |
| tree | f43105d688e78efbcd2f9241330bead61739af2f /rsdos | |
| parent | v0.5.5: crash reports go to a dedicated CRASHLOG USB stick (diff) | |
| download | rs-dos-c6827451bce4cd3774a9e066a4a1bf51bb83592e.tar.gz rs-dos-c6827451bce4cd3774a9e066a4a1bf51bb83592e.zip | |
v0.5.5: on-screen boot markers for disk/fs stage
Real hardware has no serial console, and the ahci/fat/fs boot
diagnostics were serial-only — a silent fs failure left the user with
no way to see where boot stopped. Add boot_marker lines for the AHCI
disk count, FAT volume count, and the VFS tree + fs self-test result.
Diffstat (limited to '')
| -rw-r--r-- | rsdos/src/main.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/rsdos/src/main.rs b/rsdos/src/main.rs index 4521a42..4fe89c9 100644 --- a/rsdos/src/main.rs +++ b/rsdos/src/main.rs | |||
| @@ -298,15 +298,30 @@ pub unsafe extern "efiapi" fn efi_main(image_handle: Handle, system_table: *mut | |||
| 298 | if !rsnix::ahci::init() { | 298 | if !rsnix::ahci::init() { |
| 299 | rsnix::serial_println!("ahci: no disk attached"); | 299 | rsnix::serial_println!("ahci: no disk attached"); |
| 300 | } | 300 | } |
| 301 | rsnix::gop::boot_marker(&alloc::format!( | ||
| 302 | "rsnix: ahci {} disk(s)", | ||
| 303 | rsnix::ahci::disk_count() | ||
| 304 | )); | ||
| 301 | rsnix::fat::init(); // prints one line per mounted volume | 305 | rsnix::fat::init(); // prints one line per mounted volume |
| 306 | rsnix::gop::boot_marker(&alloc::format!( | ||
| 307 | "rsnix: fat {} volume(s) mounted", | ||
| 308 | rsnix::fat::volume_count() | ||
| 309 | )); | ||
| 302 | 310 | ||
| 303 | let (dirs, files) = rsnix::fs::init(); | 311 | let (dirs, files) = rsnix::fs::init(); |
| 304 | rsnix::serial_println!("fs: vfs ready — {} dirs, {} files", dirs, files); | 312 | rsnix::serial_println!("fs: vfs ready — {} dirs, {} files", dirs, files); |
| 305 | if rsnix::fs::self_test() { | 313 | let fstest = rsnix::fs::self_test(); |
| 314 | if fstest { | ||
| 306 | rsnix::serial_println!("fs: self-test OK (create/read/write/remove)"); | 315 | rsnix::serial_println!("fs: self-test OK (create/read/write/remove)"); |
| 307 | } else { | 316 | } else { |
| 308 | rsnix::serial_println!("fs: self-test FAILED"); | 317 | rsnix::serial_println!("fs: self-test FAILED"); |
| 309 | } | 318 | } |
| 319 | rsnix::gop::boot_marker(&alloc::format!( | ||
| 320 | "rsnix: fs ok {} dirs/{} files self-test {}", | ||
| 321 | dirs, | ||
| 322 | files, | ||
| 323 | if fstest { "ok" } else { "FAILED" } | ||
| 324 | )); | ||
| 310 | 325 | ||
| 311 | rsnix::serial_println!("boot: entering shell"); | 326 | rsnix::serial_println!("boot: entering shell"); |
| 312 | rsnix::gop::boot_marker("rsnix: boot done — shell"); | 327 | rsnix::gop::boot_marker("rsnix: boot done — shell"); |
