type
Post
status
Published
slug
2022/06/11/1654920969652
tags
osdev
category
osdev
icon
password
Property
Dec 7, 2022 12:44 AM
created days
这个 wiki 上有几个与操作系统开发相关的教程。此页面是周围教程的概述,按主题领域和难度排序。
- 非常基础或易于理解的教程。先试试这些。
- 一些比较难的主题的教程,但是仍然很好做。先做一些简单的事情可能是个好主意。
notion image
notion image
- 高级主题教程。不建议初学者使用。
- 关于非常困难的主题的教程。大师班。祝你好运!
notion image
notion image

Kernel Basics

Bare Bones

这些是“基本”教程,将为您提供一个基本内核,它足够安全,可以作为您自己的起点。
Bare Bones - Write a basic 32-bit kernel in C for x86
User:Zesterer/Bare Bones - Write a basic 32-bit kernel in C for x86 (improved tutorial by zesterer)
notion image
notion image
Stivale Bare Bones - Write a simple 64-bit higher half kernel using the Limine bootloader.
Meaty Skeleton - Template operating system
notion image
notion image
Higher Half x86 Bare Bones - A tutorial that shows how to write a higher half kernel
notion image
Setting Up Long Mode - Switching to long mode
Creating a 64-bit kernel - An introduction to 64-bit kernels
notion image
notion image
Real mode assembly bare bones - A tutorial series on writing a basic assembly language kernel
notion image
Pascal Bare Bones - A basic kernel in Pascal
Ada Bare bones - A tutorial on writing a basic kernel in Ada
FreeBasic Bare Bones - A basic kernel in FreeBasic
notion image
notion image
notion image
We also have bare bones for other platforms
GameBoy Advance Barebones - A tutorial on writing a basic GBA kernel
Sparc Barebones - A basic kernel for SparcStations
notion image
notion image

Babysteps

如何在汇编中创建基本内核
Babystep1 - Your first boot sector.
Babystep2 - Writing a message using the BIOS.
Babystep3 - A look at machine code
Babystep4 - Printing to the screen without the BIOS
Babystep5 - Interrupts
Babystep6 - Entering protected mode
Babystep7 - Unreal Mode
Babystep8 - 32-bit printing
Appendix A - Additional information
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image

Other kernels

这些教程涵盖了可选的内核设计。这些主要是针对使用其他地方没有涉及的语言的开发人员,或者设计方法与Babysteps和Bare Bones教程中给出的方法有很大不同的开发人员。
A Java Primer on dealing with languages in general and Java in particular that would normally be unsuitable for OS development.
notion image
处理一般语言和特别是 Java 的 Java Primer,这些语言通常不适合 OS 开发。
A C# Bare Bones tutorial, using a language not typically used in OS development.
notion image

Third Party Tutorials (第三方教程)

