linux内核编译

查阅诸多资料,经过亲自实践,现将步骤整理一二:

1. 下载内核wget url...
也可以直接下载到目录

2. 解压:
tar -jxvf linux-....tar.bz2

3. 清理源代码:
(其实这一步可以省,不过如果你是第二次编译,并且有改动,用也无妨.这一步是参考的)
make mrproper
清除临时文件、中间文件和配置文件
   make clean
        remove most generated files but keep the config
   make mrproper
        remove all generated files + config files
   make distclean
        mrproper + remove editor backup and patcher files

4. 安装有关编译程序。安装make ,gcc, make-kpkg,运行xconfig等等和编译内核相关的工具.
这一步make或者gcc或者其它命令没有安装的话,就要执行这一步。
如果make都没有,那这一步就要和第三步换换了。
不知道为什么就没有make. 这个不是安装系统时候就有的么?

执行;
sudo apt-get install build-essential 
sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot

5.使用如下命令之一配置内核(这个参考网上资料)
我用的是menuconfig
就用的是默认,直接exit了,无非就是生成一个config
如果不是专业人士,里面的很多选项真是无从说起

make config : 基于文本模式的交互式配置。
make menuconfig:基于文本模式的菜单型配置。(推荐使用,这个会弹出一个对话窗口)
make oldconfig:使用已有的配置文件(.config),但是会询问新增的配置选项。
make xconfig:图形化配置(需安装图形化系统)
命令:make menuconfig

进入之后,选择需要的功能和模块。
这个操作比较简单:
[ ] Prompt for development and/or incomplete code/drivers
  (tian) Local version - append to kernel release   可在该选项中设置名称,这样编译后的内核版本就是3.2.39,这样容易区别

这个地方最好不要改,除非你非常熟悉,直接exit

6. 退出了后,就是
make all
包括三个操作:
make vmlinux
make modules
make bzlmage
成功后会看到kernel:arch/x86/boot/bzImage is ready的提示
这个步骤时间很长的说

7.安装新内核与多重内核菜单

系统内核存放在/boot目录下,且为vmlinuz开头的文件夹下
所以安装新内核就是将新编译好的bzImage复制到/boot下,并该文件名为vmlinuz开头,可用如下命令实现:
[root@localhost ~]$ cp /home/wen/linux3.2.39/arch/x86/boot/bzImage  /boot/vmlinuz-linux3.2.39
cp /home/wen/linux-2.6.32.55/.config  /boot/config-linux3.2.39
64位的话就复制x86_64文件夹下的bzImage

8. 安装模块
make modules_install
提示DEPMOD 3.2.39l
执行后查看/lib/modules 
会多出一个你要的文件夹
到这里就应该完事了。

这里还有一个乳酸的地方:
如果在第5步的menuconfig选项中给Linux的内核另取了一个名字,那你编译完成后,uname -a得到的内核名字就是你取的那个名字。
这个本无可说的,但有些驱动程序就是通过命名判断内核的,不一样的话就说不能安装。
所以最好不要自己另取一个名字。menuconfig时直接退出了事。


9. 开机重启,选择对应的就ok了
具体的时选择linux-previous version.
就又进入了一个grub,选择你安装的那个内核就搞定了
如果觉得麻烦,就删除原来的内核

10. 卸载内核
rm -rf /lib/moudles/...
rm -rf /home/...
rm -rf /...和此内核相关的
这个地方不知道会不会有影响,哥没试过。
因为grub改版了,所以对grub会有影响的,最好不要操作这一步。

11. grub文件修改了:
在/etc/grub.d文件中
文件夹数字表示顺序
里面好多信息,暂时不懂。

好了,就酱紫~

学习的技能
1、内核编译
2、相关命名
mount
w3m
wget


posted @ 2013-06-09 16:44  海滨银枪小霸王  阅读(143)  评论(0编辑  收藏  举报