キーマップがおかしくなったのは console-setup のせい

メイン・マシン (Debian Sid) で数日ぶりに sudo aptitude update; sudo aptitude -s full-upgrade すると、GNOME 関連が大量に来てた (ついに/やっと gvfs が来たりしてた) のと一緒に xorg の 1:7.4+1 が来てて、2chDebian スレで X.org祭り開催中 というコメントを見てたのだけど、だいじょうぶなんじゃないかと気楽に sudo aptitude full-upgrade してしまった。すると、なんと gdm でログインできなくなったのだった。
というのはちょっとおおげさで、ホントは US キーボードのキーマップになってて、アルファベットは OK なんだけど記号類が意図したものとちがう入力になっちゃってて、パスワードがちがうとハジかれてただけ。でも、直らないと困る。
2ch にも hal への言及があるし、DebianBTS をだらだらとのぞいてみても hal 用の XML ファイルを自分で書いたって人がいたりしたので (どこか忘れたけど)、hal 関連でなんとかしないといけないのかなと思ったのだけど、結論からいうと、うちの場合 console-setup がおかしかっただけみたいなのだった。
/usr/share/doc/xserver-xorg/NEWS.Debian.gz に以下のようにある (これ、apt-listchanges が拾ってくれなかったんだけど、"UNRELEASED" とかってまちがったことが書かれてるせいかな?)。

xserver-xorg (1:7.4+1) UNRELEASED; urgency=low

  Starting from this version, input devices are no longer configured
  statically in /etc/X11/xorg.conf.  Instead, input devices are detected at
  runtime (and can be hotplugged) and configured individually.  The default
  keyboard layout is shared with the console and is configured in
  /etc/default/console-setup.  As a result, devices configured to use the
  mouse or kbd driver are ignored by the X server by default.
  For more details, see:
  http://who-t.blogspot.com/2008/12/evdev-xorgconf-hal-and-other-fud.html
  http://who-t.blogspot.com/2008/10/new-keyboard-configuration-handling.html

 -- Julien Cristau   Wed, 25 Mar 2009 03:40:18 +0100

だいじなのは The default keyboard layout is shared with the console and is configured in /etc/default/console-setup. というところで、その /etc/default/console-setup は sudo dpkg-reconfigure console-setup すると再生成される。ただ、これがどうやってもまともなのを作ってくれないぽくて、しかたなく直接編集した。
おかしいのはこのファイルの最後のほうで、アップグレード時にてきとうに設定スクリプトに答えた結果だとこんな感じ。

# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.
XKBMODEL="jp106"
XKBLAYOUT="jp,jp"
XKBVARIANT="latin,"
XKBOPTIONS="grp:alt_shift_toggle,lv3:ralt_switch,grp_led:scroll"

/etc/X11/xorg.conf では "XkbLayout" が "jp,jp" ではなく "jp" なので、/etc/default/console-setup でも "jp" にし、XKBVARIANT と XKBOPTIONS のラインは消してしまった。すると、リブート後 gdm で記号類もふつうに入力できるようになった。
あと、sudo dpkg-reconfigure xserver-xorg すると、これが一切質問してこなくなってて、Section "InputDevice" や Section "Monitor"、Section "Screen" がばっさり消えてた。残ってるのは以下のラインだけ (コメントをのぞく)。

Section "Device"
	Identifier	"Configured Video Device"
EndSection

たぶん Debian でも、もう /etc/X11/xorg.conf なしでよくなったんだろう。試してないけど。
もうひとつ、xserver-xorg が xserver-xorg-input-evdev に依存するようになり、これが /usr/share/hal/fdi/policy/20thirdparty/10-x11-evdev.fdi なんてファイルを含んでるのは、強制的に evdev が使われるようになったということぽい (それっぽい設定ファイルになってる)。つまり、xserver-xorg-input-kbd と xserver-xorg-input-mouse は不要になったということなんだろうと思い、パージした。
ちょっといまどきの Linux デスクトップに近づいた気分。

Eee PC 900A に Debian をインストール

Eee PC 900A

しばらく前に買っていながら、とりあえずちゃんと動くぽいのだけ確認して放置していた Eee PC 900A を、そろそろ使えるようにしようと Debian マシンにすることにする。
900A は、GENO ってところの通販で 2 万弱で叩き売りされてたのを買ったもの。ホントは、画面の解像度はもう少し高くないとツライよなと思ってて、Dell の Inspiron Mini 12 を考えてたのだけど、"Intel GMA 500 (Poulsbo) graphics on Linux: a precise and comprehensive summary as to why you’re screwed" を読んで、現状 Intel GMA 500 との組み合わせしかない Z 系の Atom を使ったやつは避けるが吉と知り、でもそうなると候補まるごとなくなるよなと思ってたところで、激安の 900A のことを知って、ここまで安いならいいかと思い買った。

