8.79. Util-linux-2.40.2

Util-linux 软件包包含若干工具程序。这些程序中有处理文件系统、终端、分区和消息的工具。

估计构建时间: 0.5 SBU
需要硬盘空间: 315 MB

8.79.1. 安装 Util-linux

准备编译 Util-linux:

./configure --bindir=/usr/bin     \
            --libdir=/usr/lib     \
            --runstatedir=/run    \
            --sbindir=/usr/sbin   \
            --disable-chfn-chsh   \
            --disable-login       \
            --disable-nologin     \
            --disable-su          \
            --disable-setpriv     \
            --disable-runuser     \
            --disable-pylibmount  \
            --disable-liblastlog2 \
            --disable-static      \
            --without-python      \
            --without-systemd     \
            --without-systemdsystemunitdir        \
            ADJTIME_PATH=/var/lib/hwclock/adjtime \
            --docdir=/usr/share/doc/util-linux-2.40.2

--disable 和 --without 选项防止一些警告,它们与那些需要 LFS 中不存在的依赖项,或者和其他软件包安装的程序不兼容的组件的构建过程相关。

编译该软件包:

make

如果希望进行测试,创建 /etc/fstab 文件以满足两项测试的要求,并以非 root 用户身份运行测试套件:

[警告]

警告

root 用户身份运行测试套件可能对系统造成损害。为了运行它,内核配置选项 CONFIG_SCSI_DEBUG 必须在当前运行的系统中可用,且必须被构建为内核模块。直接将其构建为内核的一部分会导致系统无法引导。为了测试的完整覆盖,必须安装其他 BLFS 软件包。如果希望的话,可以在引导构建完成的 LFS 系统后,执行以下命令运行测试:

bash tests/run.sh --srcdir=$PWD --builddir=$PWD
touch /etc/fstab
chown -R tester .
su tester -c "make -k check"

如果宿主系统内核没有启用配置选项 CONFIG_CRYPTO_USER_API_HASH,或者没有启用任何提供 SHA256 实现的选项 (例如,CONFIG_CRYPTO_SHA256,或者 CONFIG_CRYPTO_SHA256_SSSE3 —— 如果 CPU 支持扩展 SSE3),则 hardlink 测试会失败。另外,lsfd: inotify 这项测试在内核配置选项 CONFIG_NETLINK_DIAG 未启用时会失败。

安装该软件包:

make install

8.79.2. Util-linux 的内容

安装的程序: addpart, agetty, blkdiscard, blkid, blkzone, blockdev, cal, cfdisk, chcpu, chmem, choom, chrt, col, colcrt, colrm, column, ctrlaltdel, delpart, dmesg, eject, fallocate, fdisk, fincore, findfs, findmnt, flock, fsck, fsck.cramfs, fsck.minix, fsfreeze, fstrim, getopt, hexdump, hwclock, i386 (到 setarch 的链接), ionice, ipcmk, ipcrm, ipcs, irqtop, isosize, kill, last, lastb (到 last 的链接), ldattach, linux32 (到 setarch 的链接), linux64 (到 setarch 的链接), logger, look, losetup, lsblk, lscpu, lsipc, lsirq, lslocks, lslogins, lsmem, lsns, mcookie, mesg, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, mountpoint, namei, nsenter, partx, pivot_root, prlimit, readprofile, rename, renice, resizepart, rev, rfkill, rtcwake, script, scriptlive, scriptreplay, setarch, setsid, setterm, sfdisk, sulogin, swaplabel, swapoff, swapon, switch_root, taskset, uclampset, ul, umount, uname26 (到 setarch 的链接), unshare, utmpdump, uuidd, uuidgen, uuidparse, wall, wdctl, whereis, wipefs, x86_64 (到 setarch 的链接), 以及 zramctl
安装的库: libblkid.so, libfdisk.so, libmount.so, libsmartcols.so, 以及 libuuid.so
安装的目录: /usr/include/blkid, /usr/include/libfdisk, /usr/include/libmount, /usr/include/libsmartcols, /usr/include/uuid, /usr/share/doc/util-linux-2.40.2, 以及 /var/lib/hwclock

简要描述

addpart

告知 Linux 内核有新的分区

agetty

打开 tty 端口,提示输入登录名,再启动 login 程序

blkdiscard

丢弃设备上的扇区

blkid

一个命令行工具,用于定位和打印块设备属性

blkzone

用于管理分区存储的块存储设备

blockdev

允许用户从命令行调用块设备 ioctl

cal

显示简单的日历

cfdisk

操作给定设备的分区表

chcpu

修改 CPU 状态

chmem

配置内存

choom

显示或调整 OOM-killer 分数,这一数值用于确定 Linux 在内存不足时首先杀死哪个进程

chrt

操纵进程实时属性

col

过滤掉反向换行符

colcrt

为缺失加粗、半行等功能的终端过滤 nroff 输出

colrm

过滤掉给定列

column

将给定文件格式化为多栏

ctrlaltdel

将 Ctrl+Alt+Del 键组合的功能设定为硬复位或软复位

delpart

要求 Linux 内核删除分区

dmesg

转储内核引导消息

eject

弹出可移动媒体

fallocate

为文件预先分配空间

fdisk

操作给定设备的分区表

fincore

统计给定文件在内存中占用的页面数

findfs

根据标签或统一标识符 (UUID) 查找文件系统

findmnt

是 libmount 库的命令行接口,可以处理 mountinfo、fstab 和 mtab 文件

