우리 제품은 Debian 4(systemd 없음)를 사용합니다. 테스트를 위해 VirtualBox에서 관리하는 게스트 OS로 실행했습니다.
내가 사용하는 방법은 다음과 같습니다.
- 수동 디버깅을 위해 tty1에 게스트 OS의 콘솔을 설치하고 여기서 일련의 디버거를 시작했습니다.
- 스크립트로 테스트하기 위해 콘솔을 ttyS0(호스트 Python이 쉽게 연결됨)으로 옮겼습니다. 성능을 위해 디버거를 실행하고 있지 않습니다.
내가 지금까지 가지고 있는 것:
가상 머신 직렬 포트가 활성화되어 있는지 감지할 수 있습니다. dmesg에서 ttyS0을 검색합니다. (/proc를 살펴보라고 했지만 직렬 포트를 전혀 활성화/비활성화할 필요가 없습니다)
제가 생각하는 주요 문제는 다음과 같습니다.
Debain OS의 쉘 스크립트가 VirtualBox에 의해 헤드리스로 실행되고 있는지 알 수 있는 방법이 있습니까? bash를 사용할 수 있습니다.
업데이트 1:
나는 대답이 '아니요'라고 의심하기 시작했습니다. lspci를 실행하면 VGA 호환 컨트롤러가 헤드리스 모드와 일반 모드 모두에서 VirtualBox 그래픽 어댑터임을 알 수 있습니다. 호스트가 서비스를 제공하도록 구성된 경우 헤드리스 게스트를 기본적으로 원격으로 볼 수 있다는 것을 읽었습니다. 이는 손님 입장에서 눈에 띄는 변화가 없음을 보여준다.
답변1
호스트에서 셸 스크립트를 사용하여 가상 머신을 수정하고 시작합니다.
정상 시작
#!/bin/bash
vboxmanage modifyvm "Vir153_1000" --uart1 off
vboxmanage startvm "Vir153_1000"
헤드리스 부팅
#!/bin/bash
vboxmanage modifyvm "Vir153_1000" --uart1 0x3F8 4
vboxheadless --startvm "Vir153_1000" --vrde off &
게스트는 여전히 직렬 포트가 있는지 확인하고 그에 따라 조치를 취해야 합니다.
아이디어를 주신 @siblenx에게 감사드립니다