帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
-
Upload
shimadah -
Category
Technology
-
view
242 -
download
2
Transcript of 帰ってきた凄い謎マシン (ARMのDevice Tree話, 2015年6月 東海道らぐ浜松)
それでいて色々できる
● シンクライアント:X, VNC, RDP, SPICE● Webブラウザ:midori● VPNクライアント:SSH (Port Forwarding),
SoftEther ほか
● NTPクライアント、音量調節、タッチパッド調整など
v9gでは何が変わった?
● 細かいバグ修正– netbootがうまく動いていなかった不具合の修正
– 自動接続まわりにいくつかあったバグを修正– 一部の謎端末への対応
これらすべてフォーラムで報告頂いた不具合です(ありがとうございます)
状況
● ウィンドウマネージャの変更 : 微妙– なかなか良い選択肢が見当たらない...
– FreeRDP ClientまわりをGTK+ベースにする等したほうが早い気がしてきた
● PC版の Kernel : 3.10→3.18ベースになります
– Longterm が打たれたのでこれでいきます
– なので検証し直しですねorz
● あとは概ね計画通りになるはず?
ところで:ARM対応ってどうよ?
● ディストリ屋泣かせ● ブートローダや、ブート方法がデバイスによって違う● Kernelもデバイスによって状況が違う
● ユーザランドはそう問題ないとは思うんだけど...
Kernel
● 昔は...– カーネルにパッチを沢山当てるのが当たり前– パラメータがハードコーティングしてある事例も多かった
ため、Kernel のバージョンを上げづらかった
– そのため Kernel の断片化が進んだ
– Linusがその状況にキレた
● 近年は Device Tree の導入によって、その障壁が下がった
Device Treeとは?
● 「ハードウェアの情報を記述するためのデータ構造」– レジスタ、割り込み、メモリ、各種パラメータ、使用するドライ
バ等● Linux 3.7 よりARMで導入
– PowerPC には以前からあった
● Kernel ツリーの arch/arm/boot/dts/ 以下に、 ソースとなる *.dts ファイルがある
– コンパイル後は dtb ファイルができる。これを実際にブートローダに、Kernelとともに読み込ませる
どのぐらい対応してる?
● 対応
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
改造方法
● 基本的には以下のページにある内容そのまま
http://ac100.grandou.net/serial_port_modification
● ただ、手元に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