linux基础之内核编译

编译内核:

程序包的编译安装:

./configure, make, make install

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

开源:源代码 --> 可执行格式

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

前提:

(1) 准备好开发环境;

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

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

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

准备开发环境:

CentOS 6.7:

包组:

Development Tools

Server Platform Development

CentOS 7:

包组:

Development Tools

Server Platform Development

包:

ncurses-devel

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

CPU:

~]# cat  /proc/info

~]# lscpu

~]# x86info -a

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        配置内核选项

~]# make  [-j #]   编译内核,可使用-j指定编译线程数量

~]# make modules_install 安装内核模块

~]# make install   安装内核

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

screen命令:

打开screen: ~]# screen

拆除screen: Ctrl+a, d

列出screen: ~]# screen  -ls

连接至screen: ~]# screen  -r   SCREEN_ID

关闭screen:  ~]# exit

过程的详细说明:

(1)  配置内核选项

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

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

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

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

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

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

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

(b) make   allnoconfig:所有选项均为“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

(c) 如何交叉编译:

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

# make  ARCH=arch_name

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

# make  ARCH=arch_name help

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

事先清理操作:

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

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

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

时间: 2024-10-14 04:25:19

linux基础之内核编译的相关文章

Linux下的内核编译与模块操作

Linux下的内核编译与模块操作 一:实验环境 1):虚拟机 2):linux系统 3):linux系统的硬盘的空余空间要大于7G 4):虚拟机的内存要大于2.5G以上 二:实验目标 1):源码编译Linux内核 2):使用Linux内核模块 3):实战-编译一个NTFS内核模块,实现linux挂载NTFS文件系统并实现读写功能 三:实验脚本 第一块 --源码编译Linux内核 linux系统与windows系统是两种截然不同的系统,windows系统中的软件都是需要付费的,而linux系统中的

Linux 4.1内核编译报告

实验环境 Arch Linux on VirtualBox 下载内核 https://www.kernel.org/ 下载的内核压缩包: 解压包 $ sudo tar -xvJf linux-4.1.tar.xz 进行设置 这里我使用了当前运行内核的默认设置. 拷贝正在运行的内核的配置文件(.config文件)到编译根目录. $ zcat /proc/config.gz > .config 当然也可以手动设置 $ sudo make menuconfig (末尾参考资料一中有详细的说明) 编译内

Linux内核编译和参数配置

内核 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核的bug,并增加了许多新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核.本文将以RedHat Linux 6.0(kernel 2.2.5)为操作系统平台,介绍在Linux上进行内核编译的方法. 一. 下载新内核的源代码 内核,是一个

Linux之内核编译基础概念

内核组成部分 1.Kernel 2.Kernel Object 3.ramdisk 查看kernel版本 uname 管理kernel object工具 lsmod modinfo modprobe insmod rmmod depmod 与ramdisk相关的工具 mkinitrd dracut 启动流程 POST->boot sequence->bootloader->加载kernel->只读方式挂载root->init->运行系统初始化脚本->默认运行级别-

Linux入门之CentOS7内核编译三部曲(1)

Linux入门之CentOS7内核编译三部曲(1) 我们知道,一个Linux系统的主要组成是由liunx内核核心和一些支持模块组合而成的.但是在某些场合中,需要某项功能,而当前内核的核心或者模块不支持此功能,那么就需要对内核进行一个升级或者重新编译内核添加相应的功能,以此提供了对此功能的支持. 编译前的准备 认识kernel 所为kernel,就是一种操作系统的核心,当然也是一个文件,而这种核心提供了对一些硬件的支持,一般来说其中包含了一些对常见硬件核心驱动的核心代码.启动系统时会通过加载MBR

Linux内核编译、管理以及kickstart和引导镜像制作

其实内核就是系统上面的一个文件,包含了驱动主机各项硬件的检测程序与驱动模块,而Linux的内核是单内核体系,且是模块化的 内核的组成部分: 核心文件:/boot/vmlinuz-VERSION 模块文件:/lib/modules/VERSION/ *.ko: 模块间或许存在依赖关系: ramdisk: 非必须性内容:只是用于实现内核在无法加载根文件设备时提供 内核模块管理: lsmod命令:列出已经装载的模块 另一种办法:# cat /proc/modules modinfo: 查看指定模块的详

Linux 自学笔记——内核管理初步及编译

Linux Kernel: 内核设计体系:单内核.微内核: 内核的组成部分: 1.Kernel:内核核心,一般为bzimage,通常位于/boot目录,名称为vmlinuz-VERSION-release: 2.Kernel object:内核对象,即内核模块,一般放置于/lib/modules/VERSION-release/,maninfo命令通过读取此文件的信息以显示相关信息: 内核模块与内核核心版本一定要严格匹配: []:N: [M]:Module,编译进模块中: [*]:Y,编译进内核

Linux内核编译及系统裁剪之一

Linux内核编译方法详解及系统裁剪之一详解 我们的内核是由两部分组成的: 1,内核核心 核心文件的路径是/boot/vmlinuz-内核版本号 如下图-> 2,内核模块(ko:kernel object,内核对象) ko文件的路径是/lib/modules/内核版本号/下的所有文件 如下图-> 我们的内核有两种设计风格: 1,单内核设计风格 Linux的内核就属于是单内核设计风格的,不过Linux的单内核设计风格采用了微内核设计风格的模块化设计思想,所以使得我们的Linux内核的核心可以被设

Linux内核编译完整过程

Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过程中的一些实际经验. 内核简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性. Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可