Androidクラウドブック DynabookAZでLinuxを色々と遊んでみよう

1

１、自己紹介２、DynabookAZ概要
３、ARM Linuxの紹介
４、ARM Linuxインストールのメカニズムまとめ
・ARMブートローダー解説
・NVflash～U-bootまで
５、DynabookAZ OS載せ替えテスト
・UbuntuLinux・Android 4.X CyanobenMod(サイアノジェンモッド 略:CM)・メインラインKernelコンパイル・Ubuntu初期設定
・Ubuntu14.04サポートアウト問題
・オーバークロックカーネルテスト
６、パッケージソースのテスト
・Pkgsrc
講演資料は電子データと・Gentoo Prefix
紙面を配布しております。
７、まとめ
詳しくはブースまで。

KOF2014 2014/11/8 17:00～
会場：ショーケース2

講演：Kapper

2

自己紹介
●

名前：Kapper●

Twitterアカウント：＠kapper1224●

趣味：Linux、モバイル好きなARMマニア●

好きな言葉：実験より記録重視。
出来た事、ダメだった事は貴重な財産で記録に残そう。

●●

最近の実験機：Netwalker(PC-Z1,T1)、Nokia N900、DynabookAZ、RaspberryPi
Nexus7(2012、2013)、Hercules eCAFE EX HD、Jetson TK-1、
OpenPandora、ARM Chromebook、ZTE OPEN C（FirefoxOS）
Chromecast他
最近気になる事：DynabookAZでUbuntuLinux14.04のテスト再開しました。
Androidの勉強と解析中です。
Jetson TK-1購入しました。テスト中です。

3

今回の趣旨「マニアックに遊ぶ」
●

●

●

●

●

DynabookAZを実例にAndroidに色々なLinux
ディストリを入れて遊んでみる。
OSの構造を出来るだけ簡単に整理してみる。
ブート、KernelからOSまでスルーアウトで
全て解析できる内容にしたい。
DnyabookAZ以外にもAndroid改造の参考例に。
ARMのディストリビュータをやってみたい人にも。
その場では分からなくても、後でゆっくり読み返すと何となく分かった感じがする内容にしたい。
Ubuntuの記録が多いのでUbuntuデータの追随が多くなったが、最新情報も追加してご報告何故DynabookAZなのか
●

●

●

●

●

●

Android機のOS載せ替えとして3年以上開発されており有名な機種。Ubuntuの公式開発ページもある。
Ubuntu13.10で公式サポートが終了し14.04はサポート対
象外に。14.04の相談事が激増した事が切っ掛け。
海外で十分に解析されており、情報が十分ある
特にロシアで膨大な情報があり他機種より詳しい。
リカバリモードが発見され、ブートローダを書き換える事で様々なLinuxが使える様になった背景。
Linux Kernelがメインラインに採用され、ドライバ移植が不要になった。モバイルAndroid機種へOS移植の実験機としても最適。
デュアルコアTegra2はAndroid機として、Ubuntu機としてもそこそこの性能を持っている。

4

Dynabook AZ（AC100）概要
●

●

●

●

●

DynabookAZは2010年9月発売Android搭載のノートPC。
スペックはTegra2 1.0GHz（旧CoreDuo1.2GHz相当）
理論上では1.8GHzまでオーバークロック可能。実用1.5GHz相当で
旧Core2Duo1.2GHz相当まで高速化が可能です。
2010年10月のUbuntu開発サミットでCanonicalのCEOマーク・シャトルワース氏
がUbuntuを入れたDynabook AZのべた褒めしていました。
思えばこれが全ての始まりかもしれません。
Ubuntuの公式サポートとAndroid
CyanogenMod移植に伴い全世界的にサポートが続けられ生き残っています。
Marc Dietrich氏によるmarvin24 Kernel
ポートが開発され様々なディストリに移植
Linux Kernel3.15.0-rc3からメインライン採用により移植が不要となりました。

DynabookAZ

5

6

ARM端末のディストリ対応状況
Psionから始まりiPaQ、玄箱～と組み込み機器から普及してきたARMのディストリ近況
ディストリ

