Netwalker kernelvm2015night

ARM Chromebookで
Linuxを色々と遊んでみよう
1
1、自己紹介
2、Chromebookの紹介、全体像
3、ChromebookでOS載せ替えテスト
・Crouton
・Chrubuntu
・Linuxディストリビューション、FreeBSD
・Windows(参考 x86のみ:Acer C720の報告事例抜粋)
・MacOSX(参考 x86のみ:Acer C720の報告事例抜粋)
4、次回出展
講演資料は電子データと
紙面を配布しております。
詳しくはHPまで。
Kernel/VM Night! 2015/2/14 20:45~
会場:東京 PMO神田
講演:Kapper
Netwalker実験所
2
ARMデバイスに関しては
超マニアです。
大好きです。
よろしく!
Chromebookの全体像
Chrome
Extention
Android-apk *BSD
ChromeOS
U-boot
Coreboot
SeaBIOS
Linux Linux (ブートローダ)
Windows
ディストリ
MacOSX
ビューション
(x86のみ)
3
PC市場の中のChromebook
$1000
Google
グラス
Mac
book
Mac
PC
$500
Windows
PC
スマート
$200 ウォッチ
ChromeBox
Android Stick
1ボードPC
RaspberryPi
$100
デスクトップPC
iPhone
iPad
Android
Android
スマート Windows
フォン
Tablet
中華パッド
Windows
ノートPC
Chromebook
$179~$350
モバイルPC
0インチ
6インチ 10インチ
画面サイズ
4
5
ChromeOSの仕組み
●
ファームウェアから4つのブートローダがあり、切り替えて
Kernelを起動する。XからSingle x-clientとして
Chromeを使う構成
Web App
Web Site
JavaScrpit
Extention
Flash
Html5 / Webkit
Window Manager
Chrome
X + GraphicLibrary
System Library
Linux Kernel
Recovery Firmware
Verified boot
Fast boot Path
Bootloader
Customized Firmware(U-boot, Coreboot,SeaBIOS)
Hardware
参考出展:Introduction to chrome os
Linuxインストール主な流れのイメージ
6
ChromebookにLinuxディストリをインストールする
DeveloperModeで再起動
リカバリディスクをUSBに作成
chromebookのデータをバックアップする
ChrUbuntu
DeveloperModeで起動
しCUIでブート設定変更
ChrUbuntuスクリプトを
実行してUSB、SD
にUbuntuをインストール
再起動してUSB、SDから
ChrUbuntuを起動
No
Crouton,chrUbuntu使う?
Yes
No
Crouton使う?
Yes
Linuxディストリ、
FreeBSD
ブートローダとドライバ、
設定ファイルをコンパイル
インストールするUSB,SD
のパーティション作成
croutonスクリプトをダウンロード
chroot環境か汎用ARM
イメージとKernelを
入れ直してUSB,SD作成
端末からcroutonを実行してインストール
DeveloperModeで起動
しCUIでブート設定変更
「ctl+Alt+Shift+←」でスクリーン切替
起動時、スクリプトで
U-Bootの起動設定変更
Linuxディストリが起動
Developer Modeで起動
●
●
●
●
7
ChromeOSのDeveloperModeはセキュリティ機能をアンロックし内部アクセスする機能。
ChromeOSを色々遊ぶ為にはDeveloperModeに切替が必須。
DeveloperModeは電源を切って「Esc」+「リフレッシュ(F4)」+「電源ボタン」を押します。
これはChromebookで言ういわゆる強制リセットというそうです。
リカバリモードに入りますので、「Ctrl」+「D」→「Enter」を押して10秒くらいするとビープ音
がしてデベロッパーモードに以降します。
DeveloperModeで起動すると、内部のデータはリセットされるのでリカバリディスク作成と
データのバックアップが必要。
リカバリディスクの作成はChromebrowserのアドレスバーから
chrome://imageburner
と入力してUSBかSDにインストール
参考出展:The Chromium Projects Developer Mode
Chrome上リカバリディスク作成
DeveloperMode起動
Crouton
●
●
●
●
ChRomium Os Universal chrooT envirONmentの略。
作者はGoogleの開発者、David Schneider氏。
UbuntuとDebianに対応したchroot自動化ツール https://goo.gl/fd3zc
「ctl+alt+t」でターミナルを表示させ、「shell」を起動させ端末から使用
sudo sh ~/Downloads/crouton -t xfce
githubからメインスクリプトを落としてchroot環境をダウンロードする仕組み
/mnt/stateful_partition/crouton/(ディストリバージョン)にchroot作成
Chromeブラウザ上ターミナル
対応Ubuntu、Debianバージョン
Recognized debian releases:
potato* woody* sarge* etch* lenny* squeeze* wheezy jessie sid
Recognized kali releases:
kali
Recognized ubuntu releases:
warty* hoary* breezy* dapper* edgy* feisty* gutsy* hardy* intrepid* jaunty*
karmic* lucid* maverick* natty* oneiric* precise quantal* raring* saucy*
trusty utopic*
Releases marked with * are unsupported, but may work with some effort.
Crouton Window Extention
8
ChrUbuntu
●
●
●
●
9
Ubuntuに対応したデュアルブート&SD USB自動化インストールツール。
作者はGoogleの開発者、Jay Lee氏。
ChromeOSのLinux Kernelとドライバモジュールをそのまま使用する方式。
x86対応でARMでは正式対応していない。動作しない機種もあるので注意。
「ctrl+alt+→キー」を押すと、Developer ConsoleというCUIの画面に切替え
Ubuntuをインストールする仕組み。
curl -L -O http://goo.gl/9sgchs; sudo bash 9sgchs(34v87 /dev/mmcblk1)
パーティションを切り分けて
curl -L -O http://goo.gl/9sgchs; sudo bash 9sgchs
ブートする際にOSをChromeOSとUbuntuを「ctl+L」で切り替えて使用
githubからメインスクリプトを落としてchroot環境をダウンロードする仕組み
通常にUbuntuが起動するが、起動が手動切替えで若干時間がかかる方式。
参考出展:Chromebooks and Chrome OS
ARMブートローダの仕組みとx86比較
10
ARMの場合、FlashROMからRAMにブートローダを転送し、Kernelと
rootfsを読み込む構成です。ROMに書き込んでるブートローダは
「ファームウェア」と呼ぶそうです。Androidの場合、Unlockが必要です。
種類
x86~
Linux
ROM
RAM
BIOS
デバイス認識
ブートディスク選択
MBR
(ディスク)
GRUB
LILO他
Kernel
Kernel
ドライバ
init
Daemon
他
ログイン
CUI
Xorg
特徴
BIOSと
DISKブー
トロー
ダー構成
ARM
Android
デバイス
Dalvik
Kernel
初期化
Kernel
Daemon
Kernel
仮想マシン
rootfs
ドライバ
ドライバ
コンテキスト
転送
Android
読み込み rootfs起動
RAM転送
マネージャ
GUI
MLO Android ブートローダー(ROM)
Zygote
ブート
ローダー
のUnlock
が重要
x86Chrome
book
初期化
ドライバ
RAM転送
ブート
ローダー
以降は共
通
Kernel
転送
Kernel
rootfs
読み込み
Kernel
ドライバ
Daemon
他
CUI
Xorg
CoreBoot ブートローダー(U-boot、SeaBIOS)
ARMLinux
ディストリ
Chrome
book
初期化
Kernel
Kernel
Kernel
rootfs
ドライバ
転送
読み込み ドライバ
RAM転送
MLO ブートローダー(U-boot他)
Daemon
他
CUI
Xorg
ブート
ローダー
以降はx86
と同じ
Linuxディストリ、FreeBSD入替え
11
●FreeBSD
●
Kernelを移植したソースコードをコンパイル
●
インストールするUSB、SDのパーティション作成
●
U-Bootのパーティション設定とKernel、Rootパーティションの設定
●
ChromebookをDeveloperModeで起動。ログイン前にCUIに移動。
USB、SDブート出来る様に設定変更。
localhost ~ # crossystem dev_boot_usb=1
●
cgptでUSB、SDのパーティションテーブル設定
●
再起動してU−Bootの設定。OSを起動させる
●OpenSuse
●
●
もうひとつの方法ではChrUbuntuの仕組みで同様にインストールします。
ChromebookをDeveloperModeで起動。ログイン前にCUIに移動。
USB、SDブート出来る様に設定変更。
localhost ~ # crossystem dev_boot_usb=1
⇒Crouton型とChrUbuntu型の両方インストール可能
参考出展:FreeBSD on Samsung Chromebook "SNOW" model XE303C12
HCL:ARMChromebook
ARM ChromebookのMainline Kernel
1、U-bootをコンパイルしてインストール
・パーティションを作る
1st partition: kernel partition with nv u-boot.
2nd partition: boot partition (must be formatted as FAT32 or Ext2).
3rd partition: root partition.
・U-bootをコンパイル
wget -O - http://commondatastorage.googleapis.com/chromeoslocalmirror/distfiles/nv_uboot-snow.kpart.bz2 | bunzip2 >
nv_uboot.kpart
/Kernel
dd if=nv_uboot.kpart of=/dev/mmcblk1p1
cgpt add -i 1 -S 1 -T 5 -P 10 /dev/mmcblk1
2、Mainline Kernelをコンパイルしてインストール
/git clone --depth 1 https://github.com/linux-exynos/linux.git -b dtsconfig linux
●
●
●
cd linux
make exynos_defconfig
make menuconfig
mount /dev/mmcblk1p2 /mnt/externcp arch/arm/boot/
{uImage,dts/exynos5250-snow.dtb} /mnt/extern
umount /mnt/extern
mount /dev/mmcblk1p3 /mnt/extern
INSTALL_MOD_PATH=/mnt/extern make modules_install
umount /mnt/extern
参考出展:ARM Chromebook/Mainline Linux kernel
12
KVMもChromebookで出来るそうな
●
13
まだ試していませんが、一応KVMもChromebookで動作します
仮想化OS環境もインストールできる様です
参考出展:KVM virtualization on ARM Chromebook laptop
Windows、MacOSX(x86のみ)
●
●
●
14
試していませんが、C720でUSBインストールしてWindowsとMacOSXが動いた
と動作報告あり。ドライバが動作しないそうなので実用性はないです。
あくまで実験用とコメントされていました。
WindowsやMacOSXのインストールはブートローダーでSeaBIOS対応機種のみです。
Windows
1、Windows8.1のブータブルUSBを作成
2、C720のDeveloperModeにし、Legacybootで起動する
3、「Ctl+L」キーでUSBから起動してWindows8.1をインストール
4、インストール中は全てのドライバーをインストールしない。動作しなくなる。
5、インストール終了後、Windows8.1を起動(勿論各種ドライバは動作しない)
MacOSX
OSx86の手法を用いてインストールするそうです。
こちらもWindows8.1同様にドライバが動作しないそうです。
でもドライバ足りないから使い物にならね?
Acerの掲示板にWindows8の
ドライバよこせと苦情多数(ヒドイ)
動かんぞー
15
16
OSC名古屋、京都、香港OSC、台湾OSDC
●
●
●
●
OSC東京、名古屋、京都、香港OSC、台湾OSDCに出展予定
内容:OSC東京Spring ChromebookでLinux 45分バージョン
OSC名古屋、京都 未定
海外 ARMモバイル機色々
OSC東京Spring 2月28日(土) 10:00~明星大学Place1
OSC名古屋 5月23日(土)予定
OSC京都 8月?予定
台湾OSDC 4月?日予定
香港OSC 6月28日(土) 時間調整中
台湾COSCUP 8月?予定
質問、ご要望はブースまで是非気軽にお聞き願います。
まだ分からない事沢山あります、ゴメンナサイ。
技術的な話題や議論、雑談を含め何でも。
講演資料は会場でも配布しております。
楽しみにお待ちしております。
17
過去の参考文献
18
今回の重要な参考文献
19
ARM Linuxの分類
Bootloader
Kernel
Android
FirefoxOS
組み込み
Linux
Linux
ディストリ
ビューション
ChromeOS
20
Das U-Boot解説
●
ARM他で良く使われている高性能ROMブートローダ
●
2010年頃からRedbootの代替としてメジャーに
●
●
起動ディスクとして多数のフォーマット、ストレージに対応している強
みあり。C言語で作成。CPUとメモリマップを直接指定、理解が必要。
Linuxの場合は、mkimageコマンドでKernelをuImage等に変換。
圧縮してフラッシュROM焼きしてROMから起動。メモリに展開。
●
第一パーティションにMLOと/boot/を置く
●
rootfsをext3などに置く
●
Kernelから起動
CPU
ROM
MLO
bootloader
実行
Kernel
rootfilesystem
リセット
RAM
メモ
(メモリ)
リ
Kernel
転送 rootfilesystem
リセット
クロック指定
ROMからメモリ転送可能
bootloader
デバイス認識
(ドライバ)
ディスク
再転送可能
MBR
(ディスク)
Grub
Kernel
rootfilesystem
OS起動
参考
リセット
U-Boot ユーザーズマニュアル