2015年9月21日月曜日

Raspberry Pi 2 4足歩行ロボットを作ってみよう(その0)

Raspberry Pi 2  Model B を買っちまった。

最初はNOOBSを使ってRaspbianをインストールした。
 簡単だった。

で、、、?

やっぱり、Arch Linuxを入れたいじゃないですか。
先ずは、現在使用中のPCでの作業。

1  ARM用のArchLinuxARM-rpi-2-latest.tar.gzをダウンロードしてroot権限で解凍
2  ラズパイ用のmicroSDカードをフォーマット(例によってGpartedを使う)
パーティションは二つに分ける
boot用にFAT32で100M、それ以外をext4でフォーマット
3  先に解凍してできたディレクトリからbootディレクトリの『中身』
microSDカードのFAT32領域にコピペ
(※bootディレクトリのコピペではない!!※ )
その他はディレクトリごとext4領域へコピペ
  4 出来上がったmicroSDをRaspberry Piへ挿して、電源を繋ぐ

(上記方法で上手く行かなければ、こちらのとおりに実行する)



後は、Arch Linuxの諸々の設定をする『だけ』。
無線LANを使いたい場合は、予めwirelwsstools、wpa_supplicant、dialog、
そしてlibnlのパッケージを別途ダウンロードしてmicroSDへ入れておき、
Raspberry Piでの起動後にpacman -U でインストールする。
wifi-menuを使って無線LANの設定をする。
(※もし"Calling CRDA to update world regulatory domain" って出たら、
 wireless-regdbとcrdaパッケージを入れ、 /etc/conf.d/wireless-regdomの
 WIRELESS_REGDOM="JP" と書かれた行をアンコメントして再起動※)

一通りLチカの実験等をしながら、思った。

「次はサーボモータの制御実験かな。
ん?どうせなら、ロボット作ってみようぜ」ってね、、、。
(済みません。上の台詞はフィクションです。
実際は、DCモータをモータードライバで制御して、車輪かキャタピラの
自走ロボットを作り、Webカメラを搭載して動くピーピングトムにしようと
思ったんです。でも、そろえなきゃならない物が意外と多そうなので、
止めました。)



2015年5月10日日曜日

Arch Linux オフラインで、、、と思ったら!(罠

USBの無線LAN子機WN-G150UMKが、kernelのアップグレードで使えなくなった。
(3.16.4-1から4.0.1-1)

それまでも、WN-G150UMKはkernel組み込みのドライバでは使用できず、
AURの8192cu-dkmsを使ってネットワーク接続していた。
その時は他の子機CG-WLUSB300NWで接続しておきながら、

yaourt -S 8192cu-dkms

として、現行kernel(3.16.4.-1)用のモジュールを生成した。

今回のアップグレードでも、新kernel(4.0.1-1)用のモジュールを生成すれば問題の子機も
使えるようになるのでは、と考えた。

ところが、CG-WLUSB300NWも4.0.1-1では使えなくなってしまった。
面白いですな。どうしましょうか、、、。
(勿論、有線にすれば良いのだろうが、ルータとは1階・2階で離れているので
 それを有線でつなぐのも芸がない)

何のことはない、yaourtを使わずにオフラインでmakepkgすればよい。

先ず、kernelを3.16.1-4へダウングレードする。
LANが使える状態にして、https://aur.archlinux.org/packages/8192cu-dkmsから
tarballをダウンロードして解凍しておく。
さらに、「パッケージの詳細」頁の「ソース」に記述にあるとおり
8192cu-v4.0.2_9000.tar.gzが必要なのでこちらもダウンロードしておく。(解凍はしない)
任意のフォルダに置いておけば良いのだが、わかりやすい様に、先に解凍した
8192cu-dkmsの他のソースと同じ場所(PKGBUILDがある所ね)に置く。
更に、解凍した中の .SRCINFO 17行目を以下の様に書き換える

source = 8192cu-v4.0.2_9000.tar.gz

これで、オフラインでもダウンロード済みの8192cu-v4.0.2_9000.tar.gzを
使って作業を進めることができる。

後は、kernelをアップグレード+再起動してからPKGBUILDがあるフォルダに移動して、
makepkgを実行する。
起動中のkernelとlinux-headersでkernelに合ったモジュールが出来上がるはず。
(と理解しているんですが、本当のところは良く分かりません。済みません)

できあがったパッケージ(8192cu-dkms-v4.0.2_9000-8-any.pkg.tar.xz)は、
# pacman -U でインストール。

何はともあれ、これで使えているので、結果OK(って本当かよ!)

やっぱり、罠でした。

実は、dkmsサービスを起動していなかったので、パッケージを手動で入れ直して
いた訳です。

# systemctl enable dkms.service

としておけば、dkmsモジュールが自動でリビルドされるらしいです!
ってか、それがDKMSの本来の姿だって。
dkmsサービスを有効にしておいて、kernelのダウングレード、アップグレードを
やってみました。パッケージを手動で入れ直すことなく上手く動いてます。
(但し、8192cu-dkmsのパッケージ自体がkernel 4.0以降に対応したバージョン
 でインストールしているという条件なので、8192cu-dkmsのパッケージが古い
 バージョンだった場合は、パッケージのアップグレードが必要な筈です)

※追記(2015/05/11 20:30)※
 /var/lib/dkms/8192cu 以下にkernelのバージョンごとにモジュールが作られて
いるのを確認しました。

2015年5月9日土曜日

Arch Linux ttf-rictyの全角スペース非可視化

フォントにRictyを入れたが、全角スペースが可視化されていて、
逆に鬱陶しかった。

(「ててる」、って何だよ。直そうと思ったけど、再インストールが面倒なのでそのまま)

そこで、全角スペースを非可視化した。

yaourt -S tty-ricty を実行すると、



と出るので、y を選択して編集する。

  ./ricty_generator.sh /usr/share/fonts/{OTF/Inconsolata.otf,TTF/migu-1m-regular.ttf,TTF/migu-1m-bold.ttf}

この行の ricty_generator.sh に「全角スペースを可視化しない。」オプション
-z を追加↓。

  ./ricty_generator.sh -z /usr/share/fonts/{OTF/Inconsolata.otf,TTF/migu-1m-regular.ttf,TTF/migu-1m-bold.ttf}

そうすると、『Option: Disable visible zenkaku space』として生成される↓

あとは、そのまま普通にパッケージの作成→インストールと進んで終了。