UbuntuDebianFedoraOpenSuse GentooArch

ﾊﾞｰｼﾞｮﾝ

9.04～

2.2～

20～

12.2～

LinuxZaurus

△

◎

？

Nokia N900

◎

◎

◯

Netwalker◎○△

DynabookAZ

◎

○

◯

Nexus7(chroot除く)◎？

RaspberryPi

?

◎

◎

◎

◎

◎

MK802
USBAndroid

◎

○

○

◯

△

Samsung
Chromebook

◎

◎

◎

◎

コメント

ﾘﾌｧﾚﾝｽ
ﾓﾃﾞﾙ
限定

動作
報告
多数

RasPi
ｻﾎﾟｰﾄ

RasPi
ｻﾎﾟｰﾄ

Open
Cocon

Android NetBSD

v8～

1.5～

1.6～

△

◎

◯

◎

△

◎

△
？

◯

△

△
○

◯

◯

△

◯

◎
◎

◎

◎

◎

○

◎

?

○

◎

△

?

動作報告
多数

RasPi
ｻﾎﾟｰﾄ

ｽﾏﾎ
ﾀﾌﾞﾚｯﾄ40機種以上ｻﾎﾟｰﾄ

ｼﾝｸﾗｲｱﾝﾄ

Kapperのネット独断調査（間違っていたらごめんなさい。修正します）◎：公式サポートあり、◯：公式HPに導入報告あり、△：ユーザー導入報告あり

7

ARM端末のベンチマークスコア
ARM Cortex-A ロードマップ

出展：A Walk Through the Cortex-A Mobile Roadmap
http://community.arm.com/groups/processors/blog/2013/11/19/a-walk-through-the-cortex-a-mobile-roadmap

ARM端末 BOINCベンチマーク
x86
比較用(2012)

出展：Kapperのブログ新館

ARM Linuxで出来る事、難しい事●●

8

青色文字：テスト中
Kapperのテストした事
やりたい事

出来る事
インターネット、OpenOfficeなどは問題なく動作
省エネ機器サーバとしても問題なく動作
Youtubeやニコニコ動画などの動画再生もスペック次第で動作。
各種ゲームやエミュレータもLinux版を使えば動作。
WindowsXPレベル以下の旧型機種でもカスタマイズすれば使えます。
リモート端末としてWindowsを遠隔操作する通な使い方も出来ます。
難しい事

Windowsアプリ⇒qemuとWineで動きますが超上級者向け ←今後トライしたい
AndroidなどOS載せ替え、Ubuntuなどのディストリを動作させたい
ワンセグTV⇒一部ワンセグ機器のドライバをコンパイル。報告例あり。
FlashPlayer⇒ARM版を移植すれば動作します。
最新版アプリの動作⇒OSサポート内であれば動作。
動画再生支援機能をフルに使いたい⇒要GPUドライバ。
アプリやゲームを移植したい⇒コンバータかコンパイルすれば一部動作●出来ない事 （Androidなら普通に出来てしまいますが）デジタル著作権保護（DRM）認証が必要な動画関連は動作NG。
SkypeでのIP電話は公式アプリがサポートされてなければ動作しません。
LineはAndroid環境でのみ動作⇒PidginでLineプロトコルが動きました。

9DynabookAZ重要参考サイトご紹介
・The AC100 Wiki
Ubuntu移植の当初から公開されている情報サイト。UbuntuのHPからもリファレンスとしてリンクされている。最近更新が少ない。
http://ac100.grandou.net/

・Toshiba AC100 Wiki
ロシアAZ統合サイト。
Android4.0CMロードマップから各種ディストリまで何でもある恐
ろしいサイト。必読。ロシア語なので読むのが大変。
http://ac100.wikispaces.com/

・Ubuntu AC100 LaunchPad
UbuntuのAZ開発用LaunchPad。
Ubuntuは14.04でサポートアウト
した様子であるが、まだパッチやMLは一応機能している。
https://launchpad.net/ac100

10

ここまでがARMのご紹介となります
じゃあAndroidとLinuxをカスタマイズ
して色々と遊んでみます。
ここからマニアックさを一気に加速させていきます。

11

