Linux0.11学习研究
来源:互联网 发布:apache教程 编辑:程序博客网 时间:2024/05/08 04:07
Linux0.11 环境搭建:
我参考的是这个博客:http://blog.csdn.net/u014688145/article/details/50575588
下载的文件:点击打开链接http://oldlinux.org/Linux.old/bochs/linux-0.11-devel-040329.zip
2、解压Linux-0.11-devel-040329.zip,目录结构如下图所示:
这里真正使用到的文件为:Bochs-2.1.1.exe 、bochsrc-hd.bxrc、bootimage-0.11、bootimage-0.11-hd、hdc-0.11.img
3、点击Bochs-2.1.1.exe进行安装。
4、安装完毕后,将所有linux-0.11-devel-040329下的文件,拷贝到刚才安装bochs下的根目录。原目录如下:
拷贝过后目录为:
5、拷贝完成后,运行bochsrc-hd.bxrc,若安装成功,打开即能见到如下界面:
这已经是x86PC模拟器上,搭建完成的Linux操作系统。建立linux操作平台命令,就能操作Linux。由于学习操作系统需要,我们需要在Linux下,编译操作系统以及完成简单的源码修改,从而达到理解Linux内核的能力。接下来,主要演示Linux内核源码的修改,以及内核的编译过程。由于该Linux版本的原因,我们还需要对代码做出调整,方能成功编译。
内核编译过程:
1、进入/usr/src/linux 目录下,键入命令 cd ../src/linux ,如下图所示:
2、进行编译,键入命令 make clean 和 make后。
若出现如下所示错误:gcc-cc1: Invalid option “string-insns”。这是需将Linux目录下的Makefile文件中的-mstring-insns参数去掉。除此之外,每个子目录fs,lib,kernel以及kernel目录下的三个驱动程序子目录(math, blk_drv, chr_drv)的Makefike当中的-mstring-insns参数去除掉。此处只演示根目录下的Makefile文件修改。
3、依次修改:/linux/Makefile、/linux/fs/Makefile、/linux/lib/Makefile、
/linux/kernel/Makefile、/linux/kernel/math/Makefile、/linux/kernel/blk_drv/Makefile、/linux/kernel/chr_drv/Makefile文件。linux目录下,键入:vi Makefile。如下图所示:
找到文件中的-mstring-insns 参数,并删去保存。
4、到/usr/local/bin中找到文件ar,并把ar 改名为gar,键入命令:mv ar gar。如下图所示:
5、回到linux 目录下,重新键入make clean以及 make,完成内核的编译链接。
出现上图提示,即表面程序编译成功。完成编译后,便可以开始修改内核源码,从而达到扩展操作系统功能以及学习操作系统的目的。这里,我们简单修改下,linux操作系统开机启动项bootsect.s源码,让开机后输出个性化的字符串。
6、进入/usr/src/linux/boot目录,修改bootsect.s源码,保存并退出。
[plain] view plain copy! Print some inane message mov ah,#0x03 ! read cursor pos xor bh,bh int 0x10 mov cx,#47 //这里表示的显示的字符个数mov bx,#0x0007 ! page 0, attribute 7 (normal) mov bp,#msg1 mov ax,#0x1301 ! write string, move cursor int 0x10 msg1: .byte 13,10 .ascii "Loading system ...MGl the very nubility man" //这里写的是要显示的字符内容.byte 13,10,13,10 .org 508
7、修改完成后,在linux目录下,重新键入make命令,完成编译。
8、make成功后生成引导启动映象文件Image。若需要输出这个Image文件, 可以首先备份bootimage-0.11-hd文件, 然后使用下面命令就会把bootimage-0.11-hd替换成新的引导启动文件,键入命令:dd bs=8192 if=Image of=/dev/fd0。如下图所示:
9点击reset重启Linux操作系统。如下图所示:
这里多谢Demon-初来驾到帖子的帮助,让我用bochs搭建了Linux0.11的环境,开始了Linux0.11源代码的阅读,3Q。
- Linux0.11学习研究
- linux0.11源码学习
- linux0.11学习全记录
- Linux0.11学习记录
- linux0.11源码研究---exit.c
- linux0.11文件系统学习小结
- LINUX0.11 main 函数中traps_init()作用研究
- Linux0.11 引导程序Boot学习
- linux0.11内核源代码学习-引导启动
- linux0.11学习1之bootsect
- linux0.11学习2之setup
- linux0.11学习3之head
- linux0.11源码学习--setup.s
- linux0.11学习笔记(1)
- linux0.11学习笔记(2)
- linux0.11
- linux0.11源码学习——bootsect.s学习
- 从linux0.11学习linux内核设计之开始
- 阿里笔试题之深度遍历dom树
- Face++的技术面经历
- POJ 3174 Alignment of the Planets 笔记
- springmvc上传图片并显示图片--支持多图片上传
- Linux 下man 命令的使用
- Linux0.11学习研究
- jzoj. 3838. 【NOIP2014模拟9.14】Super Big Stupid Cross
- Vue学习之环境构建--------vue-cli构建vue项目
- JAVAEye的博客地址
- 泛型测试
- 整齐的表格
- 进制
- java判断完全平方数
- 读书笔记-真实的诸葛亮-1