学习了一下Linux内核配置、安装及编译,为了防止忘记,写在博客里linux
一、Linux源代码下载
若是须要下载历史版本,点击网页上的https://www.kernel.org/pub/,而后选择Linux,kernel便可,比较简单。学习
二、配置Linux内核
把源代码拷到Linux电脑里,解压,这里我下载的是linux-4.11.tar.xz,解压输入视频
#tar xvJf linux-4.11.tar.xzblog
若是是tar.gz结尾的文件用tar xvzf linux-4.11.tar.gz命令解压教程
解压以后开始配置内核模块,选择本身芯片的硬件架构,选择本身须要哪些驱动模块等等,配置为指令make config或者 make menuconfig,前者是基于问答式的配置,使用不方便,后者是菜单式的配置,较为直观和方便,这里使用后者,输入内存
#make menuconfig开发
而后根据本身的须要,用上下左右键移动选择项,用空格选择是否配置该项。另外还能够选择现有的配置文件来达到目的,在源代码下面的arch/$cpu/configs下有许多现成的配置文件,输入get
#ls arch/arm/configs博客
能够查看arm芯片的内核配置,同时还可使用本机的配置文件,这里使用本机的配置文件,在/boot目录下,复制/boot下的配置文件 config-2.6.32-279.el6.i686 到上述解压后目录里,输入
#cp /boot/config-2.6.32-279.el6.i686 ./
开始配置内核
#make menuconfig
选择后面的load加载配置文件,输入上面文件的名字,点ok,而后再点击保存,保存文件名为.config,输入
#ls -a
能够看到这个文件
三、编译内核
编译内核须要生成映像文件和模块文件,映像文件由配置中的选择为的文件编译连接而成,开机后直接加载在内存中运行
模块文件将选择为的文件编译成.o文件,放在磁盘中,以备后来要用到,先配置映像文件,输入
#make bzImage
开始生成bzImage映像文件,须要10多分钟左右,正常状况下不会有什么问题,编译完成后提示bzImage文件在 arch/x86/boot 目录下
而后编译模块文件,输入
#make modules
大概须要50分钟左右,应该也不会有什么问题,可能会有一些警告,能够忽视,而后把散落在各个文件夹下的.o文件组装起来,输入
#make modules_install
组装完成后,会把文件放在/lib/modules/ 下,文件名为对应的版本号,查看能够输入
#ls /lib/modules
能够看到对应版本的文件夹
而后把存放模块文件的目录打包成一个文件,使用mkinitrd命令,输入(主要后者不要输入成/lib/modules/4.11.0)
#mkinitrd rd-4.11.0 4.11.0
前者为生成文件的名字,后者为模块文件存在的目录,须要几分钟,这样文件包rd-4.11.0就在当前文件目录上产生了。
四、安装内核
安装内核以前须要把生成的bzImage和模块文件包rd-4.11.0拷贝到/boot目录下,这样启动的时候才可以选择这个内核启动
先拷贝bzImage,输入(如#cp arch/$cpu/boot/bzImage /boot/vmlinux-$version )
#cp arch/x86/boot/bzImage /boot/vmlinuz-4.11.0
而后拷贝模块文件包,输入cp rd-$version /boot/,version为对应版本号
#cp rd-4.11.0 /boot/
而后修改/etc/grub.conf,才能够在启动时选择这个新内核,输入
#vi /etc/grub.conf
赋值倒数后面的4行,输入4yy,而后拷贝到最后,输入p,修改为以下的样子
主要修改3个地方,第一个是括号里的,修改为4.11.0,这是启动选择内核时版本的名称
还有映像文件名字和模块文件名字,修改为对应版本,修改后保存退出。
五、启动
输入重启,而后在开机倒计时的时候按下回车,选择新的版本,启动的时候有点久。
这样就成功的把内核升级了,虽然在操做的时候好像没什么变化,能够查看当前的内核版本,输入
#uname -r
显示的应该是最新的版本号,这样内核就升级成功了,对应的开发板的内核制做也是和这个差很少。
六、内核清理
若是须要把内核编译的文件删掉,包括镜像文件和.o文件,输入
#make distclean
若是仅仅须要删除.o文件,输入
#make clean
更多Linux资料及视频教程点击这里