操作系统实验(1:操作系统的引导)

实验目的

建立对操作系统引导过程的深入认识;
掌握操作系统的基本开发过程;
能对操作系统进行简单的控制,揭开操作系统的神秘面纱。

实验内容

此次实验的基本内容是:编写一个放入引导扇区的操作系统引导程序bootsect.s,和一个进入保护模式前的设置程序setup.s,并将该bootsect.ssetup.s编译后在Bochs中运行,进行实验。

编写的引导程序bootsect.ssetup.s主要完成如下三个部分的功能:

bootsect.s能在屏幕上打印一段提示信息“XXX is booting…”,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等(实验者也可以做一个特色logo并显示在屏幕上,以表示自己操作系统的与众不同,当然这要花费一定的时间,也不属于加分内容,鼓励大家在将来有时间的时候做一下。)
bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s向屏幕输出一行“Now we are in SETUP”。
setup.s能获取基本的硬件参数(如内存参数、显卡参数、硬盘参数等,在本实验中只要获取一个参数就取分,获取多个参数不加分,但后面的实验中会用到某些参数,如实验六的终端设备需要显卡的参数,所以在将来需要的时候能再回来修改),将这些参数放在内存的特定地址,留着将来使用,并输出到屏幕上。

以上截取自实验指导书,下面开始实验:

1.修改bootsect.s

要求是输出“XXX is booting…”,就只要改其中的一行代码:

msg1:
	.byte 13,10
	.ascii "Wenix is booting..."
	.byte 13,10,13,10

编译,先在终端进入Linux-0.11/boot目录下,然后输入如下命令生成新的Image

as86 -0 -a -o bootsect.o bootsect.s
ld86 -0 -s -o bootsect bootsect.o

然后把生成的Image复制到Linux-0.11,替换原文件,接着返回上层oslab目录,输入./run运行系统,得到结果如下:
在这里插入图片描述

2.修改setup.s

需要输出一行字符:“Now we are in SETUP”以及硬件参数。这里参考这位大神的报告:wangyi_lin。因为说实话我不会做(这可太真实了。。。我是笑不出来)。

修改完后切到linux-0.11目录,再次编译:
$ make BootImage

这时候报错了,原因是在build.c中需要传入system文件名这个参数,我们这里不需要,所以要对build.c做一下修改,找到如下代码:

if ((id=open(argv[3],O_RDONLY,0))<0)
		die("Unable to open 'system'");

注释掉就行了。
再次编译并运行,结果如下:
在这里插入图片描述
结束撒花。

发布了24 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/realfancy/article/details/88757335
今日推荐