matos/README.md
Mathieu Maret ee42ba1350 Update gcc deps
Ubuntu gcc does not include libgcc for 32bits anymore and we are using access attribut from gcc 11
2024-01-26 22:23:10 +01:00

79 lines
1.7 KiB
Markdown

# Introduction
Matos is a simple OS.
It's targetting x86 and inspirated by http://sos.enix.org/fr/PagePrincipale
![screenshot](https://git.mathux.org/mathieu/matos/raw/branch/master/screenshot_1.png)
# Dependencies
To generate iso image
* `mtools xorriso (which is libisoburn on ArchLinux)`
* gcc for 32bits (e.g. gcc-multilib for ubuntu) >= 11
* sfdisk (util-linux)
# Run it
`make run`
or
`make fd.iso && qemu-system-x86_64 -cdrom fd.iso`
you can also test it
`make test`
# Debug
gdb could be launch with debug symbols using :
`make debug`
Serial log will be saved in the `serialOut` file.
Then you can check some matos specific commands or pretty printing with
`help user-defined`
`info pretty-printer` (Should contains matos_pretty_printers)
# Change Disk partitions
You can either modify the disk.sfdisk file
or
modify the disk image with your favorit tool (e.g. gparted) and re-generate disk.sfdisk
sfdisk -d > disk.sfdisk
# Multiboot
In arch/x86/boot, you can choose the assembly used to start the C part by removing the .opt extension
* boot.asm: intel syntax with multiboot support
* boot.S: GNU As syntax with multiboot support
* boot_multiboot2.S: GNU As syntax with multiboot2 support
/!\ multiboot2 is not supported by qemu for -kernel option (https://gitlab.com/qemu-project/qemu/-/issues/389).
So you may have to use the fd.iso image and modify the grub configuration from `multiboot /boot/kernel` to `multiboot2 /boot/kernel`
# Features
* VGA Driver
* keyboard Driver
* Serial Driver
* Timer
* Virtual memory
* Allocator
* Multithread (Full preempt)
* Mutex
* ATA
* basic userspace with syscall
# TODO
* ringbuffer protected by mutex
* blocking read