《手把手教你构建自己的 Linux 系统》学习笔记(9)

目录

  • autoreconf 命令的作用是什么?
  • aclocal
  • automake -a
  • autoconf
  • 一条命令搞完三面三步
  • 既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制?
  • Module-Init-Tools 软件包的作用是什么?
  • Patch 软件包的作用是什么?
  • Psmisc 软件包的作用是什么?
  • Rsyslog 软件包的作用什么?
  • sysvint 软件包的作用是什么?
  • Udev 软件包的作用是什么?
  • DHCPCD 软件包的作用是什么?
  • Xz-Utils 软件包的作用是什么?
  • openssl 软件包的作用是什么?
  • openssh 软件包的作用是什么?
  • Bootscript 软件包的作用是什么?
  • 启动脚本是什么?
  • sysvinit 的运行级是什么概念?
  • 系统运行时如何改变运行级?P233
  • GRUB 软件包的作用是什么?
  • Linux 内核软件包的作用是什么?

autoreconf 命令的作用是什么?

大多数软件包在发布源代码的时候会提供 configure 配置脚本,该配置脚本多数是由 autoconf 软件包提供的命令根据 configure.ac 或 configure.in 文件所产生的。

个别软件包发布时未提供如 configure 等编译相关的配置文件,在编译前需要使用 automake 和 autoconf 软件包中提供的命令来生成相关的文件。

装备好配置编译脚本文件的过程是

aclocal
automake -a
autoconf

aclocal

这个命令是根据 configure.ac 文件产生 aclocal.m4 文件,该文件是使用 m4 命令进行解析的宏文件,其中定义了配置过程中需要测试的内容。

automake -a

根据 makefile.am 文件生成 makefile.in 文件,makefile.in 文件会在 configure 脚本处理后生成编译控制文件 makefile,GNU 软件发布代码中通常需要包含 License、README、TODO 和 Changelog 文件,通常情况下这些文件与软件包的编译无关,但是如果缺少这些文件 automake 命令不会生成 makefile.in 文件,automake 软件包中提供了这些文件的模板,automake 命令使用 -a 参数将自动用模板文件补全缺少的文件。

autoconf

这个命令根据 configure.ac 或 configure.in 模板文件来生成 configure 配置脚本文件。

一条命令搞完三面三步

上述几条明林够可以合并为一条命令来完成,命令如下:

autoreconf -i

通过这个命令将完成符合编译条件的源代码目录,接着就可以进行配置、编译和安装等常规步骤了。

既然有其他的「编译控制软件」为何还是使用 make 来进行编译控制?

软件编译大多使用 make 命令控制完成,虽然目前也有其他的编译控制软件,如 cmake 和 qmake 等,但是目前 make 命令依然是使用最为广泛的编译控制软件。

make 命令不仅用于编译,还可以用于处理控制相关的工作,比如并行化的系统启动以及软件包依赖管理控制等。

Module-Init-Tools 软件包的作用是什么?

这个软件包中包含了可以处理 Linux 内核 2.5.47 以上版本模块所需要的命令。

Patch 软件包的作用是什么?

这个软件包中包含了一个根据补丁文件的内容来修改或者创建文件的程序。

补丁文件通常是用 diff 明林个创建的文本文件,用于修正现有文件的问题或者错误。

Psmisc 软件包的作用是什么?

这个软件包包含了用于显示进程信息的相关的程序。

Rsyslog 软件包的作用什么?

这个软件包中包含了饿记录系统日志信息(如发生异常事件时内核发出的消息)的程序。

大多数 linux 系统都具有记录系统以及软件运行状态、错误类型等信息报告的功能,以便出现了问题可以进行跟踪和排查。

sysvint 软件包的作用是什么?

这个软件包中包含了饿一组控制系统启动、运行、关闭的程序。

Udev 软件包的作用是什么?

这个软件中包含了一组用于动态创建设备文件的程序,可以将这些程序一并称呼为 Udev 系统。

大多数 linux 系统都使用 udev 系统来管理 /dev 目录中的设备文件,Udev 系统会自动检测计算机并生成设备文件,udev 系统还具有热插拔设备的管理能力,能够根据设备的实际使用情况来动态的创建和删除设备文件,几大的节省了管理设备文件的难度。

DHCPCD 软件包的作用是什么?

许多局域网的网络管理会使用自动分配 IP 的方式,DHCPCD 软件包提供了自动获取并分配 IP 地址的功能(需要网络存在 DHCP 服务),省去了手工去设置 IP 的麻烦。

Xz-Utils 软件包的作用是什么?

这个软件包提供了对于 lzma 和 xz 压缩格式的支持。

目前越来越多的文件采用 lzma 或 xz 的压缩格式,该格式的压缩率非常高。

