安装编译环境:
sudo apt-get install build-essential
编译前的配置:
1,打开终端,用cd命令进入源码目录。
2,用make mrproper命令清除以前编译产生的一切文件,包括配置、.o文件等等,如果是首次编译则跳过此命令
3,运行配置命令
最常用的配置内核的方法是“make menuconfig”。“make config”太简陋(基于文本的最为传统的配置界面),“make xconfig”(基于图形窗口模式的配置界面)虽然更加直观,但需要庞大的qt类库支持,menuconfig(基于文本选单的配置界面)应该是最佳的折中。(如果已有配置好的配置文件,直接拷到内核源码文件夹下,更名为.config,跳过配置的命令即可)
在ubuntu和debian下运行make menuconfig会自动从/boot目录下导入当前使用的内核的配置文件(其他系统不清楚,可以自己从/boot目录下copy当前内核的配置文件到内核源码目录下,更名为.config)。ubuntu 13.04使用的3.8内核和我要安装的3.10内核毕竟版本跨越不大,导入的3.8内核的配置只检测到4个无效的选项(会自动屏蔽无效选项),保存配置之后编译安装新内核一切正常。
如果内核版本跨越比较大,或者想根据自己的机器配置做适当的配置和精简,则需要手动修改配置了。相关的选项多达数千个,英文比较好的人加上google、百度就知道相关选项是干什么的了, 官方的文档在源码目录下的Documentation目录!
配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。
选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。
我们可以精简的部分是硬件模块部分,对于自己没有的硬件可以毫不犹豫的清除。
自动精简内核的命令(不建议):
可以使用“make localmodconfig”自动精简内核。注意:该方法会执行 lsmod 命令查看当前系统中加载了哪些模块 (Modules), 并最后将原来的 .config 中不需要的模块去掉,仅保留前面 lsmod 出来的这些模块,从而简化了内核的配置过程。所以,在执行命令前可以先使用下你的摄像头,挂载下iso等等…免得编译好了发现有硬件不能用。
本人测试了一下这个命令,发现精简的幅度很大,结果编译成的内核无法启动,所以建议有更深了解的人使用。
4、编译内核和模块
依次执行“make bzImage ”、“make modules”、“sudo make modules_install”、“sudo make install”,如果前面的配置没有问题的话,耐心等待一段时间就可以得到编译好的内核和模块了。执行命令前要保证有足够的空间。最后的安装内核命令会自动更新grub配置的,执行完重启就可以进入新内核了。如果新内核有问题,自然也可以在启动的时候选择进入旧版内核。
如何删除编译安装的内核:
如果新内核工作不正常,删除很简单。/boot目录和/lib/modules下新内核相关的文件或目录直接删除,然后在终端里更新grub配置:sudo update-grub
sudo apt-get install build-essential
编译前的配置:
1,打开终端,用cd命令进入源码目录。
2,用make mrproper命令清除以前编译产生的一切文件,包括配置、.o文件等等,如果是首次编译则跳过此命令
3,运行配置命令
最常用的配置内核的方法是“make menuconfig”。“make config”太简陋(基于文本的最为传统的配置界面),“make xconfig”(基于图形窗口模式的配置界面)虽然更加直观,但需要庞大的qt类库支持,menuconfig(基于文本选单的配置界面)应该是最佳的折中。(如果已有配置好的配置文件,直接拷到内核源码文件夹下,更名为.config,跳过配置的命令即可)
在ubuntu和debian下运行make menuconfig会自动从/boot目录下导入当前使用的内核的配置文件(其他系统不清楚,可以自己从/boot目录下copy当前内核的配置文件到内核源码目录下,更名为.config)。ubuntu 13.04使用的3.8内核和我要安装的3.10内核毕竟版本跨越不大,导入的3.8内核的配置只检测到4个无效的选项(会自动屏蔽无效选项),保存配置之后编译安装新内核一切正常。
如果内核版本跨越比较大,或者想根据自己的机器配置做适当的配置和精简,则需要手动修改配置了。相关的选项多达数千个,英文比较好的人加上google、百度就知道相关选项是干什么的了, 官方的文档在源码目录下的Documentation目录!
配置用到的键只有几个,esc退出菜单;空格改变选项状态;光标键上下左右移动,回车选定。
选项意义:M是编译成可以随时加入的模块,*是编译进入内核,空就是不要。
我们可以精简的部分是硬件模块部分,对于自己没有的硬件可以毫不犹豫的清除。
自动精简内核的命令(不建议):
可以使用“make localmodconfig”自动精简内核。注意:该方法会执行 lsmod 命令查看当前系统中加载了哪些模块 (Modules), 并最后将原来的 .config 中不需要的模块去掉,仅保留前面 lsmod 出来的这些模块,从而简化了内核的配置过程。所以,在执行命令前可以先使用下你的摄像头,挂载下iso等等…免得编译好了发现有硬件不能用。
本人测试了一下这个命令,发现精简的幅度很大,结果编译成的内核无法启动,所以建议有更深了解的人使用。
4、编译内核和模块
依次执行“make bzImage ”、“make modules”、“sudo make modules_install”、“sudo make install”,如果前面的配置没有问题的话,耐心等待一段时间就可以得到编译好的内核和模块了。执行命令前要保证有足够的空间。最后的安装内核命令会自动更新grub配置的,执行完重启就可以进入新内核了。如果新内核有问题,自然也可以在启动的时候选择进入旧版内核。
如何删除编译安装的内核:
如果新内核工作不正常,删除很简单。/boot目录和/lib/modules下新内核相关的文件或目录直接删除,然后在终端里更新grub配置:sudo update-grub