ChromiumOSをインストールする

chromebookではなくwindowsがインストールされていたzenbookにChromiumOSを インストールしてみました。

すでにビルド済みのChromiumOSのイメージからUSBイメージを作成する方法も あるようですが、今回はUbuntu 14.04 LTS上でchromiumをビルドしてUSBイメー ジを作成し、そのUSBイメージを用いてインストールするようにします。

 

1前準備

ChromiumOSのページに記載されているPrerequisitesで指定されている項目を 実施します。同じページにUSBイメージを作成する手順も記載されております。 CELFのページにChroniumについてよくまとまった資料が公開されております。

1.1必要なパッケージ

ソースコード取得用のパッケージをインストールします。

sudo apt-get install -y git-core gitk git-gui subversion curl

1.2 depot_tools

cros_sdkやrepo等のコマンドが含まれるツール群です。ディレクトリをPATH に追加します。

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=<path-to>/depot_tools/:$PATh

1.3sudoのtty_ticketsフラグ

sudoのtty_ticketsフラグをオフにします。tty_ticketsとはターミナル単位 でsudoの認証が必要になるフラグです。私の場合、NOPASSWDをsudoグループ に設定していた為、tty_ticketsフラグをオフにしないでも上手く動作しま した。

%sudo   ALL=(ALL:ALL) NOPASSWD: ALL

NOPASSWDが好ましくない環境の場合はchromiumのページに記載されている手 順でtty_ticketsフラグをオフにしてください。

2ChromiumOSのビルド

 

2.1ソースコードの取得

ChromiumOSのソースコードをrepoで取得します。 私の環境では1時間ほどかかりました。

$ mkdir chromiumos
$ cd chromiumos
$ repo init -u https://chromium.googlesource.com/chromiumos/manifest.git -b stabilize-6297.B
$ repo sync

repoのブランチでstabilize-6297.Bを指定してますが、release-xxx等でも 良いのかもしれません。masterはビルドが失敗したり、HDD起動ができない 場合があったため、ブランチを指定してます。

https://chromium.googlesource.com/chromiumos/manifest.git

2.2ボードの設定

ボードを設定します。以下はx86_64向けのボードの設定です。

$ export BOARD=amd64-generic

ボードの設定はsrc/overlaysディレクトリ配下に一覧があるようです。 beagleboneのようにボード名が明確になっているものもあれば、 ppcle-32-genericのように、PowerPC Little Endian向けという汎用的な設 定もあるみたいです。

$ ls src/overlays/
README                      overlay-ppcle-32-generic
WATCHLISTS                  overlay-ppcle-64-generic
helloworld                  overlay-puppy
inherit-review-settings-ok  overlay-quawks
overlay-amd64-generic       overlay-rambi
overlay-amd64-host          overlay-raspberrypi
<snip>

2.3パッケージのビルド

パッケージをビルドします。

$ cros_sdk -- ./build_packages --board=${BOARD}

chromeブラウザのビルドに時間が掛かりました。私の環境では10時間ほど。 ブランチを指定せずにmasterブランチをビルドした場合、chromeブラウザは ダウンロードされるのか、ビルドは1時間で済みました。

2.4イメージの作成

イメージを作成します。devを付けることでdeveloper modeのツール群をイ メージに含めるようにします。私の環境では10分ほどかかりました。

$ cros_sdk -- ./build_image --board=${BOARD} dev

作成されたChromiumOSのイメージは2.5GByteほどある為、それ以上のサイズ のUSBメモリが必要となります。

$ ls -lh src/build/images/amd64-generic/latest/chromiumos_image.bin
-rw-r--r-- 1 <me> 5000 2.5G 10月 16 18:28 src/build/images/amd64-generic/latest/chromiumos_image.bin

2.5USBメモリへの書き込み

USBメモリに書き込みます。BUFFALO社製のUSBメモリを刺している場合は以 下の通りになりました。私の環境では10分ほどかかりました。

$ cros_sdk -- cros flash --board=${BOARD} usb://
18:33:59: INFO: Preparing to image the removable device
Removable device(s) found. Please select/confirm to continue:
  [0]: BUFFALO USB Flash Disk 7.5G
Enter your choice to continue [0-0]: 0
18:34:01: INFO: Starting local devserver to get image path...

3ChromiumOSのインストール

 

3.1USBからの起動

  • BIOSの設定でノートPCの起動デバイスをUSBメモリにします。
  • Chromeの画面が表示され、言語、キーボード、LANの設定をします。
  • Googleアカウントを入力します。

以上でLive USB環境なChromiumOSが起動します。 また、カーネルのバージョンは3.14でした。

3.2HDDへインストール

ctrl-alt-tを入力するとcroshというブラウザ上で動作する簡易なシェルが 起動します。 crosh上でsshクライアントを動作させたり、HDDへのインストールが実行で きます。crosh上でshellというコマンドを呼ぶことで、Unix/Linuxライクな シェルが起動します。

