Giter Club home page Giter Club logo

mittos64's Introduction

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 tests

I 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 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 command

d mkiso

Running the emulator

The project can be run in a qemu virtual machine inside the docker container by the command

d emul

Running the debugger

The gdb debugger can be run inside the docker container by the command

d 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.

mittos64's People

Contributors

thomasloven avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.