首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用parted的可描述分区

使用parted的可描述分区
EN

Unix & Linux用户
提问于 2019-01-26 09:55:18
回答 1查看 454关注 0票数 0

这是我的设备的原始分区表

代码语言:javascript
复制
Number  Start   End     Size    File system  Name        Flags
19      210MB   4370MB  4161MB  ext4         SYSTEM
20      4370MB  4633MB  262MB   ext4         CACHE
21      4633MB  4638MB  5243MB  ext4         HIDDEN

我试图缩小系统和缓存分区的大小,并删除隐藏以生成供应商分区。我按照分拆的命令去做

代码语言:javascript
复制
parted /dev/block/mmcblk0 
rm 19
rm 20
rm 21
mkpart SYSTEM ext4 210MiB 4000MiB 
mkpart CACHE ext4 4000MiB 4200MiB
mkpart VENDOR ext4 4200MiB 4638MiB
name 19 SYSTEM 
name 20 CACHE
name 21 VENDOR

我正在努力使这个脚本可以在恢复过程中闪现。

代码语言:javascript
复制
#!/bin/bash
echo Applying resize operation
cd /sbin/
chmod u+x /parted
parted --script /dev/block/mmcblk0 \
    rm 19 \
    rm 20 \
    rm 21 \
    mkpart SYSTEM ext2 210MiB 4000MiB \
    mkpart CACHE ext2 4000MiB 4200MiB \
    mkpart VENDOR ext2 4200MiB 4638MiB \
    name 19 SYSTEM \
    name 20 CACHE \
    name 21 VENDOR \

但是当我闪现时,我在日志中出现了一个错误。

代码语言:javascript
复制
minzip: Extracted file "/sbin/parted"
minzip: Extracted file "/sbin/script.sh"
about to run program [/sbin/script.sh] with 1 args
run_program: execv failed: No such file or directory
run_program: child exited with status 1
EN

回答 1

Unix & Linux用户

发布于 2019-01-26 10:58:27

/bin/bash是否存在于您的恢复环境中?您所看到的消息引用了minziprun_program,这表明恢复环境可能被严格简化:它可能有一个不同的、更紧凑的shell,比如dash,而不是bash

看起来,您的实际脚本也在向系统中添加parted

代码语言:javascript
复制
minzip: Extracted file "/sbin/parted"

但是,您是否确保parted所需的所有库也存在?您可以使用ldd命令查看可执行文件(或其他库)所依赖的库列表。例如,下面列出了x86_64版本的parted的依赖项。您的实际列表可能会有所不同,这取决于编译parted时所选择的选项、系统架构和您正在使用的Linux发行版的路径名约定。

代码语言:javascript
复制
$ ldd /sbin/parted 
    linux-vdso.so.1 (0x00007ffff609a000)
    libparted.so.2 => /lib/x86_64-linux-gnu/libparted.so.2 (0x00007f9d17be2000)
    libreadline.so.7 => /lib/x86_64-linux-gnu/libreadline.so.7 (0x00007f9d17995000)
    libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f9d1776b000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9d173cc000)
    libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f9d171c7000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9d16fc3000)
    libdevmapper.so.1.02.1 => /lib/x86_64-linux-gnu/libdevmapper.so.1.02.1 (0x00007f9d16d6f000)
    libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f9d16b29000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f9d18048000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f9d16921000)
    libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9d166f9000)
    libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007f9d1822e000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9d164dc000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9d161d8000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9d15f65000)

在这里,linux-vdso.so.1是内核本身提供的虚拟共享对象。但其余的都是必须存在的库,否则parted无法成功加载以执行。

如果您的环境还没有安装parted,很可能也没有安装libparted.so.*。缺少这个库会导致parted命令的失败。

错误信息

代码语言:javascript
复制
run_program: execv failed: No such file or directory

可能是想告诉您,命令文件本身或它所依赖的一个库都不可用。适当的shell可能会显示更详细的错误消息,但是这里的消息似乎来自run_program,我认为这是首先尝试启动脚本的东西。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/496844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档