ubuntu中,在qemu方式运行xinu

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

……

1.安装Ubuntu系统

之前有个实验是在virtualbox上做的,所以我就在上面装ubuntu了。
这个过程网上搜搜都有,我就不说了。
ubuntu中,在qemu方式运行xinu_第1张图片

2.进行qemu,make安装

sudo apt install qemu-system-x86
sudo apt install make(如果我没记错)
ubuntu中,在qemu方式运行xinu_第2张图片
(这图差不多就是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
ubuntu中,在qemu方式运行xinu_第3张图片

5.从github上clone源代码

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

ubuntu中,在qemu方式运行xinu_第4张图片
ubuntu中,在qemu方式运行xinu_第5张图片

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
ubuntu中,在qemu方式运行xinu_第6张图片
修正 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
ubuntu中,在qemu方式运行xinu_第7张图片
修改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)
ubuntu中,在qemu方式运行xinu_第8张图片

7.编译执行

进入 compile 目录, 执行 make;qemu-system-i386 -kernel xinu.elf -nographic, 启动出现xinu的banner和xsh的提示
ubuntu中,在qemu方式运行xinu_第9张图片
ubuntu中,在qemu方式运行xinu_第10张图片
ubuntu中,在qemu方式运行xinu_第11张图片
完成

你可能感兴趣的:(ubuntu,linux)