カテゴリ: Ubuntu
Kindle2 on Ubuntu Linux and Calibre
- 7月
- 4
リンク: http://bugs.calibre-ebook.com/ticket/6086
Kindle2を使っている。電子ブックを上手に使うには、calibreというアプリケーションが便利だ。Linuxだけではなく、mac, windowsでも使えるだろう。
Ubuntu GNU/Linux (10.04)上で、Calibreをつかって、外部のWebニュースを巡回して、電子ブックを生成して、Kindle2に流し込んでいる。
Calibreは、スケジュールされた時間帯にWebを巡回して、たとえばLWNやTimes, CNN, BBC, Japan Timesなどニュースサイトからニュースを取得して、ebookを生成してくれる。
また、kindle2を接続すると、自動的に、まだkindle2に取り込んでいないNewsを転送してくれる。すぐれものだ。
ただし、ちょっとした不具合がある。
Calibreを英語以外のlocaleで起動すると、Timesなどのサイト巡回結果のタイトルに日付がつくのだが、それが日本語混じりになる。技術的にはstrftime()がロケールLC_TIMEの影響を受けるためだ。
一方、Kindle2は、まだ英語以外の言語に対応していない。Kindle2をUbnutuにつなぐと、vfatとして認識されて自動マウントされる。マウントオプションは、
/dev/sdc1 on /media/Kindle type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
こんな感じ。
そこに、日本語のファイル名のついたニュースファイルを流し込むと、怪しいことが起こる。
具体的には、マウントしたKindleが読み込みのみになってしまう。
で、リンク先のようなバグレポートとなった。
でも、本当は、OSがわで対応すべきではないのか?ということで、たとえばuni_xlateというマウントオプションをつけることを考えたい。これは、unicode文字がきたときに、適当なエスケープシーケンスでlatin文字に変換するというものだ。
では、オートマウントされるときの機構でどこをどのようにいじればいいのか。
gconf-editorで、設定を開いて、system/storage/vfatあたりを見ればいいのかとおもったが、ここに設定を追加すると、すべてのデバイスで影響してしまう。kindleの時だけ、オプションを追加するには、どうすればいいか。
Automounting a storage device with GNOMEを参考にすると、hal-device というコマンドを見ればいいらしい。
Kindleに関わる部分をみるとこんなふうになっている。
0: udi = '/org/freedesktop/Hal/devices/volume_uuid_0096_AB41'
linux.hotplug_type = 3 (0x3) (int)
info.interfaces = { 'org.freedesktop.Hal.Device.Volume' } (string list)
block.storage_device = '/org/freedesktop/Hal/devices/storage_serial_Kindle_Internal_Storage_B003B0A200930A7F_0_0' (string)
volume.fstype = 'vfat' (string)
volume.fsusage = 'filesystem' (string)
volume.fsversion = 'FAT32' (string)
volume.uuid = '0096-AB41' (string)
volume.label = 'Kindle' (string)
info.udi = '/org/freedesktop/Hal/devices/volume_uuid_0096_AB41' (string)
volume.mount_point = '/media/Kindle' (string)
volume.is_mounted = true (bool)
volume.is_mounted_read_only = false (bool)
volume.is_disc = false (bool)
info.product = 'Kindle' (string)
volume.partition.number = 1 (0x1) (int)
block.major = 8 (0x8) (int)
block.device = '/dev/sdc1' (string)
block.is_volume = true (bool)
volume.partition.start = 8192 (0x2000) (uint64)
volume.partition.media_size = 1602191360 (0x5f7f8000) (uint64)
volume.size = 1602183168 (0x5f7f6000) (uint64)
block.minor = 33 (0x21) (int)
volume.num_blocks = 3129264 (0x2fbfb0) (uint64)
volume.is_partition = true (bool)
org.freedesktop.Hal.Device.Volume.method_names = { 'Mount', 'Unmount', 'Eject' } (string list)
volume.block_size = 512 (0x200) (int)
volume.linux.is_device_mapper = false (bool)
org.freedesktop.Hal.Device.Volume.method_execpaths = { 'hal-storage-mount', 'hal-storage-unmount', 'hal-storage-eject' } (string li
st)
org.freedesktop.Hal.Device.Volume.method_signatures = { 'ssas', 'as', 'as' } (string list)
org.freedesktop.Hal.Device.Volume.method_argnames = { 'mount_point fstype extra_options', 'extra_options', 'extra_options' } (strin
g list)
volume.ignore = false (bool)
volume.mount.valid_options = { 'ro', 'sync', 'dirsync', 'noatime', 'nodiratime', 'relatime', 'noexec', 'quiet', 'remount', 'exec',
'utf8', 'shortname=', 'codepage=', 'iocharset=', 'umask=', 'dmask=', 'fmask=', 'uid=', 'flush' } (string list)
volume.unmount.valid_options = { 'lazy' } (string list)
linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/host16/target16:0:0/16:0:0:0/block/sdc/sdc1' (string)
info.parent = '/org/freedesktop/Hal/devices/storage_serial_Kindle_Internal_Storage_B003B0A200930A7F_0_0' (string)
info.capabilities = { 'volume', 'block' } (string list)
info.category = 'volume' (string)
あとは、このUDIなどをつかって、labelがKindleのようなストレージデバイスのときは、こうしろ的な設定を gconftoolなんかつかって、書き込めばいいらしい。
Launchpad+bazaarか、Github+gitか、それが問題だ
- 5月
- 23
リンク: http://andymatuschak.org/articles/2008/05/07/more-on-launchpad-bazaar-vs-lighthouse-github/
最近、gpxviewerというアプリケーションをいじっている。これは、GPXファイルの管理を行う上で、容易に地図上でどこをトレースした物かを表示してくれる。
Python + GTKでかかれており、小さく、最低限必要な機能を満たしている。
多数のGPXファイルがあると、JOSMで開いて確認していくのでは、少々手間がかかりすぎる。また、できればファイル管理ソフトウエア(nautilus) から簡単に起動できた方がいい。
これは、まだリリースして日が浅く、コードベースも小さいので、こういった用途に向けて改良するには、ちょうどよかった。
わたしの改良点は、Githubリポジトリにおいてある。すでに、作者にパッチを送っており、gpxviewer on launchpadから最新のコードを入手できる。
5月に入ってから、7つのコミットに関わる貢献をしている。
さて、作者のAndrew Geeさんからは、BazaarをつかってLaunchpadにブランチを開いてくれ。そしたら、マージもレビューも簡単だ、といわれている。たしかに、bazaarを使ってlaunchpad からコードを入手して開発しているが、bazaarはその使い勝手が気持ち悪くて、git-bzrをつかって、(たとえば、git-bzrの使いかた),gitにインポートして開発し、ブランチの歴史をきれいにしてから、git format-patchを用いてパッチを生成して送っている。送ったパッチをそのままインポートしてくれれば、リポジトリに取り込むときに面倒はないのだけれども、Andrewは(bzrにそんな機能はないのかもしれないが)、パッチをあてて適当なコメントをつけてupstreamにマージをするので、パッチを送った後は、upstreamの最新から再度ブランチを切って作業をする羽目になる。
そもそも、プロジェクトのオーナーがlaunchpad+bazaarを使っているのだから、選択するのはオーナーだ。それに不満はない。けど、開発する方は、使いたい奴を使いたいではないか。
閑話休題
その選択にあたっても、プロジェクトオーナーは、pros/consがあって悩ましいはず。launchpadのサイトとしての機能はすばらしいが、bazaarよりgitのほうが使いやすいじゃん。という悩みをこの記事では吐露してくれているのである。
Dell mini 10v (Ubuntu版)のUbuntu 9.10へのアップグレード
- 1月
- 1
Dell mini 10v(ubuntuプレインストール版)は、Dell mini 10vに、Dellカスタマイズ版のUbuntu 8.04 LTS (LPIA) UNR(Ubuntu netbook remix)がのった製品である。
詳細は、技術評論社のhttp://gihyo.jp/admin/serial/01/ubuntu-recipe/0084
記事をみてもらうとして、実際のところ、ただのカスタマイズ版ではなかったことが、後ほど判明している。
さて、2009年11月27日、このDell miniに搭載されているUbuntuのLPIAアーキテクチャ版のサポートは打ち切られることが発表された。その結果、現行のLPIAアーキテクチャ版のUbuntuが搭載されたPCやネットブックは、i386版の再インストール無しにアップグレードはできないことが判明した。
したがって、現在も今後も入手できるLPIA版のUbuntuは、9.10(Karmic Koala)であることになる。ところで、LPIA とは、Low Power Intel Architectureの略で、ATOMプロセッサを軸としたアーキテクチャで、省電力にチューニングしたコンパイルやカーネル提供がなされることになっていた。
CanonicalのUbuntu公式のサポート対象外になったのを記念して(?)、Dell mini 10v(Ubuntuプレインストール版)を、Ubuntu 9.10 (LPIA)にアップグレードしてみた。もちろん、このアップグレードによって、Dellによるサポートは受けられなくなるので、ご注意を。
Ubuntu公式サポート対象外であるので、aptのリポジトリ指定も、従来とは異なって、 ports.archive.ubuntu.comを指定しなければならない。
たとえば、既定の状態では、/etc/apt/sources.listには、次のように指定されているはずである。
deb http://dell-mini.archive.canonical.com/ubuntu/ hardy main universe multiverse restricted deb-src http://dell-mini.archive.canonical.com/ubuntu/ hardy main universe multiverse restricted
これに対して、サポートされないことを覚悟の上、通常のUbuntuにアップグレードするには、
deb http://ports.ubuntu.com/ubuntu-ports intrepid main universe multiverse restricted
このように指定する。
いったん、upgrade-managerも、Dellカスタマイズ版ではなく、通常版を使わせるために削除し、新リポジトリから再インストールしておこう。
また、もとのシステムは、LTS(長期間サポート)として設定されているので、通常アップデートが表示されない。これは、UbuntuのFAQにもあるように、/etc/update-manager/release-upgradesに、
[DEFAULT] # default prompting behavior, valid options: # never - never prompt for a new distribution version # normal - prompt if a new version of the distribution is available # lts - prompt only if a LTS version of the distribution is available Prompt=lts
とあるのを、
[DEFAULT] # default prompting behavior, valid options: # never - never prompt for a new distribution version # normal - prompt if a new version of the distribution is available # lts - prompt only if a LTS version of the distribution is available#Prompt=lts [DEFAULT] # default prompting behavior, valid options: # never - never prompt for a new distribution version # normal - prompt if a new version of the distribution is available # lts - prompt only if a LTS version of the distribution is available Prompt=normal
と書き換えることによって、アップグレードを行うことができる。
さて、このようにして、Dellカスタマイズ版Ubuntu 8.04LTSをベースとしてアップグレードをかけていくと、途中でXが正常に起動しなくなることがあるかもしれない。これは、Xの設定を作り直すことで解消することができる。正常に起動しなくなったとき、トラブルシューティングの画面になるので、設定の作り直しを選択すればよい。(このときのメニューは英語だ)
ところで、Dell mini 10v は、mini 9/10/12が使用しているIntel GMA500 (Poulsbo) チップと違い、Intelの Mobile 945GME Express 統合グラフィックコントローラを採用している。したがって、間違えて mini 9などの情報を流用することのないようにしたいところ。
Ubuntuは(ほかのディストリビューションも同様であるが)、バージョンとばしのアップグレードはサポートされない。したがって、LPIA版の最新かつ最終版である9.10にするには、途中 8.10, 9.04バージョンを順にあげていく必要がある。
さて、8.10以降、サスペンドできなくなることに気づくであろう。これは、Dellカスタマイズ版に含まれているプロプラソフトウエアが、バージョンアップに追従しないため、内部構造の変更に追従できないことから起こる。
Dellカスタマイズ版には、少なくとも次のプロプラエタリ・ソフトウエアが含まれる。
- Fruendo メディアプレイヤーのエンコード・デコードライブラリ
- Adobe Acrobat Reader 8
- PowerDVD DVDプレイヤー
- Dell Video Chat チャットソフトウエア
- DELL V505 ドライバー
- Dell launcher
これらのうち、Fruendo ライブラリは、アップグレードの過程で、フリー版のビデオエンコード・ライブラリを導入しようとすると、削除されるかもしれない。したがって、アップグレード前に、これらのソフトウエアはパッケージとして保存しておくとよい。
# apt-get install dpkg-repack # dpkg-repack gstreamer0.10-fluendo-plugins
などとすることで、アップグレードの心配は少し軽減されるだろう。
もし、すでにアップグレードの過程で知らずに消してしまった場合、、、 Dellからのパッケージについていた、Ubuntu DVDで再インストールすることで、入手できる。というか、再インストールが必要である。
さて、サスペンドの問題であるが、これは、上記のうちPowerDVDが原因である。
Gnome power managerからのサスペンドであるが、これはgnome-power-managerがHALを経由して、システムユーティリティを呼び出すことで実行される。呼び出されるユーティリティはHALが判断するが、今回は、/usr/sbin/pm-suspnedが呼び出される。
カーネルを直接呼び出してサスペンドさせた場合には、成功するが、pm-suspendは失敗する。したがって、pm-suspendの問題である。
そこで、pm-suspendでサスペンドをさせようとした後、ログファイルを見ると、
/var/log/pm-suspend.log /etc/pm/sleep.d/07-stop-play.sh suspend suspend: kill: 4: Usage: kill [-s sigspec | -signum | -sigspec] [pid | job]... or kill -l [exitstatus] Returned exit code 2. Fri Dec 25 09:05:03 JST 2009: Inhibit found, will not perform suspend Fri Dec 25 09:05:03 JST 2009: Running hooks for resume /etc/pm/sleep.d/01f3507g resume suspend: Fatal open FIFO for writing: /dev/ttyACM0: No such file or directory mbm_gpsd: no process found Returned exit code 1.
というように、ログにエラーが残っている。これによると、/etc/pm/sleep.d/07-stop-play.sh が失敗しているとされている。dpkg -S 07-stop-play.shとして、どのパッケージに含まれるファイルが失敗したか、検索すると、pdvdlinuxだという。そこで、この問題のファイルを削除することで、サスペンドできるようになる。
本質的には、当該ファイルを修正して、意図する動作をするようにしなければならない。
ちなみに、pdvdlinuxパッケージは、つぎのようなパッケージである。
パッケージ: pdvdlinux バージョン: 5.0.1218 優先度: 任意 セクション: non-free/graphics メンテナ: Bazooka Shih <bazooka_shih@cyberlink.com> 説明: Dell Media Experience With Dell Media Experience, you can play back your DVD movies, with the features and controls of a normal living room DVD player.
igotu2gpx: 安価GPSトラッカーi-gotU のLinuxクライアントが大進化
- 11月
- 29
リンク: https://launchpad.net/igotu2gpx
OpenStreetMap Japanでは、MAPコンシュルジュのご協力で、OSM Japan寄付付きi-gotU GPXトラッカーの販売を行っていただいたことがある。当初は、Windowsのみの対応だったが、OpenStreetMap JapanのMLでご紹介したように、igotu2gpxというLinuxのクライアントが開発されていた。
最近、みたところ、大変な進化を遂げている。
- GUIが追加された
- 設定ができるようになった
- Windows/Macにも対応するようになった。
わかりやすいところで、GUIを見ていただきたい

