libvirt: Centos 7 VM 생성: 스위치 루트를 시작할 수 없습니다.

libvirt: Centos 7 VM 생성: 스위치 루트를 시작할 수 없습니다.

.NET을 사용하여 동일한 배포판에 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.

그런 다음 "긴급 모드" 셸로 들어갑니다. 위 서비스의 로그는 다음과 같습니다.

:/# 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.

설치 이미지/dvd/ 디렉터리 경로가 포함된 virt-install에 다른 --disk 인수를 사용해 볼 수 있습니다.

--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"

관련 정보