Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

AllwinnerタブレットのOSを作ってみる(中編)

4 177 vues

Publié le

なぜAllwinnerタブレットがハックされるのか? / Allwinnerタブレット(2機種)で自前buildしたLinuxを走らせてみた話
東海道らぐ横浜にて発表

AllwinnerタブレットのOSを作ってみる (途中版) の続編です
http://www.slideshare.net/shimadah/allwinneros

Publié dans : Logiciels
  • Login to see the comments

AllwinnerタブレットのOSを作ってみる(中編)

  1. 1. Allwinnerタブレットの OSを作ってみる(中編) SHIMADA Hirofumi, @shimadah
  2. 2. opencoconとは 旧型PCを シンクライアント として 再利用する Linuxディストリビューション http://opencocon.org/
  3. 3. 実際は古くて珍しいマシン大好き
  4. 4. プロジェクト開始6年、時代は...
  5. 5. もしかして... 10年後は タブレットひとつで FLOSSに飛び込んでくる 人が来る?
  6. 6. タブレットがメインの世界に Linux ディストリは生きのれるのだろうか?
  7. 7. 現状 ● 下回りがきちんと動くOS、ディストリビューションが ほとんど無いため、デスクトップ環境やアプリケー ションの整備が Android に比べ遅れている。 ● それに伴いユーザも少ない。 → まだ悪循環が止まっていない。
  8. 8. 代表的な旧型タブレット (再利用できそうなもの) Android Tablet Windows Tablet
  9. 9. もがきはじめて だいたい1年... ● だいぶ市場の状況が把握できてきました (Kapperさん、ほたさん等等、ほんまありがとうござ います) ● ここん的に取り組むと楽しそうな領域は、安価で hackableな中古タブレット、あといわゆる中華タブ レットがよいということが判明しました
  10. 10. 中華ARM Androidタブレットの SoCは...
  11. 11. Allwinner ● 安価なタブレット・ボードコンピュータ・TVスティック・STBへの搭載がと にかく多い ● 2012年〜2013年は、世界で最も多くのAndroidタブ用SoCを 供給していた。そのため今でも入手しやすい ● 日本では、(確認している限り)以下のメーカーのタブレットに搭載 KEIAN, MSI, RWC, AKART, Mouse Computer, Hyundai, ... ● ボードコンピュータ Cubieboard, pcDuino, MarsBoard, OLinuXino, Foxconn Super Pi, Orange Pi, Banana Pi, Hummingbird, Pine64, PocketCHIP, ... ● 最もよく見るのは A10, A13 であるが、 最近はデュアルコア(A20)、クアッドコア(A31s等)、 64bit ARMプロセッサ(A64)もある ● Kernel 等のサポートは後述
  12. 12. Rockchip ● Allwinnerに比べマイナーであるが、パフォーマンスがよいらしく、 所々に大手メーカーの採用例がある。 ● タブレット HP Slate 7, Huawei MediaPad Youth 7, TOSHIBA REGZA Tablet AT374, ... ● ボードコンピュータ : Firefly, ... ● Chromebook : Asus C201 ● Kernel や u-boot 等は、一部の SoC 向けのコードが Mainline に入って いる。基本的にボードコンピュータ, 評価ボード, Chromebook 向けにメンテナンスされているようだ
  13. 13. Actions https://imgtec.com/blog/new-atm7021-atm7039-owl-chips-actions-semiconductor-stand-world-android- tablets/ ● 若干マイナー。タブレットというよりは、デジタルメディアプレー ヤー向けチップが強い。 ● 初期のSoCはARMではなく MIPSを採用していた ● これを搭載したタブレットが稀にある ● ボードコンピュータ 96Board, ActDuino, Guitar, RoseapplePi, Sparky ● march-owl : まだ Mainline Kernel 等には 無いようだ。Source code が少々探しにくい。
  14. 14. 今年のザ・旧型コンピュータは
  15. 15. linux-sunxi コミュニティ ● 開発コミュニティが活発であり、基本的な部分は既 にコミュニティ側のコードだけで動作する ● Allwinner マシン向けの Kernel, u-boot 等のメンテ ナンスと Upstream への反映を行っている ● Allwinner マシンのデータベース(Wiki)を持 ち、Hack の仕方などをまとめている http://linux-sunxi.org/Identification_guide
  16. 16. なぜ Allwinner はハックされるのか? ● Bootloader がロックされていない : 対応するSDカードを刺して電源を入れる だけで俺Linuxが動く ● ベンダーリポジトリはあってないようなものである ● Allwinnerやタブレットメーカーは、GPL違反を繰り返している http://linux-sunxi.org/GPL_Violations ● ベンダーのKernelにはBackdoorが入っているのではないか?という話がある "Allwinner has also been accused of including a backdoor in its published version of the Linux kernel." https://en.wikipedia.org/wiki/Allwinner_Technology ● 多くのタブレットは、ADB Shellで入るとroot権限で使える (そうでない端末もある)
  17. 17. つまり ● Allwinner端末は多いけど、プリインストールしている Andorid は信用できない! 使いたくない!! ● ベンダーがコミュニティに好意的ではないため、コミュ ニティが使うコードの拠り所が Linux / u-boot の Mainline ぐらいしかない ● コミュニティが自ら全てをコントロールできる Linux を 動かそうという意欲が高い。
  18. 18. Allwinner タブ用のディストリを作ろう Part1 : Q8 タブレット
  19. 19. 事の発端:遅いAndroid Tablet ● 帰省中、お蔵入りしていた Android Tablet を発見 – だいぶ前に、妹(スティーブ・ココンの作者↓)が購入し た教材に付いてきたらしい – しかし、動作が大変モッサリとしていたので余り使わな かったらしい ● 正常に動いているため、貰って何かに遊べるか調べ ることにした
  20. 20. Androidは大変モッサリなので ● なにか適当なLinux環境を作って動かせば、割と使 えるようになるんじゃないか ● Allwinnerはそんなに難しくない、みたいな話を以前 聞いたことがある ● ちゅうわけで調べてみたのが事の発端
  21. 21. 調査開始 ● Android 4.1 ● 機種名しかわからず、手がかりがない
  22. 22. そういうときはバラしましょう
  23. 23. ヒントは?
  24. 24. わかったこと ● Allwinner A13 ● 基盤にある文字:ET_Q8_V1.2 →この情報を基に、linux-sunxi サイト内を探す
  25. 25. 調べてみると ● Q8 というフォームファクタのタブレットである “ The 7" tablet format is a very popular case style which is/was used for the cheapest tablets from 2012 through 2014. “ http://linux-sunxi.org/Format_Q8 ● この外観であれば、LCDの解像度やUART等の基本的なスペック はほぼ共通であると考えてよい ● ロジックボードのメーカーが多いため細かい差異があるらしく、コ ミュニティでもその全容を把握できていない – 案の定、 ET_Q8_V1.2 という名前のタブレットが無かったものの、近そうな タブレットならあった – 4台入手したものの、全て異なるロジックボードであった
  26. 26. 共通スペック ● Allwwinner A13 (たまにA23) ● Memory : 512MB ● NAND : 4GB前後 ● LCD : 800x480 ● タッチパネル・無線LAN・カメラ周りのチップは差異 が多いとされている
  27. 27. なお、無線LANは100%...
  28. 28. どうやってディストリを作るか? ● OpenEmbedded + meta-sunxi の組み合わせ (meta-sunxi も Linux-sunxi コミュニティでメンテナ ンスされている。) https://github.com/linux-sunxi/meta-sunxi ● (ここんとしては)慣れている OpenEmbedded でさ くっとできればいいよね
  29. 29. 中略 AllwinnerタブレットのOSを作ってみる (途中版) http://www.slideshare.net/shimadah/allwinneros
  30. 30. その後わかったこと ● Meta-sunxi を有効にして image を生成すると、 opencocon-canvas-v10-q8.rootfs.sunxi-sdimg のような感じに、そのままSDカードにddして起動で きるDisk Imageができる。 (お手軽!) ● Mainline Kernel に特に patch を当てる必要がな い。
  31. 31. ここまでは動いた
  32. 32. ここまでの課題 ● U-boot の段階では、OTGケーブルを通じてキーボー ドが使えるが、Linux Kernel に入ると使えなくなる。 ● 4台中3台にて、Kernel が走りだして 0.5 秒後に液晶 の電源が切れてしまう。 (←まだ調査中) ● タッチスクリーンのドライバをまだ入れていない – I2C等である程度は自動検出できるらしい…? ● UARTが見つからない – まだ修行が足りないようやな...orz
  33. 33. Kernel に入ってからUSBが 使えない ● こんなエラーが dmesg に見える sun4i-usb-phy 1c13400.phy: could not find pctldev for node /soc@01c00000/pinctrl@01c20800/usb0_id_detect_pin@0, deferring probe ● MLを調べてみると、どうもDevice TreeでOTGを有効にしてると起 こる場合があるようだ。 USBをHostのみにすると、使えるようになる という記述があった。 [PATCH] musb: sunxi: Ignore VBus errors in host-only mode https://groups.google.com/forum/#!msg/linux- sunxi/uulK5lf7XrU/QUMtNbVpAQAJ
  34. 34. やっとPCぽくなった Q8 タブレット
  35. 35. Allwinner タブ用のディストリを作ろう Part2 : MSI Primo 81 https://www.amazon.co.jp/MSI-Primo81-7-85%E3%82%A4%E3%83%B3%E3%83%81%E3%82%BF%E3%83%96%E3%83%AC %E3%83%83%E3%83%88-Android4-2-N821/dp/B00FIYSTUQ
  36. 36. Primo81 : スペック ● 2013年製 ● Allwinner A31s : 4core ● Memory 1GB ● NAND 16GB ● PowerVR ● IPS液晶 768x1024, Mini HDMI アダプタ ● 入手価格 9000〜ぐらい(中古)
  37. 37. なお、無線LANはやっぱり
  38. 38. Sunxi の情報によると ● Mainline U-Boot, Kernel のみで動く – Q8 とは異なり、それ用の Device Tree が存在する ● カメラとサウンド以外はすべて動く(らしい) ● A31s は PowerVR なのでGPUの性能が発揮できないものの、 Framebuffer は動く ● LCDがMIPI DSI 接続らしい:まだKernelは正確に対応していな いが、u-boot で初期化するため一応映る – このため、起動時にLCD, HDMIのいずれかに映り、その後は設定で変 えることができない http://linux-sunxi.org/MSI_Primo81
  39. 39. Primo81でLinuxを動かす ● Q8 と同じ要領でディスクイメー ジを作成した(Linux 4.4)が、これ も起動途中にディスプレイが消え てしまった ● Linux 4.7 に変えたところ、正常 に動くようになった ● タッチスクリーンのドライバ (goodix)も Mainline にあるの で、一連のテストはだいぶ手軽 にできることが判明した
  40. 40. まだ対応していないtabletを 対応させるためには? ● Step 1: 何ができるか探そう 既に対応している機種であるか?、など ● Step 2: Wiki ページを作ろう ● Step 3: ストックしてあるOSの情報の重要な情報を検索しよう  この場合は既存のFirmwareを指しているものと思われる。  また、ADB Console から script.bin (現在の Device Tree に相当)を取得す る点も含まれる。 ● Step 4: シリアルコンソールを探そう ● Step 5: u-bootで対応させよう ● Step 6: sunxi-boards に(script.binを変換して)アップロードしよう ● Step 7: Manual Build (して Linux を動かそう) http://linux-sunxi.org/New_Device_howto
  41. 41. http://linux-sunxi.org/Forfun_Q88DB
  42. 42. 下は固まってきたので上周りはどうする? ● マルチタッチの認識テストをしたい ● Qt or GTK+ で認識するか確認したい ● これでどんなのが楽しく動かせるか調べたい → まだまだ課題山積です
  43. 43. まとめ ● Allwinner タブレットは、基本を把握さえすれば比較 的とっつきやすい。コミュニティのサポートもある。 ● 旧型タブレット向けLinuxディストリを作る 素地を作った ● やはり世界は蟹 (Realtek)に 支配されていた ● タブレットで遊ぼうぜ!!

×