カテゴリー「QEMU/KVM」の4件の記事

2018年7月 9日 (月)

ゲストOSで「|」が入力できない〜「|」を別のキーに割り当てるの巻

001
 
ゲストOSにて、「|」が入力できない状況に遭遇。これだとパイプが使えないので、結構イタイ。

# loadkeys jp106


# dpkg-reconfigure keyboard-configuration
# service keyboard-setup restart

 

# dpkg-reconfigure locales

 

$ localectl set-keymap --no-convert jp106

 

いろいろ試したものの、効果あがらず。
おっかしぃーなぁと思っていたら、qemu 2.8 のバグらしい話をネットのどこかで見かけ、最新のqemuで試したら、「|」の入力ができますた。

ということで、最新のqemuを入れましょう・・・とすると、ネタが終わってしまうので、今回は『ゲストOS側で無理やり対処しましょう』という話。需要があるか、わかりませんが。

方針として、「|」のキーは完全に死んでる感じなので、別のキーに無理やり「|」を割り当ててしまう感じ。

題して、
 
【ゲストOSにて「|」を別のキーに割り当てる!】の巻
 
 
 
【第一関門】どのキーに割り当てるか? ・・・「チルダ」がダブっているでござる
  
通常、チルダ(~)は「Shift + ^」と打って入力する。
 
003
 
  
ところが、「Shift + 0」でも出たりする。
 
004
 
我ながら見つけて驚いたのだが、昔はここに「~」が印字されていた模様。
 ・http://www.kt.rim.or.jp/~aotaka/faq/win179.htm 
 
とりあえず、どちらかに「|」を割り当てよう。
 
どっちにしようかなぁ、と思いつつ、「本来のキーから遠いところ」よりは「近い方」でいいかな、と思い、「~」キーに「|」を割り当てることとする。
 
 
 
【第ニ関門】キーマップテーブルはどうなってる? ・・・「xmodmap」で調べるで
 
とりあえず、ゲストOS上で、

$ xmodmap -pke

 

と、入力すると、keycodeとkeysymの対応表が表示される。

011_

意味は次のようになる。
例えば「keycode 28」は「t T t T」がマッピングされている。
 
012_c_
これは「keycode 28」に対応する物理的なキーが入力された場合、「t T t T」が出力される形となる。ちなみに、
「keycode 28」に対応する物理的なキーのみ → t 
「keycode 28」に対応する物理的なキー +「shift」 → T 
「keycode 28」に対応する物理的なキー +「mode_switch」 → t 
「keycode 28」に対応する物理的なキー +「shift」+「mode_switch」 → T 
といった感じで出力される。
「mode_switch」ってなんやねんという感じだが、どうも海外仕様っぽい。
とりあえず無視。
細かな話は、『Arch Linux : xmodmap:キーマップテーブル』が参考になるかと。
 
で、keycode の何番が物理的な「^」キーなのかだが、上表から推測するのもよいが、「xev」で調べることが可能だ。

 

【第三関門】「^」のkeycodeを調べるで ・・・「xev」

ゲストOSの端末にて、

$ xev

と入力。
 
013_c__2  
すると、以下のようなウィンドウが出る。
 
015_

で、下図の赤丸にある黒枠のあたりを狙ってクリックし、キーを打ったりすると、そのウィンドウに渡されるイベントがピンク枠のところにえらい速さで出力される。
 
015_c2
 
で、「^」キーの結果は、どうやら「keycode = 21」の模様。
 
015_c3_
 
ちなみに、

$ xev | grep keycode

でやると、非常に見やすかったりする。

051_

そう、パイプが使えたらネ・・・
 
 

【第四関門】割当てテスト

「^」のkeycodeがわかったので、変更テスト。
 
ゲストOSの端末にて、

$ xmodmap -pke > ./.Xmodmap

で、現在にキーマップを「~/.Xmodmap」に作成。
 
ちなみにこのファイル名は任意。別に「.Xmodmap」でなくとも良い。
ただし、「.bash_history」とかシステムが作るファイルとバッティングしないように。

で、このファイルを編集。

022_r
 
