Linux 内核构建


前言

  • Linux集成套件包括多种内核,能够处理各种机器。通过编译内核,选择符合硬件类型的驱动等,可以调整Linux系统,使其更合理地安装到计算机中。
  • 重新编译内核以便实现一些新功能,如将Linux系统设置为一个临时路由器。
  • 使得全世界内核设计者提供的各种为改进性能而设计的内核得到充分利用。

构建Linux内核

  • Linux官方源代码发布网址:www.kernel.org

  • gzip压缩的.tar.gz包,bzip2压缩的.tar.bz2。

  • Linux源代码分为:

  • 与系统结构相关的部分

  • 与系统结构无关的部分

  • 文档和工具

在这里插入图片描述

Linux内核文件组织结构

在这里插入图片描述

Linux内核文件说明

  • arch:包含了所有和体系结构相关的核心代码,它的每一个子目录都代表一种被支持的体系结构。
  • include:包含编译核心所需要的大部分头文件,与平台无关的头文件放在 include/linux子目录中。
  • init:包含核心的初始化代码。
  • mm:包含所有独立于CPU体系结构的内存管理代码。
  • kernel:主要的核心代码,实现大多数Linux系统的内核函数,包括进程调度、系统调用等
  • drivers:系统所有的设备驱动程序,每种驱动程序各占用一个子目录。
  • 其它:lib放置核心的库代码;net放置核心与网络相关的代码;lpc包含核心的进程间通信的代码;fs包含文件系统代码;scripts包含用于配置核心的脚本文件。

Linux内核的makefile文件

  • 源代码树的每个子目录下都有一个makefile文件。
  • 在源代码树的根目录下执行make,则调用顶层makefile文件,它定义了随后要输出到其他makefile的变量,以及向子目录中的每个makefile发出make调用。
  • Script/makefile.build中定义了makefile向下级子目录递归并编译的规则。

Make命令

  • 一个软件不会仅有一个程序文件,而是由一大堆程序代码。所以除了每个程序与子程序需要写一条编译过程的命令外,还需要写上最终的链接程序。因此使用make这个命令的相关功能可以进行编译过程的简化。

  • 当执行make时,make会在当前的目录下查找Makefile文本文件,Makefile里面记录和源代码如何编译的详细信息。make会自动判别源代码是否经过变动,自动更新执行文件。

内核源代码的获取方式

    1. 原Linux发行版提供的内核源代码文件
    1. 获取最新的稳定版内核源代码
      内核官网: http://www.kernel.org/
      清华大学镜像:https://mirrors.tuna.Tsinghua.edu.cn/kernel
    1. 保留原本设置:利用patch升级内核源代码

编译内核过程

第1步,预处理

  • Linux内核源文件缺省位置:/usr/src/
    从Internet下载最新版本到你创建的主目录。
    如~wxdh
  • 清除以前试图建立内核过程遗留下的多余文件。
    make mrproper

第2步,配置内核

  • make config:手工逐项配置
  • make menuconfig:菜单选项配置
  • make xconfig: XWindow配置
  • 修改配置文件/linux/.config
  • 注意,make mrproper命令要删除这个文件,可以从/linux/arch/i386/defconfig拷贝复制一个。

第3步,生成内核

  • 1、make dep:生成相关性
    例如:如果激活“Set Version Information For All Symbols On Modules”选项,那么它为所建立的模块确定其版本信息。
  • 2、make clean:清除一些目录中现有文件,将存储创建的新文件。
  • 3、make bzImage:编译内核本身,花费时间长。对于新内核规模小,可以使用make zImage,如果不确定,最好还是使用bzImage。
    建立/linux/arch/i386/boot/bzImage

第4步,安装内核

  • 有些集成套件使用LILO作为引导装入程序。
  • /etc/lilo.conf文件中的“image=”
  • su命令超级用户登录,把刚创建的bzImage拷贝到/boot中。
  • cp ~wxdh/linux/arch/i386/boot/bzImage /boot/vmLinuz
  • 修改lilo.conf文件中“image”行。
  • 告诉LILO更新其配置信息:/sbin/lilo

第5步,建立模块

  • 配置Linux内核时,可将许多选项配置为模块而不是直接放进内核。
  • 每个模块可以分别装入和卸载。
  • /linux目录下
    make modules:创建在配置过程中要求的模块,但是并不安装。
    Make modules_install:将已经完成的模块拷贝到对应该内核版本的/lib/modules/子目录中。

管理多内核

  • 不同的情况使用不同的内核,lilo.conf文件:
    ……
    delay=15 #15-second delay
    ……
    image=/boot/vnlinux
    label=Linux
    ……
    image=/home/wxdh/bzImage
    Label=TestKernel
    最后,执行/sbin/lilo
    Added Linux * (表示Linux标记为缺省内核)
    Added TestKernel(表示添加新内核)

第6步 配置grub引导和测试

  • 配置grub引导程序
    /boot/grub/grub.cfg
    设置默认从新内核镜像启动系统
  • 测试
    系统重启,测试当前的内核版本
    uname -a

总结

构建Linux内核
Linux内核文件组织结构
Linux内核文件说明
Linux内核的makefile文件
Make命令
内核源代码的获取方式
编译内核过程
第1步,预处理
第2步,配置内核
第3步,生成内核
第4步,安装内核
第5步,建立模块
管理多内核
第6步 配置grub引导和测试

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉卧考场君莫笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值