2011年11月09日
ELCE2011のセッションをひとことずつ紹介
ELCE2011(Embedded Linux Conference Europe 2011)のセッションの発表資料が公開されています。
私が聴いたものをひとことずつ紹介します。
"Linaro's Android Platform" Zach Pfeffer (Linaro)
Linaroは最新のツールチェイン、最新のカーネルをARM向けにエンハンスすることに取り組んでいる。Androidもコンパイラの最適化を最大限発揮するために、コンパイルオプションを変更してビルドしている。またそのためにソースに変更が必要になるところは修正している。具体的なコンパイルオプションや変更箇所を再度確認したいが、残念ながら発表資料は上がっていない。
"Contributing to the Community? Does your manager support you? " Satoru Ueda (Sony/Japan OSS Promotion Forum)
オープンソースコミュニティにcontributeすることに理解のない上司(stone headded manager)をどう説得するかという話。
"Status of Embedded Linux BoFs " Tim Bird (Sony)
CELFのテクニカルジャンボリでもおなじみのTim Bird氏のセッション。最近のLinuxカーネルのリリースでembeddedの視点で重要な変更点がわかる。また、Linux FoundationのCE Working Groupの活動も紹介されている。
"Android Development with the Snapdragon Processor " Tia Cassett (Qualcomm) & Mike Chalupa (BSquare)
DragonBoardはSnapdragon APQ8060の載った低価格な評価ボード。BSquareが販売、サポートする。Androidのソースコードはcodeaurora.org からダウンロードできる。
"Android Platform Optimizations " Ruud Derwig (Synopsys)
Androidの最適化の要点。JITの説明。サウンドやグラフィックスはソフトウェアでやらずにSoCに載っているアクセラレータを活用する。
Synopsys社のARCプロセッサはカスタマイズした命令を追加できる。ABGR8888のピクセルデータをRGB565に変換するためにはビットシフト、AND, ORを組み合わせて数命令必要だが、カスタマイズした命令でこれを一発で行う例。
"Toward the Long Term Stable Kernel Tree for The Embedded Industry " Tsugikazu Shibata (NEC & Linux Foundation Board Member)
"ARM Linux Kernel Alignment & Benefits for Snowball " Andrea Gallo (ST-Ericsson)
Linuxカーネルでarch/arm以下のソースコードは各種のボードに対応するコードがたくさん入っていて、ずっと増加傾向にあった。その中には重複しているコードも多い。Linaroではそのコードの整理の着手した。その成果がでて、2.6.39以降 arch/armのコードの量が減少した。
各/mach-* や /plat-* にあったspiやdmaのドライバを/drivers/spi と /driver/dma にまとめた。
ST-Ericssonの評価ボード(Snowball board)の紹介。
www.igloocommunity.orgコミュニティサイト
"Integrating Systemd: Booting Userspace in Less Than 1 Second " Koen Kooi (The Angstrom Distribution)
Beagleボードでのブートで一番時間がかかっているのはユーザースペースのシステムの部分の起動時間。この部分を120秒から1秒に短縮した。
systemdは従来のsysvinitに代わるもの。新規設計で並列実行に重点を置いている。shellスクリプトを使わない。
acceptシステムコールのタイムアウト時間が長い -> 2.6.36で追加されたaccept4を使用する。バックポートした。
不要なudevのルールを削除した。速いSDカードに代えた。ログを削除した。
これで1秒まで短縮した。実際にデモ。確かにカーネルログの一秒後にログインプロンプトが出た。
"Tuning Linux For Embedded Systems: When Less Is More " Darren Hart (Intel)
Yocto projectのツールを使って、最小構成のLinuxシステムを作る。
今回の目標は、
- カーネルとルートファイルシステム合計で4MB以下。
- 8MB以下のRAMで起動する。
- shellの起動まで2秒以内。
- ipv4の機能は保持する。
- initial RAM diskは使用しない。
- この実験はqemux86で行う。
ルートファイルシステムを絞り込む。devtmpfsとmdevを使用する。シリアルポートがあるのでVGAディスプレイは使用しない。udevとv86dを削除。
カーネルコンフィグを絞り込む。ブートに必要なものとシリアルコンソールとネットワーク以外は削除。vt, ext3, fb, floppy, usb, vga, intel-hdaなど削除。ローダブルモジュールは使用しない。
Busyboxからvtのサービスを削除。ipv6と全てのLinuxモジュールのユーティリティを削除。
ルートファイルシステムでtinylogin, modutils-initscripts, netbaseを削除。
glibcからuclibcに変更。
これでばかみたいに小さくなった。カーネルとrootfsの合計サイズ1.6MB。shellまでの起動時間1.28秒。