キーボードとflash
今日中にAZの設定を終わらせたいのだが、ubuntu12.04と12.10のキメラ状態になってしまったこともあり、苦しんでいる。しかし、11.10に比べて無線LANは安定したように思える。残されている課題としては、日本語キーボードの認識と、flashである。あと、時々「システムプログラムの問題が見つかりました」というポップアップがでるのもなんとかした。
まず、キーボードだが、GUIからやろうとすると落ちてしまうが、これはキメラ問題のためだろう。結局、直接/etc/default/keyboardを書き換えて、jp106のjpを指定して、あとは以前11.10のときにやったように.Xmodmapを作ってみた。
flashはarmhfではまだできないという噂もある。mozilla-plugin-gnashを入れると良いという噂も聞くが、aptでは見つからない。source.listがおかしい可能性がある。今回は、一旦諦めることにした。
ポップアップは、/var/crash/のファイルを消して、/etc/default/apportのenabledを0にすれば消えるらしい。これで静かになると良いが。
dynabook AZにubuntu 12.04
12.10になってしまった。
ubuntu12.04が出てから一ヶ月以上たったので、そろそろAZのubuntu11.10を更新しようと思ったら、かなり苦しむことになった。ちなみに、そのマシンは人のものなのだが、私はそのマシンのubuntuインストール係となっている。
簡単な方法としては、11.10からのupgradeが考えられるのだが、無線LANが不安定で、途中で止まってしまう。ネット上の情報でも、あまりうまく行っていないようなので、この方法は諦めて、クリーンインストールすることになった。
まずは、公式のwikiにあるbootimgとtar.gzをダウンロードして、nvflashでAZにbootimgを書き込むために、USBケーブルでつないで、AZをctrl+escを押しながら電源ボタンを押して立ち上げたあとで、
nvflash --bl /usr/lib/nvflash/fastboot.bin --download 6 ubuntu-12.04-preinstalled-desktop-armhf+ac100.bootimg
として、転送が終了したらAZの電源ボタンを長押しして落とす。一方、USBメモリにubuntu-12.04-preinstalled-desktop-armhf+ac100.tar.gzをコピーする。そのUSBメモリをさしてAZを起動すると、インストールが始まるはずなのだが、始まらずに、いつもとは少し違う感じで11.10が立ち上がってしまう。何か間違っていないかいろいろと調べたが、分からない。パーティション6をバックアップしていたら、元に戻すこともできたのだが。
ネットでいろいろと調べた結果、12.10のdaily builtを入れることにした。5/30のものがあったので、これをダウンロードして、こちらもほぼ同じ要領で作業すると、今度はインストーラーが立ち上がって、本当にやって良いのかを聞いてくる。yを押すと無事にインストールが始まり、しばらく待つと設定が始まる。言語の選択では最後にある日本語を選択し、wifiにはまずは接続しない設定にした。しかし、地域の選択のところで落ちてしまう。さらに、ターミナルの開き方が分からないので、何をして良いか分からない。
GUIのみからできることとして、wifiをつないでみて、ソフトのアップデートをやってみた。そして、再起動をかけると、今度は最後までインストールをすることができた。実は最初に試行錯誤していたときには、GUIからユーザーを追加をしてしまい、インストーラーとかち合って失敗するということが分かり、やり直しをするはめになった。
一応のインストールはできたのだが、ここで悩んだのが、12.10のままでいくか、12.04に戻すかである。名前は12.10であるが、まだ実質は12.04だと考えられるので、ここでaptのsource.listをquntalからpreciseにしておけば、名実ともに12.04LTSになるのではという考えである。それは後で考えることにして、LXDEを入れようとしたら、いくつかのパッケージが見つからないと言われたので、自動的にaptをpreciseにすることになった。aptitude updateと、aptitude upgradeをすると、一応終了した。そして、lubuntu-desktopをインストールした。
次は日本語である。まずは、ubuntu Japanese teamのレポジトリからできるかと思ったが、うまくいかないので、普通に設定から言語サポートで選んで設定した。でも、これはlanguage-pack-gnome-jaを入れているだけのようなので、ターミナルでやれば良かった気がする。
USB-serialインターフェース
FT232RLを使ってみた
マイコンを使って自作の装置を作るときには、PCとどのインターフェースを使って通信するかを悩む。以前の計測装置はGPIBが標準だったので、別のマイコンでGPIBをUARTに変換してから、マイコンと通信をしていた。しかし、GPIBは標準ではなくなって、USBを使った方が良い状況になってきている。そこで、最近はUSBからRS232Cに変換するケーブルを用い、これをMAX232でレベルコンバートして、マイコンと通信するようにしている。しかし、いちいちレベルコンバートが面倒だし、マイコン用の電源を準備しないといけない。
FTDI社のUSB-UARTの変換ICであるFT232RLを用いれば、USBからUARTを介してマイコンと通信できるのではということで、試してみた。ICがSSOPだったので、細かくて半田付けに苦労したが、USBコネクターをつないで、Linuxに接続したら、ttyUSB0ができた。どうやらうまく動いているようだ。そのあといろいろといじっていたら、ICを逆さまにさしてしまい、ICが発熱してあわててはずした。死んだかなと思ったら、ttyUSB0が出てくるので、まだ生きているのかな。
AVRと配線でつなぐところまではやったが、次は実際にマイコンで何かプログラムを動かしてみよう。
新測定用PC
lubuntuを採用
新しく測定用のPCとして注文していたものが、本日届いたので、セットアップした。今回のPCは狭いところに置くので、小型のノートにしたが、注文する際には、Windowsの無いものを見つけるのに苦労したので、届いた喜びも格別だ。
まず、OSをdebianにするかubuntuにするか迷ったが、最近12.04LTSが出てこの先5年は使えるubuntuを採用することにした。そこで、lbuntuの64bit版をdownloadしてインストールした。
次に、必要なrubyとtcltkとRをインストールした。そして、usbtmcのpermissionの設定をして、ようやく測定ができる準備が整った。これから徐々に整備していこう。
usbtmcの権限
udevを用いたusbtmcの権限の変更
ubuntuからusbtmcの装置を制御して使っていたが、一つ問題を残していた。装置が認識されたときに、root権限しかアクセスができないようになっているのだ。これまではchownとかchmodとかでごまかしていたが、ようやく権限の設定に成功したので、ここに書いておく。
まず、usbtmcグループを
groupadd usbtmc
として作成する。次に、/etc/udev/rules.d/40-usbtmc-permissions.rulesに
KERNEL=="usbtmc*", GROUP="usbtmc", MODE="0660"
と記述する。PCを再起動したら、usbtmcグループとして認識するようになった。あとは/etc/groupを編集してユーザーをusbtmcグループに加えれば、読み書きができるようになる。 最初はusbtmcグループを作成せずにudevをいじっていて、うまく行かずに苦しんでいたが、グループを作ったらやっとうまく言った。やはり、サボってはいけないという教訓なのだろう。
ubuntuのGSL
debianとubuntuのGSLの違い
以前、spline補完をするのに、ruby-gslを使った。その時はdebianを使っていたのだが、
xa=NArray.to_na(data[0]) ya=NArray.to_na(data[1]) spline = GSL::Spline.alloc("cspline",ya,xa)
としたら動いていた。ところが、ubuntuではこれが動かないことが分かった。いろいろと調べていたら、
xa=GSL::Vector.alloc(data[0]) ya=GSL::Vector.alloc(data[1]) spline = GSL::Spline.alloc("cspline",ya,xa)
としたら動くようになった。ubuntuとdebianでこんなところが違うとは。
AVR用のPC
新しい書き込み用PCが完成
AVRの書き込み用のPCをセットアップした。AVRの便利な点は、プリンターポートを使うと、簡単なケーブルを自作するだけで、書き込みができることだ。しかし、困ったことに、最近のPCからはプリンターポートが無くなっている。今回、新しくPCを買おうとしたが当然無い。しかし、マザーボードを見ていたら、ピンだけは残っているものを発見した。そこでそれを購入して、ピンから拡張ボードの部分を使ってDsubコネクタを出せるように細工した。Debian lennyをインストールして、
aptitude install gcc-avr avrdude avr-libc
でAVRに必要なものをインストールする。あと、lpグループにユーザーを加えた。これで一応終了だ。
sargeのインストールに成功
古いdebianのインストール方法
ようやく、debian sargeのインストールに成功した。しかし、古いOSはネット上からデータが無くなってくるので、難しかった。結局、netinstのCDを使ったのだが、ネットワークからデータを取りにいく前に一端インストール作業を中断する必要がある。今回は、rootとユーザーの設定をした直後にquitして、loginをしてaptとproxyの設定を行った。/etc/apt/sources.listを編集して、
deb http://archive.debian.org/debian/ sarge main contrib non-free
とし、archiveから取ってくるように設定する。そして、/etc/apt/apt.confを
Acquire::http::Proxy "http://proxy:8080/"; Acquire::ftp::Proxy "ftp://ftp-proxy/";
とし、proxyを設定する。その後でtaskselを実行すると、インストールできる。つまったのは、X11の設定である。PS2のマウスに対してpsauxのps2を選ばなければならなかったのだが、久々だったのでそれを間違えていた。あとは、日本語の表示がおかしかったので、ttf-sazanami-minchoやttf-sazanami-gothicをインストールしたら、まともになった。でも、日本語入力の設定は面倒なので、しなくても良いかな。
download old debian
sargeをdownload
古いLinuxでしか動かないプログラムがあったので、仕方無く古いDebianを入れることにした。しかし、ネット上になかなか見つからない。Swedenのsunetやhttp://cdimage.debian.org/cdimage/archive/で一部のisoやjigdoが見つかるのだが、うまく落とさなかったりする。また、aptの設定にも困る気がする。
結局、jigdoでrikenから落とすことができることが分かった。まず、.jigdoで必要ならプロキシの設定をする。そして、jigdo-liteでjigdoのファイルを指定すると、何か聞かれるが、一つ目は蒸ししてリターン。二つ目にサーバーを聞かれるので、http://ftp.riken.jp/Linux/debian/debian-archive/debian/を指定したら、動きだした。
もしかすると、apt-lineにも、これを指定したら良いのかも知れない。それならば、netinstのCDでも良い気がするが、どうなのだろう。
スプライン補完
ruby-gslでspline
離散的なデータの間の値を補完しようとしたのだが、関数でfittingすると非常に複雑なものになりそうだったので、スプライン曲線で補完することにした。
スプライン曲線を計算して書こうとすると、意外に難しいらしい。GSLでできるのでは無いかと思って調べてみたら、やはりできた。というわけで、ruby-gslでspline補完するために書いたプログラムがこれ。
require "gsl" data=[ [2.0144,7.8956747], [109.2747,0.9246663], [216.3775,0.6455773], [319.6925,0.3726170], ].sort_by{|t,v| v}.transpose ya=NArray.to_na(data[0]) xa=NArray.to_na(data[1]) spline = GSL::Spline.alloc("cspline",xa,ya) puts spline.eval(4.5)
xaは小さい方から大きい方に単調になっていけないようなので、sortが必要だったが、あっさり動いた。さすがruby。