https://github.com/thomasloven/mittos64
https://github.com/thomasloven/mittos64
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/thomasloven/mittos64
- Owner: thomasloven
- License: other
- Created: 2019-06-30T07:35:40.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-06-30T07:39:07.000Z (almost 6 years ago)
- Last Synced: 2025-04-05T08:04:57.919Z (27 days ago)
- Language: C
- Size: 187 KB
- Stars: 48
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MITTOS64
This project is my attempt at a modern kernel.
Differences from my earlier kernels include
- 64 bit
- symmetric multiprocessing
- docker-based build chain
- unit testsI meant to write very extensive documentation of the development process, but with two kids I have realized that will probably never happen, so now I'm releasing as is.
Also take a look at [mittos64-old](https://github.com/thomasloven/mittos64-old/) which is a previous version of this that got a bit further (processes, c-library (JIT-patching of musl), ATA).
## Building
This project is set up to be built inside a Docker container.The container can be built by running the `d` script in the projects root directory - provided Docker is installed on your computer.
When the docker container is built, commands can be run inside it through the `d` script. The script will run any arguments passed to it as commands inside the container.
E.g:
d ls
If a previous command is running, the next command will be run inside the same container. Otherwise a new container will be started.
## Generating and iso file
A cdrom ISO file can be built by the commandd mkiso
## Running the emulator
The project can be run in a qemu virtual machine inside the docker container by the commandd emul
## Running the debugger
The gdb debugger can be run inside the docker container by the commandd dbg
This assumes that a qemu session is already running.
### Debugger commands
Gdb is configured with a few special commands(gdb) q
Stops the qemu emulator and closes the debugger.
(gdb) reset
Reboots the qemu virtual machine.
(gdb) reg
Displays information about cpu register contents from the emulator. Note that this is slightly different from the built-in gdb command `info registers`.
### Bypassing the docker container
Most scripts and makefiles in the project will check for wether they are run inside the container by looking for the environment variable $MITTOS64. If not present, execution will stop.If you know what you're doing, this check can be bypassed by defining the environment variable MITTOS64. I really don't recommend it, though.