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

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

目录

作者:爱写代码的刚子

时间: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,需要自己去发现)

相关推荐
知白守黑26718 分钟前
Linux磁盘阵列
linux·运维·服务器
维尔切1 小时前
Linux中基于Centos7使用lamp架构搭建个人论坛(wordpress)
linux·运维·架构
tan77º2 小时前
【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
linux·网络·分布式·网络协议·tcp/ip·rpc·json
正在努力的小河5 小时前
Linux设备树简介
linux·运维·服务器
荣光波比5 小时前
Linux(十一)——LVM磁盘配额整理
linux·运维·云计算
LLLLYYYRRRRRTT5 小时前
WordPress (LNMP 架构) 一键部署 Playbook
linux·架构·ansible·mariadb
轻松Ai享生活6 小时前
crash 进程分析流程图
linux
大路谈数字化7 小时前
Centos中内存CPU硬盘的查询
linux·运维·centos
luoqice8 小时前
linux下查看 UDP Server 端口的启用情况
linux
倔强的石头_9 小时前
【Linux指南】动静态库与链接机制:从原理到实践
linux