メモリは 2 GB に換装してある (ASIN:B000Y9KLTW)。
900A には、変な UI をかぶせてある Xandros ベースだという Linux がプリインストールされてる。これはこれでいいんだろうけど、やっぱりそれなりに自分でいろいろコントロールしたいなら、一からまるごとインストールし直したほうがあきらかに楽。
ウェブに情報があふれてるからという理由で Ubuntu とかその派生ディストロも考えたのだけど、メイン・マシンで使ってるのと一緒にしておくのがやっぱり楽だろうと、結局 Debian Sid にすることにした。

BIOS のアップデート

新しい BIOS が公開されてたので、なんとなく最新版にした。2009/03/13 公開の Version 0804 ってやつ。問題はなさげ。
ASUS 公式のフォーラムに親切な人が書きこんでくれてるとおりにやった。

  1. ダウンロードした BIOS を 900A.ROM にリネームして、USB メモリのルートに配置。
  2. その USB メモリを左側の USB スロットに差しこむ (左じゃないとダメらしい)。
  3. 900A の電源を入れ、ブート・プロンプトが出たときに ALt キーと F2 キーを同時に押す。
  4. BIOS のアップデートがはじまるので、終わるまでしばらく待つ。

なお、アップデート中は、安全のため AC アダプタで電源供給しておくべしとのこと。
プリインストールの Linux からも BIOS のアップデートができるぽいことがマニュアルに書いてあったのだけど、新しい BIOS が出てるよって感じにならなかったので、その方法はよく調べもしないままあきらめた。

Debian Lenny のインストールと Sid へのアップグレード

インストール・ガイドにある "簡単な方法" で用意した USB メモリからふつうにインストールした。
内蔵 SSD は 4 GB と容量に余裕がないので、まるまるひとつのパーティションに、スワップはなしにしてみた。メモリが 2 GB あるからいいかなぁと思ってやったのだけど、ホントにいいのかどうかは知らない。メイン・マシンでは / のファイルシステムは XFS にしてるのだけど、/boot が XFS のところにあるとダメなんじゃなかったっけと思い、900A では無難に EXT3 にした。
tasksel ("6.3.5.2. ソフトウェアの選択・インストール") ではすべてのチェックをはずした。必要なものは、あとから自分で入れる方向で。
ひとつ、"DebianEeePC/Model/900A - Debian Wiki" にもあるとおり、Debian Lenny のインストーラは、放っておくと USB メモリに grub をインストールしようとしやがるので、ここは手動でインストール先を指定 (うちの場合も内蔵 SSD は /dev/sdb だった)、リブート時に grub のパラメータを修正することになった (このときには内蔵 SSD が /dev/sda になってるので)。全部 Debian Wiki にあるとおりにやれば OK だったので楽々。
リブートに成功したら、上記問題の修正のため /boot/grub/menu.lst を編集しなきゃだけど、まず export LANG=C して、なにはともあれ sudo 入れて visudo。ちょ、このエディタは nano か、と思い sudo aptitude purge nano。ついでに sudo aptitude install vim vim-tiny_ (←古い vi 風の挙動は慣れなくて)。やっと menu.lst を修正。ていうか、最近は defoptions=quiet なんてなってるのか。そのうち Debianupstart になったりすればブート時のログ表示って意味なくなったりするのかななどと思いつつ、これは空に。sudo update-grub
低速 SSD 搭載であることを考慮して、/etc/fstab を編集し、マウント・オプションに noatime を追加。そこで、インストール時に参加するって答えちゃった popularity-contest をやっぱりパージ。noatime にしてても、役に立たないってわけではないみたいだけど。

Q) /usr is mounted with 'noatime'.
A) popularity-contest relies on atime to know what packages were used during the last month. This means you will only report the list of packages installed without usage information.

Popularity-contest Frequently Asked Questions.

あと、tasksel と installation-report が入ってることも思い出してパージ。他にもいらないのがあるけど、それはのちほど。
つづいて APT の設定。/etc/apt/apt.conf.d/99local とか適当なファイルに以下を記述。Recommends なパッケージを勝手に入れるのはやめてほしいっていうのと、依存で入ったパッケージが不要になったときはリムーヴじゃなくパージしてくれってやつ。

Apt::Install-Recommends "false";
Aptitude::Purge-Unused "true";

