文件系统映像上的 rpm 查询

文件系统映像上的 rpm 查询

我有一个嵌入式 ARM 系统的 rootfs 快照,该系统使用 rpm 作为包管理器,既可以作为可以在我的主机上回送安装的二进制映像,也可以作为 tarball。

我想在该快照上发出一些 rpm 查询,例如rpm -qa等等rpm -qf /some/file

有没有办法在我的 x86 主机上做到这一点?

现在我必须求助于在 qemu-arm 下实际运行图像并在模拟目标上执行查询,但这不是一种方便的方法。

我尝试使用--dbpath--root的选项,rpmrpmdb无济于事(它们只是默默终止而没有给出任何错误)。

答案1

在我的 Debian 系统上,qemu-user-static 包包含静态链接的用户模拟(与系统模拟相反)二进制文件,包括 /usr/bin/qemu-arm-static

它们都已在 binfmt 工具中注册(通过此包和 binfmt-support 辅助包)。例如:

# cat /proc/sys/fs/binfmt_misc/qemu-arm
enabled
interpreter /usr/bin/qemu-arm-static
flags: OC
offset 0
magic 7f454c4601010100000000000000000002002800
mask ffffffffffffff00fffffffffffffffffeffffff

现在只需将 arm 的根文件系统挂载到 /mnt 并将 /usr/bin/qemu-arm-static (x86 二进制文件)复制到 /mnt/usr/bin/qemu-arm-static

从你的 x86 主机,只需 chroot:

chroot /mnt

现在,您可以运行大多数命令,并认为您是在 arm 系统上(qemu 站点记录了哪些命令不起作用,包括 ptrace 调用)。如果需要,请不要忘记挂载其他文件系统(/proc、/var ...)。

我认为 LXC 可以在容器内使用这种模拟。执行 chroot 不会隔离,并且安装软件包可能会出现问题(arm 二进制守护程序正在运行...)

你没有告诉你主机的发行版是什么,所以我不能告诉你更多。手动添加二进制可执行文件的解释器的方法如下: https://www.kernel.org/doc/Documentation/binfmt_misc.txt

相关内容