Chromebook (日本語) - ArchWiki

# Chromebook (日本語)

関連記事

- ラップトップ
- インストールガイド
- ビギナーズガイド

Warning: この記事ではサードパーティ製のスクリプトなどを使用するため、ハードウェアやデータに修復不可能なダメージを与える可能性があります。自己責任で使用してください。

この記事では Acer, HP, Samsung, 東芝, Google によって作られた Chromebook ノートパソコンで Arch を動かす情報を提供しています。現在はページを改訂して以下のリストのようにモデルごとのページを作成しています。

## イントロダクション

### レガシーブート

最近の Chromebook には"レガシーブート"モードが存在し Linux や他のオペレーティングシステムを簡単に起動することができます。このレガシーブートモードは Coreboot の SeaBIOS ペイロードによって提供されています。Coreboot は Intel が搭載されている Chromebook に載っているファームウェアです (第一世代は除く)。SeaBIOS がディスクの MBR に起動する伝統的な BIOS のように振る舞い、そこから Syslinux や GRUB などの標準的なブートローダーを起動します。

SeaBIOS が載っている Chromebook では、Arch Linux のインストール手順にほとんど変更がなく、多少のマイナーな調整があるくらいです。

#### SeaBIOS が存在しない機種

古い機種、また最新機種の一部には、ファームウェアに SeaBIOS が付いていません。SeaBIOS が存在しないデバイスに Arch Linux をインストールする方法は3つあります:

- SeaBIOS が付属するカスタムファームウェアを書き込む。
- Chrome OS のカーネルとモジュールを使用する ChrUbuntu を使う。
- 自分でカーネルをビルドして署名する。[1] や [2] を参照。

このページで説明しているインストール方法には、SeaBIOS がない機種でも、カスタムファームウェアを書き込むことにより Arch Linux をインストールする方法を記載しています。

### 第一世代の Chromebook

Chromebook の第一世代 (Google Cr-48, Samsung Series 5 500, Acer AC700) は Coreboot ファームウェアではなく Insyde H2O ファームウェア を使用しています。第一世代のデバイスに Arch Linux をインストールする方法は3つあります:

- H2C カスタムファームウェアを書き込み (Google Cr-48 のみで利用可能) 他の UEFI ラップトップと同じように Arch をインストール。
- Chrome OS のカーネルとモジュールを使用する ChrUbuntu を使う。
- 自分でカーネルをビルドして署名する。[3] を参照。

### ファームウェア書き込み保護

全ての Chromebook にはファームウェア書き込み保護が存在します。インストールの途中で (GBB フラグを更新したりカスタムファームウェアを書き込むために) 書き込み保護を無効化する必要があるかもしれないので、注意しておいてください。

詳しくはファームウェア書き込み保護を見て下さい。

### 事前注意事項

- Arch をインストールする前に Google ドライブに 100GB-1TB の空き容量が必要になります。これは ChromeOS (バージョン23以上) のためで、linux のためではありません。ドライブの容量を使って ChromeOS を同期・バックアップすることができます。
- 使用している Chromebook の ArchWiki ページを見て下さい、Chromebook 機種一覧を参照。
- あなたの使用しているデバイスの ArchWiki ページが存在しない場合は、デバイスに関する情報を収集して、もし Arch Linux のインストールが成功したのならば、ArchWiki ページを新しく追加することを希望します (SeaBIOS が載っているデバイスには Acer C720 が、SeaBIOS が載っていないデバイスには Acer C710 のページが良いサンプルとなるでしょう)。
- このガイドを隅々まで読み込んで、何か変更をする前に手順についてちゃんと確認を行なって下さい。

## Chromebook 機種一覧

### ハードウェアの比較表

Warning: SeaBIOS が利用できるからといって Linux とのデバイス互換性が存在したりプリインストールされている SeaBIOS が正しく動作する保証はありません。デバイスを購入してしまう前に ArchWiki のページを見たり、その機種に関する Linux ユーザーの記事を探しましょう。