/etc/apt/sources.list で s/lenny/sid/。インストール時のディフォルトでは main しか書いてないのか、と contrib と non-free を追加。Sid なので security.debian.org と volatile.debian.org のラインは削除 (コメント・アウトされてる cdrom のラインも)。sudo aptitude full-upgrade。無事 Debian Sid になった。
linux-image-2.6.29-1-686 が来てるのでインストール。それと、いいかげん強力な補完がないとツライので bash-completion を入れた……んだけど、zsh のほうが強力な感じ (単純な使いかたしかしてないけど)。4.0 だとちがうんだろうか (Debian Sid の bash は現在 3.2-5)。
時間切れで今日はここまで。

memtest86 が動かない

寝てる間に memtest86 を走らせておこうとインストールしたんだけど (換装した 2 GB のメモリ、実はまだチェックしてなかった)、grub から memtest86 を選んだところで落ちて再起動してしまう。memtest86+ を試したら、こっちは動いた。まあ、どっちかが動いてくれればいいんだ。
ちなみにエラーは出なかった。めでたし。

udev 0.140-1 でネットにつながらなくなり、ちょっとあせった

今日 Lenny リリース後はじめての udev アップグレードが Sid に来て (0.125-7 → 0.140-1)、アップグレード前に一瞬ためらったんだけど、apt-listbugs もなんにもいわないし、まあだいじょうぶなんじゃねと目をつぶって特攻したら、案の定リブート後にネットにつながらなくなって一瞬あせったのだった。
sudo ifconfig すると lo しか見えてなくて、sudo ifconfig -a すると eth3 なんてのがいた。
M/B は Abit の NF-M2 nView (Phoronix のレヴュー記事) なのだけど、以前は Firewire device (ohci1394) が eth0、PCI device (forcedeth) は eth1 だった。更新されてるのに気づいた /etc/udev/rules.d/70-persistent-net.rules をのぞいてみると、PCI device (forcedeth) が最後にもう一度設定されてて、これが eth3 だった。(ちなみに USB device (rndis_host) ってのが eth2 になってて、これは EMonster かな。いつから 70-persistent-net.rules にこんなのがあるのかわからない……。)
↓が以前からある設定 (MAC アドレスは伏せた)。

# PCI device 0x10de:0x0269 (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="xx:xx:xx:xx:xx:xx", NAME="eth1"

↓は新規に追加されたらしき設定 (同上)。

# PCI device 0x10de:0x0269 (forcedeth)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

/lib/udev/write_net_rules が出力する形が変わったんだろうと思うんだけど、よくわからない。けどまあ、eth3 を今までどおりの eth1 にすればいいだけだ。ついでに古い設定は全部消してしまうことにした。使ってないし。
もうひとつついでに、eth1 じゃなく eth0 にして、/etc/network/interfaces のこれまで eth1 だったところを eth0 にした。気分だけちょっとすっきりして終了。
3/31 追記: "#521521 - udev: renames network devices after upgrade - Debian Bug report logs" ってのが 3/28 に登録されてて、0.140-2 で修正された模様。

GNOME のメイン・メニューのアイコンが……

ふと気づいた。GNOME のメイン・メニューのアイコンが、なんか変なのに変わってる。

find /usr/share/icons/gnome -name "*main*menu*" とかして、問題のアイコンを発見。32x32 なやつ (/usr/share/icons/gnome/32x32/places/gnome-main-menu.png) を縦横 6 倍してみると……。

dpkg -S /usr/share/icons/gnome/32x32/places/gnome-main-menu.png して、パッケージは gnome-icon-theme と知る。3/20 に出てる 2.24.0-3 で変わったらしい。

Debian Changelog gnome-icon-theme (2.24.0-3)

問題のバグは "#516566 - Replace the "swirl foot" icon with the Debian swirl - Debian Bug report logs" か。でも、これは GNOME の足あとアイコンを Debian の渦巻きアイコンに replace してくれって話 (たしか Ubuntu とかはそうしてる)。間を取るな、間をw
合体アイコン、微妙すぎる。慣れるもんなのかもしれないけど。
3/23 追記: "Which logo for the main GNOME menu in Debian? - Joss's blog" ってエントリがあった。意見は割れてる模様。
3/27 追記: 2.24.0-4 で、ディフォルトでは Debian Swirl (渦巻きアイコン) になった。投票の結果とのこと。ただし他が消えたわけではなく、alternatives で選択可能。めでたし。

MTV Music の埋め込み型プレイヤーを表示する Google ガジェット

サンプル

意味もなく YouTube とならべてみる。

MTV Music
YouTube

