게스트 OS가 헤드리스로 부팅되는 경우 콘솔을 ttyS0에 배치합니다.

게스트 OS가 헤드리스로 부팅되는 경우 콘솔을 ttyS0에 배치합니다.

우리 제품은 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에게 감사드립니다

관련 정보