Chromebook 機種一覧
発売日 | メーカー | モデル | プロセッサ | RAM | ストレージ | アップグレード | 画面 | 解像度 | 重量 | SeaBIOS | 所見
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
2010年12月 | Google | Cr-48 | 1.66 GHz Intel Atom N455 | 2GB DDR3 | 16GB SSD | mSATA | 12.1 in (30.7 cm) | 1280x800 (16:10) | 3.8 lb (1.7 kg) | 第一世代では利用不可能 | H2C カスタムファームウェアが利用可能
2011年7月 | Samsung | Series 5 XE500C21 | 1.66 GHz Intel Atom N570 | mSATA | 3.06-3.26 lb (1.4–1.5 kg) | 第一世代では利用不可能 |
2011年7月 | Acer | AC700 | mSATA Mini | 11.6 in (29.5 cm) | 1366x768 (16:9) | 3.19 lb (1.4 kg) | 第一世代では利用不可能 |
2012年5月 | Samsung | Series 5 XE550C22 | 1.3 GHz Intel Celeron 867 1.6 Ghz Intel Core i5 2467M | 4GB DDR3 | mSATA | 12.1 in (30.7 cm) | 1280x800 (16:10) | 3.3 lb (1.5 kg) | カスタムファームウェアで利用可能 |
2012年10月 | Series 3 XE303C12 | 1.7 GHz Samsung Exynos 5250 | 2GB DDR3 | 16GB eMMC | No | 11.6 in (29.5 cm) | 1366x768 (16:9) | 2.43 lb (1.1 kg) | ARM では利用不可能 | Arch Linux ARM によってサポート
2012年11月 | Acer | C710 | 1.1 GHz Intel Celeron 847 1.5 GHz Intel Celeron 1007U | 2-4GB DDR3 | 320GB HDD 16GB SSD | SATA 2.5" 7,9.5mm | 3-3.05 lb (1.4 kg) | カスタムファームウェアで利用可能 |
2013年2月 | HP | Pavilion 14 Chromebook | 1.1 GHz Intel Celeron 847 | SATA 2.5" 7,9.5mm | 14 in (35.6 cm) | 3.96 lb (1.8 kg) | カスタムファームウェアで利用可能 | サービスマニュアル
Lenovo | ThinkPad X131e Chromebook | 1.5 GHz Intel Celeron 1007U | 4GB DDR3 | 16GB SSD | mSATA | 11.6 in (29.5 cm) | 3.92 lb (1.8 kg) | カスタムファームウェアで利用可能 |
Google | Chromebook Pixel | 1.8 GHz Intel Core i5 3427U | 4GB DDR3 | 32GB iSSD 64GB iSSD | No | 12.85 in (32.6 cm) | 2560x1700 (3:2) | 3.35 lb (1.5 kg) | Yes |
2013年10月 | HP | Chromebook 11 | 1.7 GHz Samsung Exynos 5250 | 2GB DDR3 | 16GB eMMC | No | 11.6 in (29.5 cm) | 1366x768 (16:9) | 2.3 lb (1.04 kg) | ARM では利用不可能 | Arch Linux ARM のサポートなし
2013年11月 | Chromebook 14 | 1.4 GHz Intel Celeron 2955U | 2GB DDR3 4GB DDR3 | 16GB SSD 32GB SSD | 42mm M.2 NGFF | 14 in ( 35.6 cm) | 4.07 lb (1.84 kg) | Yes |
Acer | C720/C720P Chromebook | 1.4 GHz Intel Celeron 2955U 1.7 GHz Intel Core i3-4005U | 42mm M.2 NGFF | 11.6 in (29.5 cm) | 2.76 lb (1.25 kg) | Yes |
2014年1月 | 東芝 | CB30/CB35 Chromebook | 1.4 GHz Intel Celeron 2955U | 2GB DDR3 | 16GB eMMC | No | 13.3 in (33.8 cm) | 3.3 lb (1.5 kg) | Yes |
2014年4月 | Dell | Chromebook 11 | 1.4 GHz Intel Celeron 2955U 1.7 GHz Intel Core i3-4005U | 2GB DDR3 4GB DDR3 | 16GB | No | 11.6 in (29.5 cm) | 2.9 lb (1.31 kg) | Yes | SeaBIOS にパッチが必要
2014年6月 | Lenovo | N20/N20P Chromebook | 2.1 GHz Intel BayTrail-M N2830 | 2GB DDR3 | 16GB eMMC | No | 11.6 in (29.5 cm) | 2.86 lb (1.3 kg) | No | カスタムファームウェアは存在しません
Asus | Chromebook C200/C300 | 2GB DDR3 4GB DDR3 | 16GB eMMC 32GB eMMC | No | 11.6 in (29.5 cm) 13.3 in (33.8 cm) | 2.5 lb (1.13 kg) 3.1 lb (1.4 kg) | No | カスタム ROM が必要 [4]
Lenovo | ThinkPad 11e Chromebook | 1.83 GHz Intel BayTrail-M N2930 | 4GB DDR3 | 16GB eMMC | No | 11.6 in (29.5 cm) | 3.1 lb (1.4 kg) | No | カスタムファームウェアは存在しません
ThinkPad Yoga 11e Chromebook | No | No | カスタムファームウェアは存在しません
Samsung | Chromebook 2 XE503C12/C32 | 1.9 GHz Exynos 5 Octa 5420 2 GHz Exynos 5 Octa 5800 | No | 11.6 in (29.5 cm) 13.3 in (33.8 cm) | 1366x768 (16:9) 1920x1080 (16:9) | 2.65 lb (1.2 kg) 3.06 lb (1.39 kg) | ARM では利用不可能 | Arch Linux ARM によってサポート
2014年7月 | HEXA | Chromebook Pi | 2.1 GHz Intel BayTrail-M N2830 | 32GB eMMC | No | 11.6 in (29.5 cm) | 1366x768 (16:9) | 2.6 lb (1.18 kg) | No | カスタムファームウェアは存在しません
2014年8月 | Acer | CB5-311 Chromebook 13 | 2.1 GHz Nvidia Tegra K1 | 2GB DDR3 4GB DDR3 | 16GB eMMC 32GB eMMC | No | 13.3 in (33.8 cm) | 1366x768 (16:9) 1920x1080 (16:9) | 3.3 lb (1.5 kg) | ARM では利用不可能 | Arch Linux ARM のサポートなし
2014年9月 | 東芝 | CB35 Chromebook 2 | 2.16 GHz Intel BayTrail-M N2840 | 16GB eMMC | No | 2.96 lb (1.34 kg) | No | カスタムファームウェアは存在しません
Acer | CB3-111 Chromebook 11 | 2.1 GHz Intel BayTrail-M N2830 | 2GB DDR3 | 16GB eMMC | No | 11.6 in (29.5 cm) | 1366x768 (16:9) | 2.4 lb (1.09 kg) | No | カスタムファームウェアは存在しません
2014年10月 | HP | Chromebook 14 G3 | 2.1 GHz Nvidia Tegra K1 | 2GB DDR3 4GB DDR3 | 16GB eMMC 32GB eMMC | No | 14 in (35.6 cm) | 1366x768 (16:9) 1920x1080 (16:9) | 3.79 lb (1.72 kg) | ARM では利用不可能 | Arch Linux ARM のサポートなし
Chromebook 11 G3 | 2.16 GHz Intel BayTrail-M N2840 | 16GB eMMC | No | 11.6 in (29.5 cm) | 1366x768 (16:9) | 2.8 lb (1.28 kg) | No | カスタムファームウェアは存在しません
Samsung | Chromebook 2 XE500C12 | 2GB DDR3 | No | 2.65 lb (1.2 kg) | No | カスタムファームウェアは存在しません

### ハードウェアの比較表の備考

