libvirt:创建 Centos 7 VM:无法启动 Switch Root

libvirt:创建 Centos 7 VM:无法启动 Switch Root

我正在尝试使用 . 在同一发行版上创建 Centos 7 (1611) 的虚拟机virt-install。我正在使用来自的示例脚本雷米·范·埃尔斯特 (Remy van Elst) 列出的清单,这需要一些更改:

virt-install \
  --name centos7 \
  --ram 1024 \
  --disk path=./centos7.qcow2,size=8 \
  --vcpus 1 \
  --os-type linux \
  --os-variant centos7.0 \
  --network default \
  --graphics none \
  --console pty,target_type=serial \
  --location /media/CentOS \
  --extra-args 'console=ttyS0,115200n8 serial'

该目录/media/CentOS包含一个已安装的CentOS-7-x86_64-Everything-1611.iso.

启动过程失败并显示:

[FAILED] Failed to start Switch Root.
See 'systemctl status initrd-switch-root.service' for details.

然后,它进入“紧急模式”shell。上述服务的日志为:

:/# systemctl status initrd-switch-root.service -l
● initrd-switch-root.service - Switch Root
   Loaded: loaded (/usr/lib/systemd/system/initrd-switch-root.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2017-04-14 08:17:31 UTC; 19min ago
  Process: 3981 ExecStart=/usr/bin/systemctl --no-block --force switch-root /sysroot (code=exited, status=1/FAILURE)
 Main PID: 3981 (code=exited, status=1/FAILURE)

systemd[1]: Starting Switch Root...
systemctl[3981]: Failed to switch root: Specified switch root path /sysroot does not seem to be an OS tree. os-release file is missing.
systemd[1]: initrd-switch-root.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start Switch Root.
systemd[1]: Unit initrd-switch-root.service entered failed state.
systemd[1]: Triggering OnFailure= dependencies of initrd-switch-root.service.
systemd[1]: initrd-switch-root.service failed.

看看/sysroot,它显然没有os-release任何地方:

:/# find /sysroot
/sysroot
/sysroot/var
/sysroot/var/lib
/sysroot/var/lib/nfs
/sysroot/var/lib/nfs/rpc_pipefs
/sysroot/var/lib/nfs/rpc_pipefs/gssd
/sysroot/var/lib/nfs/rpc_pipefs/gssd/clntXX
/sysroot/var/lib/nfs/rpc_pipefs/gssd/clntXX/gssd
/sysroot/var/lib/nfs/rpc_pipefs/gssd/clntXX/info
/sysroot/var/lib/nfs/rpc_pipefs/nfsd
/sysroot/var/lib/nfs/rpc_pipefs/cache
/sysroot/var/lib/nfs/rpc_pipefs/nfsd4_cb
/sysroot/var/lib/nfs/rpc_pipefs/statd
/sysroot/var/lib/nfs/rpc_pipefs/portmap
/sysroot/var/lib/nfs/rpc_pipefs/nfs
/sysroot/var/lib/nfs/rpc_pipefs/mount
/sysroot/var/lib/nfs/rpc_pipefs/lockd
/sysroot/boot
/sysroot/boot/initramfs-3.10.0-514.el7.x86_64.img

我不知道如何从这里继续。我在互联网上看到过许多描述类似内容的帖子,但似乎没有一个描述了我的特定问题或任何解决方案。

答案1

我还想知道为什么 /sysroot 似乎不完整,导致 Switch Root 启动失败。最终,事实证明,一旦来宾接管了安装,它实际上无法从安装源中读取数据。就我而言,原因是 virt-install 的网络配置(见下文),对于您来说,问题是相同的,但原因不同,因为您是从本地源安装的。我认为这就是问题所在(来自 virt-install 手册页):

DIRECTORY  
    Path to a local directory containing an installable distribution image. Note that the directory will not be accessible by the guest after  initial boot, so the OS installer will need another way to access the rest of the install media.

您可以尝试使用 virt-install 的另一个 --disk 参数包含安装​​映像/dvd/目录的路径。

--disk=path=/path/to/rhel7-dvd.iso,device=cdrom

对于其他在这里遇到同样问题但尝试从网络安装的人来说 - 问题是相同的。解决方案需要为访客分配一个 IP 地址(在我的例子中是静态的)。但是,这并没有立即解决问题,因为我的 --location 设置使用了安装的域名。我还必须在 --extra-args 中包含一个 dns 参数才能最终使其正常工作。

sudo virt-install --name test-c7 --ram 2048 --vcpus=1 --os-type=linux --os-variant=centos7.0 --network bridge=br0 --disk size=4 --location http://linux.mirrors.es.net/centos/7/os/x86_64 --graphics none --extra-args="ip=128.97.60.95::128.97.60.1:255.255.255.0:scylla.idre.ucla.edu:eth0:none dns=128.97.62.3 console=tty0 console=ttyS0,115200n8"

相关内容