linux 内核编译
来源:互联网 发布:剑网3苏曼莎捏脸数据 编辑:程序博客网 时间:2024/04/29 16:54
linux内核编程4部曲之一:linux内核编译(2.6.12版本)图文解说
linux内核编程4部曲之二:增加linux内核系统调用
linux内核编程4部曲之三:修改O(1)调度算法
linux内核编程4部曲之四:模块编程
一、编译环境
在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:
在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:
在这里需要注意的是:
A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。
B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:
由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。
把这几个驱动内部的选项全部改为[*]:
六、编译内核
对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。
七、安装内核
编译完成之后,我们需要安装内核,主要分为如下几步:
1)、安装模块
安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/modules/内核版本号这个目录下,make modules_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。
2)、拷贝bzImage文件
bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。
3)、制作initrd文件
initrd文件命名为initrd.img-2.6.12
4)、修改grub启动项
要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:
5)重启
不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。
- Linux内核:编译内核
- 【LINUX内核】LINUX内核编译
- Android编译 & Linux内核编译
- linux内核编译kernel编译
- Linux编译内核详解
- Linux编译内核详解
- linux内核编译
- 菜鸟编译Linux内核
- linux内核编译详解
- LINUX内核编译(ZT)
- Linux 内核编译 全功略
- 第一次编译linux内核
- linux内核编译步骤
- Linux内核编译步骤
- Linux 内核编译详解
- Linux内核编译详解
- Linux内核编译
- linux内核编译
- 环状序列
- 图片封装下载----异步代理下载
- 接口和抽象类de区别
- IOS-通过自定义iCarousel来高仿土巴兔选择装修风格效果(中间选中项放大)
- arcmap制作tpk切片文件形成离线地图包
- linux 内核编译
- 《数学之美》读后感
- SSH之注册校验
- 字符集和字符编码详解
- 后缀树算法
- Spring @Pointcut的用法
- JAVA中的数据存储(堆及堆栈)
- IOS开发UI篇—UIScrollView控件实现图片缩放功能
- symfony权威指南(1)symfony的安装