- Bay-Trail-M モデル: 全ての機種で Coreboot の SeaBIOS ペイロードが存在しません。
- Bay-Trail-M モデル: メインラインカーネルが動作する SeaBIOS が載った Coreboot カスタムファームウェアの作成が成功した例はありません。既存の問題を解決しようという試みが行われています。詳しくは coreboot on Chromebooks Google+ コミュニティを見て下さい。
- Chromebook の内蔵 SSD をアップグレードするときはおそらく MyDigitalSSD M.2 NGFF SSD ドライブが最も人気のある SSD の一つです。Acer C720 で MyDigitalSSD SSD ドライブが動作しなくなったという報告が Arch フォーラム [5] [6] [7] やその他のウェブ上で多数寄せられています。万が一 SSD を MyDigitalSSD のモデルにアップグレードするときはシステムやデータを頻繁にバックアップすることを強く推奨します。また、他のブランドの SSD を使う方が賢明でしょう。

## インストール

Warning: SeaBIOS が存在しない Chromebook にインストールするにはカスタムファームウェアの書き込みが必要になります。カスタムファームウェアの書き込みはあなたのデバイスを文鎮化させてしまう可能性があります。自己責任で行なって下さい。
Note: 以下の情報は (SeaBIOS ペイロードの存在・不存在を問わず) Coreboot ファームウェアを使用する Chromebook 全てにあてはまるはずですが、機種によっては別段の設定が必要になることがあります。

一般的なインストール手順:

- デベロッパーモードを有効にする。
- SeaBIOS のある Chromebook:
  - レガシーブート / SeaBIOS を有効化する。
  - SeaBIOS をデフォルトに設定 (必須ではありませんが推奨。書き込み保護を無効にする必要があります)。
- SeaBIOS のない Chromebook:
  - カスタムファームウェアに書き換え。
- インストールメディアを準備。64ビットのメディアを手動で作成するには他の Linux マシンが必要です。
- Arch Linux インストールメディアを起動して Arch をインストール。

### デベロッパーモードの有効化

ChromeOS の中からスーパーユーザーシェルにアクセスするには デベロッパーモード が必要です。SeaBIOS での起動を許可するなど、システムに変更を加えるために有効化は必須になります。

Warning: デベロッパーモードを有効化するとデータが全て消去されます。

デベロッパーモードに入るには:

- Chromebook を起動します。
- `Esc + F3 (Refresh)` キーを押しながら、`Power` ボタンを押して下さい。これでリカバリーモードに入ります。
- `Ctrl + D` を押して下さい (プロンプトは出ません)。確認がされてから、システムは状態を初期化してデベロッパーモードを有効にします。

Note: 白いブートスプラッシュ画面で Chrome OS に入るには `Ctrl + D` を押して下さい (もしくはビープ音が鳴って起動するまで30秒待って下さい)。

### スーパーユーザーシェルにアクセス

デベロッパーモードに移行した後は、スーパーユーザーのプロンプトを表示する必要があります。スーパーユーザーシェルのアクセス方法は Chrome OS を設定したかどうかで変わります。

#### Chrome OS の設定をせずにスーパーユーザーシェルにアクセス

Chrome OS を設定しない場合は、`Ctrl + Alt + F2` を押せば (F2 は上段の"右"矢印です, →)、ログインプロンプトが表示されます。

- `chronos` をユーザー名として使って下さい、パスワードは聞かれません。
- `sudo bash` でスーパーユーザーになってください。

#### Chrome OS の設定をしてスーパーユーザーシェルにアクセス

Chrome OS を既に設定している場合は:

- `Ctrl + Alt + T` で crosh window を開いて下さい。
- `shell` コマンドで bash シェルを開いて下さい。
- `sudo bash` でスーパーユーザーになってください。

### SeaBIOS の有効化

あなたの Chromebook に SeaBIOS が載っていない場合、もしくはカスタムファームウェアをインストールしてみたい場合は、カスタムファームウェアのセクションに飛んで下さい。

以下は Coreboot のデベロッパーモード画面でプリインストールされている SeaBIOS にアクセスする方法です。

- スーパーユーザーシェルで以下を入力:

    # crossystem dev_boot_usb=1 dev_boot_legacy=1

- マシンを再起動。

これで白いブートスプラッシュ画面で `Ctrl + L` を押すことで SeaBIOS を起動できます。

Note: プリインストールされている SeaBIOS をずっと使い続けるつもりであり、SeaBIOS を起動のに毎回 `Ctrl + L` を押す必要があるのが鬱陶しいときは、デフォルトで SeaBIOS を起動するように Coreboot を設定することができます。この設定は Chrome OS の中から行う必要があり、(ハードウェアとソフトウェアの) 書き込み保護を無効化しなくてはなりません。後でリカバリインストールメディアを使って Chrome OS を再インストールする必要がなくなるので、ここで今すぐ設定するほうが良いでしょう。Chrome OS を捨てないつもりならば (Arch を外部ストレージにインストールするか、内部ストレージの中に Chrome OS と一緒にインストールする)、あとから SeaBIOS をデフォルトに設定できます。

以上で Chromebook の SeaBIOS の有効化が完了です。SeaBIOS をデフォルトに設定しない場合は Arch Linux のインストールに進むことができます。

#### デフォルトで SeaBIOS を起動

デフォルトで SeaBIOS を起動するには、Chrome OS で set_gbb_flags.sh を実行する必要があります (Chrome OS に初めから入っています、Arch Linux では正しく動作しません)。

Warning: GBB フラグを設定していないとバッテリーが空になったときにシステムが破損する可能性があります。Chrome OS が強制的にリカバリを行なって、内蔵ストレージの Arch Linux 環境は失うことになります。
Warning: GBB フラグを設定する前に書き込み保護を無効化しないと、ファームウェアの RW-LEGACY 部分 (SeaBIOS) が消去されシステムが起動しなくなるおそれがあります (Chrome OS のリカバリメディアで復旧させることができます)。set_gbb_flags.sh の最新バージョンでは書き込み保護を無効化しないと GBB フラグを設定できなくなっています。

