chromebookではなくwindowsがインストールされていたzenbookにChromiumOSを インストールしてみました。
すでにビルド済みのChromiumOSのイメージからUSBイメージを作成する方法も あるようですが、今回はUbuntu 14.04 LTS上でchromiumをビルドしてUSBイメー ジを作成し、そのUSBイメージを用いてインストールするようにします。
Table of Contents
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起動ができない 場合があったため、ブランチを指定してます。
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で十分ですし。