OS教程——从0创建一个OS

本文为os-tutorial—How to create an OS from scratch!的中文翻译版,旨在为国内OS社区初学者提供入门OS编写教程,文中提供了每一步的解释说明,使读者能够顺着清晰的思路完成一个OS,学习OS编写过程中的各项知识。

本文的读者需要具备以下知识:

  • 汇编语言基础
  • 操作系统基础概念

针对以上两条推荐两本书,不具备以上知识的读者可以先对这两本书加以阅读,再来看这个教程

《汇编语言(第3版) 》(王爽)

《x86_x64体系探索及编程》(邓志)

写在前面

由于操作系统涉及面非常广,如果阅读本文时只是单纯的复制粘贴代码并用nasm编译、用qemu运行,那么看完本系列文章之后肯定不会有什么大的进步,所以希望本文的读者确保自己对每一章的关键字部分有明确的认知,即知道每个关键字是什么意思具体的用处是什么?每一次接触新概念时问自己这两个问题,那么阅读本系列文章将会达到事半功倍的效果。

环境配置

关键字: linux; mac; terminal; compiler; emulator; nasm; qemu

目标:安装相关软件,为后面的编写操作系统做准备

推荐操作系统:Linux/Mac

Mac

在Mac上,安装Homebrew,然后使用terminal运行以下命令:

# 使用brew安装qemu和nasm
brew install qemu nasm

如果你安装了Xcode开发工具nasm,请不要使用它,大多数情况下该工具不起作用,请使用/usr/local/bin/nasm

注:原文章作者使用的是Mac开发环境,译者使用Linux(Ubuntu),本文以Ubuntu系统为主进行开发说明

Linux

在Ubuntu上(windows使用者尽量使用装有ubuntu的虚拟机或装一个双系统),在terminal中运行

# 安装qemu和nasm
sudo apt-get update
sudo apt-get install -y qemu-kvm qemu virt-manager virt-viewer libvirt-bin
sudo apt-get install nasm

最终查看nasm和qemu的版本



如果可以使用图片中的两个命令,即表示安装成功

附:阅读材料

  1. Wiki QEMU条目
  2. 百度百科-NASM条目

从0创建一个OS (一) 原文介绍 + 环境搭建相关推荐

  1. 【django轻量级框架】(Python3.6.8+Django2.0)第一个Django项目与基础环境搭建

    一.前言 Django 是一个开放源代码的 Web 应用框架,由 Python 写成.采用了 MTV 的框架模式,即模型 M,模板 T 和视图 V.当然,网上也有人说 Django 采用了 MVC 的 ...

  2. 从0创建一个OS (九) 32-bit模式的打印字符串函数

    学习如何在32-bit模式下不借助BIOS的0x10号中断打印字符串 关键字:32-bit保护模式; VGA; 视频存储区域 目标: 学会在32-bit保护模式下打印字符串 理论基础 32-bit保护 ...

  3. 鸿蒙OS应用开发之——环境搭建

    一 概述 作为鸿蒙OS应用开发的初学者,本篇介绍开发工具的安装与配置 准备工作 软件的下载与安装 配置开发环境 第一个程序(Hello World) 2.1 开发工具 Java:编译构建依赖JDK(版 ...

  4. JMeter教程1 - 介绍环境搭建 (Mac)插件安装

    目录 一.JMeter 介绍 JMeter与LoadRunner比较 JMeter缺点 二. JMeter 安装 1.官网下载JMeter 2.安装JMeter 3.配置环境变量 4.汉化 5.安装P ...

  5. 黑马畅购商城---1.项目介绍-环境搭建

    学习地址:https://download.csdn.net/download/Q2802020/12883464 第1章 框架搭建 学习目标 了解电商 了解畅购架构 了解畅购工程结构 畅购工程搭建 ...

  6. cocos2d-x 4.0 学习之路(一)环境搭建 Mac版

    我的Mac系统:MacOS Catalina 10.15.3,Xcode 11.3.1 (Windows上的环境搭建,请参考我的另一篇博客,环境搭建Windows版) 准备工作: 1.检查Python ...

  7. 从0开始的Nginx+PHP+MySQLのLInux环境搭建并部署安装WordPress

    目录 写在最前 教程部分 安装Nginx.PHP.MySQL Nginx的配置 PHP的配置 安装WordPress 配置MySQL 尾声 写在最后 写在最前  近来在腾讯云上搞了个服务器,并琢磨着拿 ...

  8. 【Java从0到架构师】基本概念 + 环境搭建

    基本概念 + 环境搭建 基本概念 网页基础知识.基本HTML标签 Apache Tomcat 环境搭建 启动和关闭 Tomcat Tomcat 乱码问题 Idea 关联 Tomcat 源码 Idea ...

  9. Xcode8 + Swift3.0 创建一个app基础框架

    源代码放在github里面github源代码 QQ:26108724 下面这块是添加每一个TabbarItem的方法 下面这一块是添加所有VC到Tabbar里面的代码 import UIKitclas ...

最新文章

  1. action 和servlet关系
  2. SAP HR模块用的表
  3. 纯CSS无hacks的跨游览器多列布局(转)
  4. 8587520在51CTO【礼树迎蛇 红满社区】
  5. linux命令详解——iostat
  6. java约瑟夫环pta上_cdoj525-猴子选大王 (约瑟夫环)
  7. Theano 中文文档 0.9 - 5.1 Ubuntu安装说明
  8. C# PDFLibNet PDF转JPG
  9. 什么是webpack? ----(webpack入门)
  10. vue移动端上拉加载,下拉刷新(mescroll)
  11. 1、spring源码解析之概况流程
  12. VS Code 字体推荐
  13. linux系统下的动态壁纸,动态壁纸给Linux发行版添加活力背景
  14. c语言n的阶乘 longfact,如何定义函式fact(n) 计算n的阶乘:n!=1*2*……*n,函式返回值型别是double?...
  15. .tpk格式文件简介
  16. 捋一捋Python中的List(上)
  17. 怎样制作传奇私服服务器,新手传奇gm必须学会如何制作传奇私服小地图
  18. Axi:名词解释、乱序、间插、卷绕、窄带访问、非对齐访问、OST
  19. FGUI+Laya Air 游戏架构之stage分层架构
  20. WEB攻防-通用漏洞SQL读写注入ACCESS偏移注入MYSQLMSSQLPostgreSQL

热门文章

  1. keil mdk打开工程时提示Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx
  2. pyqt创建窗口没有句柄_Python GUI之Tkinter窗口视窗教程集合
  3. 用iframe完成页面嵌套
  4. https/ssl总结
  5. NAT类型及打洞原理
  6. diea显示左边的项目结构 idea显示右边的maven图标和batabase图标
  7. 看了这篇文章,妈妈再也不用担心我的学习了---spark原理
  8. css零到一基础教程018:CSS 边框颜色
  9. 给我未来的孩子的一封信
  10. 正式宣布 Visual Studio 2022