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

1.7 KiB

Introduction

Matos is a simple OS.

It's targetting x86 and inspirated by http://sos.enix.org/fr/PagePrincipale

screenshot

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