本节涵盖与 wiki 和论坛无关的教程。鉴于周围的教程数量众多,没有办法列出它们的完整列表,因此这仅限于讨论中最常出现的那些。之所以在此处列出它们,是因为其中大多数主要关注操作系统开发的早期步骤。
此外,它们的质量存在惊人的差异,并且由于这些不是 wiki 本身的一部分,因此 wiki 没有办法确保错误得到修复或更新。
虽然这些是出于参考目的,但由于它们经常被提及,因此建议任何关注 wiki 教程的人将第三方教程作为补充而不是建议。
James A. Molloy's Kernel Tutorials - one of the more popular tutorials in the past, it has a number of known issues, and does not seem to be actively updating.
notion image
过去比较流行的教程之一,它有一些已知问题,并且似乎没有在积极更新。
BrokenThorn Operating System Development Series - Like the James Molloy series, this is a very well-known tutorial series, but one which is very dated and has a large number of known flaws that have not been corrected.
notion image
BrokenThorn 操作系统开发系列 - 与 James Molloy 系列一样,这是一个非常有名的教程系列,但它非常过时并且有大量已知缺陷尚未纠正。
Bran's Kernel Tutorial - a very dated, but still often referenced, tutorial from the now-moribund "Bona Fide OS Development" site. Like JAM and BrokenThorn, the code examples have many known problems, and much of the material is long out of date.
notion image
Bran's Kernel Tutorial - 一个非常过时但仍然经常被引用的教程,来自现在垂死的“Bona Fide OS Development”站点。与 JAM 和 BrokenThorn 一样,这些代码示例存在许多已知问题,而且大部分材料早已过时。
How to write a simple operating system by Mike Saunders - this is the starting point for those following the MikeOS project, an x86 real-mode system written in assembly language. and focuses on the aspects needed to get going with developing for MikeOS.
notion image
如何编写一个简单的操作系统(Mike Saunders)——这是那些关注MikeOS项目的人的起点,Mike OS是一个用汇编语言编写的x86实模式系统。并重点介绍了为MikeOS进行开发所需的方面。
FlingOS Getting Started video series - A third party series of video tutorials giving a practical start to writing your first OS (aimed at x86, full examples available in each of ASM, C and C#)
notion image
FlingOS Getting Started video series - 第三方视频教程系列,为编写您的第一个操作系统提供了一个实际的开始(针对 x86,在 ASM、C 和 C# 中都有完整的示例)
The Little OS Book - a third-party OS demonstrator hosted on GitHub. Goes through periods of updating, and known bugs which haven't yet been fixed are listed in the repo.
notion image
GitHub上托管的第三方操作系统演示程序。经过一段时间的更新,尚未修复的已知错误会列在报告中。
Writing a Simple Operating System — From Scratch (PDF) - A 2010 tutorial based on course material from a class on operating systems at the University of Birmingham, UK, written by Dr. Nicholas Blundell, the original course instructor. The tutorial was written as supplemental material for students to review before the course, and according Blundell, "is not intended as a replacement but rather as a stepping stone to excellent work such as the Minix project" .
notion image
编写一个简单的操作系统——从零开始(PDF)——这是一个2010年的教程,基于英国伯明翰大学操作系统课程的教材,作者是最初的课程讲师Nicholas Blundell博士。该教程是作为学生在课程开始前复习的补充材料编写的,根据Blundell的说法,“不是为了取代,而是为了成为优秀工作的垫脚石,如Minix项目”。
So, You Want to Write an Operating System and Climbing the Kernel Mountain - a now-ancient series of articles from the OS News website, begun in 2002, these were many older developers' introductions to OS dev. They are well-written, but have only cursory coverage of the details, and are primarily of only historical interest today. This is included solely because they are referenced in many older posts in the forum. Note that the author later wrote a follow-up in which he argued against developing a new kernel at all.
notion image
So, You Want to Write an Operating System and Climbing the Kernel Mountain - 来自 OS News 网站的古老系列文章,始于 2002 年,这些是许多老开发人员对 OS dev 的介绍。它们写得很好,但只是粗略地介绍了细节,而且主要是今天的历史意义。这仅是因为它们在论坛中的许多旧帖子中被引用。请注意,作者后来写了一篇后续文章,他反对开发一个新内核。
Xv6 unlike most tutorials in this list, this is a fully functional, yet simple OS. Xv6 is a modernized version of the classic Dennis Richie's and Ken Thompson's UNIX V6, written in ANSI C for the x86 protected mode, keeping the original UNIX philosophy of simplicity.
notion image
Xv6 与此列表中的大多数教程不同,这是一个功能齐全但简单的操作系统。 Xv6 是经典的 Dennis Richie 和 Ken Thompson 的 UNIX V6 的现代化版本,以 ANSI C 编写,用于 x86 保护模式,保持了原始 UNIX 的简单理念。

Basics

GDT Tutorial - A guide about the GDT
Interrupts tutorial - How set interrupts from C
Creating A Shell - A tutorial on how to write a shell
Going Further on x86 - A guide that shall cover the basics of kernel internals
notion image
notion image
notion image
notion image
DEMO - A tutorial, in code and prose, on some fundamentals of the '386 (and above) and the PC platform, as an assembly language DEMO
notion image

Memory Management

Setting Up Paging - A tutorial that deals with setting up and maintaining a system with paging enabled
notion image
Setting Up Paging With PAE - As above, but with PAE enabled
notion image
Brendan's Memory Management Guide - A memory management guide to explain basic concepts
notion image
Writing a memory manager - A tutorial on how to handle the RAM in a computer.
notion image
Writing A Page Frame Allocator - How to write a simple page frame allocator
notion image

Processes and Threads

Brendan's Multi-tasking Tutorial - A kernel-space multitasking tutorial.
notion image
Cooperative Multitasking - How to create a kernel-space multitasking system.
notion image
Getting to User Mode- How to context switch into user mode.
notion image

Graphics & Video

Drawing In Protected Mode - The basics, how to plot a pixel.
Double Buffering - A handy way to prevent artifacts.
PC Screen Font - Displaying text with bitmap fonts.
Scalable Screen Font - Displaying text with vector fonts.
Loading Icons - Decoding image files to display icons.
notion image
notion image
notion image
notion image
notion image

Booting

Bootable Disk - A tutorial that explains how to create a bootable disk (USB stick) image
notion image
Bootable CD - A tutorial that explains how to create a bootable CD
notion image
Bootable El-Torito CD with GRUB Legacy - A tutorial that explains how to create a bootable GRUB CD
notion image
Rolling Your Own Bootloader - Describes what steps to take when writing a bootloader.
notion image
Writing a bootloader - A basic tutorial on creating a bootloader
notion image
Writing a bootloader for UEFI - A basic tutorial on creating a bootloader utilising UEFI
notion image
Writing GRUB Modules - A tutorial on writing modules that add custom functionality to GRUB.
notion image

Building

Makefile - A guided demonstration of how Makefiles can be used
OS Specific Toolchain - A guide on adapting GCC and Binutils to a platform
notion image
notion image
CMake Build System - A guide demonstrating adapting KitWare's CMake Build System for building an operating system.
notion image
VSCode for Debugging - Setting up VSCode for debugging your kernel.
notion image

Compilers

GCC Cross-Compiler - A guide that helps build GCC targeting a different platform
GDC Cross-Compiler - Same as the previous, but this time for the D programming language.
notion image
notion image

Executable File Formats

ELF Tutorial - A guide that details the process of loading ELF executables.
notion image
Manually Creating an ELF Executable - A guide that demonstrates how ELF binaries work, and how to build one from scratch using only a hex editor.
notion image

Porting Software

Porting Newlib - A guide on porting a common C library to another operating system
notion image
Using Libsupc++ - A guide on porting libsupc++ to get more out of the features of C++
notion image
Porting Python - A guide on porting python to another operating system
notion image
 
欢迎加入喵星计算机技术研究院,原创技术文章第一时间推送。
notion image
 
wiki.osdev.org 系列之(九)- 全局描述符表 (GDT)wiki.osdev.org 系列之(六)- GCC Cross-Compiler

  • Waline
  • Utterance