説明文にあるとおりのブックマークレット

特に意味はない

ひさしぶりに MTV Music を見てみたんだけど、なんかさびれてる感じ。YouTube だとマイナーな音楽の動画でも再生数を稼いでるけど、MTV Music のほうはホントに少ない。
日本からだとほとんどの動画が見れないし、まったく意味がないんだけど、唐突に作ってみた Google ガジェット。はてなにそのまま貼れるようにしてくれって要望も一応出てるけど (idea:21566)、賛同者も全然いない MTV Music。
ていうか、前にちょっとググったりして調べた JavaScript のこと、まったく忘れてるし。
せっかくなんで、もうひとつぐらい貼っておく。なんでか Pavement は見れるんだ。

YouTube のオーディオ入れ替え (AudioSwap) 機能を使ってみた

先日アップロードした動画 ("EMonster で Android! (ピンボケ)")、どうにも音がさびしいのでオーディオ入れ替え (AudioSwap) 機能を使ってみた (YouTube 公式の紹介ページ)。

ホントはアップロードするときに好きな曲でもつけようと思ったんだけど (ピアプロとかに自由に使わせてくれるのがいくらでもあるし)、めんどうになってヤメてしまったのだった。動画の長さも考えて複数選んだりして、で、はみ出すときはフェード・アウトさせたりとか、ふだんそういうのやってないからめんどうで。
AudioSwap を使えば、"マイ動画と同じような長さの曲のみ表示する" にチェックを入れるだけで、動画と長さの近い音楽をリストしてくれて、ボタンひとつでプレヴュー、さらにボタンひとつで実際に音を入れ替えられる (実際に音が入れ替わったのが見れるようになるのは、しばらくあと)。おそろしいほどに簡単。
もちろん YouTube に許可されてる曲しか使えないので、好きな音楽をつけられるわけではないけど、7:15 って長さでもかなりたくさんの曲がリストされた。曲も悪くないのがそろってる。今回は、長さがぴったりの "At the Speed of Light" というテクノを選んでみた。
ホントは、wintermute ってヴォーカロイド使いの人の "Fury, Melancholy and Joy" って曲とかをつけようかと思ってたのだった。ついでなんで貼っておく (はてなダイアリーピアプロの曲個別プレイヤーが貼れないようなので、しかたなくニコニコ動画を)。

サビがギターの轟音だというのが良い感じ。
もうひとつついでに、YouTubeアノテーション・エディタのスクリーンショット。これもおそろしいほど簡単に使えた。

EMonster で Android を動かして YouTube にピンボケ動画を上げてみた

YouTube に動画をアップロードしてみた

"Android on S11HT (EMONSTER) - potio Arabicam amo" とかを見てオレもオレもと思い EMonsterAndroid を動かしてみて、おお、日本語化が進んでるとか思って、ちょっと YouTube で検索してみて日本語化が進んでるとわかる動画が上がってないのを知り、友人にデジカメを借りてきて動画を撮って YouTube にアップロードしようとしたんだけど、そのとき新しいビルドが上がってるのに気づいて、どうせならこれでと思って新しいビルドのを動かしてみたら、なんと英語オンリーになってて、でもまあいいかと動画を撮ってみたんだけど、激しくピンボケ。でも、せっかくだからアップロードした (ためしにアノテーションもつけてみた)。
http://www.youtube.com/watch?v=k7Rtg5vUn-c

ホントは Google マップを使ってるところとか、他にも動画を撮ってと思ってたんだけど、ピンボケじゃなんだしと思ってヤメにしてしまった。

EMonsterAndroid を動かす方法

だいたい "Android on S11HT (EMONSTER) - potio Arabicam amo" に書いてあるので全部なんだけど、いくつか補足的にメモを残しておく。

  • 使ったのは android-kaiser-23-02-09.zip で、これに含まれてる default.txt だと initrd.gz の場所を "\Storage Card\initrd.gz" としてて、つまりメモリ・カード直下と指定してるんだけど、日本語版 Windows Mobile のディフォルトの状態 (つまりうちの状態) では "Storage Card" という部分が "メモリ カード" とかってなってて、つまり日本語。たしか、このままじゃ動かなかった。日本語でパス指定するのはいいけど、文字コードShift_JIS でいいのかな……とか思ったところでうんざりして、場所の指定はたんに "initrd.gz" とし、haret.exe とかと同じディレクトリ (フォルダ) に initrd.gz を置いた。
  • haret.exe とかを置くディレクトリの名前はなんでもいい。
  • 起動成功率はけっこう低い。失敗したとき data.gz のファイル・サイズが 0 になってることがあったりして、そのときは元の data.gz に入れ替えて再度試みた。元の data.gz を他のところにも置いておくと、いちいち再転送しなくても、そこからコピーできるので手間が省ける。

