ldd3(《linux设备驱动程序》)里面使用的正是Linux2.6.10内核,如果内核不同,使用课本里的代码会出现各种问题,所以搭建与课本一样内核版本的环境,用来学习。
尝试过使用ubuntu14.04、fedora21直接编译2.6.10内核,结果都是gcc版本太高,尝试过给gcc降级,各种失败。
尝试在ubuntu9.04 ,10.04编译他们各自的内核版本,构建内核源码树,结果Ldd3给的代码会报错(虽然都是2.6.x)。
在fedora3上面编译内核成功,构建内核树成功,结果好像是找不到insmod这个命令就放弃了(忘了)。
最后在ubuntu5.04上成功编译内核、构建源码树,并且成功编译ldd3源码。
环境:vmware10+ubuntu5.04(32bit)+gcc3.3.5
一、安装ubuntu5.04(32bit)
vmware10虚拟机下安装ubuntu5.04
1、下载5.04安装包:
http://old-releases.ubuntu.com/releases/hoary/ubuntu-5.04-install-i386.iso
2、使用vmware创建虚拟机(需要设置一个地方)
创建虚拟机--》典型--》选择下载好的iso文件-》然后根据需要设置,下一步,直到出现“已选择好创建虚拟机”这个页面,选择“自定义硬件”,选中“CD/DVD”,点旁边的“高级”,将“虚拟设备节点”改成“IDE”,保存。
- 1
只要设置这个就可以了,接着让它慢慢装吧。在装的过程中时不时会询问你一些问题(不够智能),根据需要设置就好了。
3、安装gcc
光盘里就有gcc,版本是3.3.5,用这个版本就可以了,版本太高编译内核会出问题。
系统默认的源来自安装盘,所以不用更新原,直接输入:
#apt-get install gcc
- 1
此时,要确保CD/DVD属于“已连接”状态,并且“使用ISO镜像文件”,选中的就是上面的安装包。不然会提示找不到/cdrom。(我这边是,重启之后,“已连接”消失,所以就在“硬件”那里找到CD/DVD,把“已连接”打钩就可以了)
二、编译内核
1、下载源码:linux-2.6.10.tar.gz
https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.gz
2、解压到/usr/src
tar zxvf linux-2.6.10.tar.gz
- 1
3、编译、安装
cd linux-2.6.10
make oldconfig
make
make bzImage
make modules
make modules_install
make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4、制作initrd.img文件
mkinitrd -o /boot/initrd.img-2.6.10 2.6.10
- 1
这里末尾的2.6.10表示/lib/modules下面的一个目录(也就是版本号)
5、修改/boot/grub/menu.lst
里面已经有几个系统做好的,照着制作就可以了,这样开机就有选项可以来选择
可以把timeout的值改大一些,开机时候选择的时间比较长。
- 1
- 2
设置完成,重启。
重启,按ESC会让你选择要使用的版本。
三、验证
输入uname -r 查看版本。正是ldd3需要的2.6.10。
- 1
附录:
这个网站提供了各种旧版本ubuntu:
http://old-releases.ubuntu.com/releases/