Linux内核编译及运行

Linux内核编译及运行

一、实验目的

  1. 选择合适的平台工具,搭建环境,对Linux0.11内核进行编译,并在模拟器中运行。
  2. 通过自主学习,解决内核编译运行中的问题。

二、平台工具

平台开发需要的工具:

平台工具简介:

  • VMware Workstation Pro 17是一款功能强大的虚拟化软件,由VMware公司开发和发布。它允许用户在单个物理计算机上创建和运行多个虚拟机,每个虚拟机可以运行不同的操作系统,如Windows、Linux、macOS等。

    该软件支持各种功能,如快照和恢复、团队协作、虚拟网络配置等。通过创建快照,用户可以保存当前虚拟机状态,并随时恢复到该状态,方便进行软件测试、调试等工作。团队协作功能允许多个用户同时访问和管理虚拟机,提高工作效率。

  • Ubuntu 22.04 作为开源免费的Linux发行版,Ubuntu以其简洁、稳定和易用的特点而备受欢迎。提供了丰富的开发工具和开发环境。它包含了多个编程语言和开发平台,如Python、Java、C/C++等,方便用户进行软件开发、编程和调试。此外,它还支持容器技术,如Docker和Kubernetes,方便用户进行应用程序的部署和管理。

三、问题及解决方法

实验采用VM运行Ubuntu版本的Linux系统,系统未装入任何命令工具包,运行时会遇到各种需要安装配置过程。

需要注意的是后面的所有方法执行都是切换在root用户权限下执行的命令。

配置安装gcc环境

在执行实验命令之前需要先安装gcc环境,实验提供了gcc-3.4.tar.gz的压缩包。进行解压,进入amd64目录,安装里面的所有包。

cd amd64
dpkg -i *.deb

这时可能会出现如下问题:

在这里插入图片描述

这些依赖于binuitls包,而新安装的binutils的版本较低,这里我们需要先将binutils包进行一个更新。

注意出现这个错误,要在在执行dpkg -i *.deb之前的命令执行,否则在执行下面语句之前也会出现错误。

apt upgrade binutils

更新好binutils包后,再次执行上面命令dpkg -i *.deb

可以来验证gcc是否安装好:

gcc-3.4 -v

配置编译环境

在进入linux-0.11执行make可能出现以下问题:

在这里插入图片描述

需要安装make命令:

apt install make

继续执行make命令,还有可能出现以下问题:

在这里插入图片描述

这里缺少编译器,需要安装编译环境:

apt-cache search as86 ld86
apt install bin86
apt install libc6-dev-i386

编译运行

在进入oslab目录执行./run命令,会有以下错误:

在这里插入图片描述

需要安装以下的依赖库:

sudo apt install libsm6:i386
sudo apt install libx11-6:i386
sudo apt install libxpm4:i386

四、实验结果及建议

执行./run命令后,弹出以下页面,执行成功:

下面将进入linux-0.11启动文件系统镜像文件中修改文件,进行文件交换。

cd ~/oslab
./mount-hdc
cd /hdc
gedit usr/root/EX01.txt

在这里插入图片描述

退回到oslab目录下,执行语句

umount hdc

再次执行./run指令进入bochs界面,查看文件是否挂载成功。


如图所示,文件挂载成功。

本次实验主要是对系统环境变量进行安装,对linux-0.11内核系统的镜像系统文件进行文件挂载操作,简单熟悉一些基本linux操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文注释可成功编译运行Linux0.11+Bochs2.62实验环境说明 此注释以网上获得的“linux文注释的0.11版本”为基础,对照赵炯博士《Linux内核完全注释(0.11) 》V3.0版(http://oldlinux.org/download/clk011c-3.0.pdf)编辑而成。作为对赵博士感谢,以及对Linux初学者的回馈,特发布在CSDN上。 此注释可以在http://oldlinux.org/Linux.old/bochs/提供的Linux-0.11-devel-XXXXXX实验环境下正确编译成功,使用:"make disk"命令重启Bochs虚拟机后,新编译源码直接生效,便于学习者直接阅读源码,直接进行实验。 注意事项: 1、为了使注释版与实验环境上的Linux0.11内核保持一致,达到对应文件可以互换的目的,与Linux0.11原始版本相比,加入了15个系统调用函数(参见include/Linux/sys.h第78-92行。赵博士原书没有这部分注释,我不敢班门弄斧),其它相关的文件加入了相应的定义。新加入的代码只有函数体定义,没有具体实现,对其它原始代码没有改变、没有影响。 2、键盘定义改成了美式键盘(原始代码是芬兰键盘,会导致个别键出问题,调试的时候我曾被迷糊了好久,以为自己把程序搞乱了)。 3、把网上VC版的注释统一改成了 “/* */” 格式的注释。经测试,在Linux0.11实验环境(gcc1.40),只有标准C注释语法可以正常编译。 4、由于《Linux内核完全注释(0.11) 》原书版本更新的原因,注释提到的图、表可能与V3.0版书不一致。 5、由于代码加入注释,代码行号发生变化,注释提到的代码行号会出现不一致,建议对照3.0版查询对应内容。 6、实验方法:请先安装附带的Bochs2.62版安装包,双击Test.bxrc即可启动实验系统,执行命令:sh t,即可完成对linuxcn的编译。 7、linux目录是此实验系统/usr/src/linux提取出来的不含文注释的linux0.11源码(此版本比原始的0.11版多15个系统调用函数),linuxcn是加入了文注释的源码。 8、diskb.img是实验系统与Windows环境进行文件交换的1.44M软盘映像,执行脚本命令"sh t"时会自动从此映像读取linux.tar、linuxcn.tar包,解包并编译编译结果在:/usr/root/zw/linuxcn目录下。为了方便文件交换,建议使用7zip为压缩/解压缩工具(7zip可以直接生成tar包),用WinImage实现Windows环境与软件映像交换文件。 9、实验系统下 .profile加入了几个命令,请读者注意。 10、若实验环境的启动盘被破坏,请用压缩包的bootimage-0.11-hd覆盖对应文件即可。 11、若实验环境的要命文件系统被破坏,请用压缩包的hdc-0.11-new.img覆盖对应文件即可。 2014-5-4 cyfx2288

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值