起動時画面

地図をズームアップ、メニュー表示
これらのメッセージが日本語なのは、さっき翻訳したから。いずれ、取り込んでもらいます。地図は、もちろんOSMの成果を使っています。
aircraft-manager
- 8月
- 26
リンク: http://blog.goo.ne.jp/ikunya/e/8fe4974cabde0556ff0152391a0bf943
aircraft-managerですが、単にbluetoothとwifiのオフにとどまらず、充電をオフにするという機能がくせものですね。壊れたかと思って焦ったですよ。
・Dell版UbuntuはCanonical社内(?)でProject Belmontと呼ばれている。ちなみにHPのはProject Dennis
・機内モードはaircraft-managerというパッケージに収められており、Network Managerを有効/無効にしてるだけ
・バグ情報は非公開
バグ情報は、これではないかとおもうんですが、どうでしょうか。
https://bugs.launchpad.net/dell-mini/
aircraft-managerの改良を行ってみたのですが、バージョン番号にbelmont11なんて、管理しづらいのがついてるなーとおもったのです。なるほど、プロジェクト名でしたか。バージョン番号を直したパッケージをあげておきたいと思います。
aircraft-managerは、絶対に必須というものではないですが、電波の発信をOFFにするという趣旨からは、BIOSを叩いてオフにするユーティリティである必要があるのかもしれません。
ほかのPCでは、ACPI経由でオフできることが多い気がしますので、IOポートを叩いて、SMM/SMIからオフにするこのユーティリティはちょっと(古くさくて)いやな感じです。
余裕があれば(ないとおもうけど)ACPIのDSDTを分析して、ACPI経由で制御できるようにしたいところです。
aircraft-manager_belmont12.2_lpia.deb
aircraft-manager_belmont12.2.orig.tar.gz
DELL mini 10vのホットキー(機内モード関係)
- 8月
- 25
リンク: https://bugs.launchpad.net/dell-mini/+bug/302924/comments/12
DELL mini10vのホットキーの機内モード関係について、改善を加えた。
https://bugs.launchpad.net/dell-mini/+bug/302924/comments/12のパッチを適用すると、機内モード制御のユーティリティに、充電制御のメニューが現れ、意図しない不充電を防止できる。
また、https://bugs.launchpad.net/dell-mini/+bug/302924/comments/13このパッチでは、日本語へのローカライズを行っているので、日本語で快適に使ってもらえる。
ところで、Fn+F3(BIOSでFnキーの設定をFunctionしたばあい;デフォルトでF3のみ)の挙動がおかしい。機内モードのユーティリティと、バッテリ表示と両方が実行される。
これは、gconf-editorで、開いたときの
/desktop/gnome/keybindings/battery
と
/desktop/gnome/keybindings/radio
に秘密がある。
前者にはactionとして、gksudo /usr/bin/aircraft-manager が指定されている。
後者には、gksudo /usr/bin/arcraft-manager-util RADIO toggleが指定されている。
しかし、batteryキーは、gnome-power-managerにも配送されるってわけだ。
Ubuntuのバグ(?)にはまる
- 8月
- 21
リンク: https://bugs.launchpad.net/dell-mini/+bug/302924
今週頭から、北京に出張した。先月、PCを買い直して初めての海外出張であった。このPCは、DELL mini10vのUbuntuプレインストール版である。
飛行機に乗る前、念のため、Fn-F2をおして、機内モードにして乗った。
現地に到着して、バッテリーでPCを使い始めたが、どんどんバッテリーが消費されていき、とうとう残り5%になってしまった。作業をあきらめ、ホテルに到着して、ACアダプターを接続したが、なんとチャージしてくれない。
GNOME電源アプレットの表示によると、8.3Wでチャージしていることになっているが、全く充電してくれない。
今回は、完全にあきらめて、必ずシャットダウンして移動することにして、作業はACアダプタを繋いで行うことにした。ネットの日本語の情報を見ると、BIOSをアップして12時間充電しろと有る。やってみても、改善する気配がない。それ以前に、毎日使用しているのに、そんな事象になるはずがない。
日本に帰国し、DELLサポートにメール&電話した。さまざまなことが想定されるようだ。しかし、改善しない。これはセンドバック修理か?とあきらめた。でも、ダメ元で再度情報検索してみた。
会社のデスクのFirefoxの言語設定は英語にしてあるので、英語情報が先にでてくる。
DELL mini 9 manufacture errorによると、最後に素晴らしいトラックバックがある。
そう機内モードが問題だったのだ。Ubuntuのバグトラックによると、この動作は正しいらしいが、モードに矛盾があるとおかしくなる。
具体的にはこうだ。
- 機内モードにする。(Fn+F3)
- BluetoothやWifiを個別にONにする(Fn+F2)
- 充電しなくなる。
- 機内モードにする。(Fn+F3)
- 機内モードをオフにする(Fn+F3)
- 充電をはじめる
分かってみればなんと!ということだが、これははまりどころである。
この機内モードについては、特殊なプログラムのインストールは不要である。
System > Preferences > Airplane
とたどっていくと、機内モードの画面を見ることが出来る。あるいは、Fn+F3でアクセスできる。

