sudo apt update
sudo apt install build-essential nasm gcc gdb gdbserver ccache qemu qemu-system-x86
Run make debug and then you can use any gdb command.
- b main: puts a breakpoint at the symbol main
- b f:N: puts a breakpoint at the line N of file f
- c: continues running the program until the next breakpoint or error
- info break: list breakpoints
- info registers eax: show the value of specific register
- where: Show call stack
- where full: Show call stack, also print the local variables in each frame
- del N: remove break point N
- s: runs the next line of the program
- n: Like s, but it does not step into functions
- layout asm: show the assembly and command windows.
- si: next instruction
- ni: Like si, but it does not step into routines
- p var: print the current value of the variable var.
- finish: Runs until the current function is finished
- list: print more lines
- q: quits gdb
You can access the remote desktop with VNC viewer connecting to "<your-linux-virtual-machine-ip-address>:5900".
- Writing a Simple Operating System from Scratch
- 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
- 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
- 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 Internals
- Developing Drivers with Windows Driver Foundation
- Programming the Microsoft® Windows® Driver Model
- Windows via C/C++
- Windows内核原理与实现
- Windows内核情景分析
- 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