IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 内核构建 -> 正文阅读

[系统运维]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引导和测试

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:56:34  更:2022-09-13 11:57:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:53:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码