个人主页:Sarapines Programmer
系列专栏:《操作系统实验室》
少年有梦不应止于心动,更要付诸行动。
目录结构
1. 操作系统实验之编写内核
1.1 实验目的
1.2 实验内容
1.3 实验步骤
1.4 实验过程
1.5 心得体会
2. 致读者
后续实验:操作系统实验之添加系统调用
专栏地址:linux操作系统实验(万字详解!!!)
实验步骤如下:
1.将U盘挂载到redhat虚拟机如图3-1至图3-2.
2.使用cd进入usr/src目录,使用ls查看其下辖文件如图3-3.
3.输入fdisk -l查看u盘信息显示信息U盘名字:/dev/sdb1,文件格式: HPFS/NTFS如图3-4.
4.创建挂载目录uuudisk,输入输入 mount –tvfat /dev/sdb1 /mnt/uuudisk此时U盘的内容可以在/mnt/uuudisk下进行读写如图3-5.
5.进入/mnt/uuudisk并且输入ls查看下辖文件信息如图3-6.
6.将linux-2.4.22.tar.gz文件复制到/usr/src路径下,输入cp linux-2.4.22.tar.gz /usr/src并cd /usr/src进入/usr/src路径如图3-7.
7.解压缩这个文件tar xzvf linux*22*并ls查看是否解压成功如图3-8至如图3-9.
8.输入cd *22并输入ls查看如图3-10.
9.输入vi Makefile查看文件源码如图3-11至如图3-12.
10.U盘使用完毕,输入 umount /dev/sdb1如图3-13.
11.复制配置文件输入cp /boot/config-2.4.20-8 .config如图3-14.
12.输入make menuconfig,等待出现交互界面如图3-15至3-16.
13.退出该界面如图3-17,输入make clean清除上次编译结果如图3-18.
14.依次输入如图3-19至3-29.
make dep(等待系统对代码进行预处理) make bzImage(开始正式编译,时间很久需要等待) make modules(编译模块) make modules_install(安装模块) cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22 cp .config /boot/config-2.4.22 cp System.map /boot/System.map-2.4.22 mkinitrd /boot/initrd-2.4.22.img 2.4.22 cd /boot rm -f System.map vmlinuz ln -s System.map-2.4.22 System.map ln -s vmlinuz-2.4.22 vmlinuz
15.修改配置文件GRUB:/boot/grub/menu.lst如图3-30.
16.输入make -install如图3-31图3-32.
17.输入vi /boot/grub/menu.lst并修改如图3-33图3-34.
18.输入reboot重启如图3-35.
19.选择新内核如图3-36.
20.输入cat /proc/version显示为2.4.22版本如图3-37.
图3-1
图3-2
图3-3
图3-4
图3-5
图3-6
图3-7
图3-8
图3-9
图3-10
图3-11
图3-12
取出U盘
图3-13
图3-14
图3-15
图3-16
图3-17
图3-18
图3-19
图3-20
图3-21
编译完成(花很久…)
图3-22
图3-23
图3-24
图3-25
图3-26
图3-27
图3-28
图3-29
图3-30
图3-31
图3-32
图3-33
图3-34
输入reboot
图3-35
图3-36
图3-37
此次实验成功在虚拟机读取U盘内容并编写了内核,在此过程中遇到了很多问题,比如读取U盘时会显示U盘未格式化,这里的U盘换了三个然后将里面的内容都删除进行格式化都没有用,最后借别人U盘得以解决。在编写内核重启时未命名自己的名字而重新又做了一遍,所以在使用reboot指令在选择内核页面会出现3个内核,在使用make modules编译内核模块以及make modules_install安装内核花了大量时间,这次实验直到凌晨一点半才得以解决,在此过程中也得以收获满满。
纸上得来终觉浅,绝知此事要躬行