minios
minios copied to clipboard
mini x86 Operating System <= 256KB
Mini Operating System From Zero
Debian Dev Environment Setup
sudo apt update
sudo apt install build-essential nasm gcc gdb gdbserver ccache qemu qemu-system-x86
Debug
Run make debug and then you can use any gdb command.
Debugging with GDB
break
- b main: puts a breakpoint at the symbol main
- b f:N: puts a breakpoint at the line N of file f
continue
- c: continues running the program until the next breakpoint or error
info
- info break: list breakpoints
- info registers eax: show the value of specific register
where
- where: Show call stack
- where full: Show call stack, also print the local variables in each frame
del
- del N: remove break point N
step
- s: runs the next line of the program
next
- n: Like s, but it does not step into functions
layout asm
- layout asm: show the assembly and command windows.
stepi
- si: next instruction
nexti
- ni: Like si, but it does not step into routines
- p var: print the current value of the variable var.
finish
- finish: Runs until the current function is finished
list
- list: print more lines
quit
- q: quits gdb
VNC
You can access the remote desktop with VNC viewer connecting to "<your-linux-virtual-machine-ip-address>:5900".
Tutorial
- [x] Writing a Simple Operating System from Scratch
- [x] os-tutorial
- [ ] Kmalloc Internals: Exploring Linux Kernel Memory Allocation
- [ ] JamesM's kernel development tutorials
- [ ] The little book about OS development
- [ ] Operating Systems: From 0 to 1
- [ ] Writing an OS in Rust
- [ ] Write an OS running on a CPU that complies with RISC V in Rust (CPU experiment sideshow)
- [ ] Shichao's Notes
- [ ] How to write a simple operating system
- [ ] Operating Systems Study Guide
- [ ] Operating Systems Course Notes Main Page
Course
- [ ] Harvard CS 61: Systems Programming and Machine Organization - WeensyOS
- [ ] Harvard CS 161: Operating Systems - Chickadee OS
- [ ] MIT 6.S081 2020: Operating System Engineering - xv6-riscv
- [ ] MIT 6.S081 2018: Operating System Engineering - xv6-x86
- [ ] MIT 6.828 2020: Operating System Engineering - xv6-riscv
- [ ] MIT 6.828 2018: Operating System Engineering - xv6-x86
- [ ] Stanford CS 140: Operating Systems - PintOS
- [ ] THU Operating Systems - rCore OS
- [ ] Udacity: GT Introduction to Operating Systems
- [ ] Udacity: GT Refresher - Advanced OS
- [ ] Udacity: GT Advanced Operating Systems
- [ ] Udacity: GT Embedded Systems
- [ ] MIT 6.5840: Distributed Systems
- [ ] UIC CS385: Operating Systems
- [ ] 操作系统原理 (Operating Systems)
- [ ] Carnegie Mellon 15-410: Operating System Design and Implementation
- [ ] CS401: Operating Systems
- [ ] ILLINOIS URBANA-CHAMPAIGN ECE 391: Computer Systems Engineering
- [ ] UPM: Sistemas Operativos Avanzados
- [ ] UPM: Sistemas Empotrados y Ubicuos
Book
- [ ] Computer Systems: A Programmer's Perspective
- [ ] Operating Systems: Three Easy Pieces
- [ ] Operating Systems: Principles and Practice
- [ ] Operating Systems: Internals and Design Principles
- [ ] Operating System Concepts
- [ ] The Design of the UNIX Operating System
- [ ] Understanding The Linux Kernel
- [ ] Linux Kernel Development
- [ ] The Essentials of Computer Organization and Architecture
- [ ] Operating Systems: Design and Implementation
- [ ] Modern Operating Systems
- [ ] Distributed Systems
- [ ] Linux Device Drivers
- [ ] 一个64位操作系统的设计与实现
- [ ] 30天自制操作系统
Windows
- [ ] Windows Internals
- [ ] Developing Drivers with Windows Driver Foundation
- [ ] Programming the Microsoft® Windows® Driver Model
- [ ] Windows via C/C++
- [ ] Windows内核原理与实现
- [ ] Windows内核情景分析
Source Code
- Linux 0.01
- FreeDOS
- Redox
- Chromium OS
- Fuchsia
- webOS
- elfboot
- Rufus
- Ventoy
- SerenityOS
- Biscuit research OS
- Boot OS
- IncludeOS
- BareMetal-OS-legacy
- darwin-xnu
- FreeBSD
- OpenBSD
- Minix 3
- OpenHarmony
- TencentOS-tiny
- RT-Thread
- Grub2
- µC/OS-III
- FreeRTOS
- LiteOS
- AliOS
- OpenRC
- Hurlex II
- TedkOS
- Syslinux
- x86 Bare Metal Examples
- eCos
- U-Boot
- YunOS
- AliOS