Linux」カテゴリーアーカイブ

GNOME Boxes part 2

前回の続き。

色々試してみた。
どうやら動作が遅かったのはスワップが起こっていただけのようだ。
Boxes が勝手にメモリ量を決めておいていきなりスワップとは泣ける。

  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu>2</vcpu>

と XML でメモリ量を倍にしたらかなりストレスは減った。
やはりワンテンポ遅れる感はあるけど Unity が原因かも…

ついでに CPU を 2 つに指定したけどあまり意味が無かった。
4 コア中の 2 つを使うのではなく単にエミュレーションで 2 つあるように見せかけているだけみたい。
無限ループのコードをうっかり書いてしまった時の保険にはなるな。

XML の書き換えを反映するにはホストの Fedora を再起動。
何かのサービスを restart させればいいと思うけど解らなかったので強行手段。

それと一番困った SELinux のブロックは通知ブラウザーのトラブルシュートでアッサリ解決。

$ sudo restorecon -v "/home/sasakima-nao/.libvirt/qemu/log/Ubuntu Precise Pangolin LTS.log"

にて Enforcing のまま起動できた。

ついでに virt-manager というアプリを入れてみたけどまったく関係ないようだ。
GUI で設定を弄くれるアプリがあると思うのだが今は解らない。

仮想マシンの立ち上げはシングルクリックで良かった…

これで後は 1920×1080 にできないこと以外は問題無くなった。
ということで Ubuntu 12.10 は Boxes でいこうと思う。

Windows 8 も出たし安いしで入れてみたいなと思い電気屋に見に行った。
MS ゴシックのガタガタなフォントのままであるのを見て買う気分が一騎に失せた。
無償で使える Linux に劣るのフォントを何時まで使うのつもりだ…
これ Windows しか使えない人は気がつかないみたいね。

********************

とにかく 12.10 だ。

日本語 remix の ISO を落とす。
ISO のままだと余計に面倒くさいので素直に DVD-R を焼いてみた。

まず ISO を焼いた DVD-R を入れる、USB 接続の外部でもイケる。
というか内蔵の奴が壊れているのでミニノート用のを使っただけだが…

SELinux を無効化します sudo setenforce 0

Boxes を起動、「新規」「続行する(O)」とボタンを押す。

ISO を勝手に認識するので選ぶ。

するとフルスクリーンになってインストールが始まる。
解像度はディスプレイと一致しないので注意。
ウインドウ化したい場合は右上の右から二番目ボタンで。

終わったら DVD-R が出て…こなかった。
ボタンで DVD-R を出して virsh コマンドで強制終了させた。

virsh destroy "ubuntu-ja-12.10-desktop-i386.iso 2"

SELinux を元に戻すのを忘れないようにと。

どうせこのまま起動するとスワップが起こるので上記を行ってホストの再起動。
メモリがコッチは 512000kb になっていたので 1024000kb に指定と。
cdrom を取り出しても記憶してしまうようなのでセクションを消して。
sudo restorecon -v “/home/sasakima-nao/.libvirt/qemu/log/ubuntu-ja-12.10-desktop-i386.iso 2.log”

12.10 は Unity 2D が無くなったのか…
なんと 3D で仮想環境が立ち上がった、おかげで超激重!
ウインドウの立ち上げやメニューがスローモーション、駄目だ使えネェwww
立ち上げているだけで CPU ファンが超ウルセェwww

今は実験と確認用途だからいいのだが、LXDE にでも変えるか…
Unity を使ってほしいなら 2D を残せよ。

1024000kb でもスワップしているし、おまえは Vista カヨ!
1536000kb に変更してやっとスワップ地獄から開放された。

この工程で気がついたけど libvirtd プロセスを一旦殺せば XML の指定を反映できる。
Boxes を立ち上げれば自分で殺すまで残りつづけるようだ。

何故か 12.10 では 1920×1080 の指定があった。
ドライバーの違いかな、これならフルスクリーンでもイケるね。
何にせよ別途でドライバー等が不要な仮想環境は嬉しいね。

********************

/usr/lib/girepository-1.0
で ls してみる

Gst-1.0 は無かった…
ぶっちゃけコレの確認のためにだけ入れたんだが。

GNOME Boxes