crosh> shell
chronos@localhost / $ cat /proc/partitions 
major minor  #blocks  name

   7        0     299796 loop0
   8        0  117220824 sda
   8        1     512000 sda1
   8        2  116707328 sda2
 254        0    1253376 dm-0
   8       16    7831552 sdb
   8       17    1048576 sdb1
   8       18      16384 sdb2
   8       19    1320960 sdb3
   8       20      16384 sdb4
   8       21       2048 sdb5
   8       22          0 sdb6
   8       23          0 sdb7
   8       24      16384 sdb8
   8       25          0 sdb9
   8       26          0 sdb10
   8       27       8192 sdb11
   8       28      16384 sdb12
 254        1     299796 dm-1
 253        0    5778524 zram0

私の環境ではHDDが/dev/sda、USBが/dev/sdbとして認識されました。 HDDに結び付けられた/dev/sdaへChromiumOSをインストールします。

crosh> install /dev/sda
initctl: Unknown instance: 
This will install from '/dev/sdb' to '/dev/sda'.
This will erase all data at this destination: /dev/sda
Are you sure (y/N)? y
1+0 records in
1+0 records out
512 bytes (512 B) co
<snip>
Itallation to '/dev/sda' complete.
Please shutdown, remove the USB device, cross your fingers, and reboot.

cross your fingersってジョークなのか、タッチパッドのモーションなのか 悩んだのですが、「成功を祈る」みたいな意味だそうです。 右下の再起動してHDDから起動します。

3.3HDDからの起動

再度、以下の設定をします。

  • Chromeの画面が表示され、言語、キーボード、LANの設定をします。
  • Googleアカウントを入力します。

3.4パーティションと容量

HDDにインストール後のパーティションは以下の通りです。

localhost ~ # fdisk /dev/sda

Welcome to fdisk (util-linux 2.25.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0649BFE5-DE16-3547-99E2-F72320B8F1B7

Device       Start       End   Sectors   Size Type
/dev/sda1  8671232 234405887 225734656 107.7G Microsoft basic data
/dev/sda2    20480     53247     32768    16M ChromeOS kernel
/dev/sda3  4476928   8671231   4194304     2G ChromeOS root fs
/dev/sda4    53248     86015     32768    16M ChromeOS kernel
/dev/sda5   282624   4476927   4194304     2G ChromeOS root fs
/dev/sda6    16448     16448         1   512B ChromeOS kernel
/dev/sda7    16449     16449         1   512B ChromeOS root fs
/dev/sda8    86016    118783     32768    16M Microsoft basic data
/dev/sda9    16450     16450         1   512B ChromeOS reserved
/dev/sda10   16451     16451         1   512B ChromeOS reserved
/dev/sda11      64     16447     16384     8M unknown
/dev/sda12  249856    282623     32768    16M EFI System

ユーザが使うデータはMicrosoft basic dataというパーティションに保存さ れるようになっているようです。インストール直後は839MByte程度のデータ が格納されておりました。

chronos@localhost / $ df -h /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1  106G 839M 100G  1%  /home

よって最少インストールの容量は5GByte程度あれば良いことになります。

3.5日本語キーボードの設定

Live USB環境でもそうだったのですが、キーボード配列を日本語に設定した にも関わらずUSキーボード配列として認識されてしまいました。 言語と入力の設定からJapanese Keyboardを選択します。

4パッケージの追加

write protectionの解除が必要で、解除はコマンドで可能なのですが、 再度write protectionを有効にする方法がよく分かりませんでした。 実験的に使う場合はいいですけど、解除しない方がいいかもしれません。

4.1write protectの解除

chromeosをインストールしたデバイスでwrite protectionを解除します。

$ /usr/share/vboot/bin/make_dev_sshd --remove_rootfs_verification --partitions 2 --force
$ reboot

再起動後にremount可能です。

$ mount -o rw,remount /

4.2.ssh/authorized_keysの設定

rootの.ssh/authorized_keysに、chromeosをビルドしたホスト上の cros_deployで使用するssh公開鍵を設定することで、cros_deploy経由で パッケージを追加できるようになります。

$ cros_sdk $ cros deploy –private-key <公開鍵> <ターゲットのIP> <パッケージ>

–private-keyを使用しない場合、testing_rsaの鍵が使われます。

ちなみに上記手順でインストールした場合はqemacsとscreenくらいはインス トールされております。

5Chrome Remote Desktop

chromiumos側からubuntu 12.04にリモート接続しようと試してみたのですが、 ubuntu 12.04にdebパッケージをインストールしてもアクセスコードの生成 まで進まないです。ubuntu 14.04ではdebパッケージがそもそもすんなりイ ンストールできない。

現状だとchromiumosを使うメリットがないというのが正直なところです。 DDNS等を使ってリモート接続するならWindows/Mac/Linuxで十分ですし。