현재 일부 테스트를 위한 작은 가상 머신이 있습니다(다른 배포판인 Fedora 15에서 테스트하고 make distcheck
오염 문제 없이 실행하는 등 여러 가지 이점이 있습니다 /
).
그러나 테스트를 자동화하고 프로그래밍 방식으로 다음을 수행할 수 있기를 원합니다(예: sh, python, c... 사용).
qemu
로컬 이미지에서 VM의 헤드리스 부팅( )- VM이 완전히 부팅될 때까지 기다립니다(가장 어려운 부분입니다. 처음에는 매직 슬립을 생각했습니다).
- 호스트와 게스트 간 저장소 동기화(현재는 필요하지 않음)
./autogen && make && sudo make install && sudo make distcheck
머신에서 실행- 머신에서 생성된 타르볼을 다운로드하세요.
저는 libvirt
API를 사용하여 이 작업을 수행할 수 있는 방법에 대해 읽기 시작했습니다. 이를 위해서는 게스트 지원이 필요하고 이에 대한 문서를 찾을 수 없지만 이 기능은 libvirt
.
머신이 완전히 부팅되었는지 확인할 수 있나요? 이를 수행할 수 있는 기성 도구가 있습니까?
편집하다:전체 시작은 시스템 rc 스크립트의 실행이 완료되었거나 시작되어야 하는 모든 시스템 서비스가 시작되었음을 의미합니다. 나는 qemu가 언제 그런 일이 발생하는지 알 방법이 없다는 것을 알고 있지만 고객 측의 지원이 있다고 가정합니다.
답변1
Afaik, libvirt는 "전체 부팅"이 무엇을 의미하는지 모릅니다(저도 마찬가지입니다). 시작하는 동안 호스트(또는 다른 컴퓨터)에 연결하는 서비스를 만들 수 있습니다. 또는 예를 들어 SSH를 사용하여 루프로 게스트에 연결해 볼 수도 있습니다.
또 다른 해결책은 vdagent와 같이 호스트와 통신하는 기존 서비스에 의존하는 것입니다. Spice 프록시 채널이 연결될 때까지 기다리는 spice-gtk Python 스크립트를 쉽게 작성할 수 있습니다(spicy.c 예제 참조, 상태 표시줄은 프록시의 존재를 나타냄).
"make distcheck" 테스트는 /를 오염시키지 않아야 하며 sudo가 필요하지 않습니다. 그렇다면 makefile에 문제가 있는 것 같습니다.
답변2
다른 스크립트 다음에 실행되고 "전체 부팅" 메시지를 기록하는 rc 스크립트를 만드는 것은 어떨까요? 그런 다음 syslog를 vm 호스트로 전달하고 메시지가 호스트의 로그 파일에 나타날 때까지 기다립니다.
어쨌든, 그게 내가 할 일이야.
답변3
이 도구를 가상 머신에 설치할 수 있습니다. http://wiki.libvirt.org/page/Qemu_guest_agent Qemu_guest_agent는 가상 머신이 완전히 시작되면 알려줍니다.
VM에 Spice 게스트 에이전트를 설치할 수도 있습니다. Spice 게스트 에이전트가 시작되면 VM이 완전히 시작됩니다.
답변4
이는 libvirt와 관련이 없을 수 있습니다. 완전히 부팅된 게스트의 경우 일부 포트가 수신 대기 중일 수 있으며, Linux의 경우 22, Windows의 경우 나열된 포트 중 하나일 수 있습니다.여기. 이를 사용하여 nc
게스트가 해당 포트에서 수신 대기하는지 테스트할 수 있습니다.
때로는
nc
이것이 최선의 옵션이 아니며(timeout 옵션이nc
작동하지 않음) 포트에 연결하기 위해 간단한 TCP 클라이언트를 작성하는 것이 더 편리합니다.