【项目实战】如何写一个操作系统?

【项目实战】如何写一个操作系统?

目录

作者:爱写代码的刚子

时间:2024.6.16

前言:本篇博客将会带着大家参与开源项目How to Make a Computer Operating System in C++

项目地址

本篇博客将会先教大家如何配置这个环境,毕竟自己也是折腾了几天,在过程中有什么问题可以向作者提出

前言

由于该项目为早期项目,使用了virtualbox作为虚拟机并使用了lucid系统进行编译,版本古老,针对intel芯片的Mac以及window和Linux可以参与该项目中,但是目前virtualbox对于M芯片的Mac支持的并不好,所以不推荐M系列的Mac参与该项目。

下载32位的lucid系统

使用virtualbox下载lucid系统

virtualbox需要自己去下载系统来完成安装
下载地址

安装完成系统后我们先熟悉一下virtualbox软件:

  • 学习如何使用共享文件夹将文件上传到虚拟机(网上有一些教程)

如果有失败的情况说明要安装增强功能,找到增强功能点击安装即可(作者是每次开机都安装来保证成功)

解决旧版系统下载源失效的问题

刚开始启动lucid系统可能会没有vim等基础软件,所以我们需要手动换源

可以先尝试手动更新下载源:vim /etc/apt/sources.list手动换源

由于作者没有成功所以自己去搜索下载源,地址

这里有gcc编译器源

我们需要找到g++,gcc,nasm的下载源进行安装(这个可能要自己去找)

利用共享文件夹将下载的.deb文件上传系统中

将下载的文件拖放进共享文件夹即可

在当前目录使用命令sudo dpkg -i .deb安装.deb文件

如何解决下载了g++但是不能使用的问题?

没有建立软连接,找到g++目录使用ln命令建立软连接即可。

编译系统源文件

下载开源项目的代码,拖入共享文件夹

cd src/kernel

进入后使用make all指令

很不幸,你可能会看到有关-m32、-o等报错

解决:

进入/src/kernel/arch/x86目录,找到config.make文件,编辑它

找到它们并去掉它(是因为高版本的g++不在支持这些选项)

同时最好将库文件stdarg.h手动放到相应的目录有可能编译时找不到相应的库文件

如果你编译完成了就可以进行下一步了

配置grub和qemu

编译完成后由于找不到qemu和grub的下载源,于是作者更换成了Debian系统下载了相应版本的qemu和grub,然后更改了qemu.sh和diskimage.sh脚本,换成相应的qemu版本,注意脚本中的文件存放位置,然后就可以使用make run运行了

以我自己的环境举例:

cpp 复制代码
sudo grub-install --target=arm64-efi --efi-directory=/boot/efi --bootloader-id=grub --removable
sudo apt-get install qemu-system-aarch64

项目拓展

完善这个项目即可(项目中也存在一些bug,需要自己去发现)

相关推荐
忆挽篱笙歌36 分钟前
makefil
linux·运维·服务器
菜_小_白2 小时前
codex
linux·vscode·ai
zhangrelay2 小时前
用ROS2Lyrical实验报告册思路重做蓝桥云课ROS1实验并改进
linux·笔记·学习·ubuntu·机器人
林兴洋2 小时前
linux-mtr命令-ping和traceroute的能力合二为一
linux
OsDepK2 小时前
OSMDE_v1.9.0已加入FTP与shell功能
linux·运维·服务器
硅基手札3 小时前
【Linux内核专栏 11】驱动框架:platform / char / misc / 设备树
linux·运维·服务器
倒头就睡的小比特3 小时前
Linux基础指令初步认识
linux
Starry-sky(jing)3 小时前
watchdog: BUG: soft lockup - CPU#3 stuck for 22s! 怎么排查——从寄存器 dump 到自旋锁争用根因
linux·内核·服务器运维·soft lockup·性能排查
DongQiShanRen3 小时前
裁决台账双向互校(上):名册与实物的第一道对账
java·linux·运维·数据库·人工智能·自然语言处理·数据挖掘
ShineWinsu3 小时前
对于Redis:AOF持久化的解析
linux·数据库·redis·缓存·面试·持久化·aof