python+seleniumを使っていると色々追加でインストールすることになる。余計なものをインストールするとゴミが残る。また、各種設定が変わると色々影響が出る。長期稼働させると、ポンポンと窓が動くので鬱陶しい。こんなときは、ゲストマシーンを作ってそこで限定させたくなる。だが、スクリプトの実行画面と、Chromeの画面を並べるためには2画面欲しくなる。そこで、表題の話になる。
色々見て回ると、できそうなことは書いてあるのだが、どうすればよいかは今ひとつはっきりしない。virt-managerで管理しているので、使えるようになればよいのだが、、、
まず、見つけたのは、

うまく行かない。そもそも2画面はspice viewerでどう扱うか全くわからない。virt-managerで動いているviewerは何状態だし。更に見て回ると、この設定はフラフィックカードを2毎さしたみたいになるんだが、ゲストのドライバがLinuxではサポートしてないらしい。
1枚で複数画面を設定するんだと。QEMU の引数では「max_outputs=最大画面数」を指定するらしい。最大ってなんだ?libvirtの設定 xmlではどう指定するか? 調べた、RedHatのドキュメントによると普通にサポートしてるらしいが、仔細は不明。なんだそれ簡単な話なの?で見つけた。
もっとよく書いてたものもあったが、、、とりあえず ゲストを停止してから下記のように修正する。
virtsh edit ゲスト名
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='2' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</video>
heads以外の数字は、もとのまま。さっきの情報ではメモリを増やす必要がある場合があるらしい。headsの数はviewerで使える最大数らしい。
だが、今度はvirt-managerで動くspice viewerではダメらしい。なんか設定がありそうなのだが、、、で、下記を見て、viewerを切り替えた。

接続先のアドレスがlocalhostでポート自動配置なので、外部からアクセスできないので変更。
<graphics type='spice' port='5901' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
もっと、固く行くべきな気がするがとりあえず、remote-viewerで行けた。立ち上げた後「表示」ー>ディスプレイの下に2枚め以降をそれぞれ有効にするチェックができるようになっている。
で、いいんだか悪いんだか。。。。
- 2枚め以降を有効にすると動的に反映する。ディスプレイの設定も動的にできる。
- 窓の大きさを変えると、ゲストの画面サイズもつられて変わる。
- remote-viewerを停止・起動するとリアル側の都合で窓のサイズを同じにするのが難しいが、枚数は同じになる。
- なので、ゲストの中の窓が再配置されまくる。
- 複数のゲストへの接続は、コマンドラインでremote-viewerを起動しなければならない。
とりあえず、目的は達した。多少思ったものと違うので調整が必要。ゲストの窓の配置がそのまま維持できたほうが良かったのだが、接続やリアル側の配置を変えるたびにゲスト内の窓の配置が変わってしまう。動的に操作できるのも良い使い方がありそう。ただ、view clientなど他の組み合わせもありそうなのだが、きりがないので調べないことにした。
コメント