そろそろ次期 Fedora を入れる準備をしておかねば。
Ubuntu はもう出ているね、GStreamer が 1.0 になっているか試したい。
その前に GNOME 3.6 のリリースノートでも見るか。

GNOME 3.6 リリースノート

Nautilus までメニューバーが無くなってしまうようで。
うーん微妙だ、拡張スクリプトが使い辛くなると困るんだが。

GStreamer は 0.10 と 1.0 の共存になるという解釈でいいのかな。
でなきゃ困るが。

Boxes

これが気になる。
KVM の単なるフロントエンドみたいだが GNOME に統合されたなら突然無くなる恐れは少ない。
とはいえ Seed さえ止まっているんだよな…

GNOME Boxes – YouTube

Aero もイケるようだね、エミュレートだから劇重だろうけど…
KVM も初期の笑っちゃうほど不安定な頃のしか試していないし現状は使えるレベルになったかどうか試してみたいところだ。
Fedora 17 も「追加と削除」から入れられるし試してみるべ。

仮想環境はコレのみチェックで揃うようだ。
起動、恐るべきシンプルな外観で逆に戸惑うよ。
終了ボタンすら無い、アプリケーションメニューから
と思ったけどマウスで上部を掴んで引いたらウインドウ化できた。

とにかく早速 Ubuntu 12.04 の ISO を試しに入れてみる。

インストールは SELinux にブロックされる。
sudo setenforce 0
で Permissive に切り替えして
終わったら sudo setenforce 1 で SELinux を Enforcing に戻す。
(getenforce コマンドで確認できます)

なんかディスク容量や割り当てメモリは勝手に決められてしまったのだが。

ご存知だと思うけど Ubuntu はインストール後に CD が自動で出てくる。
ISO からのインストールでは強制終了して ISO を取り除く必要がある。

~/.libvirt/qemu/hoge.xml

を開いて <disk type=’file’ device=’cdrom’> の項目を消せばイケた。
XML なので <!– –> のコメントアウトでもいいみたい。

この hoge 部の名前は virsh list –all コマンドで調べる。
第5回 KVM仮想マシンの操作:KVMで始めるプライベート・クラウドへの第一歩|gihyo.jp … 技術評論社

$ virsh list         起動中の仮想マシンを一覧表示
$ virsh list --all      停止中の仮想マシンを含めて一覧表示
$ virsh start hoge   仮想マシンを起動
$ virsh shutdown hoge  仮想マシンをシャットダウン
$ virsh destroy hoge  仮想マシンを強制停止

sudo は必要無いみたい。

Ubuntu Precise Pangolin LTS という名前が勝手に私には付いていた。
長すぎ、変更する方法はあるのかな?

ここまでやれば後は Boxes 上から W クリックで起動できる。
Unity 2D で起動しないとフリーズするようだ。

なんじゃコリャ!
2560×1600 って何でデフォルトがこんな解像度になるんじゃい。
しかも一番多いだろう 1920×1080 指定が無い、なんてことかしら。

設定画面のディスプレイから「ゲストをリサイズ」をオフにすれば指定解像度以上にはなるけど以下にはならないようだ。
これを利用してウインドウ状態で使うしかなさそうだな。

あぁやっと使える状態になった。
ということで少し試す。

マウス統合がデフォで切り替えもスムース。
以前は暴走したりマウスカーソル位置が変だったが何ともない。
でもウインドウ一つ動かすのもガックガク。
アプリの起動が死ぬほど遅い。
文字入力の反映でさえもワンテンポ遅れる。
マウスホイールが使えないみたいなんだけど。

GUI を使うにはまだ厳しいのかな…
つーか SELinux が Permissive でないと起動できないヤン!
うー、あんまりオフにしたくないなぁ…

VirtualBox や VMWare は本当によくできているもんだ。
とりあえずもう少し試してみる。
問題なさそうなら 12.10 もコイツに入れてみたい。

続き

Shell Extension

GNOME 3 は Shell Extension というものが使える。
作り方は下記の人が日本語でまとめてくれている。
GNOME Shell Extension を調べてみた – ふとしの日記

サンプルを見たい人や「自分で作るって、どこかに無い?」な人は下記。
GNOME Shell Extensions

って、全部いらネェ…