openssl 软件包的作用是什么?

这个软件包包含了大量的加密和认证相关的算法,是一个非常重要和基础的加密算法函数库,目前有大量的开源软件使用的加密算法基于该软件包提供的函数库,比如安装了这个软件包后 wget 可以提供对 HTTPS 等加密协议的支持。

openssh 软件包的作用是什么?

这个软件包中包含了使用安全加密算法的网络链接客户端(ssh)和服务端(sshd)程序,是网络中进行数据安全传输中最为常用的工具。

他提供的 ssh 和scp 命令几乎出现在现在所有的 Linux 系统中。

Bootscript 软件包的作用是什么?

大多数 linux 系统都会包含一套启动和关闭系统的脚本,bootscripts 软件包中包含了一套脚本专门用于启动/关闭本次完成的目标系统。

启动脚本是什么?

大多数 linux 系统使用的是基于运行级(run-levles)概念的启动工具(sysvinit),在不同的运行级上使用不同的脚本集合,这些脚本集合完成了对应运行级所需要的任务。

不同 linux 系统所包含的启动脚本大多数情况下是不同的,每个系统根据其自身的规则来定制脚本,这使得在某个 linux 系统发行版上可以正常工作的脚本不一定能够在另一个 linux 发行版上正常工作。

虽然脚本不同,但是基于 sysvinit 软件包提供的启动功能还是具有一定的规范的。

sysvinit 的运行级是什么概念?

sysvinit(从现在开始我们称之为 init)以运行几的模式来工作,一般定义了七个运行级(从 0 到 6,实际上还可以有更多的运行级,参考 man 8 init 获得更多信息),每个运行级对应于一套设定好的任务,当启动某个运行级时,操作系统就需要执行相应的任务,下面是不同运行级的任务描述:

0,关闭计算机

1,启动到单用户模式

2,启动到无网络的多用户模式

3,启动到有网络的多用户模式

4,保留的启动级别,可用作自定义,默认同运行级 3

5,同运行级 4,一般用于图形界面(GUI)登录任务(如启动到 X 的 xdm、KDE 的 kdm)

6,重新启动计算机

启动时根据 /etc/inittab 中的设置来确定使用哪个级别的启动,该配置文件中有一行内容如下 id:3:initdefault: 这里的数字 3 就代表了默认使用运行级为 3 的启动任务。

系统运行时如何改变运行级?P233

系统运行时改变运行级的命令是

init <运行级别>

例如要重启计算机,用户可以直接运行 init 6 命令,reboot 命令其实知识这个命令的别名,同样 halt 命令是 init 0 的一个别名。

在 /etc/rc.d 目录下有一些类似于 rc?.d (这里 ? 是运行级的数字表示)及 rcsysinit.d 目录,目录中都包含了许多链接文件,以 K 和 S 字幕开头后跟数字和任务名称,他们的含义是: K 字母表示是停止一个服务, S 字母表示是启动一个服务,数字则确定脚本的执行顺序,从 00 到 99(数字越小执行的越早),当 init 转换到某个运行级时,响应的任务就会停止(K 开头),另一些服务就会启动(S 开头)

在 /etc/rc.d/rc?.d 以及 rcsysinit.d 目录中的都是链接文件,真正的脚本文件存放在 /etc/rc.d/init.d 目录中,每个文件完成一组实际任务。

一般情况下,任务名称相同的停止脚本和启动脚本的链接都是指向 /etc/rc.d/init.d 目录中同一个脚本,启动控制程序会根据链接文件的名称使用不同参数调用脚本,参数包括 start、stop、restart、reload 和 status 等,以 K 开头的链接文件,使用 stop 参数调用运行,以 S 开头的链接文件,调用 start 参数调用运行。

例外的是 rc0.d 和 rc6.d 目录中以 S 开头的链接文件使用 stop 参数调用,用来停止某些服务,这背后的逻辑是:重启或者关闭系统时,不会是启动服务,只会停止。

以下是脚本参数的描述:

start,启动服务

stop,停止服务

restart,停止服务,然后再启动

reload,该服务的配置已经更新,在修改了某服务的配置文件后,不想重启服务的死后可以使用该参数

status,显示服务的状态,如果服务正在运行,会显示该服务进程的 PID 编号

GRUB 软件包的作用是什么?

这个软件包是一个可以在 x86 平台上用于启动常见操作系统的启动器。

Linux 内核软件包的作用是什么?

这个软件包中包含了饿一个类 UNIX 操作系统内核的实现——Linux

为什么不实用 make install 命令来安装内核?

因为会导致如 /usr/include 目录中的头文件丢失的问题。

你可能感兴趣的:(《手把手教你构建自己的 Linux 系统》学习笔记(9))