VBox на безголовом сервере: установка Linux без RDP

У меня все заработало! Вот что я сделал ... Я отредактировал запись, которую добавил в Startup Applications, с setxkbmap -option ctrl: swap_lalt_lctl на / bin / bash -c "сна 15 && setxkbmap -option ctrl: swap_lalt_lctl" . Это делает две вещи: 1. Обеспечивает выполнение команды bash. 2. Это добавляет задержку, чтобы рабочий стол завершил загрузку к моменту выполнения команды.

Я получил идею отсюда: https://askubuntu.com/questions/624868/run-command-at-login-ubuntu-15-04#624890

1
13.04.2017, 15:13
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"  

Если остались какие-то неясные моменты, вы можете увидеть полные сценарии на Github

0
29.04.2021, 00:30

Теги

Похожие вопросы