flock

获取文件锁,并在持有锁的情况下运行命令

fsck

用于检查或修复文件系统

fsck.cramfs

用于对给定设备上的 Cramfs 文件系统进行一致性检查

fsck.minix

用于对给定设备上的 Minix 文件系统进行一致性检查

fsfreeze

是内核驱动 ioctl 操作 FIFREEZE/FITHAW 的简单包装

fstrim

丢弃已挂载文件系统上未使用的块

getopt

解析给定命令行的选项

hardlink

通过创建硬链接,归并重复的文件

hexdump

以十六进制、十进制、八进制或 ascii 格式转储文件

hwclock

读取或设置系统硬件时钟,它又被称为实时时钟 (RTC) 或基本输入输出系统 (BIOS) 时钟

i386

到 setarch 的符号链接

ionice

设定程序的 IO 调度类和优先级

ipcmk

创建多种 IPC 资源

ipcrm

删除给定的进程间通信 (IPC) 资源

ipcs

提供 IPC 状态信息

irqtop

top(1) 风格显示内核中断计数信息

isosize

报告 ISO 9660 文件系统的大小

kill

向进程发送信号

last

显示哪些用户最后登录 (或登出),在 /var/log/wtmp 文件中反向搜索;它也会显示系统引导、关闭和运行级别变化记录

lastb

显示 /var/log/btmp 记录的失败登录企图

ldattach

为串口线附加行规则

linux32

到 setarch 的符号链接

linux64

到 setarch 的符号链接

logger

将给定消息记入系统日志

look

显示以给定字符串开始的行

losetup

设定和控制回环设备

lsblk

以树状格式列出所有或给定块设备的信息

lscpu

打印 CPU 体系结构信息

lsfd

显示当前已打开的文件信息;可以代替 lsof 命令

lsipc

打印系统当前部署的 IPC 设施的信息

lsirq

显示内核中断计数信息

lslocks

列出本地系统锁

lslogins

列出用户、组和系统账户的信息

lsmem

列出可用内存的范围和它们的在线状态

lsns

列出命名空间

mcookie

xauth 创建魔术 cookie (128位随机十六进制数)

mesg

控制其他用户能否向当前用户终端发送消息

mkfs

在设备 (一般是硬盘分区) 上创建文件系统

mkfs.bfs

创建 Santa Cruz Operations (SCO) bfs 文件系统

mkfs.cramfs

创建 cramfs 文件系统

mkfs.minix

创建 Minix 文件系统

mkswap

将给定文件或设备初始化为交换空间

more

在屏幕上分页文本的过滤器

mount

将给定设备上的文件系统挂载到文件系统树结构中的给定目录

mountpoint

检查目录是否为挂载点

namei

显示给定路径中的符号链接

nsenter

在其他程序的命名空间中运行程序

partx

告知内核磁盘分区的存在性和编号

pivot_root

将当前进程的根文件系统设为给定文件系统

prlimit

获取和设定进程资源限制

readprofile

读取内核性能分析信息

rename

重命名给定文件,将给定字符串替换为另一个字符串

renice

修改正在运行的进程的优先级

resizepart

要求 Linux 内核改变分区大小

rev

反转给定文件的每一行

rfkill

用于启用或禁用无线设备的工具

rtcwake

进入睡眠状态,直到给定的唤醒时间

script

记录终端会话打字机文档

scriptlive

根据计时信息重新运行会话打字机文档

scriptreplay

根据计时信息重放终端会话打字机文档

setarch

在新程序环境中修改系统报告的体系结构,并设置进程执行域信息

setsid

在新会话中运行给定程序

setterm

设定终端属性

sfdisk

一个分区表修改器

sulogin

允许 root 登录;一般在系统进入单用户模式时由 init 执行

swaplabel

允许修改交换空间 UUID 和标签

swapoff

禁止在文件或设备上进行分页交换

swapon

启用文件或设备上的分页交换,或列出当前用于交换的设备和文件

switch_root

将另一个文件系统切换为挂载树的根

taskset

获取或设置进程 CPU 亲和性

uclampset

调节进程资源占用限位属性

ul

将下划线转换为在当前终端中表示下划线的 escape 序列的过滤器

umount

断开文件系统与系统文件目录树的连接

uname26

到 setarch 的符号链接

unshare

在某些命名空间与父进程脱离的情况下运行程序

utmpdump

以用户友好的格式显示给定登录文件内容

uuidd

UUID 库使用的守护进程,用于安全、确保唯一性地生成 UUID

uuidgen

创建新的 UUID。每个新创建的 UUID 都是一个随机数,它大概率和其他 UUID —— 包括在本地系统或其他系统,在过去或未来创建的 UUID —— 都不同 (可能存在 2128 个不同的 UUID)

uuidparse

用于解析统一标识符的工具

wall

显示文件或标准输入 (默认值) 的内容到所有登录用户的终端

wdctl

显示硬件看门狗电路状态

whereis

报告给定命令二进制,源代码,以及手册页文件的位置

wipefs

从设备上擦除文件系统签名

x86_64

到 setarch 的符号链接

zramctl

设定和控制 zram (压缩内存盘) 设备的程序

libblkid

包含设备识别和标识提取子程序

libfdisk

包含操作分区表的子程序

libmount

包含挂载和解挂块设备的子程序

libsmartcols

包含以表格形式在屏幕上输出的辅助子程序

libuuid

包含为对象生成唯一标识符,使它在本地系统以外也可以访问的子程序