编译内核lspcu 工具源码 util-linux
1. 获取源码
wget https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.34/util-linux-2.34.tar.xz
2. 解压
tar xvf util-linux-2.34.tar.gz
cd util-linux-2.34
本次实验环境:使用云主机
1.查看Lscpu , dmesg ,lsblk 等版本
我们看到这些指令都是基于Util-linux 2.23.2版本,如何查看这写信息获取方法,如何自己编译这些Tool?
不仅仅是以上几个命令util-linux是Kernel 基本的工具 ,不同版本会增添一些命令。接下来我们会自己编译自己的Tool,一方面Tool和不同Cpu的适配存在问题需要Debug ,一方面有助于我们学习LinuxKernel。
基本介绍:
在 util-linux 工具集中,有一些常用的命令经常被 Linux 系统管理员和用户使用。以下是一些 util-linux 工具中常见的命令及其功能:
1. **fdisk**:用于分区磁盘的命令,常见的操作包括创建、删除、调整磁盘分区。例如:`fdisk /dev/sda`。
2. **mount** 和 **umount**:用于挂载和卸载文件系统的命令。例如:`mount /dev/sdb1 /mnt` 和
`umount /mnt`。
3. **blkid**:用于查看块设备的文件系统类型和属性的命令。例如:`blkid /dev/sda1`。
4. **kill**:用于终止进程的命令,可以通过进程 ID 或名称终止指定的进程。例如:`kill -9 PID`。
5. **more** 和 **less**:用于分页查看文本文件内容的命令。例如:`more file.txt` 和 `less file.txt`。
6. **su** 和 **sudo**:用于切换用户身份或以超级用户权限执行命令的命令。例如:`su username` 和
`sudo command`。
7. **dmesg**:用于查看系统日志的命令,显示内核环缓冲区的内容,用于诊断系统问题。例如:
`dmesg | grep error`。
8. **hwclock**:用于设置和显示系统硬件时钟的命令。例如:`hwclock --show`。
9. **losetup**:用于管理循环设备的命令,允许将文件作为块设备挂载到文件系统中。例如:
`losetup -f file.img`。
10. **rename**:用于批量重命名文件的命令。例如:`rename 's/old/new/' *.txt`。
11.lscpu:该命令用于显示有关 CPU 架构的信息,包括处理器架构、CPU 核心数量、线程数、字节顺序等。运行 lscpu 命令可以查看系统的 CPU 相关信息。
编译方法及报错解决方法
1.执行autogen.sh生成configure
2. 安装依赖包 yum install gettext-devel // 包含 autopoint
Apt-get install autopoint
Apt-get install bison
需要以下依赖包
需要安装autopoint aclocal autoconf auto header auto make libtooliaze 等tool
3.报错line 126: po/update-potfiles: Permission denied
权限报错:直接Chmod 777 -R *,运行成功后生成Configure
4运行 ./configure 出现错误
如果提示configure: error: liblastlog2 selected, but required sqlite3 library not available,禁用liblastlog2
sudo ./configure --disable-liblastlog2
5. Configure 成功后使用Make Make -j64 使用多核加快编译
报错
在Makefiles找到 CFLAGS 原始没有添加-std=c99 4862行
CFLAGS = -g -O2 -std=c99
:4862 跳转到 4862行 修改即可
6.make install //安装到本地 如果不替换本地tool 不需要make install
Tool 目录下生成各个Tool的原始文件
这个Tool 可以通过./方式运行 例如 ./lscu ./lsblk
替换系统下原始的Toll ,Make install 后: 将自己编译的Tool 替换掉系统下原始的,直接使用lscpu 就是使用刚编译的Tool
整个Tool源码都可以自己适配,编译后可以作为自己的linux Tool,可以自己修改Tool 定制自己的Tool版本