从0创建一个OS (一) 原文介绍 + 环境搭建
OS教程——从0创建一个OS
本来这个系列的博客准备留在CSDN的,可是今天忽然想起这个系列还没更新完,之后又会一直在博客园写东西,所以就批量导入过来了,大家可能会看到图片带csdn的水印,影响不大,之后更新的该系列文章中的图片就不会带CSDN的水印了。
本文为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运行以下命令:
1 2 | <code-pre class= "code-pre" id = "pre-AmpPcj" ><code-line class= "line-numbers-rows" >< /code-line > # 使用brew安装qemu和nasm <code-line class= "line-numbers-rows" >< /code-line >brew install qemu nasm < /code-pre > |
如果你安装了Xcode开发工具nasm,请不要使用它,大多数情况下该工具不起作用,请使用/usr/local/bin/nasm
注:原文章作者使用的是Mac开发环境,译者使用Linux(Ubuntu),本文以Ubuntu系统为主进行开发说明
Linux
在Ubuntu上(windows使用者尽量使用装有ubuntu的虚拟机或装一个双系统),在terminal中运行
1 2 3 4 5 | <code-pre class= "code-pre" id = "pre-p4BJNK" ><code-line class= "line-numbers-rows" >< /code-line > # 安装qemu和nasm <code-line class= "line-numbers-rows" >< /code-line > <code-line class= "line-numbers-rows" >< /code-line > sudo apt-get update <code-line class= "line-numbers-rows" >< /code-line > sudo apt-get install -y qemu-kvm qemu virt-manager virt-viewer libvirt-bin <code-line class= "line-numbers-rows" >< /code-line > sudo apt-get install nasm < /code-pre > |
最终查看nasm和qemu的版本
附:阅读材料
__EOF__

本文链接:https://www.cnblogs.com/haiyonghao/p/14623207.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律