编译Linux内核2.6.35.6实践
编译Linux内核2.6.35.6实践
1. 安装Ubuntu 8.042. 从www.kernel.org下载Linux内核源码,我下的版本是2.6.35.6
将linux-2.6.35.6.tar.bz2移到/usr/src目录下,在这里要用root权限,建议一开始就用root用户。
|
然后将其解压
|
3. 编译源码
cd到/usr/src/linux-2.6.35.6这个目录,键入命令:
|
据说这个是清除原先此目录下残留的.config和.o(object文件),如果我们是刚下载的源码,那么这一步您就可以省了,但是如果您已经编译过多次内核的话,这一步可是一定要的。
我打了没啥情况。下一步:
|
报错:
|
原来在刚刚安装好的ubuntu中,建一个最简单的helloworld的c代码,然后用gcc去编译是不能用的,因为ubuntu中并没有所需要的库。所以上面的错误说sys/types.h找不到也是缺少库的原因。
解决方法:安装lib6-dev
|
后来发现安装build-essential库也可以解决。
|
继续make menuconfig,又报错:
|
这次报错说的是缺少ncurses这个库,然后安装ncurses-dev这个库。原先安装了ncurses,ncurses-base这两个东西都没用,后来百度了才发现是要ncurses-dev这个库。
|
再make menuconfig,这次终于可以了,弹出一个框框,如下图:
不懂设置,直接exit。
然后速度make,打入命令:
|
make时间差不多一个小时把。make完了看看boot目录下面新增了什么东西,见下图:
然后
|
好像make了一会,然后告诉你说要重启,说grub已经install了云云。不管它,继续make:
|
貌似这个make的时间长一点,然后说的和上面的一样,这两个命令搞的还不是很清楚。
然后跟这百度的文档,用制作initrd,听说IDE硬盘的不需要这一步,SCSI硬盘并且采用的是ext3分区格式需要。(注意文件名字)
|
然后在/boot目录下面新增了这个文件。
4. 修改menu.list
menu.list位于/boot/grub下面,这个就是开机系统选择菜单。修改就是添加进自己的kernel选项。具体添加可以仿照原来的。
|
基本上
title 标题,这个可以随便写,只要你能识别
root 启动盘,跟着原来的写就OK
kernel 指定内核文件,照原来的写,不过把文件改为新生成的vmlinuz-2.6.35.6
initrd 初始化文件,照原来的写,不过把文件改成新生成的intrd.img-2.6.35.6文件
我把自己的新内核写在最上面了,然后开机重启,没有选择菜单,然后进入了系统,用
|
输出系统内核版本是2.6.35.6,貌似默认的就是启动menu.list中定义的第一个内核。
评论暂时关闭