• 开发操作系统内核环境搭建


    哈喽,我是子牙,一个很卷的硬核男人
    闲来无事不是写了个操作系统吗,写完之后发了篇文章《圆梦,手写了个操作系统》,这一发倒好,一石激起千层浪,很多小伙伴跑来问我开发操作系统的环境如何搭建。既然这么多小伙伴想写操作系统,作为过来人,我就把我的环境搭建踩坑手册分享给大家
    如果人人都能写操作系统,国家计算机行业的兴旺指日可待呀

    环境整体介绍

    说下我的环境,也是我推荐的环境
    开发环境操作系统:Ubuntu16
    开发环境虚拟机:VMware最新版
    开发工具:clion(汇编、C语言,这一款足矣)
    运行虚拟机1:bochs2.7(用来单步调试汇编)
    运行虚拟机2:qemu(用来单步调试C语言)
    运行虚拟机3:VMware、vbox(打包成对应虚拟机的镜像即可运行)
    如果你是Windows,推荐用这个环境
    如果你是Mac,还是推荐你用这个环境
    开发操作系统,用这个环境就对了
    可能你还不知道吧:Linux操作系统、Linux内核驱动开发、嵌入式开发、Java虚拟机Hotspot、MySQL等你能想到的或者经常用到的软件、系统、中间件,也都是在这个环境下开发出来的。所以用习惯这套环境,意义重大!
    上个图,让大家有个感性认识
    在这里插入图片描述

    关注公众号【硬核子牙】回复【开发操作系统环境搭建】获取我用的所有软件包。如果你用我的软件包,搭建过程中遇到问题来问我,我可能知道。如果你与我用的软件包版本不同,遇到问题来问我,我可能是不知道的。
    在这里插入图片描述

    接下来说说这套环境搭建的详细细节

    搭建详细步骤

    虚拟机VMware的安装不多说了,大家都会
    虚拟机VMware中安装Ubuntu16也不多说了,大家肯定都会
    Ubuntu16中安装clion也不多说了,不会的拉出去毙了
    重点说下Ubuntu16中如何安装bochs,装不好是不会出来调试界面的哈,仔细复制我给的配置。当然,网上能搜到,但是有巨多坑,我提供的是我踩坑过后总结的,可放心使用,逼着研究都能搭建出来

    第一步:安装依赖

    在这里插入图片描述

    第二步:编译配置

    在这里插入图片描述

    第三步:开始编译

    在这里插入图片描述

    第四步:把我提供的代码拉下来,执行make bochs,就能看到效果了

    在这里插入图片描述

    我提供的代码在哪里?接着往后看
    这里我略过了bochs的配置,你执行bochs -q试下就晓得了,很简单,不多言。
    我提供的代码中有我配置好的配置文件。接下来说下配置文件中两个重要的地方
    在这里插入图片描述

    大家可以帮忙转发一波,让更多想自己写操作系统的小伙伴,不会因为开发环境的搭建而放弃
    微内核源码
    关注公众号**【硬核子牙】回复【微内核源码】**,可以获取

    接下来说下这个代码怎么用?就是怎么编译出操作系统内核镜像。我提供的这个是比较麻烦的环境,我觉得是有必要的。在接触集成环境之前,了解编译运行调试内核的每一步。后面教大家优化成一键编译调试环境
    第一步:先安装汇编编译器NASM

    在这里插入图片描述

    第二步:导入项目,选cmake
    在这里插入图片描述

    第三步:将boot.asm编译生成boot.o

    在这里插入图片描述

    第四步:将boot.o写入内核镜像中

    在这里插入图片描述

    会在根目录下生成a.img,这个就是内核镜像

    在这里插入图片描述

    第五步:运行内核

    在这里插入图片描述

    送佛送到西

    知道很多小伙伴,比较心急,就想直接上手写内核
    还有的小伙伴,Linux玩得不熟,但也有一颗写操作系统的心
    ……

    综上,我把我的环境打包成了镜像,你下载过去,解压后就能直接运行起来

    关注公众号【硬核子牙】回复【开发操作系统环境一条龙】获取
    解压后,双击这个文件即可自动启动VMware
    在这里插入图片描述

    虚拟机密码:123qwer
    给力否?值得一赞否?
    忘了提了,开发操作系统需要的语言基础:汇编、C语言。进入保护模式之前,就是在CPU的保护模式下,会汇编就可以了。所以这个环境,可以作为你学汇编的环境

    结语

    我是子牙老师,喜欢钻研底层,深入研究Windows、Linux内核、JVM。如果你也喜欢研究底层,欢迎关注我的公众号【硬核子牙

  • 相关阅读:
    文本挖掘入门
    云原生Kubernetes:K8S存储卷
    android脱壳第二发:grpc-dumpdex加修复
    ESP8266-Arduino编程实例-LED点阵驱动(基于Max7219)
    1337_树莓派上安装docker
    Orange Pi i96 入手填坑问题(2)-wifi网卡MAC地址随机变化和串口粘贴死机问题
    10大python加速技巧
    5-管线‘|‘常用指令(筛选、排序、tab转空格、重定向、切分文件等)
    JSON.stringify()的深入学习和理解
    提升网络训练的准确率
  • 原文地址:https://blog.csdn.net/b98982016/article/details/126932238