Repository navigation
Releases: arshc0der/myOS
Release list
MyOS v1.2.0
MyOS v1.2.0 - Hardware Information, Scrollback and Command History
MyOS v1.2.0 turns the shell into a much more useful tool. The kernel can now read the boot information from GRUB, identify the CPU, list PCI devices and read the clock. The console gains a working cursor and scrollback, and the shell gains command history.
MyOS is a minimal 32-bit x86 hobby operating system written in C and assembly.
What's New
System and Hardware Information
meminfo: shows lower and upper memory, where the kernel is loaded, and the full memory map reported by GRUB, with the total usable RAM.cpuinfo: shows the CPU vendor and model name, family/model/stepping, supported features (SSE, AVX, and others), and whether MyOS is running inside a virtual machine.lspci: scans the PCI bus and lists devices such as network, storage and graphics controllers, with vendor and device IDs.sysinfo: a one-screen summary of the OS, CPU, memory, bootloader, PCI device count and virtualization.date: now reads the real date and time from the RTC clock instead of reporting that it is unavailable.
Console
- Working cursor: the blinking hardware cursor now follows the text as you type. It is hidden while you are scrolled back.
- Scrollback: the console keeps 275 lines of history. Use
PgUpandPgDnto scroll, andHomeandEndto jump to the oldest and newest output. A[ SCROLLBACK -N ]label shows while you are looking at old output, and typing returns you to the live screen. - Colors: headings, labels, the prompt and error messages are now colored.
- Better backspace: backspace now works correctly across a line that wraps onto the next row.
Shell and Keyboard
- Command history: press
UpandDownto recall previous commands. The newhistorycommand lists them (the last 16 are kept). - More keys supported: arrow keys, Page Up/Down, Home, End and Delete are now decoded, and Caps Lock works.
reboot: now restarts the computer through the keyboard controller instead of printing a not-implemented message.- Updated
help: lists every command and the navigation keys.
Build System
make isobuilds the bootable ISO andmake runbuilds it and starts QEMU. The GRUB tool is detected automatically (grub2-mkrescueorgrub-mkrescue).- The kernel version is now consistently reported as 1.2.0 by
versionandabout.
Command Reference
| Command | Description |
|---|---|
help |
List available commands |
about |
About MyOS |
version |
Show the kernel version |
sysinfo |
System summary |
meminfo |
Memory size, kernel location and memory map |
cpuinfo |
CPU vendor, model, features and virtualization |
lspci |
List PCI devices |
date |
Date and time from the RTC clock |
history |
Commands typed so far |
echo <text> |
Print text to the screen |
clear |
Clear the screen and scrollback |
reboot |
Restart the computer |
halt / shutdown |
Halt the CPU |
Keyboard Shortcuts
| Key | Action |
|---|---|
Up / Down |
Recall previous commands |
PgUp / PgDn |
Scroll the screen up or down |
Home / End |
Jump to the oldest or newest output |
Backspace |
Delete the previous character |
Known Limitations
- Memory management: the memory map is read and displayed, but there is no page allocator, heap or virtual memory manager yet.
- Line editing: the Left and Right arrow keys do not move inside the command line yet. Use Backspace to correct mistakes.
- Clock:
dateshows the RTC time, which is usually UTC (in a virtual machine it follows the host clock). There is no timezone support. - PCI names:
lspcirecognizes only common vendors and device classes. Others are shown as "Unknown vendor" or "Other device". - Scrollback size: 275 lines.
clearalso erases the scrollback. - Panic handler:
kernel_panicexists but is not yet called automatically by other kernel components. - Interrupts: the keyboard is still read by polling. Interrupt-driven input is planned.
Downloads
| File | Description |
|---|---|
myos-1.2.0.iso |
Bootable ISO image |
myos-1.2.0-source.zip |
Complete source code, with build instructions in the README |
SHA256SUMS.txt |
SHA-256 checksums to verify the downloads |
Quick Start
QEMU
qemu-system-i386 -cdrom myos-1.2.0.iso -m 128MOnce it boots, try sysinfo, meminfo, cpuinfo and lspci.
VirtualBox / VMware: create a 32-bit Other/Unknown virtual machine with at least 64 MB of RAM and no virtual hard disk, attach myos-1.2.0.iso as the optical drive, and start the virtual machine.
Real hardware: write the ISO image to a USB drive or CD and boot in BIOS / legacy mode.
Note: always take care when writing images to physical drives. Selecting the wrong device can erase existing data.
Verify Your Download
sha256sum -c SHA256SUMS.txtBuild from Source
Extract myos-1.2.0-source.zip and open a terminal in the project directory.
# Build the kernel
make clean
make
# Build the bootable ISO
make iso
# Build and run in QEMU
make runIf you prefer the manual steps:
cp kernel.elf iso/boot/kernel.elf
grub2-mkrescue -o myos.iso iso # or: grub-mkrescue -o myos.iso iso
qemu-system-i386 -cdrom myos.iso -m 128MBuild requirements: GCC with 32-bit compilation support, GNU Make, GRUB utilities, xorriso and QEMU.
Fedora:
sudo dnf install gcc glibc-devel.i686 make qemu-system-x86 grub2-tools grub2-tools-extra xorrisoDebian / Ubuntu:
sudo apt install build-essential gcc-multilib grub-pc-bin xorriso mtools qemu-system-x86Upgrading from v1.1.0
No changes to the boot process are needed. v1.2.0 adds new source files (multiboot.c, cpu.c, pci.c, rtc.c and keys.h) and updates boot.S, kernel.c, console.c, keyboard.c, shell.c, linker.ld and the Makefile. Replace your project with the v1.2.0 source archive and rebuild with make clean && make.
Full Changelog
MyOS v1.1.0 to v1.2.0 changelog
License
MyOS is released under the MIT License.
MyOS v1.1.0
MyOS v1.1.0 - Shell Improvements and Kernel Panic Handling
MyOS v1.1.0 focuses on improving the shell experience, making system information more accessible, and introducing the foundation for kernel panic handling.
MyOS is a minimal 32-bit x86 hobby operating system written in C and assembly. This update brings a redesigned welcome banner, a cleaner help screen, seven new shell commands, improved command-line editing, and a new kernel panic handler.
What's New
Improved Shell Experience
- Seven new commands:
version,meminfo,cpuinfo,date,whoami,historyandshutdown. - Redesigned help screen: commands are now displayed in a clean, titled and aligned table.
- New welcome banner: the shell greets users with an updated startup banner.
- Improved
aboutcommand: displays information about MyOS, its implementation in C and x86 assembly, and the kernel version. - Friendlier error messages: unknown commands now suggest using
helpto view available commands. - Clearer shutdown feedback: the
haltandshutdowncommands display a message informing users that they can close the emulator.
Kernel Improvements
- New kernel panic handler: introduced
kernel_panic(message)insrc/panic.c. - Panic screen: displays a
MYOS KERNEL PANICscreen along with the supplied error message. - Safe halt behavior: disables interrupts and halts the CPU when the panic handler is invoked.
The panic handler is available for use by kernel code but is not yet connected to any automatic error-handling paths.
Fixes and Refinements
- Backspace fix: corrected command-line editing so that deleting a character also cleanly removes it from the screen.
- Improved consistency: refined shell messages and command descriptions for a more consistent user experience.
Command Reference
| Command | Description |
|---|---|
| help | Display available commands |
| about | Display information about MyOS |
| version | Show the kernel version |
| clear | Clear the screen |
| echo | Print text to the screen |
| meminfo | Display memory subsystem status |
| cpuinfo | Display architecture and kernel information |
| date | Display clock status |
| whoami | Show the current environment |
| history | Display command-history status |
| halt | Halt the CPU |
| shutdown | Halt the CPU |
| reboot | Not implemented yet |
Quick Start
QEMU
qemu-system-i386 -cdrom myos-1.1.0.iso -m 128M
VirtualBox / VMware: create a 32-bit Other/Unknown virtual machine with at least 64 MB of RAM and no virtual hard disk, attach myos-1.1.0.iso as the optical drive, and start the virtual machine.
Real hardware: write the ISO image to a USB drive or CD and boot in BIOS / legacy mode.
Note: always take care when writing images to physical drives. Selecting the wrong device can erase existing data.
Verify Your Download
sha256sum -c SHA256SUMS.txt
Build from Source
Extract myos-1.1.0-source.zip and open a terminal in the project directory.
# Clean previous build artifacts make cleanBuild the kernel
make
Verify Multiboot compatibility (optional)
grub2-file --is-x86-multiboot kernel.elf && echo "Multiboot OK"
Copy the kernel into the ISO directory
cp kernel.elf iso/boot/kernel.elf
Build the bootable ISO
grub2-mkrescue -o myos.iso iso
Run MyOS in QEMU
qemu-system-i386 -cdrom myos.iso -m 128M
If your system uses grub-mkrescue instead of grub2-mkrescue, use that command to build the ISO. Likewise, use grub-file instead of grub2-file if needed.
Build requirements: GCC with 32-bit compilation support, GNU Make, GRUB utilities, xorriso and QEMU.
Fedora:
sudo dnf install gcc glibc-devel.i686 make qemu-system-x86 grub2-tools grub2-tools-extra xorriso
Debian / Ubuntu:
sudo apt install build-essential gcc-multilib grub-pc-bin xorriso mtools qemu-system-x86
Upgrading from v1.0.0
No changes to the boot process or build requirements are needed. Download the v1.1.0 source archive and follow the build instructions above. The new src/panic.c file is already included in the Makefile.
Full Changelog
MyOS v1.0.0 to v1.1.0 changelog
License
MyOS is released under the MIT License.
Thanks for checking out MyOS. More kernel functionality, memory management and shell improvements are planned for future releases.
# MyOS v1.1.0 - Shell Improvements and Kernel Panic HandlingMyOS v1.1.0 focuses on improving the shell experience, making system information more accessible, and introducing the foundation for kernel panic handling.
MyOS is a minimal 32-bit x86 hobby operating system written in C and assembly. This update brings a redesigned welcome banner, a cleaner help screen, seven new shell commands, improved command-line editing, and a new kernel panic handler.
What's New
Improved Shell Experience
- Seven new commands:
version,meminfo,cpuinfo,date,whoami,historyandshutdown. - Redesigned help screen: commands are now displayed in a clean, titled and aligned table.
- New welcome banner: the shell greets users with an updated startup banner.
- Improved
aboutcommand: displays information about MyOS, its implementation in C and x86 assembly, and the kernel version. - Friendlier error messages: unknown commands now suggest using
helpto view available commands. - Clearer shutdown feedback: the
haltandshutdowncommands display a message informing users that they can close the emulator.
Kernel Improvements
- New kernel panic handler: introduced
kernel_panic(message)insrc/panic.c. - Panic screen: displays a
MYOS KERNEL PANICscreen along with the supplied error message. - Safe halt behavior: disables interrupts and halts the CPU when the panic handler is invoked.
The panic handler is available for use by kernel code but is not yet connected to any automatic error-handling paths.
Fixes and Refinements
- Backspace fix: corrected command-line editing so that deleting a character also cleanly removes it from the screen.
- Improved consistency: refined shell messages and command descriptions for a more consistent user experience.
Command Reference
| Command | Description |
|---|---|
help |
Display available commands |
about |
Display information about MyOS |
version |
Show the kernel version |
clear |
Clear the screen |
echo <text> |
Print text to the screen |
meminfo |
Display memory subsystem status |
cpuinfo |
Display architecture and kernel information |
date |
Display clock status |
whoami |
Show the current environment |
history |
Display command-history status |
halt |
Halt the CPU |
shutdown |
Halt the CPU |
reboot |
Not implemented yet |
Known Limitations
Several of the new commands are placeholders that report planned features honestly rather than faking them:
- Memory management:
meminforeports that the heap, page allocator and virtual memory manager are not implemented. Reading the bootloader memory map is planned. - Clock support:
datehas no clock support yet and does not read a real-time clock (RTC). - Command history:
historyshows session status only. Storing and recalling previous commands is not implemented. - Reboot support:
rebootis not implemented and currently displays a message saying so. - Panic integration: the kernel panic handler exists but is not yet invoked automatically by other kernel components.
Downloads
| File | Description |
|---|---|
myos-1.1.0.iso |
Bootable ISO image |
myos-1.1.0-source.zip |
Complete source code, with build instructions in the README |
SHA256SUMS.txt |
SHA-256 checksums to verify the downloads |
Quick Start
QEMU
qemu-system-i386 -cdrom myos-1.1.0.iso -m 128MVirtualBox / VMware: create a 32-bit Other/Unknown virtual machine with at least 64 MB of RAM and no virtual hard disk, attach myos-1.1.0.iso as the optical drive, and start the virtual machine.
Real hardware: write the ISO image to a USB drive or CD and boot in BIOS / legacy mode.
Note: always take care when writing images to physical drives. Selecting the wrong device can erase existing data.
Verify Your Download
sha256sum -c SHA256SUMS.txtBuild from Source
Extract myos-1.1.0-source.zip and open a terminal in the project directory.
# Clean previous build artifacts
make clean
# Build the kernel
make
# Verify Multiboot compatibility (optional)
grub2-file --is-x86-multiboot kernel.elf && echo "Multiboot OK"
# Copy the kernel into the ISO directory
cp kernel.elf iso/b...MyOS v1.0.0
MyOS v1.0.0
The first public release of MyOS, a minimal 32-bit x86 operating system written from scratch in C and assembly. It boots through GRUB (Multiboot) and starts an interactive command-line shell.
Highlights
- Multiboot boot: loaded by GRUB, with a custom entry point and kernel stack
- VGA text console: 80x25 output with scrolling, backspace and tab support
- PS/2 keyboard driver: scancode set 1 with Shift support
- Interactive shell: line editing and the built-in commands below
Shell commands
| Command | Description |
|---|---|
| help | List available commands |
| about | Show information about MyOS |
| clear | Clear the screen |
| echo | Print text to the screen |
| halt | Halt the CPU |
Quick start
QEMU
qemu-system-i386 -cdrom myos-1.0.0.iso -m 128M
VirtualBox / VMware
- Create a new virtual machine: type Other, version Other/Unknown (32-bit).
- Allocate at least 64 MB of RAM. No hard disk is needed.
- Attach
myos-1.0.0.isoto the virtual optical drive. - Start the VM. MyOS boots straight to the shell prompt.
Real hardware: write the ISO to a USB stick or CD and boot in BIOS / legacy mode.
Verify your download
sha256sum -c SHA256SUMS.txt
Build from source
Unzip myos-1.0.0-source.zip and follow the build steps in README.md.
License
Released under the MIT License.