Linux系统下移植busybox中mkfs.vfat命令

为了延长磁盘寿命来存储音视频文件,打发在格式化磁盘过程中将簇的大小设置大点。因为存储的音视频文件现对较大,那么将簇大小设置得尽可能大,这样可以增强磁盘读取数据的性能,同时也不会浪费太多空间。

但发现我们设备的mkfs.vfat不支持-s参数设置簇的大小。

于是打算重新移植mkfs.vfat.

思路1

重新移植busybox

1.官网上下载最新的busybox源码

2.修改Makefile

ARCH =arm

CROSS_COMPILE = /opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux-

2.make menuconfig

设置为静态库

3.make

出现错误

make: *** [busybox_unstripped] Error 1
root@chenwr-pc:/home/soft/busybox-1.31.0# make
 LINK  busybox_unstripped
Your linker does not support --sort-section,alignment
Your linker does not support --sort-common
Static linking against glibc, can't use --gc-sections
Trying libraries: crypt m resolv
Failed: -Wl,--start-group -lcrypt -lm -lresolv -Wl,--end-group
Output of:
/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux-gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -static -march=armv7l -o busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a klibc-utils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o klibc-utils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -lresolv -Wl,--end-group
==========
networking/lib.a(ipcalc.o): In function `ipcalc_main':
ipcalc.c:(.text.ipcalc_main+0x24c): warning: gethostbyaddr is obsolescent, use getaddrinfo() instead.
libbb/lib.a(inet_common.o): In function `INET_resolve':
inet_common.c:(.text.INET_resolve+0x60): warning: gethostbyname is obsolescent, use getnameinfo() instead.
coreutils/lib.a(mktemp.o): In function `mktemp_main':
mktemp.c:(.text.mktemp_main+0x8c): warning: the use of `mktemp' is dangerous, better use `mkstemp'
networking/lib.a(nslookup.o): In function `add_query':
nslookup.c:(.text.add_query+0x70): undefined reference to `res_mkquery'
networking/lib.a(nslookup.o): In function `send_queries':
nslookup.c:(.text.send_queries+0x2d0): undefined reference to `__ns_initparse'
nslookup.c:(.text.send_queries+0x308): undefined reference to `__ns_parserr'
nslookup.c:(.text.send_queries+0x480): undefined reference to `__ns_get16'
nslookup.c:(.text.send_queries+0x5cc): undefined reference to `__ns_get32'
nslookup.c:(.text.send_queries+0x5e4): undefined reference to `__ns_get32'
nslookup.c:(.text.send_queries+0x5fc): undefined reference to `__ns_get32'
nslookup.c:(.text.send_queries+0x614): undefined reference to `__ns_get32'
nslookup.c:(.text.send_queries+0x628): undefined reference to `__ns_get32'
util-linux/lib.a(fallocate.o): In function `fallocate_main':
fallocate.c:(.text.fallocate_main+0x80): undefined reference to `posix_fallocate'
util-linux/lib.a(unshare.o): In function `unshare_main':
unshare.c:(.text.unshare_main+0x1ec): undefined reference to `unshare'
collect2: ld returned 1 exit status
Note: if build needs additional libraries, put them in CONFIG_EXTRA_LDLIBS.
Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
make: *** [busybox_unstripped] Error 1

重新make menuconfig 进入设置把报错的模块关闭不勾选。

参考网上的说法,还是会有很多错误。而且关闭很多网络的东西和系统的配置,担心万一影响到其他命令呢。因为我发现原来移植后的busybox,比如ls命令,不是单独的一个bin文件。而是软连接到busybox中

而且我发觉设备的空间有限,原先的busybox才800多k,即使新移植成功也要2M多。于是换个思路,单独源码移植mkfs.vfat

到此该命令移植完毕。

总结

以上所述是小编给大家介绍的Linux系统下移植busybox中mkfs.vfat命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Docker利用busybox创建基础镜像(base image)

    Docker镜像的首行从FROM alpine之类的镜像开始,但是最初的基础镜像是如何创建的,本文使用一个busybox创建一个基础镜像,相信在此过程中会对docker一些相关的概念有进一步的理解. 什么是基础镜像(base image) 简单来说,基础镜像就是没有From或者FROM scratch开头的Dockerfile所构建出来的镜像.比如alpine,这个很小的linux镜像目前只有4M左右 [root@kong ~]# docker images |grep alpine docke

  • android设备不识别awk命令 缺少busybox怎么办

    android设备不识别awk命令,缺少busybox 一.什么是BusyBox ? BusyBox 是标准 Linux 工具的一个单个可执行实现.BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大.更复杂的工具,例如 grep.find.mount 以及 telnet.有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令.(摘自百度百科) 二.下载BusyBox 下载B

  • Alpine镜像中telnet转移至busybox-extras

    Alpine镜像中的telnet在3.7版本后被转移至busybox-extras包中,需要使用apk单独安装. 现象 Alpine版本为3.8, 不再有指向busybox的telent ~ # cat /etc/alpine-release 3.8.0 ~ # ~ # ls /usr/bin/ |grep -w busybox |grep telnet ~ # 原因 确认了相关的issue发现,在Alpine3.7时就已经有了这个变化:https://github.com/gliderlabs

  • Linux系统下移植busybox中mkfs.vfat命令

    为了延长磁盘寿命来存储音视频文件,打发在格式化磁盘过程中将簇的大小设置大点.因为存储的音视频文件现对较大,那么将簇大小设置得尽可能大,这样可以增强磁盘读取数据的性能,同时也不会浪费太多空间. 但发现我们设备的mkfs.vfat不支持-s参数设置簇的大小. 于是打算重新移植mkfs.vfat. 思路1 重新移植busybox 1.官网上下载最新的busybox源码 2.修改Makefile ARCH =arm CROSS_COMPILE = /opt/hisi-linux-nptl/arm-his

  • linux系统下用.sh文件执行python命令的方法

    目录 标准版 进阶版 1 for循环 2 嵌套for循环 3 定义变量名 4 写if函数 总结 标准版 假设,在终端要执行的命令是: python main.py 首先在执行目录下创建test.sh(文件名自定义)文件 并在test.sh文件中写入: python main.py 保存. ======================== 经实践 下面这一步可省 ================================= 在终端执行: chmod a+x test.sh 以上命令使test

  • linux CentOS 系统下如何将php和mysql命令加入到环境变量中

    linux CentOS 系统下如何将php和mysql命令加入到环境变量中 在Linux CentOS系统上安装完php和MySQL后,为了使用方便,需要将php和mysql命令加到系统命令中,如果在没有添加到环境变量之前,执行"php -v"命令查看当前php版本信息时时,则会提示命令不存在的错误,下面我们详细介绍一下在linux下将php和mysql加入到环境变量中的方法(假设php.mysql和apache分别安装在/phpstudy/server/php/./phpstudy

  • Linux系统下使用U盘的方法

    在linux系统之中, 一切设备皆文件, 所以我们的U盘也是一个文件.磁盘设备被抽象成sda文件, U盘设备被抽象成sdb文件. 1.查看所有的设备文件. 在linux的文件系统中, /dev中存放着所有的设备文件. cd /dev #进入dev文件夹 ls #查看所有的文件 其中名为sda的系类是磁盘设备, sdb系列是U盘设备. 2.外部设备挂载点 在linux中, 外部设备需要挂载在/mnt文件夹中. cd /mnt #进入/mnt文件夹 ls #列出所有文件, 发现一个也没有 mkdir

  • linux系统下创建lvm挂载到指定目录的操作步骤

    1 .背景 在企业中有时我们为方便安装软件.数据的管理,需要把安装软件.数据放到固定目录下,磁盘满了方便扩展,这里假如需要一个/data目录存放数据,并单独进行挂载. 2.操作步骤 2.1  划分磁盘 2.2 创建PV [root@centos-6 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created 扫描系统PV可以使用pvscan查看新建的PV [root@centos-6 ~]# pvsca

  • Oracle VM VirtualBox 在linux系统下安装增强插件实现访问主机的共享文档方法

    一.安装增强插件 1 选择"设备"--"安装增强功能",然后可以看到在虚拟机的光驱中自动加载了增强iso的文件(VBoxGuestAdditions.iso) 2在linux 中挂载光驱 mount /dev/cdrom /mnt 3在将/mnt文件中的所有文件拷在/tmp目录下 cp -r /mnt/* /tmp 4在安装增强文件之前安装相应的包,安装后重启 yum install kernel yum install kernel-headers kernel-

  • 最新Linux系统下安装MySql 5.7.17全过程及注意事项

    1.cd /usr/local/ ##进入local目录 2.cp /home/soft/MySQL-5.7.15-Linux-glibc2.5-x86_64.tar.gz /usr/local/ ##拷贝mysql压缩到local目录 3.cd /usr/local/ ##进入local目录 4.tar -xzvf mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz ##解压mysql压缩包 5.mv mysql-5.7.15-linux-glibc2.5-x8

  • Linux系统下mysqlcheck修复数据库命令(详解)

    mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表. 实际上,它集成了mysql工具中check.repair.analyze.optimize的功能. 有3种方式来调用mysqlcheck: shell> mysqlcheck[options] db_name [tables] shell> mysqlcheck[options] ---database DB1 [DB2 DB3...] shell> mysqlcheck[options] --all--d

  • linux系统下ubuntu重启apache服务命令

    在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令 linux系统为Ubuntu 一.Start Apache 2 Server /启动apache服务 /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start 二. Restart Apache 2 Server /重启apache服务 /etc/init.d/apache2 restart or $ sudo /etc/init.

  • 浅析Linux系统下安装wetty和使用说明

    以下内容从wetty简介.环境准备.wetty安装.以及验证方面给大家分析,具体详情请看下文吧. 1. Wetty简介 Wetty是使用Node.js和websockets开发的一个开源Web-based SSH.关于Web-based SSH的更多资料请参考https://en.wikipedia.org/wiki/Web-based_SSH. 而wetty的资料请参考https://github.com/krishnasrinivas/wetty. 2. 环境准备 因为wetty是使用Nod

随机推荐