Linux Device Driver Edition 3 (第一课 linux 源码树)

   刚开始学学习LDD3,根据网上教程安装了2次linux源码树,第一次失败了,Ubuntu无法启动。第二次找到了问题,安装成功,写下次文章记录安装步骤。

安装环境:

虚拟机:VMware 14.0.0

系统:Ubuntu 12.04

1、使用虚拟机安装系统Ubuntu 12.04 这个很简单,网上教程很多。用时大约1小时。

2、准备linux源码文件:www.kernel.org可下载。

2.下载Linux的源码包www.kernel.org

我找到V2.6的下载地址是https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/

在这个里面选择一个版本下载,我下载的文件是:linux-2.6.38.tar.bz2

 

3、把文件复制到/usr/src/目录下 然后解压文件

   

name@Ubuntu:sudo tar -jxvf linux-2.6.38.bz2

4、编译内核。

name@Ubuntu:cd /usr/src/linux-2.6.38
name@Ubuntu:sudo make

 

编译错误一:

这时候可能会提示缺少config文件,可以将系统里的.config文件复制到2.6.38文件里。

#查看当前linux内核版本
name@Ubuntu:uname -a
#输出
name ubuntu 3.2.0.23 ...........
#内核版本为 3.2.0.23

通过uname-a 命令可查询当前的内核版本为3.2.0.24,然后进入/usr/src/linux-headers-3.2.0.23-generic-pae,把该路径下的.config文件复制到我们新的内核文件夹根目录下 cp /usr/src/linux-headers-3.2.0.23-generic-pae/.config /usr/src/linux-2.6.38

#复制.config文件至新内核根目录
#本机原先的内核源码目录 linux-headers-3.2.0.23-generic-pae 
#新内核源码目录/usr/src/linux-2.6.38

cp /usr/src/linux-headers-3.2.0.23-generic-pae/.config /usr/src/linux-2.6.38

这时,再使用make命令(sudo make)

编译错误二:

该版本可能会提示错误

arch/x86/kernel/entry_32.S: Assemblermessages:

arch/x86/kernel/entry_32.S:1422: Error:.size expression does not

evaluate to a constant make[3]: ***[arch/x86/kernel/entry_32.o]

这个网上有解决办法。参照https://lkml.org/lkml/2011/3/20/49解决即可,当时没看明白。后来才反应过来 这时打补丁啊。

手动修改一下:

#打开文件entry_32.S
sudo gedit /usr/src/linux-2.6.38/arch/x86/kernel/entry_32.S
#在打开的文件中搜索END(ret_from_exception) 修改成 END(resume_userspace)
#在打开的文件中搜索END(apf_page_fault) 修改成 END(async_page_fault)
保存,使用make命令(sudo make)

等个两三分钟 没有报错,基本就没问题了,再等个1个小时就编译完了。

#(编译镜像)
sudo make bzImage 
#(编译模块)
sudo make modules
#(安装模块)
#sudo make modules_install
#(安装)
#sudo make install

#进入目录/boot
cd /boot
#创建文件
sudo mkinitramfs -o /boot/initrd.img-2.6.38.4 /lib/modules/2.6.38.4/

#编辑grub.cfg文件
sudo gedit /boot/grub/grub.cfg
#搜索关键字menuentry 
修改如下。

把原来的linux /boot/vmlinuz-3.2.0-23-generic-pae 修改成 linux /boot/vmliuz-2.6.38.
把原来的initrd /boot/initrd.img-3.2.0-23-generic-pae修改成initrd /boot/initrd.img-2.6.38
修改前 修改后见下图

修改前(/boot/grub/grub.cfg):

修改后(/boot/grub/grub.cfg):

 

重启系统

reboot
#重启后 使用命令查看当前内核
sudo uname -a

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值