Mathieu Maret 6854ad489f Use gcc stack protector
Trick was to use the stack-protector-guard option otherwise gcc expect
the canary value to be stored on the Thread Local Storage of the current
thread.
That does not work the same way for us, so trying to access TLS at
%gs (the canonical place for the TLS), where gcc expect the canary to be
storeg, lead to system reboot as it is not setup.
2025-02-20 17:13:01 +01:00
2025-02-20 17:13:01 +01:00
2022-07-30 15:59:50 +02:00
2024-03-13 22:02:24 +01:00
2024-02-16 00:51:18 +01:00
2024-02-08 23:05:54 +01:00
2024-02-26 23:03:49 +01:00
2024-02-08 23:08:14 +01:00
2025-02-20 17:13:01 +01:00
2024-01-26 22:23:10 +01:00
2021-11-08 22:53:49 +01:00

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
Description
Simple OS
Readme 543 KiB
Languages
C 91.9%
Assembly 4.6%
Python 1.9%
Makefile 1.3%
GDB 0.3%