検証環境を GNS3 から EVE-NG メインに使うようになってきているのですが、その中でひとつ不満が。それは「Ctrl-a(Ctrlキーを押しながらAキーを押す)」キーバインド。
bash シェルや Emacs キーバインドに慣れている人には伝わると思うのですが、行頭にカーソルを移動させたいときには「Ctrl-a」をよく使います。ところが、EVE-NG 上での Linux イメージや XRv-demo などは qemu による仮想環境で実行されるので、qemu の制御キーバインドである「Ctrl-a」として先に奪い取られて、本来受け付けてほしい「行頭にカーソルを移動」をするためには、2回「Ctrl-a」を押す必要があります。
「Ctrl-a」キーバインドは、Cisco IOS/IOS-XE/IOS-XR や Junos など多くのNOSのCLIでも使えるキーバインドで、私が多用するキーバインドのひとつです。そのため、これが2回必要だというのは非常にストレスフルです。なんとかできないかと思って探して、解決策が見つかりました。
-echr
設定をいろいろ調べてみたところ、qemu による仮想マシンの起動時オプションに「 -echr
」というものがあるのを見つけました(Escape CHaRacter かな)。
説明を見ても
Change the escape character used for switching to the monitor when using monitor and serial sharing. The default is 0x01
when using the -nographic
option. 0x01
is equal to pressing Control-a
.
とあり、デフォルトの「0x01(10進数の1)」が「A」を意味していると言っています。私が普段使わないキーバインドとして「Ctrl-t」があるので、これに変更するには…とおもったら続きに
For instance you could use the either of the following to change the escape character to Control-t.
-echr 0x14
-echr 20
と、私の設定したいキーバインドが例示されていました。早速やってみます。
多くの環境では、Ctrl-tは「前の文字との入れ替え」のキーバインドになっています。「Ctrl-t」を多用する場合の他に影響がないキーバインド候補としては「Ctrl-q」や「Ctrl-s」などがあります。
ノード単位の -echr 設定
ノードへの設定は、停止した状態で行います。
- 対象のノードを右クリックし、「Edit」をクリックする。
- 「QEMU custom options」の最後に「
-ehcr 20
」を追加して、「Save」をクリックする。
ここに…
追加して「Save」
これだけです。
使いたいキーバインドに合わせて「20」のところは変更してください。例えば、「Ctrl-z」にしたい場合は、アルファベット「Z」は26番目なので「26」を指定します。
なお、指定可能な範囲は「1(A)」から「26(Z)」までです。
テンプレートへの -echr 設定
ノードを作成するたびに設定するのが面倒な場合は、ノードのテンプレートに設定を入れてしまいましょう。テンプレートは、EVE-NGの /opt/unetlab/html/templates/intel
配下に YAML 形式で配置されているので、必要なファイルを書き換えます。例えば上記のように Linux ノード全てで有効にしたい場合は以下のような修正を行います。
root@eve-ng:~# cd /opt/unetlab/html/templates/intel/ root@eve-ng:/opt/unetlab/html/templates/intel# ls a10.yml cms.yml freenas.yml opnsense.yml timosiom.yml vpcs.yml acs.yml coeus.yml hpvsr.yml ostinato.yml timos-ng.yml vqfxpfe.yml alteon.yml cpsg.yml huaweiar1k.yml osx.yml timos.yml vqfxre.yml ampcloud.yml csr1000vng.yml huaweine40.yml paloalto.yml titanium.yml vsrx30.yml android.yml csr1000v.yml huaweiusg6kv.yml panorama.yml trendmivtps.yml vsrxng.yml apicem.yml ctxsdw.yml infoblox.yml pfsense.yml uccx.yml vsrx.yml arubacx.yml cucm.yml iol.yml phoebe.yml ucspe.yml vtbond.yml aruba.yml cuc.yml ise.yml prime.yml utm.yml vtedge.yml asav.yml cue.yml isrv.yml pulse.yml vcenter.yml vtmgmt.yml asa.yml cumulus.yml jspacelogcollector.yml riverbed.yml veloedge.yml vtsmart.yml barracuda.yml cup.yml jspacepolicy.yml scrutinizer.yml velogw.yml vwaas.yml bigip.yml cvp.yml jspace.yml silveredge.yml veloorch.yml vwlc.yml brocadevadx.yml cyberoam.yml junipervrr.yml silverorch.yml veos.yml vyos.yml c1710.yml dcnm.yml kerio.yml sonicsw.yml versaana.yml watchguard.yml c3725.yml dellos10.yml linux.yml sonicwall.yml versadir.yml winserver.yml c7200.yml docker.yml macos_simple_kvm.yml sophosutm.yml versafvnf.yml win.yml c8000v.yml esxi.yml mikrotik.yml sophosxg.yml viosl2.yml xrv9k.yml c9800cl.yml extremexos.yml newimage.yml stealth.yml vios.yml xrv.yml cda.yml firepower6.yml nsvpx.yml sterra.yml vmxvcp.yml *.yml cexpresw.yml firepower.yml nsx.yml timoscpm-ng.yml vmxvfp.yml cips.yml forescout.yml nxosv9k.yml timoscpm.yml vmx.yml clearpass.yml fortinet.yml olive.yml timosiom-ng.yml vnam.yml root@eve-ng:/opt/unetlab/html/templates/intel# cp linux.yml linux.yml.bak root@eve-ng:/opt/unetlab/html/templates/intel# vi linux.yml (ここで vi による編集を実施) root@eve-ng:/opt/unetlab/html/templates/intel# diff -u linux.yml.bak linux.yml --- linux.yml.bak 2021-02-09 10:48:45.312679116 +0900 +++ linux.yml 2021-02-09 10:48:59.072853182 +0900 @@ -37,5 +37,5 @@ qemu_arch: x86_64 qemu_version: 2.12.0 qemu_nic: virtio-net-pci -qemu_options: -machine type=pc,accel=kvm -vga virtio -usbdevice tablet -boot order=cd +qemu_options: -machine type=pc,accel=kvm -vga virtio -usbdevice tablet -boot order=cd -echr 20 ...
最後の diff の出力のとおり、 qemu_options
の最後に -echr 20
を入れるだけです。これで、今後作成される Linux ノードではすべて「Ctrl-a」を2回押す必要がなくなりました!
その他 qemu で実行されるノードのテンプレートにも同様の設定を入れることで、キーバインドを変更することができます。困っている方はぜひ試してみてください。
コメント