手把手教你用C++搭建操作系统

Jenny@FinTech社区 2021-04-17 09:06:34
手把手教你用C++搭建操作系统

一、如何为开发操作系统做准备?

首先,必须了解所有编程语言,例如指针,函数(针对C++);其次,必须对汇编语言有所了解。

二、开发操作系统需要什么工具?

1. 汇编器:

汇编器获取汇编代码,并为您提供低级输出,例如包含CPU寄存器上的控件的对象。本文要使用的汇编程序是nasm(netwide汇编程序),可以从http://nasm.us下载。

2.交叉编译器:


为了开发操作系统,必须具有交叉编译器,因为您必须针对其可执行格式来编译内核。在这里用gcc(gnu编译器集合),您可以从http://gcc.gnu.org/下载。

3.链接器:

链接器获取您的对象并将其链接到getter,在这里用gnu binutils,可以从http://gnu.org/software/binutils下载

4.虚拟机:

为了测试操作系统,必须有一个vm(虚拟机),但这不是必需的,在这里使用virtualbox,可以从http://virtualbox.org/下载。

三、 开始之前的注意事项

1.在开发操作系统时,不能使用<iostream>,<fstream>,<memory>,<cstdio>,<cstdlib>,<windows.h>,<unistd.h>和所有平台API's,必须自己创建所有这些东西。

2.必须非常非常小心

在开发时,您可以掌控一切,因此,您可以销毁一个或一些或所有硬件。在这种情况下,我建议使用虚拟机来测试您的操作系统,而不是多次重新启动。

四、 引导程序


引导加载程序是一堆用汇编语言编写的代码,必须为512个byets(1个扇区),它加载您的操作系统的内核。我们跳过本节,使用grub作为bootloader,您可以从http://gnu.org/software/grub下载grub源代码。或者实际上,您也许想要编译软盘:在Google中搜索将对您有所帮助。

五、 一个简单的内核

我们要开发一个操作系统,因此,我们必须自己创建功能。

首先,我们创建一个包含以下内容的文件boot.asm:

代码链接:
cpp.sh/6zu
cpp.sh/9uw

六、 链接描述文件

创建具有以下内容的文件:linker.ld




七、 如何编译

转到shell(在Windows上需要cygwin),输入以下命令:


恭喜!
您的第一个操作系统已成功编译!
现在您可以使用grub-mkrescue创建图像:
创建目录:iso
在该目录中,创建另一个目录:boot,然后在引导目录中,创建目录:grub,然后在grub目录中创建文件:grub.cfg,其中包含以下内容(不要在新行中添加大括号):


然后将您的内核(kern)复制到iso / boot目录并再次运行您的shell:
切换到内核的主目录并输入:


现在您可以从第一个操作系统启动并享受乐趣:一个没有任何内容的简单内核。
...全文
4420 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛童子 2021-04-17
  • 打赏
  • 举报
回复
搬来小板凳,围观一阵。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