linux学习之路之手动编译内核

手动编译内核

一般来说,内核的核心功是直接在内核里,其他大多数功能具有以下三种选择:

1、不使用该功能

2、将这些功能编译成模块的形式

3、将这些功能直接编译进内核当中

那么该如何手动编译内核呢?

手动编译的方式:

使用make gconfig命令,不过使用该命令适用于Gnome桌面环境,且需要安装图形开发库

使用make kconfig命令,该命令适用于KDE桌面环境,且需要安装图形开发库

不过最常见的方式是使用make menuconfig命令来编译,使用该命令会产生一个窗口界面

在该窗口下有许多参数可以选择

然后选择完成之后执行make modules_install来安装编译的模块

最后执行make、make install来完成整个编译过程

在二次编译前,最好先执行make clean命令来清理上次编译过程中产生的一些二进制模块,核心文件(.config)不会被清理掉

如果是第一次编译,也最好执行make mrproper命令来清理一些残留文件,不过该命令也会将核心配置文件(.config)删除掉,所以建议在执行该命令前,最好将 .config文件备份一下

内核编译步骤

1、将某个内核解压缩到/usr/src/目录下

2、使用cd命令切换到/usr/src目录下

3、在/usr/src目录下有一个内核文件,为这个内核文件创建链接

4、切换到这个链接目录下,里面存放里许多和内核有关的文件

5、使用命令make menuconfig来打开一个文本窗口(如果使用该命令打不开的话,把终端窗口最大化)

在这个文本窗口下:

[*]:表示将该功能直接编译到内核

[M]:表示将该功能做出模块

[]:表示不启用该功能

使用Enter键可以切换这三种选择

在每个选项后面如果出现箭头,表示该选项还有其子选项,按Enter键可进入子选项界面

如果选择完所有功能后,按两次ESC键,即可回到退出界面,在按YES键即可保存之前的选择配置

6、保存配置完成之后,会在当前目录下生产一个.config文件

7、在使用make进行编译

8、使用make modules_install安装内核模块

9、使用make install命令安装内核即可

不过使用这种方式编译的内核可能在系统启动过程中出现许多的错误,或者是某些功能没有编译到内核中。因此,完了提高编译的成功率,我们可以将当前系统内核所使用的配置文件,直接复制到链接目录下,并重命名为.config来覆盖链接目录下的.config文件,之后的步骤和之前一下,不再详述。

例如:编译linux-2.6.28.10.tar.gz这个内核文件

screen命令:
screen -ls: 显示已经建立的屏幕
screen: 直接打开一个新的屏幕
    Ctrl+a, d: 拆除屏幕
screen -r ID: 还原回某屏幕
exit: 退出

linux学习之路之手动编译内核

时间: 2024-12-25 15:06:39

linux学习之路之手动编译内核的相关文章

linux学习之路之受到编译软件

软件编译安装 我们知道在安装某一个软件时,有些我们不需要安装的程序或者特性被安装到系统上去了,而我们需要的程序或者特性没有被安装进去,或者说该软件存在一些漏洞等等因素,我们都需要修改该软件的源代码,然后在重新编译生产一个二进制文件,最后用户才可以安装这个二进制文件. 我们知道系统真正识别的文件其实只有二进制文件,而某个软件的原始码就是就是一段程序,而这类程序是供人看的,系统并不识别,因此为了让系统能够识别这段原始码的内容,必须要对原始码进行转换,转换成系统能够识别的二进制程序.而原始码转换成二进

linux学习之路之模块管理和内核编译

我们知道linux内核再启动过程中,主要完成以下几种功能: 1.侦测硬件信息 2.驱动初始化(可能借助intrd文件加载硬件模块) 3.以只读方式挂载根文件系统 4.转载第一支程序init 如果我们的kernel识别不了某些硬件或者实现不了某些功能的话,那么只能将某些功能代码添加在内核当中,或者将这些功能代码做成模块的形式,kernel需要哪些模块就直接调用这些模块即可.通过这两种功能就可以实现相应的功能. 而不同的实现机制和kernel设计有关. kernel设计分为2种: 一种是单内核:这种

