linux内核编译教程

2025-10-21 22:18:26

1、目录    前言   一、编译前准备    1、准备开发环境     2、获取目标主机硬件设备相关信息:     3、获取目标主机系统功能的相关信息     4、获取内核源码   二、编译前准备    1、安装开发包组     2、下载源码文件及解压     3、准备配置文件   三、编译开始    1、首先给执行make menuconfig 命令(该命令在源码目录下执行)     2、选择我们需要启动的内核模块。     3、开始进行编译     4、make modules_install:安装模块     5、make install :安装内核相关文件   ·6、编辑grub配置文件   四、补充:     1、大概步骤:     2、编译配置选项     3、编译     4、编译内核     5、清理删除 

2、一、编译前准备    1、准备开发环境 开发包组(CentOS6)  Server platform development   Development toos    2、获取目标主机硬件设备相关信息:    CPU:     cat /proc/cpuinfo     x86info  –a     lscpu    PCI设备:     lspci  -v  (-vv 详细)     lsusb  -v  -vv     lsblk 块设备       了解全部硬件设备信息        hal-device     3、获取目标主机系统功能的相关信息    例如:需要启用相应的文件系统     这个实验里我们需要将NTFS文件系统格式启用。     在实际的应用中可能需求更为复杂。    4、获取内核源码                www.kernel.org 

3、二、编译前准备 1、安装开发包组1        #yum groupinstall Development toos

 2、下载源码文件及解压tar  –xvf  linux4.8.10.tar.xz  (很多人说要解压在/usr/src其实都一样这里实验环境就没有讲究那么多至新建了一个kernel目录。)

3、准备配置文件  #cp  /boot/config-2.6.32-573.el6.x86_64  /root/kernel/linux-4.8.10      #mv  config-2.6.32-573.el6.x86_64  .config      #grep  NTFS  .config      # CONFIG_NTFS_FS is not set

  解释一下上面的两步:        从boot目录拷贝一个config文件过来主要是为了方便,这个文件里保存都是之前你在安装系统是内核所安装的模块,这里拷贝过来为了主要为了方便演示,具体各位以后在应用中需要什么的模块那各位就自己去筛选了(虽然这种工作几乎不会做当然除非有特殊需求的,既然刚刚来看这篇文章,那我相信你的老板也不放心让你去这样做。开个玩笑 哈。。)        至于 grep NTFS .confg  (这里只是想让大家看下NTFS这个内核模块没有启动的下面在编译的时候我们就将NFTS启用)

linux内核编译教程

4、三、编译开始1、首先给执行make menuconfig 命令(该命令在源码目录下执行)        第一步先给以后内核加个名称 。

linux内核编译教程

linux内核编译教程

linux内核编译教程

5、选择我们需要启动的内核模块。  在打开这个配置界面的第一个界面下依次选择 File systems -- > DOS/FAT/NT file systems -- > NTFS file systems support (利用空格键选中。[ ] N  [M] 表示将模块打在ramdisk中 [*] y  表示将模块打在内核中。本实验将NTFS模块打在ramdisk中。 )

linux内核编译教程

linux内核编译教程

linux内核编译教程

6、退出保存 之后  grep NTFS .config  (看图就明白了)

linux内核编译教程

7、开始进行编译  因为远程编译可能终端如果断开那那就前功尽弃了 ,所以诸位在编译前最好使用screen 这样即使终端断开也不用担心编译中断了。  # make  -j  4(cpu 核心数 单一核心就不用写了) (该命令在源码目录下执行)  编译过程可能需要一段时间机器性能好的话 几分钟性能不好的话半小时以上。编译过程总可能会报错最多的报错就是openssl 各位大可以提前安装(yum 安装就好)

linux内核编译教程

8、make modules_install:安装模块执行命令 make modules_install 就好了5、make install :安装内核相关文件执行命令 make install  安装内核相关文件,主要目的将所有的编译之后的内容拷贝安装到相应的目录。6、编辑grub配置文件

9、补充: 1、大概步骤: 

    1、安装开发包组     2、下载源码文件     3、.config:准备文本配置文件     4、make menuconfig:配置内核选项     5、make [-j #]     6、make modules_install:安装模块     7、make install :安装内核相关文件         安装bzImage为/boot/vmlinuz-VERSION-RELEASE (去boot目录下查看)         生成initramfs文件       8、编辑grub的配置文件

2、编译配置选项    配置内核选项     支持“更新”模式进行配置: make help     (a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项     (b) make menuconfig:基于curses的文本窗口界面     (c) make gconfig:基于GTK (GNOME)环境窗口界面     (d) make xconfig:基于QT(KDE)环境的窗口界面   支持“全新配置”模式进行配置     (a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置     (b) make allyesconfig: 所有选项均回答为“yes“     (c) make allnoconfig: 所有选项均回答为"no“

3、编译      全编译:make [-j #]     编译内核的一部分功能:   a) 只编译某子目录中的相关代码:     # cd /usr/src/linux     # make dir/   (b) 只编译一个特定的模块:     # cd /usr/src/linux     # make dir/file.ko   例如:只为e1000编译驱动:     #make drivers/net/ethernet/intel/e1000/e1000.ko

4、编译内核        如何交叉编译内核:     编译的目标平台与当前平台不相同;       # make ARCH=arch_name     要获取特定目标平台的使用帮助       # make ARCH=arch_name help       # make ARCH=arm help

5、清理删除   在已经执行过编译操作的内核源码树做重新编译:   需要事先清理操作:     # make clean:清理大多数编译生成的文件,但会保留config文件等     # make mrproper: 清理所有编译生成的文件、 config及某些备份文件     # make distclean: mrproper、 patches以及编辑器备份文件   卸载内核     删除/lib/modules/目录下不需要的内核库文件     删除/usr/src/linux/目录下不需要的内核源码     删除/boot目录下启动的内核和内核映像文件     更改grub的配置文件,删除不需要的内核启动列表

最后写的不怎么样 ,望诸位见谅 希望朋友们能够有所收获。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