帰ってきた
すごい謎マシン
SHIMADA Hirofumi,
@shimadah
opencoconとは
旧型PCを
シンクライアント
として
再利用する
Linuxディストリビューション
ユーザインターフェイス
● 流行りに左右されない Matchbox + TUI メニュー
●
余計なものは
ほとんど無し
それでいて色々できる
● シンクライアント:X, VNC, RDP, SPICE
● Webブラウザ:midori
● VPNクライアント:SSH (Port Forwarding),
SoftEther ほか
● NTPクライアント、音量調節、タッチパッド調整など
Libretto 50 で Windows8
v9gでは何が変わった?
●
細かいバグ修正
– netbootがうまく動いていなかった不具合の修正
– 自動接続まわりにいくつかあったバグを修正
– 一部の謎端末への対応
これらすべてフォーラムで報告頂いた不具合です
(ありがとうございます)
ハイライト:HP Thin-Client 2533t
http://www.atmarkit.co.jp/news/200806/23/hp.html
ハイライト:YABAI (でも直した)
https://www.flickr.com/photos/38449766@N03/3602195819/
v9はそろそろにして...
状況
●
ウィンドウマネージャの変更 : 微妙
– なかなか良い選択肢が見当たらない...
– FreeRDP ClientまわりをGTK+ベースにする等したほう
が早い気がしてきた
● PC版の Kernel : 3.10→3.18ベースになります
– Longterm が打たれたのでこれでいきます
– なので検証し直しですねorz
● あとは概ね計画通りになるはず?
ところで:ARM対応ってどうよ?
●
ディストリ屋泣かせ
●
ブートローダや、ブート方法がデバイスによって違う
● Kernelもデバイスによって状況が違う
● ユーザランドはそう問題ないとは思うんだけど...
Kernel
● 昔は...
– カーネルにパッチを沢山当てるのが当たり前
– パラメータがハードコーティングしてある事例も多かった
ため、Kernel のバージョンを上げづらかった
– そのため Kernel の断片化が進んだ
– Linusがその状況にキレた
● 近年は Device Tree の導入によって、その障壁が
下がった
ARMの状況:いわゆるISAバス(Cバス)
http://pc.watch.impress.co.jp/docs/article/diy9712/3/3_2/052.jpg
Device Treeとは?
●
「ハードウェアの情報を記述するためのデータ構造」
– レジスタ、割り込み、メモリ、各種パラメータ、使用するドライ
バ等
● Linux 3.7 よりARMで導入
– PowerPC には以前からあった
● Kernel ツリーの arch/arm/boot/dts/ 以下に、 ソース
となる *.dts ファイルがある
– コンパイル後は dtb ファイルができる。これを実際にブート
ローダに、Kernelとともに読み込ませる
Device Treeの壁
● Linux 3.7以降、ARM マシンで Linux Kernel の対
応を入れるには、 Device Tree がほぼ必須
●
その状況はデバイスによりまちまち
どのぐらい対応してる?
●
対応
Raspberry Pi, Dynabook AZ, LinkStation, Linux
Zaurus, Chromebook, GuruPlug, NetWinder,
Nokia N900, RiscPC などなど
●
まだ非対応
NetWalker, SHARP IS01, 古いAndorid Tablet な
ど
ソースコードの
読み比べタイム
本日のお題
Dynabook AZとは
● 初代Tegra、メモリ 512MB
● Android 2.2 搭載のノートPC
● Ubuntuの偉い人がベタ褒めしたことから、その界
隈では非常にメジャーなARMマシンとなった
● OSの書き換えが非常に容易
● 海外ではAC100と呼ばれている
– Linuxから見た内部的なマシン名は paz00
これでopencoconを....?
●
実は何度かトライしていたが、諦めていた
● v9時代:OpenEmbeddedの問題に当たり、基本的
なライブラリさえ作れなかった
– 安定版でも地雷なのはいつものこと
●
最近もう一度試してみた
ところで、巷のAZは
● Ubuntuを使っている例が非常に多い
– ArchとかSlackwareもいけるらしい
● Kernelは少し古いケースが多い
– AZ独自部分があるため、それ用のカーネルツリーを使う
– 昔は 2.6.38 がよく使われていた
– Ubuntu は確か 3.0
– 多くの人はどちらかを使っているはず
最近は?
● 3.10 ツリーがある
● 3.15 より、アップストリームに入った
– Device Tree に対応し、関係するドライバもすべて整っ
たため、めでたくマージ
– つまり、ビルドする際の障壁は大幅に下がったはず
試してみた
● Linux 3.18 カーネルをベースに、適当なテストディストリを作ってみた
– といっても initramfs だけ
● 新しいバージョン OpenEmbedded のツリーでリトライしたら、そこそ
こ普通にビルドできた
– 今回はu-bootに入れ替えをせず、abootimg フォーマットに変換したイメージ
を LNX パーティションに転送した
– bootloader:fastboot は Device Tree に対応する前のものなので、 Kernel
の後ろに tegra20-paz00.dtb を結合した
– $ abootimg --create test2.abootimg -f bootimg.cfg -k zImage -r
initrd.img
– # nvflash --bl /usr/lib/nvflash/fastboot.bin --download 6 test2.abootimg
しかし動かない
仕方ないので改造してみた
シリアルコンソール付きAZ
改造方法
●
基本的には以下のページにある内容そのまま
http://ac100.grandou.net/serial_port_modificati
on
● ただ、手元にNokiaケーブルは無いので、その代わ
り USB-UART アダプタを大須で購入して結線した
● USB-UART側から 3.3V を供給しなくても動く
– 逆に言うと、USB-UART側で電圧を加えてはならない
で、なんて表示されたかというと
==== Debug Console(Jul 29 2010 19:07:27) ====
Checking for android ota recovery
d
d x
|
T
.
Error: unrecognized/unsupported machine ID (r1 = 0x00000d05).
Available machine support:
ID (hex) NAME
ffffffff Generic DT based system
ffffffff NVIDIA Tegra SoC (Flattened Device Tree)
Please check your kernel config and/or bootloader.
解決法
● machine id を変更する
– これは Device Tree 以前の世代で有効な手法であるこ
とに注意
– 今でも有効なのかもしれない?
● Kernel に内蔵している dts をうまく読みに行ってい
ない?
–
なんかオチがあった
●
これが必要だった
Kernel の後に結合する dtb ファイルを読み込むには、
以下を有効にする必要があった
– CONFIG_ARM_APPENDED_DTB=y
– CONFIG_ARM_ATAG_DTB_COMPAT=y
– CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_
EXTEND=y
Kernelが動き出した
まとめ
● Device Tree は、これからの ARM Linux にとって
重要
● とりあえずAZイメージはできた
– ただ、その先も地雷が多そうなのでまだまだ
僕らはARMという
山に登り始めたばかりだ!

帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)