[30]_bash: ./mkfs.jffs2: No such file or directory

本文介绍如何使用海思SDK制作适用于特定SPI Flash的jffs2格式根文件系统镜像。面对编译错误与依赖缺失的问题,文章提供了详细的解决步骤,包括安装必要的32位兼容包和工具。

海思sdk提示的制作根文件系统的办法如下:

(6)制作文件系统镜像:

在osdrv/pub/中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上flash的规格型号制作文件系统镜像即可。

spi flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到spi flash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。下面以块大小为64KB为例:

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
或者

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_glibc -l -e 0x40000 -o osdrv/pub/rootfs_glibc_256k.jffs2

我的uboot启动提示:

U-Boot 2010.06 (Jan 24 2018 - 18:01:22)

Check spi flash controller v350... Found

Spi(cs1) ID: 0xC2 0x20 0x18 0xC2 0x20 0x18

Spi(cs1): Block:64KB Chip:16MB Name:"MX25L128XX"

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0 
16384 KiB hi_sfc at 0:0 is now current device


根据海思SDK在制作根文件系统时,出现下面的提示:

root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv# osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
bash: osdrv/pub/bin/pc/mkfs.jffs2: No such file or directory

root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# ls

mkfs.cramfs  mkfs.jffs2  mkimage  mksquashfs  mkyaffs2image
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# ./mkfs.jffs2 

bash: ./mkfs.jffs2: No such file or directory

root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# file mkfs.jffs2 
mkfs.jffs2: ELF 32-bitLSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.0, not stripped


解决办法:

先安装一下32位兼容包:(我的系统是64bit的ubuntu16.04.3)

sudo apt-get install lib32stdc++6

sudo apt-get install  lib32z1

root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub/bin/pc# mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
The program 'mkfs.jffs2' is currently not installed. You can install it by typing:
apt install mtd-utils


尝试以上还是不行,再次安装下面的两个:

apt install mtd-utils

apt-get install man-db


root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0# osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x40000 -o osdrv/pub/rootfs_uclibc_256k.jffs2
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0# cd osdrv/pub/
root@ubuntu:/itc_work/hi3520D_SDK_V1.0.4.0/osdrv/pub# ls
bin  image_uclibc  rootfs  rootfs_uclibc  rootfs_uclibc_256k.jffs2  rootfs_uclibc.tgz


到此,rootfs_uclibc_256k.jffs2  制作成功


这个错误: ``` bash: ./runInstaller: No such file or directory ``` 表示你当前执行的命令 `./runInstaller` 试图运行一个名为 `runInstaller` 的可执行文件,但系统在当前目录下找不到这个文件。 --- ### ✅ 可能原因及解决方案 #### 1. **文件不存在于当前目录** 你可能没有进入正确的目录,或者文件根本不在那里。 **解决方法:** 检查当前目录下是否有 `runInstaller` 文件: ```bash ls -l runInstaller ``` 如果没有输出或提示不存在,请确认: - 你是否已经解压了安装包(如 Oracle 数据库、Grid Infrastructure 等)? - 是否进入了正确的安装目录? 例如,如果你下载的是 `linuxx64_19c_database.zip`,你需要先解压: ```bash unzip linuxx64_19c_database.zip ``` 然后进入解压后的目录: ```bash cd database ls -l runInstaller ``` 此时你应该能看到 `runInstaller` 文件。 --- #### 2. **权限不足,无法执行** 即使文件存在,如果没有可执行权限,也会出问题。 **解决方法:** 给文件添加执行权限: ```bash chmod +x runInstaller ``` 然后再运行: ```bash ./runInstaller ``` --- #### 3. **路径错误,使用了相对路径但位置不对** 你可能在错误的目录中运行了命令。 **解决方法:** 使用 `pwd` 查看当前路径,确保你在包含 `runInstaller` 的目录中。 或者使用绝对路径运行: ```bash /path/to/your/database/runInstaller ``` --- #### 4. **文件系统不支持执行(如挂载了 noexec)** 如果你把安装包放在 `/tmp` 或 NFS 挂载点上,并且该分区被挂载为 `noexec`,那么即使有文件也无法执行。 **解决方法:** 检查挂载选项: ```bash mount | grep $(df . | tail -1 | awk '{print $1}') ``` 如果看到 `noexec`,你就不能在这里运行程序。 **临时解决方案:** 复制文件到允许执行的目录,比如 `/home/$USER/install`: ```bash mkdir -p /home/$USER/install cp -r * /home/$USER/install/ cd /home/$USER/install chmod +x runInstaller ./runInstaller ``` --- #### 5. **操作系统架构不匹配或缺少依赖(罕见但可能)** 虽然报错是“No such file or directory”,但在某些情况下,如果是一个动态链接的二进制文件而缺少解释器(比如 32/64 位兼容问题),也可能显示类似错误。 你可以用: ```bash file runInstaller ``` 查看它是不是一个有效的可执行文件。正常输出应类似于: ``` runInstaller: Bourne-Again shell script, ASCII text executable ``` 如果是 ELF 文件但提示找不到文件,可能是缺少 32 位库(常见于 64 位系统跑旧脚本)。不过 `runInstaller` 通常是 shell 脚本。 --- ### ✅ 完整示例流程(以 Oracle 安装为例) ```bash # 解压安装包 unzip linuxx64_19c_database.zip # 进入目录 cd database # 检查文件是否存在 ls -l runInstaller # 添加执行权限 chmod +x runInstaller # 启动安装器 ./runInstaller ``` --- ### ❓ 常见相关问题排查清单 - ✅ 是否已解压安装包? - ✅ 是否进入了解压后的目录? - ✅ 是否有 `runInstaller` 文件?(用 `ls` 确认) - ✅ 是否赋予执行权限?(`chmod +x`) - ✅ 当前文件系统是否支持执行?(避免 `/tmp` 等 `noexec` 分区) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值