Android機にLinuxディストリを入れる●

DynabookAZの事はUbuntuHPとAC100Wikiに記載あり●

AndroidにLinuxディストリを入れる為に重要な3つ

１、ARM用ブートローダーを入れる。
（Androidの場合、Unlockする）
２、Linux Kernel、ドライバをインストールする
３、Linuxのルートファイルシステムイメージ（rootfs）を入れてマウントする12

今回の重要な参考文献

主な流れのイメージ

13

AndroidにLinuxディストリをインストールする
Androidのデータをバックアップする母艦PCにNVflash、fastbootをインストール
AndroidをUnlock(root化含む）
No
ブートローダ対応している？
Yes
Androidにブートローダ（U-boot他）を上書きする

ブートローダとドライバ、
設定ファイルをコンパイルNo

chroot環境か汎用ARM
イメージにLinuxKernelを入れ直してrootfs作成

rootfs対応している？
Yes

再起動してLinuxのrootfsをSD他からマウント
Linuxのrootfsから起動してeMMC(SSD）にインストール
再起動してLinuxディストリが起動

14

ARM Linuxの分類

Bootloader
KernelAndroid
FirefoxOS

組み込み
Linux

Linux
ディストリ
ビューション
ChromeOSARMブートローダの仕組みとx86比較

15

ARMの場合、FlashROMからRAMにブートローダを転送し、Kernelとrootfsを読み込む構成です。ROMに書き込んでるブートローダは「ファームウェア」と呼ぶそうです。Androidの場合、Unlockが必要です。
種類

ROM

x86~
Linux

BIOSと
DISKブー
CUI
BIOS
GRUB
KernelDaemonトロー
デバイス認識
他
LILO他
ドライバ
Xorg
ダーで構
ブートディスク選択
成
ブート
デバイス
Kernel初期化
KernelDalvikKernelローダー
Daemonドライバ
ドライバ
rootfs
仮想マシン
転送
RAM転送
rootfs起動 コンテキスト Android のUnlock
読み込み
マネージャ
が重要
GUI
MLO Android ブートローダー（ROM）
ZygoteARM
Android

ARM
FirefoxOS

ARM
Linux
ディスト
リ

RAM

MBR
(ディスク)

KernelKernelKernelドライバ
転送
rootfs起動
読み込み
MLO Android ブートローダー（ROM）

初期化
ドライバ
RAM転送

Kernelrootfs

初期化
ドライバ
RAM転送

KernelrootfsMLO

Kernel転送

読み込み

Kernelドライバ

ブートローダー（U-boot他）

init

ログイン

デバイス

DaemonFIrefoxGUI

Daemon

CUI

他

Xorg

特徴

AndroidとKernel、
ドライバ
まで共通
ブート
ローダー
以降はx８
６と同じ

AndroidのUnlock●

16

AndroidにインストールするにはブートローダーをUnlockする必要があります。（機種毎で異なります）●

DynabookAZではNVFlashでroot対応しているのでUnlock不要です。

●

参考サイトRootzWikiなど

http://wiki.rootzwiki.com/Category:Devices

Nexus7でのUnlock例
●

●

●

●

●

●

●

AndroidのUnlockの一例としてNexus7で試してみます。
Nexus7はメーカーの規制が無い機種です。
個別の機種に関しては、難しい機種も沢山あります。今回は割愛します。
用意する物
Ubuntu12.04以降がインストールされたPC（Windowsでも可）MicroUSB-USBケーブル
Nexus 7 Tablet本体 (8GB, 16GB, or 32GB)
Android SDKのコマンド、fastbootのインストール
Nexus7の電源ボタン長押しで電源をOFFにします。
電源が切れましたら右上あたりにあります「電源ボタン」と「volume downボタン」を押しながら再起動します。
ドロイド君の起動画面が出てくるはずです。
Nexus7とUbuntuPCをMicroUSB-USBケーブルで繋ぎます。
PCからfastbootコマンドを実行
sudo fastboot oem unlock
Unlock Bootloaderの画面で「Yes」を選択し再起動

17

ARM関連のブートローダ比較

18

明確な定義は決まってないですが、ROMブートローダとDiskブート
ローダの2つに分類される事が良くあります。
種類

対応MPU

対応OS

対応
ストレージ

対応フォーマッ
ト

GNU
GRUB

x８６

Linux
*BSD
MacOSX
MSDOS

HDD,floppy
USB,LAN
TFTP,Serial

LILO

x８６

Linux
*BSD
MSDOS

eCos
Redboot

ARM,x86,68k,
MIPS,Altera,PowerPC,SuperH他

Das
U-boot

ARM,x86,68k,
MIPS,Altera,PowerPC,SuperH他

Multirom ARM

ライセン
ス

全種類

起動
モジュー
ル
DISK他

HDD,floppy
USB,LAN
TFTP,Serial

全種類

DISK他

BSD
LicenceLinux*BSD
MacOSX
MSDOS

HDD,floppy
USB,LAN
TFTP,Serial

JFFS2、EXT2、 ROM、
EXT3、EXT4、FA RAM

Mod
GPLv2+Linux*BSD
Android他

HDD,floppy
USB,LAN,Zip
TFTP,Serial
NFS

Cramfs、EXT2、 ROM、
EXT3、EXT4、FA RAM
T、FDOS、JFFS
2、ReiserFS、UB
IFS、YAFFS2

GPLv2

AndroidLinux

Android
EXTx、FAT32
SecondaryROM 、NTFS
USB

T他

ROM、
RAM

GPLv3

GPLv3

19

Das U-Boot解説●

ARM他で良く使われている高性能ROMブートローダ●

2010年頃からRedbootの代替としてメジャーに

●

●

●

●

●

起動ディスクとして多数のフォーマット、ストレージに対応している強みあり。C言語で作成。CPUとメモリマップを直接指定、理解が必要。
Linuxの場合は、mkimageコマンドでKernelをuImage等に変換。
圧縮してフラッシュROM焼きしてROMから起動。メモリに展開。
第一パーティションにMLOと/boot/を置く
rootfsをext3などに置く
Kernelから起動
CPU

リセット
クロック指定

リセット
メモリ
転送

ROM
MLO
実行 bootloader
Kernelrootfilesystem

ROMからメモリ転送可能

RAM
(メモリ）
Kernelrootfilesystem

ディスク
再転送可能

MBR
(ディスク）
Grub
Kernelrootfilesystembootloader

OS起動

デバイス認識（ドライバ）

参考
リセットU-Boot ユーザーズマニュアルU Boot or Universal Bootloader

20Linuxディストリのインストール分類●

DynabookAZへのLinuxディストリのインストールには複数の方法があります。
１、標準インストーラーあり：Ubuntu
２、chroot環境でrootfsイメージを作りインストール：Debian他
３、ARM共通rootfs tarballをインストール（ただしブートローダとKernelとmoduleは手動）：OpenSuse、ArchLinux他
４、USBで繋いでU-Bootからインストール：CM1x

21

Nvflash～OS書き込み
NvflashとはNvidiaが提供しているROM書き込みアプリ。これを用いることでブートROMに書き込む事ができる。
●
DynabookAZには「Ctrl」+「ESC」+電源ボタンでリカバリモードを起動することが出来、Nvflashを使ってブートローダーを上書きすることができる。
●
上書きされたブートローダーを使用してLinuxの
rootfsを起動する事で様々なディストリを起動出来る。
●

Androidのストレージ構成●

インストールするには各パーティションの先頭に書き込んでU-Bootから選択して起動する方式
part # name size description
remarks/BCT 3 145 728 (3 MB)boot config table/PT524 288 (512 kB)
partition table/EBT 2 097 152 (2 MB)
bootloader/SOS 5 242 880 (5 MB)
recovery partition/LNX 8 388 608 (8 MB)
linux kernel and initrd kernel starts at
0x800 initrd starts at 0x20E800/MBR 1 048 576 (1 MB)
master boot record/APP 314 572 800 (300 MB)
applications (/system)/CAC 419 430 400 (400 MB)
cache (/cache)/MSC 2 097 152 (2 MB)
misc (/misc)/EM1 524 288 (512 kB)/UBA 1 294 991 360 (1235 MB) user data (/data)/EM2 524 288 (512 kB)/UDB 5 950 144 512 (5674.5 MB) user data (/storage)

22

Ubuntuのインストールと起動●

インストール概要は下記の流れです。

●

用意するもの
１、Ubuntu LinuxをインストールしたPC
２、Mini-usb cable 1本
３、１GB以上のUSBﾒﾓﾘ、SDカード

1台●

NVFlashパッケージのインストール●

bootimgとルートイメージファイルをダウンロード。

●

●

●

AZをシャットダウンして電源を落としてから、Mini USBケーブルでx86のUbuntu
PCと繋ぎ、CTRL + ESCを押しながら左上の電源ボタン長押し。起動。
ブートローダーを上書き
nvflash --bl /usr/lib/nvflash/fastboot.bin --download 6 ubuntu-11.10-preinstalleddesktop-armel+ac100.bootimg
USBﾒﾓﾘ、SDカードの一番上のフォルダにubuntu-11.10-preinstalled-desktop-armel+ac100.tar.gzをコピー●

AZの電源を落としCTRL + ESCを押しながら左上の電源ボタン長押し。起動●

USBメモリ、SDカードから起動してインストーラー動作23Android CM1xインストールと起動１

24○必要なファイル
ROM本体とリカバリイメージを落としてくる。
cm_ac100-ota-1x.x-xxxxxxxx- UNOFFICIAL.zipとrecovery-1x.x-xxxxxxxx.img
基本的に本体とリカバリは同じバージョンのものを使用◯sos-uboot-*.binとgappsをダウンロード
cm_ac100-ota-1x.x-xxxxxxxx-UNOFFICIAL.zip、
recovery-1x.x-xxxxxxxx.img、
gapps-non-neon.zipの3つをVFAT/FAT32でフォーマットしたSDカードに入れる。
○母艦側の準備
母艦側に"nvflash"を入れておく。
まずロム本体、リカバリイメージ、gappsを入れたSDカードを挿しておく。
母艦にUSBケーブルで接続して、例によってCTRL+ESC+電源ボタンで起動する。
○作業開始
以下のコマンドでBootLoaderを起動する。
$ nvflash --bl ./sos-uboot.bin –go
BootLoaderが起動したら、"Boot Kernel"を選択してEnter"/ #"みたいなプロンプトが出てくるので、"./switch-to-uboot [ENTER]"でスクリプト
を起動
スクリプトの質問に"yes"と答えると再びプロンプトが表示される。

Android CM1xインストールと起動2

●

●

●

●

25

○必要なファイルの準備、パーティションを組み直す。
# parted /dev/mmcblk1 rm 7 rm 6 rm 5 rm 4 rm 3 rm 2 rm 1
# parted /dev/mmcblk1 mklabel gpt# parted /dev/mmcblk1 -s mkpart primary 7168s 132168s# parted /dev/mmcblk1 -s mkpart primary 132169s 257169s# parted /dev/mmcblk1 -s mkpart primary 257170s 1257170s# parted /dev/mmcblk1 -s mkpart primary 1257171s 2257171s# parted /dev/mmcblk1 -s mkpart primary 2257172s 2261078s# parted /dev/mmcblk1 -s mkpart primary 2261079s 15513695s# parted /dev/mmcblk1 -s name 1 SOS name 2 LNX name 3 APP name 4 CAC name 5 MSC name 6
UDA
各パーティションをフォーマットする。（mmcblk1p1~7まで同じ）# mkfs.ext2 /dev/mmcblk1p1# mkfs.ext2 /dev/mmcblk1p2# mkfs.ext4 /dev/mmcblk1p3～# mkfs.ext4 /dev/mmcblk1p7
p1にリカバリイメージを書き込む。
# mkdir /tmp/sd# mkdir /tmp/p1# mount /dev/mmcblk0p1 /tmp/sd# mount /dev/mmcblk1p1 /tmp/p1# mkdir /tmp/p1/boot# unzip /tmp/sd/recovery-10.1-xxxxxxxx.img -d /tmp/p1/boot/# sync# umount /tmp/sd# umount /tmp/p1
電源ボタン長押しで強制的に電源を落として再起動する。
起動メニューが出てくるので「Boot SOS CM-10.1」を選択し10.1のイメージとgappsを焼く。
システムを再起動すると、9.の時の起動メニューが出てくるので、今度は「Boot LNX CM-10.1」を選択
する。

26

Ubuntuのインストーラー抜粋1：参考用●

MMCからのU-Bootでのブートスクリプト例
setenv devtype "mmc"
setenv devnum "1"←デバイスをMMCに

setenv kernel_addr_r "0x1000000"
setenv prefix ""setenv ramdisk_addr_r "0x2200000"
setenv filesize "1096F6A"
setenv fdt_addr_r "0x2000000"
setenv soc "tegra20"
setenv board "paz00"←RAMアドレスにKernelをロード←RAMアドレスにRAMDISKをロード←RAMアドレスにFDTをロード←SOCデバイスにtegra20を指定←Boardデバイスにpaz00を指定

setenv bootmenu_0 "Boot from Disk =source boot.scr-tegra-disk-serial"
setenv bootmenu_1 "Boot from NET =source boot.scr-tegra-dhcp-serial"
bootmenu 15

参考出展：http://ac100.wikispaces.com/Ubuntu

https://launchpadlibrarian.net/178176319/ac100.diff
5.1. ARM でのインストーラの起動
http://d-i.debian.org/manual/ja.armhf/ch05s01.html
http://www.denx.de/wiki/DULG/Manual

27

Ubuntuのインストーラー抜粋2：参考用●

U-Bootでのブートスクリプト

bootscr.tegra20-paz00 のパッチ+++ b/bootscript/bootscr.tegra20-paz00@@ -0,0 +1,7 @@+setenv k ${prefix}/zImage←zImage指定+setenv i ${prefix}/uInitrd←initrd指定+setenv d ${prefix}/tegra20-paz00.dtb←dtbファイル:Kernel をコンフィグレーションする
DTB (Device Tree Blob)指定+load ${devtype} ${devnum} ${kernel_addr_r} ${k}+load ${devtype} ${devnum} ${ramdisk_addr_r} ${i}+load ${devtype} ${devnum} ${fdt_addr_r} ${d}←loadコマンド転送+bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}←bootzコマンド起動
参考出展：http://ac100.wikispaces.com/Ubuntu

https://launchpadlibrarian.net/178176319/ac100.diff
5.1. ARM でのインストーラの起動
http://d-i.debian.org/manual/ja.armhf/ch05s01.html
http://www.denx.de/wiki/DULG/ManualUbuntuインストーラーを使用して他のOSの起動方法 翻訳：参考用
●

●

●

●

●

Ubuntuのインストーラーでは、下記の動作をしています。
１、tar.gzの名前とchecksumを確認
２、スクリプトで内部の最大のセクションを調査
３、rootfsを展開
４、chroot環境でupdate-initramfsスクリプトを実行
5、abootimgを使って新しいKernelが入ったパーティションを選択
６、リブートイメージファイルをメモリに展開、インストーラー修正
Android Boot Imageを操作するabootimgコマンドを使用。
abootimgコマンドはandroid boot imagesをread/write/updateする。
<bootimg>はソースファイル名
abootimg -x <bootimg> <bootimg.cfg> <kernel> <ramdisk>
RAMディスクを展開
mkdir ramdisk
cd ramdisk
gunzip -c ../your-ramdisk-file | cpio -iRAMディスクをファイルに圧縮しなおす
find. | Cpio -o -H newc | gzip> ../newramdisk.cpio.gz
ブートイメージを作成
abootimg --create <bootimg> -f <bootimg.cfg> -k <kernel> -r
newramdisk.cpio.gz

28

29

AndroidとUbuntuのデュアルブート
●

●

●

●

●

リカバリモードでU-bootをインストール
パーティションの再構築。 ac100-u-boot-helpers.zipをSDカードに展開して
AZ上でapply_partitions_config.shを実行
ブートファイルをSDカードからeMMCにコピーする
CM-1xをCWM recoveryでインストール（「Android CM1xインストールと起動」にて説明。割愛します）
UbuntuをSDカードからインストール（「Ubuntuのインストールと起動」にて説明。割愛します）

参考出展：http://ac100.wikispaces.com/uboot+installation

30

メインラインKernelのコンパイル１●●

クロスコンパイルする為にLinaroのToolchainをダウンロードしますwget http://releases.linaro.org/14.05/components/toolchain/binaries/gcc-linaro-armlinux-gnueabihf-4.9-2014.05_linux.tar.xz
ダウンロードしたら展開してPATHを設定
tar xvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux.tar.xz
export PATH=$PATH:gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux/bin/●

Kernelソースをgitでダウンロード、makeでコンパイル開始
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
make tegra_defconfig ARCH=arm
make zImage modules dtbs INSTALL_MOD_PATH=/tmp INSTALL_MOD_STRIP=1
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihfmake modules_install INSTALL_MOD_PATH=/tmp INSTALL_MOD_STRIP=1
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

31

メインラインKernelのコンパイル2●

KernelをSDかUSBメモリなど必要なフォルダにコピーする
mkdir ~/linux-3.16-0
mv /tmp/lib/ ~/linux-3.16-0/
cp arch/arm/boot/zImage ~/linux-3.16-0/
cp arch/arm/boot/dts/tegra20-paz00.dtb ~/linux-3.16-0/●

rootfsイメージなどを設定して起動Linuxディストリビューションが起動●●

一連の流れでインストールが完了すれば無事Linux起動
結局何が良いかと言いますともちろん最新版MikutterもちゃんとAndroid端末で起動できる様になります32

Ubuntuを起動した後の初期設定
●

●

●

●

●

●

ランチャー右端に無線LANのアイコンがない？nm-appletを起動する。
日本語化されてない？
日本語関連ファイルが入っていない事がある様です。
メニュー⇒設定⇒言語サポート
音を再生するaslamixerで設定するだけです。
sudo alsamixer
で左から10列目の「speaker0」を上キーを押してVmidからSpeakerに切り替える。
GPUにtegra2 GPU Driverを入れてみる
Tegra2Driverは~13.10まで対応。14.04は依存関係のxorg-video-abi-14が競合。
14.04はメインラインKernelとOpenTegraドライバを入れましょう。
スクリーンセーバ
自動的に画面が真っ暗になりまして実はXscreensaverが動いています。
画面表示が出来ない？「CTRL」+「ALT」＋「F5」でコンソールの画面を表示して「CTRL」+「ALT」＋「F7」で元の画面に戻します。
日本語キーボード設定
実はインストール直後はUSキーボード設定だそうです。日本語設定に変更しましょう。
sudo leafpad /etc/default/keyboardからpc105設定を下記に変更。Xmodmapを書き換え。

33

34

Ubuntu14.04サポートアウトの課題
●

●

●

●

●

●

●

UbuntuLinux14.04の開発版イメージ（14年2月）は修正されていない為、十分に動きません。要注意。LaunchPadのMLログ参照。
Wifiが使えません。レジューム掛かると元の画面に戻りません。
⇒Kernelモジュール関係だそうです。Marc氏のコメントではメインラインKernelをコンパイルして使ってほしいとの。
メモリ食いすぎでとっても重いです。
⇒Lubuntuは圧縮RAMのZRAMなどが裏で動作。
GPUのTegra2Driverが動作しません。
⇒依存関係のxorg-video-abi-14が競合して14.04では動作しません。
メインラインKernelとOpenTegraをコンパイルして入れるしかなさそうです。
FlashPlayerが動作しません。
⇒ArmelのFlashPlayerは11.10までで、それ励行はUbuntuがArmhfに移管した為、動作しません。gnashかPepperFlashPlayerをコンパイルして見てください。
Firefoxでファイルをダウンロードすると落ちます。
⇒ChromeBookのUbuntu14.04でも同様に落ちます。多分仕様です。
メインラインKernelでも不具合が発生する。
⇒AC100 IRCのログによると完全にバグが治っている訳では無いそうです。

オーバークロックカーネルテスト●

２chにて公開。大変感謝。

●

1.0～1.5GHzのオーバークロックカーネル●

BOINCベンチマークで1.5GHzで2,051→3,069まで高速化。約1.5倍（Core2Duo U7600

●

●

●

ARM

1.2GHz、PentiumM

35

2.0GHz相当）

LinuxはCPUクロックをソフト的にKernelで制御できる。

Tegraシリーズは標準クロック数はそれ程高くないが、オーバークロック耐性が高い
あえて標準クロックを落として省エネにしている？
理論的には1.7～2.0GHzまでオーバークロック出来るとの情報。
5,000
4,000

integer MIPS (Dhrystone) per CPU

571

3,166

2,473

2,051

2,000

0

3,487

3,069

3,000

1,000

4,664

floating point MIPS (Whetstone) per CPU

2,143

1,643
683

826
DynabookAZ

970

DynabookAZ

DynabookAZ

ノーマルカーネル

オーバークロックカーネル オーバークロックカーネル オーバークロックカーネル

1.0GHz1.2GHz

1.5GHzDynabookAZ
1.7GHz ？

845

872

Pentium4
1,600MHz

Core2Duo
U7600
1.2GHzCore2Duo
E4500
2.2GHz

参考出展：https://dl.dropboxusercontent.com/u/61491808/tegra2-oc-common.patch

36

パッケージツールも使用してみる
OSを載せ替えた後ですがパッケージツールも使ってみましょう。
● Linuxで使えるパッケージツールはいくつかありますが、ARM環境に非依存で使えるソース
ベースのパッケージツールを二つ試しました。
● 特にNetBSDのパッケージツールpkgsrcは、特定のUNIX環境に依存しない優れもので、移植性が極めて優れています。
●

NetBSD pkgsrc導入●

pkgsrcをUbuntuで使う方法。

UbuntuLinux

37

pkgsrc1.危険性はまず無いですが一応リカバリできる様にリカバリディスク
確保
2.apt-getとかでbuild-essential(gcc)、libncurses5などをインストールする
3.Ubuntu9.04の場合、10.04のcoreutils7.xのパッケージを入れてアップデートする。(ダウングレードする際はaptitudeを使ってください）
4.pkgsrc本家サイトよりpkgsrcファイルをダウンロードして展開する。
5.端末からbootstrapを実行してインストール
6.後はパッケージをガシガシコンパイルしてアプリを入れる。
7.USEフラグ、ライセンス許可などの指定追加。再度コンパイル。
8.アプリを実行して普通に使います。

38

Gentoo Prefix導入
UbuntuLinux Portage●

Gentoo PrefixをUbuntuで使う方法。
1.危険性はまず無いですが一応リカバリできる様にリカバリディスク
確保
2.apt-getとかでbzip2 build-essential bison libreadline-dev libncursesdev autoconf lzmaなどをインストールする
3.passを設定
4.bootstrapスクリプトをダウンロードして展開する。
5.端末からbootstrapを実行してインストール
6.Stage1、Stage2、Stage3を実行。
7.Emergeを実行。

emerge -e system

8.アプリをガシガシコンパイルして実行。

39

まとめ
●

●

●

●

DynabookAZをベースとして、ARMのAndroidとLinuxディストリの移植状況を調査しました。
ARMブートローダーやOSインストールの全体像を整理してみました。詳しい仕組みは割愛します。
専門の情報源にて各自で入手して下さい。
Android機にLinuxディストリの移植をするには、KernelとU-bootの対応が移植のキーとなります。
FirefoxOSはAndroidのベースを使用している様子です。
中華PADへの移植はまだ調査していません。
ドライバとU-bootの移植が難しいかと。
是非、情報を教えてください。

40

OSC浜名湖、東京2015●

OSC浜名湖、東京2015、にも出展予定です。

●

内容:未定

●

●

OSC浜名湖 2月11日(水)OSC東京Spring 2月28日（土）予定
質問、ご要望はブースまで是非気軽にお聞き願います。
まだ分からない事沢山あります、ゴメンナサイ。
技術的な話題や議論、雑談を含め何でも。
講演資料は会場でも配布しております。
楽しみにお待ちしております。