keycode 21 の行を以下のように書き換える。

keycode  21 = asciicircum asciitilde asciicircum asciitilde
            ↓
keycode  21 = asciicircum bar asciicircum asciitilde

032_c_

で、このファイルを読み込む。
 

$ xmodmap ./.Xmodmap

 

034_c_

成功すれば「Shift + ^」で、めでたく「|」が入力できるようになっている。

 
 

【最終関門】設定恒久化

ゲストOSを再起動させると、設定が戻ってしまう。
毎回、

$ xmodmap ./.Xmodmap

とするのは面倒なので、「.profile」にこれを書き込むことにする。
041_c_

042_c_  
こういうやり方が正しいかはわからないが、これでゲストOSを再起動させても常に有効になる。

ちなみに、デストリによっては、「.profile」でない方が良い場合があるかも。
詳しくは
 ・bashの便利な機能を使いこなそう (2/2):bashの設定ファイル 

で設定ファイルの優先順位を確認すると良さげ。参考になるかと。

また、「.bashrc」に書き込んだ場合、「bash」を一度起動させないと有効にならないので、おすすめはしない。
パイプの使用だけなら問題ないかもしれないけれども。
(終)
 

 
 
 

【外部サイト】
 キーマップ関連
 ・Debian wiki:Keyboard configuration 
 ・Debian wiki:ChangeLanguage  
 ・Arch Linux :コンソールでのキーボード設定 
 ・Xmodmap でお好みのキーバインド 

 .bashrc関連
 ・ユーザー追加時の標準シェル設定をあらかじめ定義したい:/etc/skel/ 

 キーボード関連
 ・ カスタムキーマップで自作キーボードを自分の分身とする 

 
 
 
 
 
 

2017年9月16日 (土)

QEMU/KVM ホスト・ゲスト間の文字コピペ設定

【実行環境】

仮想環境: QEMU/KVM 2.8:virt-manager 1.4
ホストOS: Debian GNU/Linux 9
ゲストOS: Debian GNU/Linux 7
libvirt 3.0

 

ホスト・ゲスト間(deb9 <=> deb7)での文字のコピペができるようにするための設定メモ。 

spice機能を利用する。
 
003_
 
ホストがdebian9の場合、これに関する設定をホスト側ではしなくとも良いようで、ゲスト側で設定をするだけ。
 
ゲスト側に、「SPICE エージェント」をインストールする。 

# apt-get install spice-vdagent

 

004_  

 

あとは、ゲスト側を再起動。無事にホスト・ゲスト間でコピペができるように。

002__  

 
 

【〜おまけ〜】 

ちなみにこの「SPICE エージェント」を導入すると、virt-managerでのフルスクリーン時、「ctrl + Alt」を打たずとも画面上部中央にカーソルを持っていくだけで、下図のように「フルスクリーンの解除」のためのボタンが出てきます。

012__

また、マウスの挙動がカクカクする場合、このパッケージを導入することで改善しているような気がします。
参考にどうぞ〜。

 
 
 
 
 

【関連ページ】 
 ・virt-manager with QEMU/KVM ゲストOSからUSBメモリへアクセス
 ・wheezy on QEMU/KVM ディスプレイ解像度の変更作業記録
 ・ゲストOS - Windows10 〜 QXLドライバー や SPICE agent とか 

 
 
 
 

【外部サイト】
 ・SPICEプロトコルの内側を知る (1/2)

 
 
 
 
 
 

2017年9月13日 (水)

wheezy on QEMU/KVM ディスプレイ解像度の変更作業記録

QEMU/KVMにてDebian9(stretch)をホストOS、Debian7(wheezy)をゲストOSとして使用した際、Debian7 の解像度を変更しようとしたら、躓いたので解決策のメモ。

最終的にはwheezyに「qxl」関連のパッケージを導入することで解決した。

手順は以下の通り。

① ゲストOS(wheezy)にて、「xserver-xorg-video-qxl」をインストール
② ゲストOS 再起動
③ wheezy のシステム設定変更のソフト(今回はKDEシステム設定)で解像度変更(終)

