查阅诸多资料,经过亲自实践,现将步骤整理一二:
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