编译内核——制作最适合自己系统的内核

编译内核:


·程序包的编译安装:

        ./configure ,make ,make install

·前提:开发环境(开发工具、开发库),头文件:/usr/include

·开源:源代码–>可执行格式

         发行版:以“通用”的目标;

                  “通用”意味安装了许多多余的东西

·前提:

         (1)准备好开发环境

         (2)获取到目标主机上硬件设备的相关信息

         (3)获取到目标主机系统功能的相关信息,例如要启用的文件系统

         (4)获取内核源代码包:www.kernel.org

        

         准备开发环境:

                 CentOS 6.8 / 7:

                         包组:

                             Development Tools

                             Server Platform Development

        

         获取目标主机上硬件设备的相关信息:

                ·CPU:

                         # cat /proc/info

                         # lscpu

                         # x86info -a   //需先安装x86info这个包

                

                ·PCI设备:

                         # lspci

                                 -v   -vv

                        

                         # lsusb

                                 -v -vv

                        

                         # lsblk

                

                ·了解全部硬件设备信息:

                         # hal-device

·内核编译过程:

         步骤:

                 # tar xf linux-3.10.67.tar.xz -C /usr/src

                 # cd /usr/src

                 # ln -s linux-3.10.67 linux

                 # cd linux

                

                 # make menuconfig   //配额制内心选项

                         可cp /boot/config-3.10.0-327.el7.x86_64 ./config  作为一个模版进行修改

                 # make [-j#]   //编译内核

                         -j:启动多个线程进行编译

                 # make modules_install   //安装内核模块

                 # make install   //安装内核

                

                 重启系统,选择使用新内核

        

         screen命令:

                 防止因远程网络波动,造成安装软件或编译软件失败

                 在screen中运行的命令,即使终端端口,依旧不会被kill

                 打开screen: # screen

                 拆除screen: Ctrl+a,d

                         拆除screen是释放出终端来,用screen在后台运行,而不是关闭screen

                 列出screen: # screen -ls

                 链接至screen: # screen -r SCREEN_ID

                 关闭screen: # exit

·过程的详细说明:

         (1)配置内核选项

                 系统编译内核的参数参考文件:

                         redhat:/boot/config-VERSION-release

                         other linux:/proc/config.gz

                

                 支持“更新”模式进行配置;在已有的.config文件的基础之上进行“修改”配置

                         (a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项

                         (b) make menuconfig:基于cureses的文本配置窗口

                                 需要cureses-devel包的支持

                                 yum -y install ncurses-devel

                         (c) make gconfig:基于GTK开发环境的窗口界面;安装包组“桌面平台开发”

                         (d) make xonfig:基于QT开发环境的窗口界面

                         支持“全新配置”模式进行配置:

                         (a) make defconfig:基于内核为目标平台提供的“默认”配置为模版进行配置

                         (b) make alinoconfig:所有选项均为“no”

        

         (2)编译

                 (a)多线程编译:

                         make [-j #]

                

                 (b)编译内核中的一部分代码:

                         (i)只编译某个子目录中的相关代码

                                 # cd /usr/src/linux

                                 # make path/to/dir/

                        

                        

                         (ii)只编译一个特定的模块

                                 # cd /usr/src/linux

                                 # make path/to/dir/file.ko

                                 file.ko文件是不存在的,但每一个file文件都有个隐藏的fike.ko文件

                                 编译好的模块要自己手动cp到/lib/modules/kernel/目录下

                        

                         (c)如何交叉编译:

                                 目标平台于当前编译操作所在的平台不同

                                

                                 # make ARCH=arch_name

                                

                                 要获取特定平台的使用帮助:

                                 # make ARCH=arch_name help

        

         (3)如何在执行过程编译操作的内核原代码树上重新编译:

                 事先清理操作:

                         # make clean:清理编译生成的绝大多数文件,但会保留config,及编译外部模块所需要的文件

                         # make mrproper:清理编译生成的所有文件,包括配置生成的config文件及某些备份文件

                         # make distclean:相当于mrproper。额外清理各种patches以及编译器备份文件

        

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/45596

(0)
megedugaomegedugao
上一篇 2016-09-11 20:29
下一篇 2016-09-11 20:57

相关推荐

  • varnish详解

      第一章    http缓存的基础概念 1、程序运行时具有局部性特征 时间局部性缓存的数据往往被打有时间缀,具有定期失效的特征,过期后会从源服务器检验请求验证是否需要重新拉取数据,某数据被访问后,该数据往往会再次在短时间内被访问到。 空间局部性被访问数据的周边数据被访问的概率会比其它常规数据访问大很多,所以这些访问数…

    Linux干货 2016-11-15
  • 马哥教育网络班19期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥用来连接两个不同的网络间的设备;集线器的作用是把接受的信号放大,从另一个端口再穿法出去,说白了就是延长网络的传输距离;   二层交换机工作在数据链路层,根据源和目的MAC地址进行数据转发;三层交换机就是具有部分路由器功能的交换机,三层交换…

    Linux干货 2016-07-07
  • 获取linux命令帮助的方法

    1.help command 适用于内建命令。 2.command -hlep 适用于外部命令。 3.info command 适用于外部命令。 4.man command 适用外部命令和内建命令。     man帮助命令分章节             centos7:man 1…

    Linux干货 2017-08-19
  • 磁盘配额、Raid及逻辑卷LVS

    磁盘配额、Raid及逻辑卷LVS 磁盘配额 Linux是多用户的操作系统,同一时间可能有多个用户登录到系统上进行操作,某些用户可能会写入很多数据,占用大量磁盘空间,导致其他用户没有磁盘空间可用。如何限定某个用户对磁盘的使用空间大小,以及可使用的inode多少,也就是限定可创建多少个文件,这就是磁盘配额管理的作用。 磁盘配额特点 在内核中执行; 以文件系统为单…

    Linux干货 2016-09-19
  • 记录Linux入门3天,每天的点点滴滴记录

        Linux 文件系统的特性:      1、文件名严格区分字符大小写      2、文件名可以使用除了 /  意外任意的字符,但不建议使用特殊字符      3、文件名长度不能超过255个字符     &nbsp…

    Linux干货 2017-05-21