まず、wheezy をインストールした直後は、以下の通りとなる。

001

画面の上下に黒帯が出てきてしまって、見た目的にちょっと情けない感じに・・・。

ということで、解像度を変更しようとしたら、今度は解像度の選択肢が殆ど無い・・・。

002

どれを選んでもモニタのサイズと合わず、こりゃまいったなと検索かけてみると、仮想環境下でも xrandr での設定の話が出てきたので、仕方なくやってみた。

結果は・・・撃沈。

003_r  

xrandr: Failed to get size of gamma for output default

まさにボスケテ状態に。

一瞬、Debian7(wheezy)では無理なのかと思ったのだが、Debian5(lenny)では解像度設定が完璧な状態でインストールされていたので、やっぱりできるはずだと思い直し、試行錯誤を継続。

んで、あることに気づいた。

004_r

ビデオの「QXL」って何やねん?
 
 
で、調べてみると

Wikipedia【google翻訳さん】より
QXL、QEMU QXLビデオアクセラレータ - SPICEプロトコル用の準仮想化フレームバッファデバイス

 
まぁ、よくわからないのだが、他のVGAとかと比べると、仮想化向けのものらしい。

となると、逆に癖の無いモノのハズなので、むしろwheezyが対応できないのはおかしい。

もしかしてQXL専用のドライバみたいなものが存在するのでは無いかと思って調べてみたら・・・

003_r2

あったとですよ。それらしきものが。
 
ちなみに公式にそのパッケージの説明がありました。
 https://packages.debian.org/wheezy/xserver-xorg-video-qxl
 
どうやら、wheezy 以降はこのパッケージが使えるようで。
 
ということで、そのままApperでインストール。
 
004_r4

 

上図のように「xserver-xorg-video-qxl」パッケージをインストール後、ゲストOSを再起動すれば、以下のように解像度が選べるようになります。

006_r

解像度が決まったら、あとは以下のように設定を保存すれば、完了。

008_r

フルスクリーンでも変な黒帯がでることなく、画面が綺麗に表示されるようにできるようになりました。
 
ここ数日の悩みがやっと解決して、ちょっとすっきり ♪
 
 
 
 
 
【関連ページ】
 ・virt-manager with QEMU/KVM ゲストOSからUSBメモリへアクセス
 ・QEMU/KVM ホスト・ゲスト間の文字コピペ設定 
 ・KDE パッケージ管理ソフト Apper
 
 
 
 
【外部サイト】
 xrandrによる変更について
 ・VirtualBoxに入れたLinuxの解像度をワイドに変更 
 ・UbuntuTips/Hardware/HowToChangeMonitorResolution
 
 
 
 
 
 

2017年9月10日 (日)

virt-manager with QEMU/KVM ゲストOSからUSBメモリへアクセス

【実行環境】

仮想環境: QEMU/KVM 2.8:virt-manager 1.4
ホストOS: Debian GNU/Linux 9
ゲストOS: Debian GNU/Linux 7 / 5
libvirt 3.0

 

ゲストOSからUSBメモリへのアクセス。
手順は以下の流れ。

① USBメモリをPCにぶっ刺す(ホストOSが認識)
②「USBデバイスのリダイレクト」(virt-manager)
③ ゲストOSがUSBメモリを認識

 

① USBメモリをPCにぶっ刺す(ホストOSが認識)

011_r

 
 

② virt-manager のメニュー「仮想マシン > USBデバイスのリダイレクト」

012_r

 

以下のダイアログが出てくるので、USBメモリ(と予想されるもの)を選ぶ

 

013_r2

 

③ ゲストOSがUSBメモリを認識

014_r

 
 

【関連ページ】
 ・virt-manager で USBリダイレクターの追加 
 ・wheezy on QEMU/KVM ディスプレイ解像度の変更作業記録
 ・QEMU/KVM ホスト・ゲスト間の文字コピペ設定 
 ・virt-manager 超入門! in 2018 
 ・Debianで仮想マシン 〜VirtualBox・QEMU・AQEMU〜 

 
 
 
 
 
 
 
 
 
2021年5月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