这绝对是全网最细的手写操作系统环境搭建教程!

我,子牙老师,一个手写过操作系统、编程语言、Java虚拟机、docker、Ubuntu...的硬核男人

今天准备用一篇文章教你搭建出最强大最方便的手写操作系统环境,让你爱上手写操作系统,让你圆梦,写出自己的操作系统

废话不多说,开整

文章提到的所有资料加班主任维新:jvm-anan。如果你的汇编跟C语言不过关,回复【汇编教程】免费领取我讲的视频+笔记

完全体展示

先秀下肌肉,让你眼前一亮,再告诉你这个环境是如何一步步搭建出来的,这样才符合我这个硬核男人的人设,对吧

你听过SMP架构与NUMA架构吗?没有?可以看下我之前写的文章《不懂NUMA,你就看不懂Linux内核》

我教你搭建的环境,既可以运行SMP架构的操作系统,也可以运行NUMA架构的操作系统。Linux系统也是操作系统,所以这套环境,可以无差别运行Linux内核与Linux系统

运行SMP架构的我写的操作系统展示

运行NUMA架构的我写的操作系统展示

你可能想说:光跑代码可不够,平时写业务代码都要调试排查,更别说写操作系统这么复杂的东西了,不能调试,那不得疯啊!

你说的对!接下来给你展示这套环境最核心的功能,可以让你非常轻松愉快的调试你写的操作系统代码

比如调试C语言代码

众所周知,写操作系统一般都是使用C语言+汇编,C语言代码环境相对来说,大家还熟悉一点,那调试汇编代码,你这个环境有吗?当然!

大家能看出来这个汇编代码是干啥的吧!对,线程切换的核心代码

除了能单步调试汇编能C语言,我还能让你看到CPU的内部发生了什么:比如CPU运行模式的切换、CPU开启分页以后物理内存与虚拟内存的映射关系、发生中断以后CPU是如何处理中断的...展示

至此,肌肉应该秀的差不多了吧。等等,你说的用这个环境运行Linux内核、单步调试Linux内核呢?来了

没骗你吧!是不是已经摩拳擦掌,想开干了?那就开始吧...

整体介绍

完整环境是这样的:

  1. Windows或Mac上安装VMware虚拟机

  2. 在VMware虚拟机中安装Ubuntu16

  3. 在Ubuntu16中安装qemu、bochs

众所周知,搭建环境坑是巨多的,搭建的顺序不对,安装包的版本不对......都有可能失败,而且很难解决

为了让你不用踩坑,我把我使用的软件包提供给你,关注公众号【硬核子牙】回复【手写操作系统】免费领取。我还是建议你用我提供的,再搭配我后面给你的搭建教程,闭着眼睛就能搭建成功

你可能不太理解,这个环境为什么要这么搭建,我给你解释一下

平时写业务代码,大家应该用Windows、Mac比较多吧。但是玩底层,一般会使用Ubuntu。比如你所知道的CentOS、Ubuntu、Java虚拟机hotspot、Python虚拟机cpython、MySQL、Redis、NGINX...还有嵌入式,都是在Ubuntu中开发出来的

在Ubuntu中开发操作系统,如何运行呢?两个虚拟机可用:qemu、bochs。想看CPU内部,得用bochs。想单步调试汇编、C语言,得用qemu

我怎么知道的?我做操作系统课程的时候,学习了市面上能看到的所有书跟视频,从别人那学来的,我做了综合及优化,所以才有这套非常简单方便强大的环境

搭建教程

都说了废话不多说, 还说了一堆废话。不说了,开整

先在你的Windows或Mac上安装VMware。然后在VMware中创建一个虚拟机,在虚拟机中安装Ubuntu16系统(这里不好的,问百度、谷歌、AI都行,很容易)

1、进入Ubuntu16,安装依赖

2、安装汇编编译器nasm

3、安装qemu

4、安装bochs,比起这几个,复杂一些

5、安装clion,这个简单。自行百度、谷歌、AI

至此,环境就安装完了。是不是出奇的简单?所以这个世界上的很多知识,是知与不知

对了,文章里面我贴的是图,你在搭建环境的过程中,也不用自己从头到尾敲一遍,拿着图片去让AI给你识别出来即可。今天是AI时代的前夕,一定要学着并学会使用AI。一个人的强大,其中之一就是在于学会使用那个时代最强大的工具!

怎么用

班主任维新:jvm-anan。免费获取我写的操作系统代码

将我写的操作系统代码,clone到Ubuntu16中,使用clion打开

支持的命令都在Makefile中

命令行输入make bochs、make qemu、make qemug即可运行。其中make qemug是调试模式

如何使用gdb调试操作系统代码呢?

1、配置clion

2、下断点

3、执行make qemug,调试模式运行OS

4、启动刚刚配置的gdb

如果你看到这个界面,就表示成功了

至此,支持单步调试操作系统代码的环境就搭建完成了!使用这个环境,你不仅可以手写操作系统,还可以研究Linux内核源码,甚至去手写实现网络协议栈、手写文件系统...研究MySQL源码、Redis源码、Nginx源码也不是不可以

相关推荐
Invinciblenuonuo5 小时前
Linux【5】-----编译和烧写Linux系统镜像(RK3568)
linux·操作系统·rk3568·系统编译
444A4E4 天前
深入Linux进程优先级:Nice值与O(1)调度器原理
linux·操作系统
明月看潮生4 天前
青少年编程与数学 01-011 系统软件简介 07 iOS操作系统
ios·青少年编程·操作系统·系统软件
明月看潮生4 天前
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统
linux·青少年编程·操作系统·系统软件·编程与数学
明月看潮生4 天前
青少年编程与数学 01-011 系统软件简介 03 NetWare操作系统
青少年编程·操作系统·系统软件·编程与数学
明月看潮生5 天前
青少年编程与数学 01-011 系统软件简介 06 Android操作系统
android·青少年编程·操作系统·系统软件·编程与数学
明月看潮生6 天前
青少年编程与数学 01-011 系统软件简介 02 UNIX操作系统
服务器·青少年编程·操作系统·unix·系统软件
明月看潮生6 天前
青少年编程与数学 01-011 系统软件简介 05 macOS操作系统
macos·青少年编程·操作系统·系统软件·编程与数学
Lumos_6 天前
OpenEluer 安装 OpenLDAP
操作系统