Skip to content

MyOS v1.1.0

Choose a tag to compare

@arshc0der arshc0der released this 18 Oct 04:35
· 4 commits to main since this release
5743e14

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, history and shutdown.
  • 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 about command: displays information about MyOS, its implementation in C and x86 assembly, and the kernel version.
  • Friendlier error messages: unknown commands now suggest using help to view available commands.
  • Clearer shutdown feedback: the halt and shutdown commands display a message informing users that they can close the emulator.

Kernel Improvements

  • New kernel panic handler: introduced kernel_panic(message) in src/panic.c.
  • Panic screen: displays a MYOS KERNEL PANIC screen 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 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/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 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, history and shutdown.
  • 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 about command: displays information about MyOS, its implementation in C and x86 assembly, and the kernel version.
  • Friendlier error messages: unknown commands now suggest using help to view available commands.
  • Clearer shutdown feedback: the halt and shutdown commands display a message informing users that they can close the emulator.

Kernel Improvements

  • New kernel panic handler: introduced kernel_panic(message) in src/panic.c.
  • Panic screen: displays a MYOS KERNEL PANIC screen 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: meminfo reports that the heap, page allocator and virtual memory manager are not implemented. Reading the bootloader memory map is planned.
  • Clock support: date has no clock support yet and does not read a real-time clock (RTC).
  • Command history: history shows session status only. Storing and recalling previous commands is not implemented.
  • Reboot support: reboot is 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 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 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/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](v1.0.0...v1.1.0)

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.