diff -u default.txt.orig default.txt の結果をなんとなく貼っておく。

--- default.txt.orig	2009-02-20 05:05:13.000000000 +0900
+++ default.txt	2009-02-25 23:50:18.899766740 +0900
@@ -4,8 +4,8 @@
 set FBDURINGBOOT 0
 set MTYPE 1553
 set KERNEL zImage
-#set initrd "initrd.gz"
-set initrd "\Storage Card\initrd.gz"
+set initrd "initrd.gz"
+#set initrd "\Storage Card\initrd.gz"
 #set initrd "\Storage Card\initrd-console.gz"
 #set initrd "\Storage Card\android.bin"
 #
@@ -22,5 +22,6 @@
 #                              1=Hitachi 2=Topoly 3=Samsung
 #
 #set cmdline "ppp.apn=www.vodafone.net.nz ppp.username=\"\" ppp.password=\"\" pm.sleep_mode=3 msm_sdcc.msmsdcc_fmax=20000000 no_console_suspend board-kaiser-keypad.atttilt=1"
-set cmdline "ppp.apn=www.vodafone.net.nz ppp.username=none ppp.password=none pm.sleep_mode=1 mddi.width=320 mddi.height=480 msm_sdcc.msmsdcc_fmax=20000000 no_console_suspend board-kaiser-keypad.atttilt=1"
+#set cmdline "ppp.apn=www.vodafone.net.nz ppp.username=none ppp.password=none pm.sleep_mode=1 mddi.width=320 mddi.height=480 msm_sdcc.msmsdcc_fmax=20000000 no_console_suspend board-kaiser-keypad.atttilt=1"
+set cmdline "ppp.apn=emb.ne.jp ppp.username=em ppp.password=em pm.sleep_mode=1 mddi.width=320 mddi.height=480 msm_sdcc.msmsdcc_fmax=20000000 no_console_suspend board-kaiser-keypad.atttilt=1"
 boot

Android の感想とかいろいろ

  • android-17-02-09.zip ではソフトウェア・キーボードが動いていたけど、EMonster の小さな画面ではタッチペンを使わないとツライ。ていうか、画面は相当大きくないとツライんじゃないか。やっぱり、ハードウェア・キーボードがない HTC Magic (YouTube) より HTC Dream (T-Mobile G1) のほうが端末として使いやすいんじゃないかと思う。
  • android-17-02-09.zip から android-kaiser-23-02-09.zip でいろいろ進歩してた。一例として、起動中に表示される Android のロゴとアイコンが、前者では 240 x 320 の画面など考慮されてないようにはみだしてたのが、後者ではきれいに表示されてたりした (前者では、画面は 320 x 480 決め打ちだったのかもしれない)。
  • Android のウェブ・ブラウザは悪くない感じ。画面の横幅を考慮して、縦スクロールだけで文章を読めるような形にレンダリングしてくれるようになってて、これを考えるとズーム・イン、ズーム・アウトが重いのもしかたないかなと思ったりする (そのたびにレンダリングしなおさなきゃならないんだろうから)。それに、実際に出てくる Android 端末の CPU は EMonster に載ってる 400MHz のやつより速いだろうし、もっと快適になるんだろう。
  • Windows MobileGoogle マップのストリート・ヴューは、横に回れるだけで上を向いたり下を向いたりできなかったけど、AndroidGoogle マップのストリート・ヴューはそれができる。ちょっとゴージャス。
  • メモリ・カード内に MP3 ファイルとかあれば、それを再生できる。ミニ・ヘッドフォン端子つきで音の良い Android 端末の日本リリースを希望。
  • android-kaiser-23-02-09.zip には YouTube アプリも入ってたけど、映像は乱れて表示できなかった。
  • 電話機能はふつうに使えた。
  • Google アカウントとの紐づけは、ちょっと怖くてやってない。
  • Android だと Windows Mobile のときより早く電池がなくなる感じ。

いろいろあるけど、どうにも Windows Mobile を愛せなくて、いじるのをまったくやめてしまってた EMonster が、またちょっと楽しいオモチャとして復活したのはちょっと良かった。"http://www.androidonhtc.com/kaiser/install" のページには、ext2 パーティションを作ってそこに Android をインストールする方法が書かれる可能性もあるようで、それも楽しみ。ちゃんとしたデュアル・ブート端末になったりするんだろうか。