如何在没有 sudo 的情况下运行 libguestfs-tools 工具(例如 virt-make-fs)?

如何在没有 sudo 的情况下运行 libguestfs-tools 工具(例如 virt-make-fs)?

项目页面http://libguestfs.org/声称我们可以不用 就进行操作sudo,这太棒了。

但是,如果我尝试一下:

sudo apt-get install libguestfs-tools
mkdir sysroot
# Just a test file.
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=ext2 --type=qcow2 sysroot sysroot.qcow2 

我收到错误:

libguestfs: error: /usr/bin/supermin exited with error status 1.
To see full error messages you may need to enable debugging.
Do:
  export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again.  For further information, read:
  http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the *complete* output
into a bug report or message to the libguestfs mailing list.

如何解决?

libguestfs-tools 在 Ubuntu 16.04.4、1 :1.32.2-4ubuntu2中测试。

答案1

sudo chmod +r /boot/vmlinuz-*

根本问题是无法读取内核,报告如下:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725并且由于某种原因无法修复。

更直接的错误报告位于:https://bugs.launchpad.net/fuel/+bug/1467579

我找不到在安装新内核时能够自动运行的方法。

我认为它需要内核,因为它通过使用 QEMU 启动内核来使用内核文件系统操作执行文件操作。

他们应该只运送他们自己的预构建内核 + QEMU,你基本上不能依赖其他人的依赖项。

答案2

如果您第一次遇到这个问题,那么几乎 100% 该问题与 Linux 内核不可读的错误有关!

您可以通过在主机操作系统中运行以下命令来解决此问题:

sudo chmod 0644 /boot/vmlinuz*

如果问题仍然存在,您必须更深入地检查错误!运行以下命令:

export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1

然后再次运行您预期的命令!:

virt-make-fs --format=ext2 --type=qcow2 sysroot sysroot.qcow2 

之后立即运行以下命令:

libguests-test-tool

它显示错误日志,有助于更好地找到问题点。

如果您无法准确找到错误和问题的点或者无法找到解决方案,您必须向我们提供所提供的输出libguests-test-tool,以便让我们了解错误的原因并帮助我们更好地为您提供帮助。

答案3

正如其他人所说,主要原因是无法在较新的 Ubuntu 版本上读取内核。我搜索了很多,但奇怪的是没有人找到除使用 root 权限之外的解决方案。您可以通过设置这些来指定 libguestfs 应使用哪个内核环境变量

那么,不需要 root 权限的解决方案如下:

apt-get download linux-image-$(uname -r)
dpkg-deb -x linux-image-$(uname -r)*.deb ./
SUPERMIN_KERNEL=./boot/vmlinuz-image-$(uname -r) YOURCOMMAND

答案4

即使这个问题今天看来有点老了,我今天也遇到了这个问题,发现原因是磁盘饱和。一旦释放,问题就不再出现了。所以也检查一下这个,不要忽略这个帖子中的其他建议。

相关内容