別にそんなちゃんとデベロッパーしようとか思ってなくて・・・
QtにはLinuxZaurusの時代にお世話になっていた(!?)ワケだけど、Nokia N9を買ったことで再びいろいろと身近な話題になったワケで、そうしたらSoftwareDesignの2013年1月号にQt Quickの記事が載って、なんかおもしろそーだなとまたつまみ食い的に遊んでる次第。
そんな中でふとTwitter上でarmな環境で開発云々なんて話があって、「そりゃー最初からキーボードの付いてるdynabook AZが最強だろーよ」とかワケのわからんことを考えたワケだけど、QtCreatorをAndroid上で動かす技量があるワケでもなく(ビルドは試みたけどどうにもならず)、「てっとりばやく動かすにはubuntu化だよね」と思ったので、久しぶりにaznyanにubuntuを入れてみることにした。
ARM/TEGRA/AC100 - Ubuntu Wiki
久々に上のサイトを訪ねてみたら、前回エントリ書いた頃(もう一年以上前だ・・・)は11.10だったのが、12.04(ubuntu)と12.10(lubuntu)になってる。ほうほう。
というワケで、lubuntuの方を選択して入れてみた。
インストールの方法自体は以前と変わらないので省略。
起動してみたらさすがにlubuntuってことなのか、11.10入れてみた頃に比べるとすごく軽快。もちろん、フツーのPCに比べれば「快適」っていうレベルにはならないワケだけど、それにしたってそれなりに使えるレベルで動いてくれる。結構進化してるじゃない!?
インストール後にやったのはとりあえず無線LANの設定と、「スタート」→「設定」→「言語サポート」を立ち上げて、日本語周りのインストール。とりあえず日本語の環境は整った。
さて、次に「apt-get update」したら、なんか「ハッシュサムが適合しません」とか言われてなんか良くない感じ。なんだろーと思ってたら、Wikiの方に以下のコマンドを実行して再度apt-get updateしろと書いてあった。
> sudo rm /var/lib/apt/lists/* /var/lib/apt/lists/partial/*
まぁ、要するキャッシュを消せって話なのかね。上を実行後apt-get updateしたら、以後変なことは言われなくなったので、まずはapt-get upgradeして最新の状態へ。次に「apt-get install lxde」してデスクトップをLXDEに変更した。
さて、ここでよくある問題はLXDEには標準で電源管理アプリがないので、蓋閉じてもサスペンドしてくれなかったりと結構面倒。あと、lxkeymapでキーマップの設定を変更したりしても、再起動した時に元にもどっちゃう。困ったもんだ。
まずは「スタート」→「設定」→「Lxkeymap」を起動して、キーマップを日本語へ変更。
次に「~/.Xmodmap」を以下の内容で作成。
keycode 234 = Escape
keycode 81 = backslash bar
keycode 84 = backslash underscore
次にターミナルから「sudo vi /etc/xdg/lxsession/LXDE/autostart」して、以下の3行を追加
@lxkeymap -a
@xmodmap /home/helicalgear/.Xmodmap
@xfce4-power-manager
で、再起動すると日本語キーマップが有効になって、xfce4の電源管理が使えるようになる。あとは「スタート」→「設定」→「電源管理」で、いろいろと都合のいいように設定すればOK。
あとそれから、「スタート」→「設定」→「ソフトウェアソース」を起動して「追加のドライバー」のタグを開いて「NVIDIA binary Xorg driver for Tegra2 (ventana) GPUs.」を選択して適用すれば、NVIDIAドライバをインストールしてくれる。これもインストール後は再起動すればいいみたい。
次になんとなくアレだったのはswapの設定。12.04以降っぽいんだけど、zramなswapが標準でONになっていて、いろいろと妙な感じ。まずはこいつをDisableにする。ターミナルから「sudo vi /etc/init/zram-config.con」を開く。で、4行目ぐらいにある以下の記述を変更する。
[変更前] start on runlevel [2345]
[変更後] start on runlevel []
再起動するとzramなswapを作らなくなる。
で、代わりにちゃんとしたswapを設定する。方法としては以下の3つかな。
- 内臓ストレージにswapfileを作って、swapを設定する。
- SDカードにswapパーティションを切って、swapを設定する。
- SDカードにswapfileを作って、swapを設定する。
ただ1は内臓ストレージの寿命を縮めるのでパス。動作速度的には2が良さそうなんだけど、これもSDカードの寿命の問題でパス(多分、そうだよね?)。で3を選択した。(もっとも、2と3はSD Cardを挿しっぱなしにしないといけないけど・・・まぁ、いいよね。)
2GBの場合で、[user]と[SD Card]は実際のpathで適宜読み替え
> dd if=/dev/zero of=/media/[user]/[SD Card]/swapfile bs=1024K count=2048
> sudo mkswap /media/[user]/[SD Card]/swapfile
これでswapfileができる。あとは、以下のコマンドを。
> sudo swapon /media/[user]/[SD Card]/swapfile
これで2GBのswapが確保できた。あとはこれを起動時に自動で追加するようにすればいいんだけど、SDカードのマウントのタイミングなのか、fstabに記載してもrc.localに記載してもうまく起動時にswaponしてくれない・・・とりあえず今は起動後、手動でswaponしてる。ここは要検討。
さて、これでようやく一通り環境ができたんで、いよいよqtcreatorを入れてみる。導入は簡単。
> sudo apt-get install qtcreator
あとは必要なものを全部入れてくれる。楽チン楽チン。まぁVer.2.5.2(最新は2.6.1)だけど、とりあえず遊ぶだけなら困らないよね。
インストールが完了したら起動して、QtCreatorの設定・・・ってところで、ちょい気をつけることがある。基本的にこのまま標準の状態でセットアップすると、インストールされてるライブラリの関係からターゲットが「Embedded Linux」になる。そーするといわゆる「クロスコンパイル環境」だと認識されるのか、コード書いて「ビルドと実行」しても一生懸命ターゲットの環境にデプロイしようとして、ローカルで実行してくれない。
しばらく悩んだ結果、Raspberry Piの掲示板に『「ヘルプ」→「プラグインについて」を開いて「Device Support」の「Remote Linux」を無効にしてから、Qtライブラリの設定をしなおすといいよ』という情報をみつけた。
なので、この通りにプラグインを無効にした上で、「ツール」→「オプション」から左の「ビルドして実行」を選んで「Qt バージョン」→「手動」→「追加」で「/usr/bin/qmake-qt4」を追加、ツールチェインも「手動」→「GCC」→「コンパイラのパス」で「/usr/bin/gcc-4.7」を選んで適用すればOK。
これで、一応一通り開発できる環境になる。
上はSoftwareDesignに掲載されたサンプルコード(ちょっと改変してあるけど)を実行したところ。
まぁ正直「開発できる」ってだけで、動作も遅いしどうなんだって感じ。Androidの状態でならともかく、Ubuntu乗せたら(Androidでの駆動とくらべて)動作時間は短くなっちゃうから、たいしたメリットはない気がする。まぁ、dynabook AZ自体は薄くて軽いから、本格的に開発したいって感じじゃなくて、毎日持ち歩いて苦にならない環境って意味では、使えなくもないかもしれない。
今回の発見は、dynabook AZ上で動作するubuntuが思った以上にある程度動く感じになってたってコトの方が大きかった。サスペンド/レジュームもちゃんと動作するし、サスペンドしてるのに本体が熱くなるなんてこともなさそうだった。悪くない。
とりあえずQtCreatorでもなんでもバリバリコード書きたいヒトはやっぱちゃんとした環境整えた方がいいと思った(あたりまえだw)。