2021-03-02 09:25:38 +01:00
|
|
|
# Introduction
|
|
|
|
|
|
|
|
Matos is a simple OS.
|
2021-03-02 09:27:03 +01:00
|
|
|
|
2021-03-02 09:25:38 +01:00
|
|
|
It's targetting x86 and inspirated by http://sos.enix.org/fr/PagePrincipale
|
|
|
|
|
2021-11-08 22:48:21 +01:00
|
|
|
![screenshot](https://git.mathux.org/mathieu/matos/raw/branch/master/screenshot_1.png)
|
2021-11-08 22:42:47 +01:00
|
|
|
|
2018-07-20 16:55:41 +02:00
|
|
|
# Dependencies
|
|
|
|
|
|
|
|
To generate iso image
|
|
|
|
|
2018-08-05 15:09:52 +02:00
|
|
|
* `mtools xorriso (which is libisoburn on ArchLinux)`
|
2024-01-26 22:23:08 +01:00
|
|
|
* gcc for 32bits (e.g. gcc-multilib for ubuntu) >= 11
|
2021-11-04 20:14:48 +01:00
|
|
|
* sfdisk (util-linux)
|
2018-08-05 15:09:52 +02:00
|
|
|
|
|
|
|
# Run it
|
|
|
|
|
2021-01-26 17:58:33 +01:00
|
|
|
`make run`
|
2018-08-05 15:09:52 +02:00
|
|
|
|
|
|
|
or
|
|
|
|
|
|
|
|
`make fd.iso && qemu-system-x86_64 -cdrom fd.iso`
|
2020-04-27 23:47:52 +02:00
|
|
|
|
|
|
|
you can also test it
|
|
|
|
|
2021-10-07 21:23:32 +02:00
|
|
|
`make test`
|
2020-08-20 23:38:17 +02:00
|
|
|
|
|
|
|
# Debug
|
|
|
|
|
|
|
|
gdb could be launch with debug symbols using :
|
|
|
|
|
2021-03-18 09:16:14 +01:00
|
|
|
`make debug`
|
2020-08-20 23:38:17 +02:00
|
|
|
|
2022-09-03 22:55:11 +02:00
|
|
|
Serial log will be saved in the `serialOut` file.
|
|
|
|
|
2020-08-20 23:38:17 +02:00
|
|
|
Then you can check some matos specific commands or pretty printing with
|
|
|
|
|
2021-03-18 09:16:14 +01:00
|
|
|
`help user-defined`
|
|
|
|
`info pretty-printer` (Should contains matos_pretty_printers)
|
2021-10-01 22:26:24 +02:00
|
|
|
|
2021-11-08 22:31:14 +01:00
|
|
|
# Change Disk partitions
|
2021-11-04 20:14:48 +01:00
|
|
|
|
|
|
|
You can either modify the disk.sfdisk file
|
|
|
|
|
|
|
|
or
|
|
|
|
|
2021-11-08 22:31:14 +01:00
|
|
|
modify the disk image with your favorit tool (e.g. gparted) and re-generate disk.sfdisk
|
2021-11-04 20:14:48 +01:00
|
|
|
|
2021-11-08 22:31:14 +01:00
|
|
|
sfdisk -d > disk.sfdisk
|
2021-11-04 20:14:48 +01:00
|
|
|
|
2023-11-17 23:32:52 +01:00
|
|
|
# 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`
|
2021-11-04 20:14:48 +01:00
|
|
|
|
2021-10-01 22:26:24 +02:00
|
|
|
# Features
|
|
|
|
|
|
|
|
* VGA Driver
|
|
|
|
* keyboard Driver
|
|
|
|
* Serial Driver
|
|
|
|
* Timer
|
|
|
|
* Virtual memory
|
|
|
|
* Allocator
|
|
|
|
* Multithread (Full preempt)
|
|
|
|
* Mutex
|
2021-10-06 14:00:55 +02:00
|
|
|
* ATA
|
2021-11-04 20:14:48 +01:00
|
|
|
* basic userspace with syscall
|
2021-11-06 00:15:54 +01:00
|
|
|
|
|
|
|
# TODO
|
|
|
|
* ringbuffer protected by mutex
|
|
|
|
* blocking read
|