- ハードウェア書き込み保護を無効化。ファームウェア書き込み保護セクションのハードウェア書き込み保護の無効化を見て下さい。

- スーパーユーザーシェルで次を入力:

    # sudo su

- ソフトウェア書き込み保護の無効化。

    # flashrom --wp-disable

- 書き込み保護が無効化されているか確認。

    # flashrom --wp-status

- 何もパラメータを付けずに `set_gbb_flags.sh` を実行。

    # set_gbb_flags.sh

Note: 最近のバージョンの Chrome OS はスクリプトを `/usr/share/vboot/bin/set_gbb_flags.sh` に移動しており、デフォルトではパスが通っていません ($PATH に含まれていない)。

- 以下の出力がされたか確認、[8] を参照。

    GBB_FLAG_DEV_SCREEN_SHORT_DELAY 0x00000001
    GBB_FLAG_FORCE_DEV_SWITCH_ON 0x00000008
    GBB_FLAG_FORCE_DEV_BOOT_LEGACY 0x00000080
    GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY 0x00000400

- SeaBIOS をデフォルトに設定。

    # set_gbb_flags.sh 0x489

- ソフトウェア書き込み保護を有効に戻す。

    # flashrom --wp-enable

以上で Chromebook は SeaBIOS をデフォルトで起動するようになります。Arch Linux のインストールに進んで下さい。デバイスが正しく起動したら、ハードウェア書き込み保護を有効に戻して下さい。

### カスタムファームウェアの書き込み

カスタムファームウェアのセクションに、カスタムファームウェアを書き込む方法が説明されています。

ファームウェアを書き込んだら Arch Linux のインストールに進んで下さい。

### Arch Linux のインストール

#### インストールメディアの準備

##### 32ビットのインストール

Arch Linux インストーラの USB ドライブを作成してください。

##### 64ビットのインストール

