Linux-3.10.1内核编译安装
2017-12-04 17:48
489 查看
本文转载于灵跃云 :原文链接。
1.写在前面
Linux操作系统包括四个部分:
(1)内核:内核是一个操作系统的核心。它负责为其他所有的程序以及服务提供运行环境,分配各种软硬件资源,管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。在操作系统中,内核的作用类似于人的大脑。
(2)Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
(3)文件系统:是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。
(4)应用程序:例如:文本编辑器(vi、vim、gedit等)、编程语言、XWindow(图形界面)、办公套件、Internet工具和数据库等。
其中,
Linux的一个重要特点就是其源代码的公开性,任何人都能够在https://www.kernel.org/上得到任何版本的Linux内核源码。
在使用Windows操作系统中时,通常遇到这样的困扰:系统运行了一段时间之后,出现运行速度越来越慢、系统盘的数据越来越多、剩余容量变得越来越少的问题。但是,由于Windows系统不开源,我们无法知道出现这种情况的本质原因。而在Linux操作系统中,利用Linux内核的开源特性,可从内核源码层定位上述问题,从而对Linux系统进行定制、优化,以满足功能和性能上的需求。
接下来将以linux-3.10.1版本的内核为例,详细描述如何获取Linux内核源码,如何编译、安装一个属于自己的Linux内核。
2.编译安装环境
注:在下述描述中,涉及在服务器Ubuntu 12.04操作系统环境上的所有操作,均以root身份登录并执行。
3.获取Linux-3.10.1内核
通过wget文件下载工具获取网址https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2中的Linux-3.10.1源码,并保存到系统中的/home/work/kernel/目录下(也可保存到其它目录下,但注意下面的所有操作请在此目录下进行),并解压。
首先安装wget和编译内核所需依赖包:
#apt-get install wget gcclibncurese5-dev
获取Linux3-1.10源码的命令行操作如下:
(1)切换到/home/目录下
#cd /home/
(2)创建work目录并切换到work目录下
#mkdir work && cd work/
(3)创建kernel目录并切换到kernel目录下
#mkdir kernel && cd kernel/
(4)通过wget获取linux-3.10.1内核源码包linux-3.10.1.tar.bz2
#wgethttps://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2
(5)解压源码包linux-3.10.1.tar.bz2
#tar –jxvf linux-3.10.1.tar.bz2 –C/home/work/kernel/
(6)解压后在当前目录下得到linux-3.10.1文件夹,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/1ee2111214581237cd7ea70ae92bfc33.png)
注:如果Ubuntu 12.04操作系统因为某些原因(例如,未连接外网)无法通过wget获取linux-3.10.1.tar.bz2,可首先在Windows系统中通过https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2下载源码包,然后将其拷贝到Ubuntu
12.04系统中的/home/work/kernel/目录下。
4.编译安装Linux-3.10.1内核
首先切换到linux-3.10.1文件夹下:
#cd linux-3.10.1
配置内核:
(1)保持源码干净
#make mrproper
注:此操作会将历史编译过程中配置的内核功能配置文件清除掉,所以只有第一次执行内核编译前才进行此操作,其它情况若需要清除前一次编译过程的残留数据,只需用下面的命令:
#make clean
此命令仅删除编译过程产生的中间文件和目标文件,而不会删除历史配置。
(2)设置内核功能选项
#make menuconfig
执行上面的命令,可在字符界面中显示功能配置的图形界面,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/b8981d326a910dcb7f5ef06e868f4609.png)
根据上图中功能提示配置需要的功能,本次实验中采用默认的配置,通过键盘上的左右键选择保存配置,得到新内核的配置文件,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/bd41b8b74b716083f2f727769d097cf9.png)
使用键盘上的左右键选择按钮,通过键盘上的回车键确认保存配置。
(3)编译内核和模块
清除暂存的缓存:
#make clean
编译内核:
#make bzImage
或:
#make bzImage –j4
注:其中-j4表示同时编译的任务数。如果操作系统中有4个CPU核心,可通过-j4加快编译的速度。此编译过程较长,请耐心等候。
编译内核模块:
# make modules
(4)安装内核模块和内核
#make modules_install
#make install
至此,linux-3.10.1内核已编译完成,接下来将描述如何修改Ubuntu12.04操作系统的默认启动项,使得系统重启后进入新编译的linux-3.10.1内核。
5.配置开机启动项
(1)更新启动项列表,如下图:
#update-grub2
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/73408946635c0f6edc339e9d9dedc166.png)
从上图中可查看系统中所有的内核列表,并可得知新编译的linux-3.10.1位于列表中第一个位置。
(2)修改默认启动菜单的配置文件/etc/default/grub
#vim /etc/default/grub
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/d5b477bd7c060f533be759bb176d0d05.png)
如图,GTUB_DEFAULT的值决定了系统启动时从内核列表的第几个内核启动。若GTUB_DEFAULT=0,则表示从第一个内核启动。由于新编译的linux-3.10.1内核位于第一个位置,因此,将GTUB_DEFAULT的值修改为0。
保存后,重启系统,可查看最新的启动菜单,如下图:
#reboot
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/9530e1f9808ce2472450aa951fd86ee5.png)
系统默认从最新编译的“Ubuntu, with Linux 3.10.1”内核启动。
注:如果想从老版本的内核启动,可通过上下键选择“Previous Linux versions”进入老版本的内核列表进行选择某一个老版本的内核。
(3)查看最新编译的内核
进入系统之后,通过下面的命令可查看当前系统中的内核版本,如下图:
#uname -a
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/075abb049da42c225f3344401171d945)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/68acda45e904bde19bfad7ca4c4f9515.png)
如果能够看到“Linux Ubuntu3.10.1”,表示linux-3.10.1的内核已经编译、安装成功。
1.写在前面
Linux操作系统包括四个部分:
(1)内核:内核是一个操作系统的核心。它负责为其他所有的程序以及服务提供运行环境,分配各种软硬件资源,管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。在操作系统中,内核的作用类似于人的大脑。
(2)Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
(3)文件系统:是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。
(4)应用程序:例如:文本编辑器(vi、vim、gedit等)、编程语言、XWindow(图形界面)、办公套件、Internet工具和数据库等。
其中,
Linux的一个重要特点就是其源代码的公开性,任何人都能够在https://www.kernel.org/上得到任何版本的Linux内核源码。
在使用Windows操作系统中时,通常遇到这样的困扰:系统运行了一段时间之后,出现运行速度越来越慢、系统盘的数据越来越多、剩余容量变得越来越少的问题。但是,由于Windows系统不开源,我们无法知道出现这种情况的本质原因。而在Linux操作系统中,利用Linux内核的开源特性,可从内核源码层定位上述问题,从而对Linux系统进行定制、优化,以满足功能和性能上的需求。
接下来将以linux-3.10.1版本的内核为例,详细描述如何获取Linux内核源码,如何编译、安装一个属于自己的Linux内核。
2.编译安装环境
操作系统 | Ubuntu 12.04 64位 |
现有Linux内核版本 | linux-3.2.0 |
待编译的内核版本 | linux-3.10.1 |
3.获取Linux-3.10.1内核
通过wget文件下载工具获取网址https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2中的Linux-3.10.1源码,并保存到系统中的/home/work/kernel/目录下(也可保存到其它目录下,但注意下面的所有操作请在此目录下进行),并解压。
首先安装wget和编译内核所需依赖包:
#apt-get install wget gcclibncurese5-dev
获取Linux3-1.10源码的命令行操作如下:
(1)切换到/home/目录下
#cd /home/
(2)创建work目录并切换到work目录下
#mkdir work && cd work/
(3)创建kernel目录并切换到kernel目录下
#mkdir kernel && cd kernel/
(4)通过wget获取linux-3.10.1内核源码包linux-3.10.1.tar.bz2
#wgethttps://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2
(5)解压源码包linux-3.10.1.tar.bz2
#tar –jxvf linux-3.10.1.tar.bz2 –C/home/work/kernel/
(6)解压后在当前目录下得到linux-3.10.1文件夹,如下图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/1ee2111214581237cd7ea70ae92bfc33.png)
注:如果Ubuntu 12.04操作系统因为某些原因(例如,未连接外网)无法通过wget获取linux-3.10.1.tar.bz2,可首先在Windows系统中通过https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2下载源码包,然后将其拷贝到Ubuntu
12.04系统中的/home/work/kernel/目录下。
4.编译安装Linux-3.10.1内核
首先切换到linux-3.10.1文件夹下:
#cd linux-3.10.1
配置内核:
(1)保持源码干净
#make mrproper
注:此操作会将历史编译过程中配置的内核功能配置文件清除掉,所以只有第一次执行内核编译前才进行此操作,其它情况若需要清除前一次编译过程的残留数据,只需用下面的命令:
#make clean
此命令仅删除编译过程产生的中间文件和目标文件,而不会删除历史配置。
(2)设置内核功能选项
#make menuconfig
执行上面的命令,可在字符界面中显示功能配置的图形界面,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/b8981d326a910dcb7f5ef06e868f4609.png)
根据上图中功能提示配置需要的功能,本次实验中采用默认的配置,通过键盘上的左右键选择保存配置,得到新内核的配置文件,如下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/bd41b8b74b716083f2f727769d097cf9.png)
使用键盘上的左右键选择按钮,通过键盘上的回车键确认保存配置。
(3)编译内核和模块
清除暂存的缓存:
#make clean
编译内核:
#make bzImage
或:
#make bzImage –j4
注:其中-j4表示同时编译的任务数。如果操作系统中有4个CPU核心,可通过-j4加快编译的速度。此编译过程较长,请耐心等候。
编译内核模块:
# make modules
(4)安装内核模块和内核
#make modules_install
#make install
至此,linux-3.10.1内核已编译完成,接下来将描述如何修改Ubuntu12.04操作系统的默认启动项,使得系统重启后进入新编译的linux-3.10.1内核。
5.配置开机启动项
(1)更新启动项列表,如下图:
#update-grub2
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/73408946635c0f6edc339e9d9dedc166.png)
从上图中可查看系统中所有的内核列表,并可得知新编译的linux-3.10.1位于列表中第一个位置。
(2)修改默认启动菜单的配置文件/etc/default/grub
#vim /etc/default/grub
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/d5b477bd7c060f533be759bb176d0d05.png)
如图,GTUB_DEFAULT的值决定了系统启动时从内核列表的第几个内核启动。若GTUB_DEFAULT=0,则表示从第一个内核启动。由于新编译的linux-3.10.1内核位于第一个位置,因此,将GTUB_DEFAULT的值修改为0。
保存后,重启系统,可查看最新的启动菜单,如下图:
#reboot
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/9530e1f9808ce2472450aa951fd86ee5.png)
系统默认从最新编译的“Ubuntu, with Linux 3.10.1”内核启动。
注:如果想从老版本的内核启动,可通过上下键选择“Previous Linux versions”进入老版本的内核列表进行选择某一个老版本的内核。
(3)查看最新编译的内核
进入系统之后,通过下面的命令可查看当前系统中的内核版本,如下图:
#uname -a
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/26/68acda45e904bde19bfad7ca4c4f9515.png)
如果能够看到“Linux Ubuntu3.10.1”,表示linux-3.10.1的内核已经编译、安装成功。
相关文章推荐
- VirtualBox虚拟机安装RedHat7.3编译Linux0.01内核
- 编译和安装linux内核2.6.24,并且写一个简单的内核驱动测试之
- linux卸载自己编译安装的内核
- linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)
- 网卡始终不通的原因?改了linux内核后要重新编译insmod安装的模块
- 【转】Linux 2.6.3x内核源码编译和安装
- Linux内核编译与安装
- archlinux(内核自已编译过) nvidia linux 的安装注意事项
- 编译和安装linux内核2.6.x,一个简单的内核驱动测试
- 嵌入式开发实作(Linux内核编译及安装)
- 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正
- 嵌入式开发实作(Linux内核编译及安装)
- Linux-4.1.6 内核编译安装(ubuntu)
- CentOS 7 下编译安装 Linux 4.14 内核
- 【TINY4412】LINUX学习笔记:(2)内核模块编译、安装、加载、卸载
- Linux内核编译和安装
- 编译、裁剪、安装、删除 Ubuntu内核和模块管理 分类: arm-linux-Ubuntu 2013-07-22 16:29 319人阅读 评论(0) 收藏
- ubuntu 10.04 编译安装最新版本linux-2.6.34内核
- Linux内核调试工具:Kdb的编译安装
- VirtualBox虚拟机安装RedHat7.3编译Linux0.01内核