はじめに
Proxmox VEの管理画面から仮想マシンのコンソールを開く際、デフォルトではブラウザ上からゲスト内へのコピー・ペーストはできません。長いコマンドをちまちま入力する、長いURLをミスタイプにおびえながら入力する、コピペできればそんな思いをしなくていい!
ということで、コンソールでコピペが実装できるように設定します。
そもそもなぜコピペができないか?
コピペができないの理由は、Proxmoxのホストからコンソールを開く方法にあります。
Proxmoxは何種類かのコンソールを開く方法が用意されています。
代表的な3つの接続方法を調べてまとめてみました。
-
noVNC
- 概要
- Webブラウザから実行できるVNCクライアント- 利点
- デフォルトで有効
- ある程度のことは事足りる
- 欠点
- 特殊なキーの組み合わせが有効ではない・コピペができない
- 前のログをさかのぼることができない
- 利点
- 概要
-
SPICE
- 概要
- Simple Protocol for Independent Computing Environmentsの略
- 仮想マシンを遠隔からコントロールするためのプロトコル
- 利点
- コンソールだけではなく、GUIも表示させることができる
- ゲスト側の音声、ファイル転送、USBなどの周辺機器などもコントロールできる
- 欠点
- 接続するには、ユーザーのパソコンにSPICEクライアントを、ゲスト内にドライバーをインストールする必要がある
(つまり、ProxmoxのWEB UIからは操作できない)
- 接続するには、ユーザーのパソコンにSPICEクライアントを、ゲスト内にドライバーをインストールする必要がある
- 概要
-
xterm.js
- 概要
- xterm.jsというのは、そもそもJavaScriptでコンソールを描画するライブラリ
Visual Studio Code・Hyperなどの有名なソフトウェアにも使用されている - サーバ上のbashと接続して、ブラウザからサーバ上のコマンドを叩けるようにする
- xterm.jsというのは、そもそもJavaScriptでコンソールを描画するライブラリ
- 利点
- 前のログをさかのぼることができる
- コピペができる
- 欠点
- デフォルトで利用できないので、ゲストマシン上で設定する必要がある
- 概要
Proxmoxの管理画面から、コピペができるコンソールを使用したいので、xterm.jsを導入することにしました。
環境
- ホスト: Proxmox VE 8.2.2
- ゲスト: Debian 12(cloud image)
導入方法
シリアルコンソールを追加する
Proxmoxの管理画面から対象のゲストを選び、ハードウェアのタブからシリアルコンソールを追加します。
シリアルポートは0番に設定します。
追加したらゲストを起動します。
ブートローダの設定を書き換える
ブートローダ(GRUB)の設定を書き換えます。
`/etc/default/grubを開いて、下のように書き換えます。
$ sudo vi /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null | | echo Debian'
GRUB_CMDLINE_LINUX_DEFAULT=""
- GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0, 115200 earlyprintk=ttyS0, 115200 consoleblank=0"
- GRUB_TERMINAL="console serial"
+ GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200 consoleblank=0"
+ GRUB_TERMINAL="serial"
GRUB_SERIAL_COMMAND="serial -- speed=115200"
保存したら、ファイルに書いてあったようにsudo update-grub
を実行し、ゲストを停止します。
再度ゲストを起動して、xterm.jsからコンソールを開くとちゃんと表示されます。
参考文献
https://pve.proxmox.com/wiki/Serial_Terminal
https://pve.proxmox.com/wiki/VNC_Client_Access