当前位置: 首页 > news >正文

util-linux 和 dosfstools 开发 ,fdisk mkfs工具移植

一.util-linux 是一个开源软件包,包含了许多对 Linux 系统至关重要的工具。它提供了大量的命令行工具,用于管理文件、磁盘、网络等各个方面12。以下是一些主要功能:

  1. 磁盘管理:工具如 fdiskcfdiskpartx 用于分区管理。
  2. 文件系统:包括 mkfsfsckmount 等工具,用于创建、检查和挂载文件系统。
  3. 系统管理:如 dmesghwclocklogger,用于查看系统日志和管理硬件时钟。
  4. 用户管理:工具如 chfnchshlogin,用于管理用户信息和登录会话。

1.下载:

git clone https://github.com/util-linux/util-linux.git

 安装支持库

sudo apt-get install autopoint bison

2.编译

./autogen.sh
./configure --host=aarch64-linux-android --disable-dependency-tracking --disable-silent-rules --disable-liblastlog2  --disable-nls --prefix=/home/****/util-linux   LDFLAGS=-static 

整编会报很多错误,所以只编译fdisk,

make fdisk -j16

会在当前路径下生成fdisk可执行文件,推到开发板上给权限运行即可

130|rk3588_s:/data/local/tmp # chmod +x fdisk
rk3588_s:/data/local/tmp # ./fdisk /dev/block/sdaWelcome to fdisk (util-linux 2.40).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.The device contains 'vfat' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.Command (m for help):

二.dosfstools

dosfstools是一组用于创建、检查和修改 FAT 文件系统的命令行工具。它包括以下主要工具:

- mkfs.fat:用于创建 FAT 文件系统。

- fsck.fat:用于检查和修复 FAT 文件系统。

- fatlabel:用于设置或显示 FAT 文件系统的卷标。

1.下载:https://github.com/dosfstools/dosfstools

2.解压编译

./autogen.sh
./configure --prefix=/home/***/dosfstools/bin --host=aarch64-linux-android CC=aarch64-linux-android-gccmake -j16

生成的bin:

ls src/mkfs.fat 

测试:

mkfs.fat -F 32 /dev/block/sda1

 由于dosfstools没有打包so的方法,只能自己打包成so

cd src/
aarch64-linux-android-gcc -shared -o libdosfstools.so mkfs_fat-mkfs.fat.o mkfs_fat-common.o mkfs_fat-charconv.o mkfs_fat-device_info.o blkdev/mkfs_fat-blkdev.o blkdev/mkfs_fat-linux_version.o

推到system/lib64/目录即可

修改mkfs.fat.c 后快速编译的方法:

 aarch64-linux-android-gcc -DPACKAGE_NAME=\"dosfstools\" -DPACKAGE_TARNAME=\"dosfstools\" -DPACKAGE_VERSION=\"4.2+git\" -DPACKAGE_STRING=\"dosfstools\ 4.2+git\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"dosfstools\" -DVERSION=\"4.2+git\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DHAVE_WCHAR_H=1 -DSTDC_HEADERS=1 -D_ALL_SOURCE=1 -D_DARWIN_C_SOURCE=1 -D_GNU_SOURCE=1 -D_HPUX_ALT_XOPEN_SOCKET_API=1 -D_NETBSD_SOURCE=1 -D_OPENBSD_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D__STDC_WANT_IEC_60559_ATTRIBS_EXT__=1 -D__STDC_WANT_IEC_60559_BFP_EXT__=1 -D__STDC_WANT_IEC_60559_DFP_EXT__=1 -D__STDC_WANT_IEC_60559_FUNCS_EXT__=1 -D__STDC_WANT_IEC_60559_TYPES_EXT__=1 -D__STDC_WANT_LIB_EXT2__=1 -D__STDC_WANT_MATH_SPEC_FUNCS__=1 -D_TANDEM_SOURCE=1 -D__EXTENSIONS__=1 -DHAVE_ERR_H=1 -DHAVE_LINUX_FD_H=1 -DHAVE_LINUX_HDREG_H=1 -DHAVE_LINUX_VERSION_H=1 -DHAVE_LINUX_LOOP_H=1 -DHAVE_SYS_QUEUE_H=1 -DHAVE_SYS_SYSMACROS_H=1 -DHAVE_ENDIAN_H=1 -DHAVE_SYS_ENDIAN_H=1 -DHAVE_VASPRINTF=1 -DHAVE_DECL_GETMNTENT=1 -DHAVE_DECL_GETMNTINFO=0 -I.  -I./blkdev  -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -g -O2 -MT mkfs_fat-mkfs.fat.o -MD -MP -MF .deps/mkfs_fat-mkfs.fat.Tpo -c -o mkfs_fat-mkfs.fat.o `test -f 'mkfs.fat.c' || echo './'`mkfs.fat.c 


http://www.mrgr.cn/news/34723.html

相关文章:

  • MySQL如何解决幻读?
  • Nginx中使用keepalive实现保持上游长连接实现提高吞吐量示例与测试
  • 微信小程序上传pdf和显示
  • 【论文复现】基于标签相关性的多标签学习
  • 基于Spring Boot+Vue的多媒体素材管理系统的设计与实现
  • 前端开发中常用的包管理器(npm、yarn、pnpm、bower、parcel)
  • 【C++ 11多线程加速计算实操教程】
  • New major version of npm available! 8.3.1 -> 10.8.3 报错
  • 分布式环境中,接口超时重试带来的的幂等问题如何解决?
  • Centos7 部署rocketmq
  • 【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)
  • GNU链接器(LD):输入分区和输出分区介绍
  • MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵
  • 设计原则模式概览
  • 【OpenCV】OpenCV指南:图像处理基础及实例演示
  • 拼多多m 端详情 滑块 分析
  • Beyond 5.5旗舰版和高级版激光软件
  • UART配置流程
  • Unity 热更新(HybridCLR+Addressable)-安装配置HybridCLR+Addressable
  • 【LeetCode】【C++】27. 移除元素 80.删除有序数组中的重复项Ⅱ
  • 软技能与AI技术的融合
  • parameters()函数 --- 获取模型参数量
  • C语言 | Leetcode C语言题解之第432题全O(1)的数据结构
  • 二、电脑入门2之常用dos命令
  • [vulnhub] Jarbas-Jenkins
  • 生物反馈治疗仪——精神患者治疗方案