先日(2014.2.22)Yocto Japanの勉強会に行ってきました。
こういうのってあまり参加しないんですが、(特に有志でやってるやつは)
参加無料なのに、なかなかの充実ぶりでした。
休みをつぶして行った甲斐がありました。
せっかく参加したので、raspberrypi+yoctoというタイトルで話をしてきました。
内容がどうだったかわかりませんが、
少なくとも、Legoのケースは好評だったようで、よかったです。
あと、Yoctoは外国人の発音は「ヤクト」だということらしいので
今後は「ヤクト」の発音を広めることに決定しました~~~。
IT系の単語は読み方がよくわかんないものが多いですよね。
2014年2月24日月曜日
2014年2月17日月曜日
WiFiドングルの設定
やっぱりWiFiははずせないでしょうということで、
WiFiドングルの設定をしました。
raspbianとかでは、ほとんどそのまま使えるようですね。
yoctoでは一手間かかりました。
使ったものは、BUFFALO WLI-UC-GNMです。
アクセスポイントにはiPhone5を使ってます。
いろいろと実績がありそうなところで決定しました
ドライバが対応していれば、設定なしで使えるはずなんで、
とりあえず、さしてみました。とりゃ。
ちょっと、起こしてみると。
つーか、そんなもんどこから?みたいな。
途中格闘しましたが、結果的にはyoctoにすでにありました。
個別に手動で入れるにはこんなかんじです。
まず、ビルドして、
次に設定なんですが、、、ここでもひともんちゃくありまして。
いまだによくわからないんですが、、、
どうやらconnmanと/etc/network/interfacesの設定がぶつかっているようで、
どっちかにしないとうまくいかないです。やむをえない。
ということで、まず、古き良き設定から。
とりあえず、connmanを止めます。
パスフレーズを設定します。
うまくいかないときは-Bをとってエラーログをみると吉かもしれません。
デフォルトである程度書いてあります。
次は、connmanの場合です。
connmanの設定には、connmanctlというツールが必要になりました。
core-image-satoでは、すでにビルドされていると思いますが、
インストールされていませんので、、
手動で編集は厳しそうな感じでした。
そして、/etc/network/interfacesの
auto eth0
auto wlan0
あたりを無効にしておくと良いようです。 あ、あと、さっき/etc/rc5.d/K05connmanにした人は
S05connmanに戻しておいてくださいね。
とまぁ、こんなかんじなんですが、、、
イマイチなんか不安定なんですよね。
USBの電力不足(HUBとマウスとキーボードがささってます)なんですかねぇ?
やむを得ないんでしょうけど。
参考:
http://elinux.org/RPi_USB_Wi-Fi_Adapters
http://www.linux.com/learn/tutorials/374514-control-wireless-on-the-linux-desktop-with-these-tools
https://wiki.archlinux.org/index.php/Connman
WiFiドングルの設定をしました。
raspbianとかでは、ほとんどそのまま使えるようですね。
yoctoでは一手間かかりました。
使ったものは、BUFFALO WLI-UC-GNMです。
アクセスポイントにはiPhone5を使ってます。
いろいろと実績がありそうなところで決定しました
ドライバが対応していれば、設定なしで使えるはずなんで、
とりあえず、さしてみました。とりゃ。
[ 254.840065] usb 1-1.2: new high-speed USB device number 4 using dwc_otg [ 254.976531] usb 1-1.2: New USB device found, idVendor=0411, idProduct=01a2 [ 254.983961] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 254.991775] usb 1-1.2: Product: 802.11 n WLAN [ 254.996185] usb 1-1.2: Manufacturer: Ralink [ 255.000948] usb 1-1.2: SerialNumber: 1.0 [ 255.068465] cfg80211: Calling CRDA to update world regulatory domain [ 255.240003] usb 1-1.2: reset high-speed USB device number 4 using dwc_otg [ 255.369540] ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3070, rev 0201 detected [ 255.407904] ieee80211 phy0: rt2x00_set_rf: Info - RF chipset 0005 detected [ 255.435535] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 255.463714] usbcore: registered new interface driver rt2800usbあっ、いけそうじゃないですか?みたいな。
ちょっと、起こしてみると。
root@raspberrypi:~# ifconfig wlan0 up ifconfig: SIOCSIFFLAGS: No such file or directory [ 45.356373] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin' [ 45.372666] ieee80211 phy0: rt2x00lib_request_firmware: Error - Failed to request Firmwareあー、ファームウェアがないですね。
つーか、そんなもんどこから?みたいな。
途中格闘しましたが、結果的にはyoctoにすでにありました。
個別に手動で入れるにはこんなかんじです。
まず、ビルドして、
$ bitbake linux-firmware ... $ ls tmp/deploy/rpm/all/|grep linux-firmware-ralink linux-firmware-ralink-0.0+git0+600caefd83-r0.all.rpmターゲットでインストールします。
root@raspberrypi:~# rpm -ivh ./linux-firmware-ralink-0.0\+git0\+600caefd83-r0.all.rpm Preparing... ########################################### [100%] 1:linux-firmware-ralink ########################################### [100%] root@raspberrypi:~#
次に設定なんですが、、、ここでもひともんちゃくありまして。
いまだによくわからないんですが、、、
どうやらconnmanと/etc/network/interfacesの設定がぶつかっているようで、
どっちかにしないとうまくいかないです。やむをえない。
ということで、まず、古き良き設定から。
とりあえず、connmanを止めます。
root@raspberrypi:~# mv /etc/rc5.d/S05connman /etc/rc5.d/K05connmanそして、wpa_supplicant.confをバックアップを取ってから、
パスフレーズを設定します。
root@raspberrypi:~# mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.orig root@raspberrypi:~# wpa_passphrase my_access_point passphrase > /etc/wpa_supplicant.confバックグラウンドモードで動かしますが、
うまくいかないときは-Bをとってエラーログをみると吉かもしれません。
root@raspberrypi:~# wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf Successfully initialized wpa_supplicantそのあと、udhcpcを動かして、ip addressが取れれば成功です。
root@raspberrypi:~# udhcpc -i wlan0 udhcpc (v1.21.1) started Sending discover... Sending discover... Sending discover... Sending select for 172.20.10.5... Lease of 172.20.10.5 obtained, lease time 85536これを自動化するには、/etc/network/interfacesに書けばいいんですが、
デフォルトである程度書いてあります。
root@raspberrypi:~# vi /etc/network/interfaces ... # Wireless interfaces iface wlan0 inet dhcp wireless_mode managed wireless_essid any wpa-driver wext wpa-conf /etc/wpa_supplicant.conf ...ので、あとは、auto wlan0ぐらいを足しましょう。
次は、connmanの場合です。
connmanの設定には、connmanctlというツールが必要になりました。
core-image-satoでは、すでにビルドされていると思いますが、
インストールされていませんので、、
root@raspberrypi:~# rpm -ivh connman-client-1.20-r0.armv6_vfp.rpm Preparing... ########################################### [100%] 1:connman-client ########################################### [100%] root@raspberrypi:~#あとは、connmanctlを使って設定していきます。
root@raspberrypi:~# connmanctl connmanctl> enable wifi Enabled wifi connmanctl> scan wifi Scan completed for wifi connmanctl> services *AO Wired ethernet_b827ebe52c77_cable my_access_point wifi_b0c745ab05e6_4e6973692d6970686f6e65_managed_psk logitec2nd66 wifi_b0c745ab05e6_6c6f6769746563326e643636_managed_wep AP0034862080 wifi_b0c745ab05e6_415030303334383632303830_managed_psk AP1034862080 wifi_b0c745ab05e6_415031303334383632303830_managed_psk AP2034862080 wifi_b0c745ab05e6_415032303334383632303830_managed_psk AiMacExtreme wifi_b0c745ab05e6_41694d616345787472656d65_managed_psk logitec66 wifi_b0c745ab05e6_6c6f67697465633636_managed_psk connmanctl> agent on Agent registered connmanctl> connect wifi_b0c745ab05e6_4e6973692d6970686f6e65_managed_psk Passphrase = [ Type=psk, Requirement=mandatory ] Passphrase?ここらへんの設定は、/var/lib/connman/の下に作られるみたいですが、
手動で編集は厳しそうな感じでした。
そして、/etc/network/interfacesの
auto eth0
auto wlan0
あたりを無効にしておくと良いようです。 あ、あと、さっき/etc/rc5.d/K05connmanにした人は
S05connmanに戻しておいてくださいね。
とまぁ、こんなかんじなんですが、、、
イマイチなんか不安定なんですよね。
USBの電力不足(HUBとマウスとキーボードがささってます)なんですかねぇ?
やむを得ないんでしょうけど。
参考:
http://elinux.org/RPi_USB_Wi-Fi_Adapters
http://www.linux.com/learn/tutorials/374514-control-wireless-on-the-linux-desktop-with-these-tools
https://wiki.archlinux.org/index.php/Connman
ラベル:
raspberrypi
,
yocto
LEGOブロックケース
なんか、少しアップデートしていないとあっと言う間ですよねぇ。
月日が立つのが早いというか、筆不精というか。
今回は、久々のわりに小ネタから。
raspberrypi用にLEGOブロックでケース作ってる人は結構いるみたいですが、
私も作ってみましたよ~
LEGOのブロックは、13x9で縦が少し動く感じです。
なんかスペーサ的なものをかますといいかもしれません。
こうやってケース作ると結構大きくなっちゃうんですよね。
そういう意味では、市販のケースを買うほうがいいかもしれません
上に載ってるのは、USBハブです。
ちょうどいいのがみつかったので、買っちゃいました。
ELECOM USB2.0HUB ToyBrick U2H-BL48GN
月日が立つのが早いというか、筆不精というか。
今回は、久々のわりに小ネタから。
raspberrypi用にLEGOブロックでケース作ってる人は結構いるみたいですが、
私も作ってみましたよ~
LEGOのブロックは、13x9で縦が少し動く感じです。
なんかスペーサ的なものをかますといいかもしれません。
こうやってケース作ると結構大きくなっちゃうんですよね。
そういう意味では、市販のケースを買うほうがいいかもしれません
上に載ってるのは、USBハブです。
ちょうどいいのがみつかったので、買っちゃいました。
ELECOM USB2.0HUB ToyBrick U2H-BL48GN
2014年2月4日火曜日
smartでスマートに?
パッケージをいろいろと出し入れしていると、
そのうちひとつづつコピーしてはインストールして、、、
という作業がめんどくさくなってきます。
依存関係を手動で解決するのもめんどくさいですし。
そこで、パッケージ管理ツールを導入したくなるのが順当かと思います。
Yoctoでは、パッケージ管理としてsmartが標準ということになっているようです。
これは、pythonのフロントエンドで、パッケージ自体はRPMでもIPKでもいいようです。
デフォルトのlocal.confではRPMになっていますので、
(個人的にもRPMのほうが慣れているので)
RPMで進めていきます。
まずは、ビルドマシンで作成したパッケージ群をターゲットからアクセスできるようにします。
Apache2で公開するには、下記のようにすればOKです。
んで、下記のようにターゲットからアクセスすれば、ネットワーク越しにインストールができます。
ということで、リポジトリ内のパッケージ検索とかをできるようにします。
ビルドしたディレクトリはパッケージのアーキテクチャ依存によって、
all/arm1176jzfshf/raspberrypiのように3つにわかれていると思いますので
下記のように3つのチャンネルを登録します。
rpmコマンドで確認してみると、まだターゲットのroot fsにはないようです。
念の為にRPMコマンドで確認してみると、見つかりました。
あまり依存関係のないiozone3あたりで試します。
ビルドしてから、パッケージを確認してみると、、、
これは、リポジトリのrepodataが更新されていないためです。
yoctoでは、rootfsをビルドするときにrepodataも更新しているのですが、
新しいパッケージをテストするためにビルドするたびに
いちいちrootfsをビルドしていてはたまらないですね。
repodataだけなら、ホストのコマンド(createrepo)でアップデートできます。
sysrootにもありますが、apt-get等でホストにインストールしてしまってもいいです。
パッケージが見つかるようになります。
ま、パッケージマネージャ周りは論争が絶えないところですから、
いろんなご意見があるのは、やむをえないかなぁと思います。
参考:
そのうちひとつづつコピーしてはインストールして、、、
という作業がめんどくさくなってきます。
依存関係を手動で解決するのもめんどくさいですし。
そこで、パッケージ管理ツールを導入したくなるのが順当かと思います。
Yoctoでは、パッケージ管理としてsmartが標準ということになっているようです。
これは、pythonのフロントエンドで、パッケージ自体はRPMでもIPKでもいいようです。
デフォルトのlocal.confではRPMになっていますので、
(個人的にもRPMのほうが慣れているので)
RPMで進めていきます。
まずは、ビルドマシンで作成したパッケージ群をターゲットからアクセスできるようにします。
Apache2で公開するには、下記のようにすればOKです。
$ sudo vi /etc/apache2/sites-available/default ... Alias /repo_raspi/ "/home/knishimu/workplace/yocto/build_raspi_hf/tmp/deploy/rpm/" <Directory "/home/knishimu/workplace/yocto/build_raspi_hf/tmp/deploy/rpm/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Allow from all </Directory> ...apache2の細かい設定やらは、グーグル先生に聞いて下さい。
んで、下記のようにターゲットからアクセスすれば、ネットワーク越しにインストールができます。
root@raspberrypi:~# smart install http://hostname/repo_raspi/arm1176jzfshf_vfp/bootchart-1.16-r1.arm1176jzfshf_vfp.rpm Fetching packages... -> http://hostname/repo_raspi/.../bootchart-1.16-r1.arm1176jzfshf_vfp.rpm bootchart-1.16-r1.arm1176jzfs.. ######################################## [100%] Loading cache... Updating cache... ######################################## [100%] Computing transaction... Saving cache... root@raspberrypi:~#とりあえず、アクセスできましたが、まだあまり改善されてないですよね。
ということで、リポジトリ内のパッケージ検索とかをできるようにします。
ビルドしたディレクトリはパッケージのアーキテクチャ依存によって、
all/arm1176jzfshf/raspberrypiのように3つにわかれていると思いますので
下記のように3つのチャンネルを登録します。
root@raspberrypi:~# smart channel --add all type=rpm-md baseurl="http://hostname/repo_raspi/all" Alias: all Type: rpm-md Base URL: http://hostname/repo_raspi/all Include this channel? (y/N): y root@raspberrypi:~# smart channel --add arm1176jzfshf_vfp type=rpm-md baseurl="http://hostname/repo_raspi/arm1176jzfshf_vfp" Alias: arm1176jzfshf_vfp Type: rpm-md Base URL: http://hostname/repo_raspi/arm1176jzfshf_vfp Include this channel? (y/N): y root@raspberrypi:~# smart channel --add raspberrypi type=rpm-md baseurl="http://hostname/repo_raspi/raspberrypi" Alias: raspberrypi Type: rpm-md Base URL: http://hostname/repo_raspi/raspberrypi Include this channel? (y/N): yそして、アップデートをかけると、repodataからパッケージ情報を拾ってきます。
root@raspberrypi:~# smart update Updating cache... ######################################## [100%] Fetching information for 'raspberrypi'... -> http://hostname/repo_raspi/raspberrypi/repodata/repomd.xml repomd.xml ######################################## [ 16%] -> http://hostname/repo_raspi/raspberrypi/repodata/primary.xml.gz primary.xml.gz ######################################## [ 25%] -> http://hostname/repo_raspi/raspberrypi/repodata/filelists.xml.gz filelists.xml.gz ######################################## [ 33%] Fetching information for 'arm1176jzfshf_vfp'... -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/repomd.xml repomd.xml ######################################## [ 50%] -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/primary.xml.gz -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/filelists.xml.gz filelists.xml.gz ######################################## [ 58%] primary.xml.gz ######################################## [ 66%] Fetching information for 'all'... -> http://hostname/repo_raspi/all/repodata/repomd.xml repomd.xml ######################################## [ 83%] -> http://hostname/repo_raspi/all/repodata/primary.xml.gz primary.xml.gz ######################################## [ 91%] -> http://hostname/repo_raspi/all/repodata/filelists.xml.gz filelists.xml.gz ######################################## [100%] Updating cache... ######################################## [100%] Channels have 4772 new packages. Saving cache... root@raspberrypi:~#ここで、試しにcurlをインストールしてみたいと思います。
rpmコマンドで確認してみると、まだターゲットのroot fsにはないようです。
root@raspberrypi:~# rpm -qa|grep curl root@raspberrypi:~#smartでリポジトリを検索してみると、見つかります。
root@raspberrypi:~# smart search curl Loading cache... Updating cache... ######################################## [100%] curl - Command line tool and library for client-side URL transfers curl-dbg - Command line tool and library for client-side URL transfers - Debugging files curl-dev - Command line tool and library for client-side URL transfers - Development files curl-doc - Command line tool and library for client-side URL transfers - Documentation files gst-plugins-bad-curl - GStreamer plugin for curl gst-plugins-bad-curl-dev - GStreamer plugin for curl (development files) libcurl-dev - Command line tool and library for client-side URL transfers libcurl-doc - Command line tool and library for client-side URL transfers libcurl-staticdev - Command line tool and library for client-side URL transfers libcurl5 - Command line tool and library for client-side URL transfers root@raspberrypi:~#これをインストールします。
root@raspberrypi:~# smart install curl Loading cache... Updating cache... ######################################## [100%] Computing transaction... Installing packages (2): curl-7.34.0-r0@arm1176jzfshf_vfp libcurl5-7.34.0-r0@arm1176jzfshf_vfp 248.9kB of package files are needed. 423.8kB will be used. Confirm changes? (Y/n): Y Fetching packages... -> http://hostname/repo_raspi/.../curl-7.34.0-r0.arm1176jzfshf_vfp.rpm curl-7.34.0-r0.arm1176jzfshf_.. ######################################## [ 50%] -> http://hostname/repo_raspi/.../libcurl5-7.34.0-r0.arm1176jzfshf_vfp.rpm libcurl5-7.34.0-r0.arm1176jzf.. ######################################## [100%] Committing transaction... Preparing... ######################################## [ 0%] 1:Installing libcurl5 ######################################## [ 50%] 2:Installing curl ######################################## [100%] root@raspberrypi:~#依存関係にあるlibcurl5も同時にインストールされました。
念の為にRPMコマンドで確認してみると、見つかりました。
root@raspberrypi:~# rpm -qa|grep curl libcurl5-7.34.0-r0.arm1176jzfshf_vfp curl-7.34.0-r0.arm1176jzfshf_vfp root@raspberrypi:~#次に、新しいパッケージをビルドして、追加してみます。
あまり依存関係のないiozone3あたりで試します。
ビルドしてから、パッケージを確認してみると、、、
root@raspberrypi:~# bitbake iozone3 ... root@raspberrypi:~# smart search iozone3 Loading cache... Updating cache... ######################################## [100%] root@raspberrypi:~#見つかりません。
これは、リポジトリのrepodataが更新されていないためです。
yoctoでは、rootfsをビルドするときにrepodataも更新しているのですが、
新しいパッケージをテストするためにビルドするたびに
いちいちrootfsをビルドしていてはたまらないですね。
repodataだけなら、ホストのコマンド(createrepo)でアップデートできます。
sysrootにもありますが、apt-get等でホストにインストールしてしまってもいいです。
# sudo apt-get isntall createrepo ... # createrepo --update tmp/deploy/rpm/arm1176jzfshf_vfpこれで、repodataが更新されましたので、ターゲット側でもデータベースを更新すれば
パッケージが見つかるようになります。
root@raspberrypi:~# smart update Loading cache... Updating cache... ######################################## [100%] Fetching information for 'raspberrypi'... -> http://hostname/repo_raspi/raspberrypi/repodata/repomd.xml repomd.xml ######################################## [ 16%] Fetching information for 'arm1176jzfshf_vfp'... -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/repomd.xml repomd.xml ######################################## [ 41%] -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/primary.xml.gz -> http://hostname/repo_raspi/arm1176jzfshf_vfp/repodata/filelists.xml.gz filelists.xml.gz ######################################## [ 50%] primary.xml.gz ######################################## [ 58%] Fetching information for 'all'... -> http://hostname/repo_raspi/all/repodata/repomd.xml repomd.xml ######################################## [ 75%] Updating cache... ######################################## [100%] Channels have 13 new packages. Saving cache... root@raspberrypi:~# root@raspberrypi:~# smart search iozone3 Loading cache... Updating cache... ######################################## [100%] iozone3 - iozone3 version 263-r0 iozone3-dbg - iozone3 version 263-r0 - Debugging files iozone3-dev - iozone3 version 263-r0 - Development files iozone3-doc - iozone3 version 263-r0 - Documentation files root@raspberrypi:~#スマートですか?スマートじゃないですか?
ま、パッケージマネージャ周りは論争が絶えないところですから、
いろんなご意見があるのは、やむをえないかなぁと思います。
参考:
ラベル:
raspberrypi
,
yocto
登録:
投稿
(
Atom
)