SSH를 통해 연결된 원격 헤드리스 서버에 헤드리스 시스템을 설정하는 스크립트가 있습니다. 머신을 생성하고, 디스크와 Archiso를 연결하고, 설치를 시작합니다.
또한 이전에 scp에서 가져온 프롬프트에 따라 셸에서 실행하는 구성된 Arch를 설정하는 스크립트가 있습니다.
그러나 나는 그들 사이의 세 가지 중간 단계를 제거하고 싶습니다. Archiso의 grub에서 x64 install을 누르고 Enter
루트 쉘이 로그인할 때까지 기다린 후 실행하십시오.scp user@server:~/arch-install . && ./arch-install
RDP를 통해 이 모든 작업을 수행할 수 있습니다. 하지만 모든 설치 과정을 자동화할 수 있다는 점은 성가신 일입니다.저것.
물론 주제도 있지만헤드리스 Linux 설치. 하지만 이 3단계만 자동화하면 되므로 Archiso를 다시 패키징하고 싶지 않습니다. 어쩌면 VBox가 비슷한 것을 지원할까요 expect
?
답변1
호스트만 제어하면서 기본 Archiso 이미지의 자동 게스트 설치를 구현하는 방법을 찾았지만 약간 번거롭습니다. VBox 기본 기능을 SSH를 통해 노출된 직렬 포트와 결합해야 합니다.
VBox의 가상 직렬 포트 지원을 활성화합니다:
VBoxManage modifyvm "$VNM" --uart1 0x3F8 4 --uartmode1 server "$SERIAL"
vbox를 시작합니다:
VBoxManage startvm "$VNM"
# Wait for boot menu. WARNING: May be affected by problem with timing!
sleep 8
커널이 부팅될 때 직렬 포트를 활성화하려면 게스트에 명령을 보냅니다.
# Press <Tab> to edit boot string, add 'console=ttyS0', then <Enter>
VBoxManage controlvm "$VNM" keyboardputscancode 0f 8f 39 b9 # <Tab><Space>
VBoxManage controlvm "$VNM" keyboardputscancode 2e ae 18 98 31 b1 1f 9f 18 98 26 a6 12 92 # 'console'
VBoxManage controlvm "$VNM" keyboardputscancode 0d 8d 14 94 14 94 15 95 36 1f 9f b6 0b 8b # '=ttyS0'
VBoxManage controlvm "$VNM" keyboardputscancode 1c 9c # Enter
직렬 파이프를 통해 셸에 로그인합니다. 나는 그것을 사용했지만 netcat
둘 다 작동합니다. 다음 명령은 소켓을 로컬로 사용하는 방법을 보여줍니다(단, SSH로 리디렉션할 수 있음).
sleep 25
printf "root\n" | nc -q 2 -U "$SERIAL"
소켓을 통해 설치 스크립트를 heredoc로 보냅니다. 내 주요 방법보다 간단합니다 scp
. 그러나 scp
순차적으로 수행할 수도 있습니다.
printf "\n"'cat - <<-'"'EOFARCHSETUP' > ~/arch-setup\n" | nc -U "$SERIAL"
cat "$SCRIPT_DIR/arch-setup" | nc -U "$SERIAL" # Send text content of setup file
printf "\nEOFARCHSETUP\n" | nc -U "$SERIAL" # End of heredoc file
설치 시작:
printf "\nchmod u+x ~/arch-setup\n" | nc -U "$SERIAL" # Make executable
printf "\ncd ~ && ./arch-setup --new\n" | nc -U "$SERIAL" # Start install
비대화형 설치 모니터링(설치에 영향을 주지 않고 모니터링을 안전하게 중단하려면 Ctrl-C를 사용하십시오):
nc -d -U "$SERIAL"
여전히 불분명한 부분이 있으면 다음에서 전체 스크립트를 볼 수 있습니다.지텁