Thank you for showing interest in SanderOSUSB! SanderOSUSB is a 32bit single tasking monolythic kernel that is supposed to run from USB or cd-rom.
For compiling you need the following programs:
- gcc
- nasm or fasm
- xorriso (grub)
sudo apt install gcc nasm xorriso
And then run the file /kernel/build.sh [ARGS] to generate kernel file
Where:
- empty : only generates a kernel.bin file
- --grub : generates a grub-iso image
- --pxe : generates a pxe image
- install qemu
sudo apt install qemu qemu-utils qemu-kvm
- go to the repo directory
- run:
qemu-system-x86_64 -cdrom ./cdrom.iso
Currently the following devices are supported:
- ❓ unknown
- ❌ not supported
- ✅ works
- 🐛 partly working
| Devicename | VirtualBox | Qemu | Bochs | Real hardware |
|---|---|---|---|---|
| IDE - ATA | ✅ | ✅ | ✅ | ❓ |
| IDE - ATAPI | ✅ | ✅ | ✅ | ✅ |
| AHCI - ATA | ✅ | ✅ | ✅ | 🐛 |
| AHCI - ATAPI | ✅ | ✅ | ✅ | ❌ |
| PS/2 keyboard | ✅ | ✅ | ✅ | ✅ |
| PS/2 mouse | ✅ | ✅ | ✅ | ✅ |
| PIC | ✅ | ✅ | ✅ | ✅ |
| PCI | ✅ | ✅ | ✅ | ✅ |
| ACPI | ✅ | ✅ | ✅ | ✅ |
| USB - HID - Keyboard | ✅ | ✅ | ✅ | ❓ |
| USB - Mass Storage Device | ✅ | ✅ | ✅ | ❌ |
| EHCI (USB2.0) - Basic support | ✅ | ✅ | ✅ | ✅ |
| XHCI (USB3.0) - Basic support | ❌ | ✅ | ❓ | 🐛 |
| RTL8169 | ✅ | ✅ | ✅ | ✅ |
| E1000 | ✅ | ❓ | ❓ | ❓ |
| Soundblaster 16 | ✅ | ✅ | ✅ | ✅ |
The following devices are on the list to get implemented:
The following filesystems are supported:
| Filesystemname | Read | Write |
|---|---|---|
| ISO 9660 | ✅ | ❌ |
| MBR | ✅ | ❌ |
| EFI-MBR | ✅ | ❌ |
| EXT2 (very basic) | ✅ | ❌ |
| FAT 12,16,32 | ✅ | ✅ |
| SFS | ✅ | ✅ |
| TFTP | ✅ | ❌ |
the following executable formats are supported:
- 32-ELF (relocation and executable type)
- raw binary at 0x2000
- BASfile (with basic.bin)
the following executable formats are on the list to get implemented:
- 32-MZPE
- 32-MZCOFF
- Marble
the following bootmethods are supported:
- GRUB2
- PXE
- qemu --kernel loader
- boot: Grub bin folder
- kernel: Kernel source code
- lib: kernel static library to which programs attach to
- programs: example programs
- build system with
./build.sh --grub - burn cdrom.iso to a cdrom
- make a usbstick with EXT as filesystem
- run
sudo grub-install --target=i386-pc --root-directory=[mountpoint_filesystem] /dev/sdb - copy grub command file
sudo cp ../boot/grub/grub.cfg [mountpoint_filesystem]/boot/grub/grub.cfg - copy kernel
sudo cp ../kernel.bin /media/sander/SOS/kernel.bin