ubuntu中,在qemu方式运行xinu

本文记录了一位初次接触Xinu操作系统的实验者,详细描述了从安装Ubuntu、配置qemu、工具链安装到编译修复错误的全过程,重点突出了对新手友好的步骤和遇到的问题解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

操作系统设计很头疼,本来不想学的,后来学分不够,只好来上。
这次的实验拖了一个星期才动手。因为从没学过什么xinu,一听就很头疼。
而且我还不想装虚拟机。不过搞一搞也快。

……

1.安装Ubuntu系统

之前有个实验是在virtualbox上做的,所以我就在上面装ubuntu了。
这个过程网上搜搜都有,我就不说了。
请添加图片描述

2.进行qemu,make安装

sudo apt install qemu-system-x86
sudo apt install make(如果我没记错)
在在这里插入图片描述
(这图差不多就是install 样子,原来的忘截了,随便发一张凑凑样子)

这是后边编译,启动要用的。

3.进行工具链安装(不安装也可)

sudo add-apt-repository ppa :team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded

老师发的实验要求说有这步,但我运行的时候出错了,没做。
到后来发现这步完全不用。
您要是有时间,那做做也无妨。

4.安装编译c工具

sudo apt-get install gcc bison flex
在这里插入图片描述

5.从github上clone源代码

git clone https://github.com/xinu-os/xinu

在这里插入图片描述
在这里插入图片描述

6.修改文件

修改格式就是linux的patch

解决编译器 undefined reference to __stack_chk_fail 报错

— a/compile/Makefile
+++ b/compile/Makefile
@@ -24,7 +24,7 @@ TOPDIR := …
# Set the C compilation flags common to all Embedded Xinu platforms.
# platformVars can add more flags if desired.
-CFLAGS :=
+CFLAGS := -fno-stack-protector
在这里插入图片描述
修正 64 位环境下的链接问题

— a/compile/platforms/x86/platformVars
+++ b/compile/platforms/x86/platformVars
@@ -10,6 +10,7 @@ PLATFORM_NAME := Intel x86
# Add flags to compile 32 bit code
CFLAGS += -m32
ASFLAGS += --32
+LDFLAGS += -melf_i386
在这里插入图片描述
修改x86对应启动代码, 支持 Multiboot 规范, 从而可以直接由 QEMU 启动

— a/loader/platforms/x86/start.S
+++ b/loader/platforms/x86/start.S
@@ -10,6 +10,8 @@
.extern startup
.extern _end

+#define MULTIBOOT_HEADER_MAGIC 0x1BADB002
+#define MULTIBOOT_HEADER_FLAGS 0x00000003
_start:
/* disable any interrupts from coming in */
cli
@@ -22,3 +24,9 @@ _start:
movl %eax, %esp # set stack pointer

jmp startup

/* Enable multiboot support */
.align 4
.long MULTIBOOT_HEADER_MAGIC
.long MULTIBOOT_HEADER_FLAGS
.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
在这里插入图片描述

7.编译执行

进入 compile 目录, 执行 make;qemu-system-i386 -kernel xinu.elf -nographic, 启动出现xinu的banner和xsh的提示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值