Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
帰ってきた
すごい謎マシン
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ベースにな...
ところで:ARM対応ってどうよ?
●
ディストリ屋泣かせ
●
ブートローダや、ブート方法がデバイスによって違う
● Kernelもデバイスによって状況が違う
● ユーザランドはそう問題ないとは思うんだけど...
Kernel
● 昔は...
– カーネルにパッチを沢山当てるのが当たり前
– パラメータがハードコーティングしてある事例も多かった
ため、Kernel のバージョンを上げづらかった
– そのため Kernel の断片化が進んだ
– Linus...
ARMの状況:いわゆるISAバス(Cバス)
http://pc.watch.impress.co.jp/docs/article/diy9712/3/3_2/052.jpg
Device Treeとは?
●
「ハードウェアの情報を記述するためのデータ構造」
– レジスタ、割り込み、メモリ、各種パラメータ、使用するドライ
バ等
● Linux 3.7 よりARMで導入
– PowerPC には以前からあった
● Ke...
Device Treeの壁
● Linux 3.7以降、ARM マシンで Linux Kernel の対
応を入れるには、 Device Tree がほぼ必須
●
その状況はデバイスによりまちまち
どのぐらい対応してる?
●
対応
Raspberry Pi, Dynabook AZ, LinkStation, Linux
Zaurus, Chromebook, GuruPlug, NetWinder,
Nokia N900, RiscPC...
ソースコードの
読み比べタイム
本日のお題
Dynabook AZとは
● 初代Tegra、メモリ 512MB
● Android 2.2 搭載のノートPC
● Ubuntuの偉い人がベタ褒めしたことから、その界
隈では非常にメジャーなARMマシンとなった
● OSの書き換えが非常に容易...
これでopencoconを....?
●
実は何度かトライしていたが、諦めていた
● v9時代:OpenEmbeddedの問題に当たり、基本的
なライブラリさえ作れなかった
– 安定版でも地雷なのはいつものこと
●
最近もう一度試してみた
ところで、巷のAZは
● Ubuntuを使っている例が非常に多い
– ArchとかSlackwareもいけるらしい
● Kernelは少し古いケースが多い
– AZ独自部分があるため、それ用のカーネルツリーを使う
– 昔は 2.6.38 がよく...
最近は?
● 3.10 ツリーがある
● 3.15 より、アップストリームに入った
– Device Tree に対応し、関係するドライバもすべて整っ
たため、めでたくマージ
– つまり、ビルドする際の障壁は大幅に下がったはず
試してみた
● Linux 3.18 カーネルをベースに、適当なテストディストリを作ってみた
– といっても initramfs だけ
● 新しいバージョン OpenEmbedded のツリーでリトライしたら、そこそ
こ普通にビルドできた
– ...
しかし動かない
仕方ないので改造してみた
シリアルコンソール付きAZ
改造方法
●
基本的には以下のページにある内容そのまま
http://ac100.grandou.net/serial_port_modificati
on
● ただ、手元にNokiaケーブルは無いので、その代わ
り USB-UART アダプタ...
で、なんて表示されたかというと
==== Debug Console(Jul 29 2010 19:07:27) ====
Checking for android ota recovery
d
d x
|
T
.
Error: unrecog...
解決法
● machine id を変更する
– これは Device Tree 以前の世代で有効な手法であるこ
とに注意
– 今でも有効なのかもしれない?
● Kernel に内蔵している dts をうまく読みに行ってい
ない?
–
なんかオチがあった
●
これが必要だった
Kernel の後に結合する dtb ファイルを読み込むには、
以下を有効にする必要があった
– CONFIG_ARM_APPENDED_DTB=y
– CONFIG_ARM_ATAG_DTB_COMP...
Kernelが動き出した
まとめ
● Device Tree は、これからの ARM Linux にとって
重要
● とりあえずAZイメージはできた
– ただ、その先も地雷が多そうなのでまだまだ
僕らはARMという
山に登り始めたばかりだ!
Upcoming SlideShare
Loading in …5
×

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

4,157 views

Published on

Device Treeのざっくりとした説明と、Dynabook AZでDT付きカーネルイメージを作ってみた話

Published in: Technology
  • Be the first to comment

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

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

×