从0创建一个OS (一) 原文介绍 + 环境搭建
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的版本
如果可以使用图片中的两个命令,即表示安装成功
附:阅读材料
- Wiki QEMU条目
- 百度百科-NASM条目
从0创建一个OS (一) 原文介绍 + 环境搭建相关推荐
- 【django轻量级框架】(Python3.6.8+Django2.0)第一个Django项目与基础环境搭建
一.前言 Django 是一个开放源代码的 Web 应用框架,由 Python 写成.采用了 MTV 的框架模式,即模型 M,模板 T 和视图 V.当然,网上也有人说 Django 采用了 MVC 的 ...
- 从0创建一个OS (九) 32-bit模式的打印字符串函数
学习如何在32-bit模式下不借助BIOS的0x10号中断打印字符串 关键字:32-bit保护模式; VGA; 视频存储区域 目标: 学会在32-bit保护模式下打印字符串 理论基础 32-bit保护 ...
- 鸿蒙OS应用开发之——环境搭建
一 概述 作为鸿蒙OS应用开发的初学者,本篇介绍开发工具的安装与配置 准备工作 软件的下载与安装 配置开发环境 第一个程序(Hello World) 2.1 开发工具 Java:编译构建依赖JDK(版 ...
- JMeter教程1 - 介绍环境搭建 (Mac)插件安装
目录 一.JMeter 介绍 JMeter与LoadRunner比较 JMeter缺点 二. JMeter 安装 1.官网下载JMeter 2.安装JMeter 3.配置环境变量 4.汉化 5.安装P ...
- 黑马畅购商城---1.项目介绍-环境搭建
学习地址:https://download.csdn.net/download/Q2802020/12883464 第1章 框架搭建 学习目标 了解电商 了解畅购架构 了解畅购工程结构 畅购工程搭建 ...
- cocos2d-x 4.0 学习之路(一)环境搭建 Mac版
我的Mac系统:MacOS Catalina 10.15.3,Xcode 11.3.1 (Windows上的环境搭建,请参考我的另一篇博客,环境搭建Windows版) 准备工作: 1.检查Python ...
- 从0开始的Nginx+PHP+MySQLのLInux环境搭建并部署安装WordPress
目录 写在最前 教程部分 安装Nginx.PHP.MySQL Nginx的配置 PHP的配置 安装WordPress 配置MySQL 尾声 写在最后 写在最前 近来在腾讯云上搞了个服务器,并琢磨着拿 ...
- 【Java从0到架构师】基本概念 + 环境搭建
基本概念 + 环境搭建 基本概念 网页基础知识.基本HTML标签 Apache Tomcat 环境搭建 启动和关闭 Tomcat Tomcat 乱码问题 Idea 关联 Tomcat 源码 Idea ...
- Xcode8 + Swift3.0 创建一个app基础框架
源代码放在github里面github源代码 QQ:26108724 下面这块是添加每一个TabbarItem的方法 下面这一块是添加所有VC到Tabbar里面的代码 import UIKitclas ...
最新文章
- action 和servlet关系
- SAP HR模块用的表
- 纯CSS无hacks的跨游览器多列布局(转)
- 8587520在51CTO【礼树迎蛇 红满社区】
- linux命令详解——iostat
- java约瑟夫环pta上_cdoj525-猴子选大王 (约瑟夫环)
- Theano 中文文档 0.9 - 5.1 Ubuntu安装说明
- C# PDFLibNet PDF转JPG
- 什么是webpack? ----(webpack入门)
- vue移动端上拉加载,下拉刷新(mescroll)
- 1、spring源码解析之概况流程
- VS Code 字体推荐
- linux系统下的动态壁纸,动态壁纸给Linux发行版添加活力背景
- c语言n的阶乘 longfact,如何定义函式fact(n) 计算n的阶乘:n!=1*2*……*n,函式返回值型别是double?...
- .tpk格式文件简介
- 捋一捋Python中的List(上)
- 怎样制作传奇私服服务器,新手传奇gm必须学会如何制作传奇私服小地图
- Axi:名词解释、乱序、间插、卷绕、窄带访问、非对齐访问、OST
- FGUI+Laya Air 游戏架构之stage分层架构
- WEB攻防-通用漏洞SQL读写注入ACCESS偏移注入MYSQLMSSQLPostgreSQL
热门文章
- keil mdk打开工程时提示Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx
- pyqt创建窗口没有句柄_Python GUI之Tkinter窗口视窗教程集合
- 用iframe完成页面嵌套
- https/ssl总结
- NAT类型及打洞原理
- diea显示左边的项目结构 idea显示右边的maven图标和batabase图标
- 看了这篇文章,妈妈再也不用担心我的学习了---spark原理
- css零到一基础教程018:CSS 边框颜色
- 给我未来的孩子的一封信
- 正式宣布 Visual Studio 2022