なんか UserMenu に gnome-terminal のランチャを仕込むのとかあるし。

cmd

#!/bin/sh
gnome-terminal &

なんてスクリプトを書いて $HOME/bin に突っ込んで Alt+F2 のほうが便利だろ。
余計なメニューやアイコンも増えないし三文字でイケる。

私は余計なものが無い GNOME 3 が気に入ったので Fedora を使っているのだし…
とはいえそのうち何か斬新なモノが現れるかもしれないから覚書っと。

********************

インストールしたい Extention をクリックして左上のスイッチを On にする。
するとダイアログが出てインストールするかどうかを質問される。

[インストール] を選択すると即座にインストールされ有効になる。

具体的には
$HOME/.local/share/gnome-shell/extensions/
以下に extension.js 等が展開され、更に gsettings の
org.gnome.shell enabled-extensions
に登録された状態になる。

削除は同じページの [Installed extensions] をクリック。
バッテンマークのアイコンをクリックするとファイルが削除される。
gsettings は再ログインで消えるけど残った場合は手動で消す。

gnome-shell-extension-prefs コマンドで設定もできるみたい。
簡単ですね。

面白いのはコレを絶賛するブログ主は GNOME 2 の再現ばかりやっている。
タスクバー代わりは Alt+F1 もしくは Windows キーを押せばいいし、ダイナミックワークスペースは Ctrl+Alt+上下矢印キーで切り替えできて超便利だし、メニューに至っては Alt+F2 と Tab キーを使わないの?だし。
古くさい UI に戻すためにこんな拡張方法を用意したわけじゃないだろうに。
更に gnome-tweak なんとかを必ず使っているとかetc…

********************

は、どうでもよくて。

つまり Web から $HOME のファイルにアクセスできている、驚いた。
それどころか gsettings まで弄くれてしまうってことじゃないの。

これってセキュリティ的にはどうなんだろう。
「ユーザーが明示的にボタンを押す」等の制限はあるのか?
root は保護されているだろうけど悪用は可能だよね。

よし悪用のため、ではなく…
seemex の Web 版を HTML5 で作ろうとして断念したが「方法はある」ということかも。
いや、見ての通り現在は Chrome メインなんだけど Opera はメーラーとして活躍中w
とにかく Ctrl+u でソースを調べる、Opera と同じキーなので乗り換えしやすい。

require.js を使っている、調べれば解るけどややこしい…
data-main 属性なんて無いけど main.js は見つかったので表示して…
なんとか extensions.js なるアヤシイものを見つける。

https://extensions.gnome.org/static/js/extensions.js

正直、今の私ではほとんど理解できないというオチが。
とにかく dbus を使えばこんなことが可能になるみたい。
勘違いかもしれないけど。

Web から local の設定変更とかが可能になれば色々と思いつくよね。
ということで Shell Extension とは全然関係ないお話でした。

but_active 3.0.1

意表を突いて Gedit Plugin を更新しました。

Gedit が 3.4 になって but_active が使えなくなったのは知っていた。
我ながら不便だけど多分バグでそのうち Gedit 側が対応すると思い放置。
しかしいつまでたっても…

もう仕様変更だとしか思えない、3.4 のソースをダウンロード。
gedit

3.4 には NotebookPopup 定義が無いジャン!
ソース側に移動したのかと思い grep コマンド。
関数名は見つかるけどメニュー用の定義はやっぱり無い。

gedit-notebook-popup-menu.c を見ると都度作成になっている。
マジで仕様変更だった、あーあ作り直ししなきゃ。
てゆーかもっと早く気がつけよ俺!

ドキュメントメニューに入れるように変更、他はそのまんま。
で普通に動くようになった、入らないなら例外を吐いてくれよ…

けどメニューがこの位置では使いにくいお。
ええい、キーボードショートカットを使えにしてしまえ。
Shift+Ctrl+Alt+W しか選べないな、まあいいや。
ダウンロードとスクリーンショットは以下に。

Gedit 及び Eye of Gnome プラグイン

今度から動かなくなったら早めに調べよう。
そういえば Eye of GNOME 3 のプラグインは使えるようになったかな?
使えるようならそろそろ GNOME3 対応版を作りたいな、今度調べる。

WebM binary