Note: 64ビットの Arch Linux インストールメディア の最新版 (2013.10.01 より後) にはバグが存在するため (FS#40637)、公式イメージを使って64ビットのインストールをすることは現在不可能です。以下はイメージを修正して、正しくイメージを起動できるようにして64ビットのインストールを可能にさせる手順です。

- gparted などで USB ドライブに新しく FAT32 パーティションを作成し `ArchLinux` というラベルを付けます。

Warning: ラベルがないと上手くいきません。

- 新しいパーティションをマウント (x は `sudo fdisk -l` で表示される適切な文字に、username はあなたのユーザー名に置き換えて下さい):

    # mount /dev/sdx1 /mnt/ -o uid=username,gid=users

- GRUB2 を USB ドライブにインストール:

    # grub-install --no-floppy --root-directory=/mnt /dev/sdx

- `/mnt/boot` に新しいディレクトリを作成 ('YYYYMMDD' は使用する ISO の年月日に置き換えて下さい):

    # /mnt/boot/archlinux-YYYYMMDD-dual

- ISO をマウント:

    $ mkdir ~/iso
    # mount -o loop archlinux-YYYY.MM.DD-dual.iso ~/iso

- マウントしたファイルを usb ドライブにコピー:

    $ cp -r ~/iso/arch/* /mnt/boot/archlinux-YYYYMMDD-dual

- `grub.cfg` ファイルを作成:

    /mnt/boot/grub/grub.cfg

    menuentry "Arch Linux 64 Bit" {
     linux /boot/archlinux-YYYYMMDD-dual/boot/x86_64/vmlinuz archisobasedir=/boot/archlinux-YYYYMMDD-dual archisolabel=ArchLinux
     initrd /boot/archlinux-YYYYMMDD-dual/boot/x86_64/archiso.img
    }

#### インストールメディアの起動

- USB ドライブを Chromebook に接続して、(SeaBIOS をデフォルトに設定していない場合) 白いブートスプラッシュ画面で `Ctrl + L` を押して SeaBIOS を起動します。
- `Esc` を押してブートメニューを表示して USB ドライブの番号を選択してください。

Arch Linux インストーラのブートメニューが表示されるので、通常通りにインストールすることができます。

Note: ここではブートローダーとして GRUB を選択し、パーティションスキームとして MBR または GPT を選択することができます。GPT を選択した場合は BIOS Boot Partition を忘れずに追加してください。既知の問題も参照。

Arch Linux のインストールが完了したらインストール後の設定を読んで下さい。

#### 別のインストール方法: Chrome OS に加えて Arch Linux をインストール

内蔵ドライブに Arch Linux と Chrome Os の両方をインストールすることも可能です。

##### ドライブの再パーティション

ドライブをパーティションするには、Chrome OS で ChruBuntu スクリプトの第一段階を実行します。ログインした後、`Ctrl + Alt + T` でシェルを開いて、`shell` を実行し、`cd ~/` でホームディレクトリに移動してください。そして、次のコマンドを実行します:

    curl -L -O http://goo.gl/9sgchs; sudo bash 9sgchs

別パーティションの容量をどうするか聞かれます。16GB の SSD なら 8GB が安全な数字です。9GB 以上だと動作しないかもしれません。

##### ファイルシステムの修正

上記のパーティションを行った後、システムを再起動してください。Chrome OS はファイルシステムの修復を行います。それが完了したら、ファイルマネージャを開いてウィンドウ右上の歯車をクリックしてディスク容量が減っていることを確認してください。

##### インストールプロセスの続行

インストールに移りますが、内蔵ドライブを全て消去して新しいファイルシステムを作成する代わりに、前のステップで Arch のために用意した既存の空きパーティションに Arch をインストールします。

インストールメディアを起動した後:

- `fdisk -l` コマンドを実行してドライブとパーティションを表示してください。内蔵ドライブを見つけたら ChrUbuntu スクリプトで指定したサイズと一致するパーティションの名前をメモします。
- `mkfs.ext4 /dev/sdxY` (xY はドライブ文字とパーティション番号に置き換えて下さい、例: `/dev/sda7`) を使って arch のファイルシステムを作成します。
- GPT に GRUB をインストールする手順に従って、gdisk を使って 1007kb のパーティションを作成しタイプを EF02 に設定します。

Note: 一部の人々が言っていることとは裏腹に、grub パーティションはディスクの一番最初のパーティションである必要はありません。どのみち既存の ChromeOS パーティションがあるため最初にするのは至難です。

##### Arch Linux と Chrome OS の選択

システムを再起動してください。`Ctrl + l` を押して SeaBIOS を起動してから Arch を起動するか `Ctrl + d` を押して ChromeOS を起動します。

ここで SeaBIOS をデフォルトに設定することもできます (Chrome OS があるので後でいつでも出来ます)。

## インストール後の設定

### パッチのあたったカーネル

linux-chromebook と linux-mainline-chromebook[broken link: package not found] には、Linux の上流ソースにはまだマージされていない、Chromebook のより良いサポートのための様々なパッチが含まれています。含まれているパッチは以下の通り:

- タッチパッドとタッチスクリーンのドライバーのサポート。
- TPM 関連の修正。標準のファームウェアでサスペンドから正しく復帰するために必要なカーネルモジュールパラメータの設定が必要なくなります。
- ログレベルの調整。ログに無駄な情報が流れないようにします。

これらのパッケージは追加の設定の必要をなくし、手動でモジュールをビルドしてインストールする手間が省けます。

上流ソースにパッチがマージされるたびにパッチのリストは小さくなっていくので、パッチのリストを見てパッケージが必要かどうか決めるのを推奨します。

#### パッチのあたったカーネルパッケージのインストール

- AUR からビルドするかビルド済みのパッケージをダウンロード (Yaourt を使用する場合は `/etc/yaourtrc` の `TMPDIR` を `/tmp` 以外のどこか別のところにすると良いでしょう)。
- linux パッケージは削除してかまいません。

    # pacman -R linux

- パッチのあたったカーネルパッケージをインストール。

    # pacman -U linux*chromebook*.pkg.tar.xz

- grub の設定を再生成。

### ビデオドライバー

Intel Graphics (日本語) を見て下さい。

### タッチパッドやタッチスクリーンのカーネルモジュール

カーネル 3.17 から、関連するパッチは全て上流のソースにマージされたので、core の linux パッケージでタッチデバイスはサポートされています。

タッチパッドやタッチスクリーンのサポートがない場合は linux-chromebook や linux-mainline-chromebook[broken link: package not found] のパッチのリストを見て下さい。あなたの使っている Chromebook モデルに関連するパッチが存在したらそのパッケージをインストールしてください。そのようなパッチが見つからなくても焦る必要はありません。Chromium OS のソースには関連する変更が含まれており、Chromium OS はオープンソースなので、開発者はパッチの追加をリクエストすることができるはずです。

### サスペンドの修正

Note: 起動直後はフタを閉じることによるサスペンドは動作しないことがあります。少し待って下さい。

以下はサスペンド機能を修正するための手順です。最新の 3.17 カーネルでもサスペンドの修正は要ります。プリインストールされている SeaBIOS や John Lewis のビルド済みカスタム ROM と linux-chromebook を使用している場合、以下の修正は必要ありません。

他の方法も議論されており場合によってはそちらのほうが上手くいくかもしれません [9] [10]。

Haswell Chromebook に含まれている標準の coreboot を使用している場合は、サスペンド・復帰サイクルを失敗させる原因である、EHCI_PCI と TPM モジュールを無効化してください。無効化する方法は複数あります。

#### パッチのあたったカーネルを使う

修正が含まれているパッチがあてられているカーネルを使用するならカーネルパラメータを追加する必要はありません。

#### カーネルパラメータを使う

GRUB の設定に以下を追加してください:

    /etc/default/grub

    GRUB_CMDLINE_LINUX_DEFAULT="tpm_tis.interrupts=0 modprobe.blacklist=ehci_pci"

それから grub の設定を再生成してください。

#### systemd を使う

以下の `cros-acpi-wakeup.conf` ファイルを作成してください:

    /etc/tmpfiles.d/cros-acpi-wakeup.conf

    w /proc/acpi/wakeup - - - - EHCI
    w /proc/acpi/wakeup - - - - HDEF
    w /proc/acpi/wakeup - - - - XHCI
    w /proc/acpi/wakeup - - - - LID0
    w /proc/acpi/wakeup - - - - TPAD
    w /proc/acpi/wakeup - - - - TSCR

`/etc/rc.d/rc.local` (存在しない場合は作成してください) の最後に以下の行を追加して EHCI USB の良くない処理をやめさせる:

    /etc/rc.d/rc.local

    echo 1 > /sys/devices/pci0000\:00/0000\:00\:1d.0/remove

次に、以下の `cros-sound-suspend.sh` ファイルを作成してください。ここでは Ath9k のバインド・アンバインドの行だけ載せています。問題が起こる場合は上のリンクにある他の方法を見て下さい。

    /usr/lib/systemd/system-sleep/cros-sound-suspend.sh

    #!/bin/bash

    case $1/$2 in
      pre/*)
        # Unbind ath9k for preventing error and full sleep mode (wakeup by LID after hibernating)
        echo -n "0000:01:00.0" | tee /sys/bus/pci/drivers/ath9k/unbind
        # Unbind snd_hda_intel for sound
        echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind
        echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind
        ;;
      post/*)
        # Bind ath9k for preventing error and and full sleep mode (wakeup by LID after hibernating)
        echo -n "0000:01:00.0" | tee /sys/bus/pci/drivers/ath9k/bind
        # bind snd_hda_intel for sound
        echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind
        echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind
        ;;
    esac

スクリプトは実行可能にしてください:

    # chmod +x /usr/lib/systemd/system-sleep/cros-sound-suspend.sh

この方法では GRUB の設定に `tpm_tis.interrupts=0` カーネルパラメータが必要です:

    /etc/default/grub

    GRUB_CMDLINE_LINUX_DEFAULT="quiet tpm_tis.interrupts=0"

それから grub の設定を再生成してください。

### 音声出力の修正

以下の設定を行うことでオーディオ関連の問題が解決するでしょう。`snd_hda_intel` モジュールインデックスの設定が一番役に立つようです。何も変更が必要ない可能性も高いです。

- `/etc/modprobe.d/alsa.conf` を作成。`index` は (HDMI ではなく) アナログ出力をデフォルトにして、`model` オプションはボードモデルにドライバーを通知して内蔵のマイクロフォンを利用可能にします (代わりに `model=alc283-sense-combo` を使うこともできます):

    /etc/modprobe.d/alsa.conf

    options snd_hda_intel index=1 model=alc283-dac-wcaps

- 以下の `~/.asoundrc` ファイルを作成:

    ~/.asoundrc

    # Standard
    pcm.!default {
      type hw
      card 1
      device 0
    }

    ctl.!default {
      type hw
      card 1
    }

    pcm_slave.slavej {
      pcm "hw:1"
      channels 2
      rate 44100
    }

    pcm.plugj {
      type plug
      slave slavej
    }

    # HDMI
    #pcm.!default {
      #type hw
      #card 1
      #device 3
    #}

    #ctl.!default {
      #type hw
      #card 0
    #}

- PulseAudio での Flash プラグインの音声を修正するには以下の `.asoundrc` ファイルを使用:

    ~/.asoundrc

    # Standard
    pcm.pulse {
      type pulse
    }

    ctl.pulse {
      type pulse
    }
    pcm.!default {
    type pulse
    #  type hw
    #  card 1
     # device 0
    }

    ctl.!default {
    type pulse
     # type hw
      #card 1
    }

    pcm_slave.slavej {
      pcm "hw:1"
      channels 2
      rate 44100
    }

    pcm.plugj {
      type plug
      slave slavej
    }

    # HDMI
    #pcm.!default {
      #type hw
      #card 1
      #device 3
    #}

    #ctl.!default {
      #type hw
      #card 0
    #}

### タッチパッドの設定

タッチパッドを設定する方法はいくつかあります:

- あなたが使っている Chromebook 機種の ArchWiki ページに (Chromebook 機種一覧を参照) タッチパッドの `xorg.conf.d` ファイルがないか見て下さい。
- KDE の Synaptiks などのタッチパッド設定ツールを使う。Synaptiks はメンテナンスがされておらず KDE 4.11 ではクラッシュすると書かれていますが、KDE 4.12.2 では問題なく動作します。別のユーティリティ、kcm_touchpad は全く使えません。

参照:

- Chromium OS のタッチパッド設定ファイル。使用しているタッチパッドのモデルは次を実行することで確認できます: `cat /proc/bus/input/devices`。
- Chromium OS タッチパッドドライバーの Linux への移植。

### ホットキー

Chromebook のファンクションキーは通常の F1-F10 としてカーネルに認識されますが、それぞれのキーの見た目にあうようにマッピングすることが可能です。また、`Delete, Home, End, PgUp, PgDown` を Chrome OS でマッピングされているように `Alt + : BackSpace, Right, Left, Up, Down` にするのも良いでしょう。

#### Sxhkd の設定

Sxhkd デーモンを使ってホットキーを設定することができます。sxhkd の他に amixer, xorg-xbacklight, xautomation が必要になります。

- `~/.config/sxhkd/sxhkdrc` の設定例は [11] を参照。

#### xbindkeys の設定

xbindkeys を使ってホットキーを設定する方法もあります。xbindkeys の他に amixer, xorg-xbacklight, xvkbd が必要になります。

- `~/.xbindkeysrc` の設定例は [12] を参照。
- 他の例は vilefridge の xbindkeys 設定を参照。

##### 別の xbindkeys の設定

Volchange (元は Debian ユーザーフォーラム に存在) で amixer を使うかわりに PulseAudio でボリュームを制御することができます。Volchange の他に xorg-xbacklight と xvkbd が必要になります。

- [13] からスクリプトをダウンロード
- 実行可能属性を付与

    $ chmod u+x ~/.local/bin/volchange

`~/.xbindkeysrc` が適合するように [14] を見て下さい。

#### xkeyboard-config にパッチをあてる

xkeyboard-config-chromebook をインストールする方法もあります。詳しくは [15] を参照。

### Power キーとフタの開閉によるスイッチの処理

#### logind の使用を無視する

設定をしなくとも、`systemd-logind` が power キーやフタの開閉によるイベントを処理します: power キーが押された時は電源を切り、フタが閉じられた時はサスペンドします。しかしながら、この挙動には少し問題があるかもしれません、power キーはキーボードの右上にある普通のキーであり間違って押してしまう可能性があるからです。

logind が power キーの押下やフタの開閉を無視するように設定するには、以下の行を `logind.conf` に追加してください:

    /etc/systemd/logind.conf

    HandlePowerKey=ignore
    HandleLidSwitch=ignore

logind を再起動すれば変更が適用されます。

Power キーやフタの開閉イベントは logind によって journald に記録されます。Power_Management (日本語)#ACPI_イベント を参照。

#### Gnome で無視する

gnome-tweak-tool をインストールして、Tweak Tool を開き Power の Power Button Action を変更してください。

## ファームウェア書き込み保護

Note: このセクションでは Chromebook における書き込み保護の基本的な知識を紹介するに留めます。ArchWiki はハードウェアのハックを載せるところではないので詳細は語りません。

ファームウェア (Coreboot とペイロード) は SPI チップ (通常 SOIC8) に保存されており、その記憶領域の一部は書き込み保護されています (ほとんどは Coreboot)。

書き込み保護を無効化するか保護領域を (0,0) に設定しないかぎり、ファームウェアの保護されてない領域に変更を行っても Chrome OS のリカバリメディアで修復することができます。

書き込み保護は二分されます: ハードウェアとソフトウェアです。

### ハードウェア書き込み保護

ハードウェア書き込み保護は開閉したときにソフトウェア保護の特殊なレジスタへの書き込みをふせぐ電気回路で、ハードウェア書き込み保護は直接的には特殊なレジスタしか保護していませんが、間接的にはファームウェアチップのデータも保護していることになります。

ハードウェア書き込み保護を無効化するには、ネジを取り外して、スイッチを押すかジャンパをショートさせる必要があります。

### ソフトウェア書き込み保護

ソフトウェア書き込み保護はファームウェアチップに保存されているデータが保護されているかどうかを決める特殊なレジスタで、保護データのアドレスの範囲も保持します。

### 書き込み保護を無効化する手順

書き込み保護を無効化するのに必要なことは:

- 特殊なソフトウェアレジスタのハードウェア書き込み保護を無効化する。
- 特殊なソフトウェアレジスタの値を変更してソフトウェア書き込み保護を無効化するか、保護するアドレスの範囲を変更してデータが保護されないようにする (開始と終末が0)。

結論: 一度ソフトウェア書き込み保護を無効化すると二度と有効にはなりません。たとえハードウェア書き込み保護を有効にしてもファームウェアチップの保護は行われません。

#### ハードウェア書き込み保護の無効化

ハードウェア書き込み保護のネジ/スイッチ/ジャンパの場所や、無効化する方法についてはあなたが使っている機種の Chromebook の ArchWiki ページを見て下さい (Chromebook 機種一覧を参照)。ArchWiki にデバイスに関する情報がない場合は Information for Chrome OS Devices や Coreboot の Chromebook ページ を見て下さい。

#### ソフトウェア書き込み保護の無効化

Chromium OS の `flashrom` はソフトウェア書き込み保護の特殊なレジスタを制御することができます。

- ソフトウェア書き込み保護の特殊レジスタの状態を読み込む:

    # flashrom --wp-status

- ソフトウェア書き込み保護を無効化または有効化:

    # flashrom --wp-disable

- ソフトウェア書き込み保護のアドレスの範囲を変更:

    # flashrom --wp-range 0 0

Chromium OS の `flashrom` に関する詳細や入手方法は、手動で flashrom を使うを見て下さい。

## カスタムファームウェア

### カスタムファームウェアを書き込む理由

#### メリット

- 最新版の SeaBIOS が追加される。
- SeaBIOS が載ってない機種の Chromebook に coreboot の SeaBIOS ペイロードが追加される。
- 起動時間が短縮される。
- デベロッパーモード画面がなくなる。
- VMX が有効になる。

#### デメリット

- あなたのデバイスが文鎮化する危険性。
- 標準の Chrome OS を起動できない (Arnold the Bat の Chromium OS ビルド をインストールすればスクリプトを使って完全な Chrome OS にアップグレードすることはできます)。
- 問題が発生することがあります [16]。

### カスタムファームウェアの書き込み

カスタムファームウェアを書き込む方法は2つあります:

- John Lewis のスクリプトを使う。適当なファームウェアを探す手間が省けます。
- 手動で `flashrom` を使う。この場合、自力でファームウェアを入手するか Coreboot のソース (公式 または Chromium OS のフォーク) からファームウェアをコンパイルする必要があります。

#### ハードウェア書き込み保護の無効化

ファームウェア書き込み保護セクションのハードウェア書き込み保護の無効化を見て下さい。

#### John Lewis のスクリプトを使って書き込む

Warning: スクリプトを実行する前にハードウェア書き込み保護を無効化してください。

##### スクリプトの説明

###### John Lewis の `getnflash_johnlewis_rom.sh` スクリプトは何をするのか

- `flashrom` の Chromium OS の32ビット版を自動でダウンロード。
- 現在のファームウェアをバックアップ。
- `# ./flashrom --wp-disable` を実行してソフトウェア書き込み保護を無効化。
- dmidecode で Chromebook の製品名を確認して適当なカスタムファームウェアをダウンロード。
- カスタムファームウェアを書き込み。

###### スクリプトは何をしないのか

- あなたに確認を取りません。
- ハードウェア書き込み保護が無効化されているか確認しません。
- 特定の Chromebook の下位モデルとカスタムファームウェアの互換性を確認しません。

###### まとめ

- ハードウェア書き込み保護を無効化してください。
- FAQ と John の Wiki ページを読みましょう。
- あなたの機種の Chromebook がサポートされているか確認してください。
- 特定の下位モデルがサポートしている機種の表に記載されているか確認して、なかったら Google+ の coreboot on Chromebook コミュニティでアドバイスを求めましょう。

Warning: カスタムファームウェアを書き込むときは、デバイスが文鎮化するかもしれないということを覚悟してください。そして文鎮化の対処法を見ておいて下さい。

##### Chrome OS でスクリプトを実行

- スーパーユーザーシェルにアクセス。
- Lewis のサイトの ROM ダウンロードページに書かれているコマンドを入力。

Note: ここにコマンドを記述しないのは、実際に実行する前にサイトにサクセスして実際にページを読んで欲しいからです。

- スクリプトが終了したらシステムを再起動する前に外部ストレージにバックアップされたファームウェアをコピー。

以上でデバイスにカスタムファームウェアがインストールされたはずです。うまくいくように願いながら再起動しましょう。

Arch Linux のインストールの一環でファームウェアの書き込みを行ったときは、Arch Linux のインストールを続行してください。カスタムファームウェアでインストールメディアが正しく起動したら、ハードウェア書き込み保護は有効に戻してかまいません。

##### Arch Linux でスクリプトを実行

- 64ビット環境の Arch Linux では `pacman.conf` で Multilib リポジトリを有効にして lib32-glibc をインストールする必要があります。

    # pacman -S lib32-glibc

- dmidecode をインストールしてください。

    # pacman -S dmidecode

- Lewis のサイトの ROM ダウンロードページに書かれているコマンドを入力。

Note: ここにコマンドを記述しないのは、実際に実行する前にサイトにサクセスして実際にページを読んで欲しいからです。

- スクリプトが終了したらシステムを再起動する前に外部ストレージにバックアップされたファームウェアをコピー。

以上でデバイスにカスタムファームウェアがインストールされたはずです。神の再来を願って再起動しましょう。

カスタムファームウェアで Arch Linux が問題なく起動したらハードウェア書き込み保護は有効に戻してかまいません。

#### 手動で flashrom を使う

上流の flashrom パッケージの使用は非推奨です。`--wp-disable` や `--wp-status` などのオペレーションが存在せず、外部的にプログラムの書き込みがされていないと Chromebook の ROM に正しくファームウェアを書き込めないからです (SOIC チップによって SPI を通して他のデバイスで書き込みする必要がある)。そのため ChromiumOS の `flashrom` を使用することが推奨されます。

##### Arch Linux 用の flashrom を入手

- 32ビットの静的リンクがされている Chromium OS 版の `flashrom` をダウンロードして、`pacman.conf` で Multilib リポジトリを有効にして lib32-glibc をインストール:

    # pacman -S lib32-glibc
    # wget --no-check-certificate https://johnlewis.ie/flashrom
    # chmod +x flashrom

`flashrom` の場所は `$PATH` に入っていないので、実行するにはコマンドの前に `./` を付ける必要があることを忘れないで下さい、例: `# ./flashrom`。

##### Chrome OS 用の flashrom を入手

Chrome OS には初めから `flashrom` が入っています。

##### flashrom の基本的な使い方

- ファームウェアチップに書き込む前にソフトウェア書き込み保護を無効化。

    # flashrom --wp-disable

- ファームウェアチップからファームウェアをバックアップ。

    # flashrom -r old_firmware.bin

- ファームウェアチップにファームウェアを書き込み。

    # flashrom -w new_firmware.bin

Tip: ファームウェアチップは次のコマンドを実行することで確認できます: `flashrom -V|grep 'Found' |grep 'flash chip'`。

### 元のファームウェアを書き込む

Note: 以下はデバイスが文鎮になっていないのが前提です。文鎮化してる場合はChromebook の文鎮化の復旧を見て下さい。

ハードウェア書き込み保護を無効化して flashrom を使って手動でファームウェアを書き込む方法を見てオリジナルのファームウェアのバックアップを書き込んで下さい。

### Chromebook の文鎮化の復旧

Note: このセクションでは文鎮化した Chromebook にファームウェアを書き込む手順の基本的な知識を紹介するに留めます。ArchWiki はハードウェアのハックを載せるところではないので詳細は語りません。

#### 必要なツール

- プログラム書き込み機。Raspberry Pi と Bus Pirate が対応していると flashrom wiki に載っています。`--wp-disable` と `--wp-status` フラグをサポートする Chromium OS バージョンの `flashrom` が使えるので Bus Pirate の方がベター。
- SOIC クリップが推奨されています。[17] を参照。
- メスのジャンパワイヤ。
- Chromium OS の `flashrom` を使いたい場合は別の Linux マシン (32ビットまたは64ビット) が必要です。

#### 文鎮化から復活する大まかな手順

- ジャンパワイヤをプログラム書き込み機と SOIC クリップに接続。
- SOIC クリップを ROM チップに接続。
- プログラム書き込み機で Linux が動作している場合 (Raspberry Pi)、spi モジュールを modprobe。
- プログラム書き込み機で Linux が動作していない場合、プログラム書き込み機を Linux マシンに接続。
- `flashrom` でファームウェアを書き込む。`--wp-disable` フラグを付けて `flashrom` を実行してソフトウェア書き込み保護を無効化する必要があります (Chromium OS の `flashrom` が便利な理由)。

#### 文鎮化回復について読むべき文章

- Flashrom の wiki の ISP, Bus Pirate, Raspberry Pi, SOIC8。
- Coreboot の wiki にある Chromebooks のページ。
- C720 を文鎮化から回復させる例: ガイド, 写真。

## 既知の問題

### Syslinux

`syslinux-install_update -i -a -m` を使って Syslinux でブータブルフラグを設定することはできません。 After setting the bootable flag manually in `fdisk` を使用して手動でブータブルフラグを設定した後、`syslinux-install_update -i -m` で Syslinux を MBR にインストールして SeaBIOS で Syslinux を起動しても、Syslinux は OS が見つけられないとエラーを出します。今は GRUB を使って下さい。

### Haswell GPU でのフリーズ

Haswell GPU では (Bay-Trail-M でもいくつか報告があります)、アプリケーションが一時的にハングアップしたり (復旧できたりできなかったりする)、低い確率で完全にシステムがフリーズする既知のバグが存在します (少なくともカーネル 3.16 から)。問題が発生する頻度はデスクトップ環境やアプリケーションによります。Chromium は Firefox よりも高い確率でフリーズし、Gnome は完全なシステムフリーズになりやすいようです。

このバグを抑えるカーネルパラメータがいくつか提案されています (ただし完全にはフリーズをなくすことはできません)。以下のカーネルパラメータを使用することについてカーネル開発者の公式の勧告はありませんし、カーネルパラメータを追加することで新しい問題が発生するかもわかりません。自己責任で使ってみて下さい:

    i915.modeset=1 i915.semaphores=0 i915.use_mmio_flip=1 i915.enable_ppgtt=1 drm.vblankoffdelay=1

## 参照

- BBS topic about the Acer C720 which include generic information on Haswell Based Chromebooks.
- Re-partitioning in Chrome OS [18], [19]
- Constantly updating list of Chrome OS devices
- Google Chromebook Comparison Chart

Category:

- Laptops (日本語)