linux学习之路之目录结构

FHS的产生 我们知道目前linux的发行版本很多,如果每一个发行版本,它的目录层次结构都不相同的话,那么当管理员去管理其他的linux主机时,就会不知多措了.而且在开发过程中,如果每一个程序员都按照自己的想法去存放的数据的话,那么其他的程序员想去查找别人的数据文件时,这是问题就来了,因为文件系统中存放了那么多的数据,谁知道你把数据存放在哪儿了?因此,需要一个标准来规范,这样每个人都按照这种规范去存放.查找数据等操作,这样,当其他人如果需要去查找的话,就会简单多了. FHS:全称为文件系统目录标

linux学习之路之磁盘管理和文件系统二

从前面的学习中,我们知道磁盘可以划分多个分区,每一个分区可以经过高级格式化以后,就形成了一个文件系统.那么在Linux系统中该如何创建分区呢? 使用fdisk命令可以来创建分区 语法格式为:fdisk [-l] 设备文件名(不能加数字) -l:显示指定硬盘上所有的分区内容.后面不加设备,则显示系统上所有的设备的所有分区内容. 不加任何选项时,可以用来创建分区. 使用fdisk 设备文件名(不能加数字) 其中这些子命令表示如下意思: p:显示当前硬盘上面的所有分区,包括没有保存的. n:表示创建新

linux学习之路之创建私钥CA及使用CA为客户端颁发证书

创建CA(Certificate Authority) CA的储存格式主要有2种:x509和pkcs12 x509是目前最主流的CA储存格式,在x509格式的证书中,储存的内容主要有: 证书的公钥和使用期限 证书的合法拥有着 证书该如何被使用 CA的信息 CA签名的校验码 默认情况下,TCP/IP模型和OSI模型,并没有实现数据的加密,而要实现数据的加密需要使用TLS/SSL协议,TLS和SSL在有些Linux版本上实现的机制是相同的,因此在这里我们之介绍SSL协议 SSL(Secure Soc

linux学习之路之日志系统

日志系统 日志系统是用来存放系统在执行任务过程中产生的讯息或者是执行时产生的错误日志信息都存放在日志系统里.由于Linux系统上面会同时开启多个服务或者子系统,因此为了便于查看或者管理它们产生的日志信息,我们一般将不同的子系统或者服务产生的日志信息根据级别不同放在不同的配置文件中或者主机中. 在RHEL 5上,使用的日志系统是syslog 而在RHEL 6上,使用的日志系统是syslog-ng这是一款开源系统 要想使用syslog日志系统,必须要确保syslog服务一直在运行.而syslog服务

1.菜鸟的linux学习之路------linux初体验

脚本编程语言通常是解释型的.这类程序的执行,是由解释器读入代码,并将其转换成内部的形式,在执行.请注意,解释器本身是一般的编译型程序. 常用的脚本编程语言有 :awk,Perl,Python,Ruby,Shell.这里的Ruby是日本人研发的. 注释: linux : 1.rm 删除指定的文件 例:rm /Users/apple/Desktop/QQDock.plist 2.假设你想知道现在的系统有多少人在登录,那么 who命令可以实现 3.|管道符号可以在两个程序之间建立管道:who的输出,成

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

linux学习之路之LVM的快照功能

我们知道LVM可以弹性的调整文件系统的大小,其实LVM除了可以调整文件系统的大小之外,还有另一个功能就是系统快照. 所谓系统快照就是将某一时刻文件系统中的信息记录到快照区中,这里的某一时刻指的是在原始数据被改变的那一瞬间,原始数据会移到快照区里.而其他没有改变的数据,快照区和文件系统共享.所以刚建立快照时快照区内容和文件系统的内容一样. 由于我们知道只有改变的数据才会移动到快照区,因此快照区中保存的内容比较少. 快照区的原理图如下: 那么如何建立快照区呢? 使用lvcreate -s命令来创建快