SSHを介して接続されたリモートヘッドレスサーバーにヘッドレスシステムを設定するスクリプトがあります。マシンを作成し、ディスクとArchisoを接続し、インストールを開始します。
また、以前にscpからインポートされたプロンプトに従って、シェルで実行される構成されたArchを設定するスクリプトもあります。
しかし、私はそれらの間の3つの中間段階を削除したいと思います。 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"
それでも不明な部分がある場合は、次のスクリプト全体を見ることができます。ジタブ