意表を突いて Y901x を更新しました。
PyGtk のままだよ、当然 GTK2 だよ、もう古いよ過去の異物だよ。
とはいえ Google Chrome なんかも GTK2 だったりするのだが。

とりあえず再生速度変更の方法を何故か見つけたのでやってみようと。
Basic tutorial 13: Playback speed – GStreamer SDK documentation – GStreamer SDK documentation

一番目引数に 1.0 をデフォルト値に上下した float 値を入れた seek_event を作る、それを playbin2 に投げただけでアッサリ。
ただ再生停止したりファイルを切り替えするとリセットされて困った。
GST_MESSAGE_STATE_CHANGED で都度投げる方法でなんとかした。
こんなんで大丈夫かな…

ボタンを付けたかったけどスペースが無いのよね。
VLC とかみたく小さくしたくてもできないウインドウでは嫌だもの。

それと気になっていたけど放置していたところをまとめて。
Linux アプリ作りは本当にイイなぁ。
どうせ自分しか使っていないだろうから好き勝手にできるし。

VLC と違って音程は過去の遺物である Y901 同様変化する。
つか私は変化したほうが自然だと思うんだけど。
ま、これで YouTube から拾ったけど早すぎてどうやっているのかが全然解らなかったバイクのスゴテク動画をスローでじっくり検証できるようになったぞと。
倍速側なんてオマケだ、どんな場合の時に使うかワカラン。

しかーし

YouTube は最近 Flash, MPEG-4 AVC から HTML5, WebM になったのね。
これはキャッシュからコピーするスクリプトを作り替えしなければ。
というわけで今まで使っていた Nautilus スクリプトを改造した。

のだが…

YouTube の動画はいつのまにかキャッシュに残らなくなっている。
検索してゲゲッ、最近拾ってなかったので気がつかなかった…
FLASH のままな Opera キャッシュでも拾えない、お手上げだ!
あきらめて拡張を使おう、個人製作のバイク動画くらい拾わせてくれよ。

使えないけどせっかくやったので Python 覚書。

ちなみに Fedora 17 でファイルの拡張子が無い場合は
/usr/share/magic (/usr/share/misc/magic へのリンク)
の指定で見分けている、一応拡張子優先であるが。

とにかく /usr/share/magic を Gedit で開いてみる。
「エンコードが不明!」とか出るけど無視して「強制的に編集する」ボタンをば。
Ctrl+F で webm と打ち込み検索する、強制編集状態でも探せるよ。

WebM って Matroska のサブセットなんだ、今頃知った。
てか日本ではネクラでキモチワルイ奴しか今まで縁がなかったでしょコレ。
ftypwebm なんて指定で MP4 じゃダメだったのかな?

Linux の場合リポジトリからまとめてコーダーとデコーダー(あえてコーデックとは書かない)を入れられるからあんまり気にしないのよね。
MOV, RM, WebM なんかも普通に Nautilus でサムネイルできるし。
私の知る限り GStreamer で再生できないのは WMV3 だけだ。

それはどうでもよくて。

0x4282 が含まれている否かで通常 Matroska と見分けているみたい。
ま、実質先頭バイナリ4つだけ見れば動画であることは解るわな。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

TEST_FILE = "test.webm"
WEBM = "\x1a\x45\xdf\xa3"

for a in WEBM:
    print ord(a),

print "\n-----"

o = open(TEST_FILE, "rb")
bin_array = o.read(4)
for a in bin_array:
    print ord(a),
o.close()

print "\n-----"

print bin_array == WEBM

この方法で拡張子が無くても先頭バイナリで判別が可能になる。
使い道は無かったけど、きっといつかは勉強して良かったになるはず!

実は Gio を使ったほうが簡単なんだけどね。
拡張子を取っ払ってこんなコードを試せば解るよ。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gi.repository import Gio

# Create GLocalFile
# Remove File Extenshon
f = Gio.file_new_for_path("test")
# Create GFileInfo
info = f.query_info(
    Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
    Gio.FileQueryInfoFlags.NONE,
    None )

print info.get_content_type() == "video/webm"

実は Python コードを書くのも久々だったり。
とにかく半年以上間が開いたけどアプリの更新。
年金を貰える歳まで絶対に生き残ってやる!