This document details the environment setup, manual testing checklists, and subsystem verification steps used to ensure the reliability and correctness of MiniOS.
MiniOS runs in a bare-metal emulator. Tests should be run using the following host configurations:
CPU Architecture : x86 (i386/i686 target)
Physical Memory : 32 MiB (allocated via QEMU flag `-m 32M`)
Emulation Host : QEMU emulator (v8.0 or later recommended)
Video Output : Standard VGA Display (VGA text buffer at 0xB8000)
Input Hardware : PS/2 Keyboard and PS/2 IntelliMouse
Ensure the boot sequence runs correctly by verifying the boot sequence output:
- Clean compilation: Verify that running
make clean && makefinishes with no compiler warnings or linker errors. - Launch Time: Run
make run. The QEMU window must load the GRUB kernel and display the console shell prompt within 3 seconds. - Subsystem Logs: Ensure each initialization block prints
[ OK ]on the splash screen:[ OK ] Memory manager (256 KiB heap)[ OK ] Global Descriptor Table (GDT)[ OK ] Interrupt Descriptor Table (IDT)[ OK ] 8259 PIC (IRQs remapped to 0x20-0x2F)[ OK ] Programmable Interval Timer (100 Hz)[ OK ] PS/2 Keyboard driver (IRQ1)[ OK ] PS/2 Mouse driver with scroll wheel (IRQ12)[ OK ] In-memory filesystem (16 files x 256 B)
Test the terminal shell commands to ensure appropriate behavior:
| Command | Action | Expected Output | Status |
|---|---|---|---|
cls |
Clear Screen | The screen is wiped clean, and the cursor is placed back at (0,0). |
[ ] Pass |
wrt hello |
Echo input string | Output: hello |
[ ] Pass |
osinfo |
Show OS Metadata | Output shows Author name (Ahmed Ali) and compiler tools stack. |
[ ] Pass |
calc 10 * 5 |
Mathematical Calculator | Output: Result: 50 |
[ ] Pass |
passgen 10 |
Random Password Generator | Displays a 10-character alphanumeric string. | [ ] Pass |
flip / dice |
RNG tests | Random coin flip or dice number generated. | [ ] Pass |
uptime |
PIT Counter Check | Shows system uptime formatting as hh:mm:ss. Increases dynamically. |
[ ] Pass |
Because the filesystem operates entirely in volatile memory, testing verifies read/write logic:
- Create a directory:
mkd docs - Enter directory:
goto docs - Verify directory tree path:
wdir(should display/root/docs) - Create a new file:
new notes.txt - Print files list:
laf(should shownotes.txt (0 bytes))
- Run
write notes.txt - Enter a test string when prompted:
Hello World MiniOS! - Verify file storage sizes using
laf(should report19 bytes). - Read the file contents using
see notes.txt(must printHello World MiniOS!).
- Run
edit notes.txt - The screen should switch to the editor layout. Type some test paragraphs.
- Press
ESCto save and close the editor. - Run
see notes.txtand verify that the edited content was correctly written to memory.
Memory safety can be verified using the heap manager debugger commands:
- Check baseline heap allocation:
memo. Write down the heap used bytes value (Baseline). - Create and write to multiple dummy files (e.g., 5 files).
- Check
memostats: the used heap memory bytes should increase proportionally. - Delete all created dummy files.
- Check
memostats again: the heap used bytes must return exactly to the Baseline value, confirming thatkfree()coalesced the heap blocks correctly with zero memory leaks.