Chromebook
この記事では Acer, HP, Samsung, 東芝, Google によって作られた Chromebook ノートパソコンで Arch を動かす情報を提供しています。現在はページを改訂して以下のリストのようにモデルごとのページを作成しています。
目次
- 1 イントロダクション
- 2 Chromebook 機種一覧
- 3 インストール
- 4 インストール後の設定
- 5 ファームウェア書き込み保護
- 6 カスタムファームウェア
- 7 既知の問題
- 8 参照
イントロダクション
レガシーブート
最近の 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 機種一覧
ハードウェアの比較表
発売日 | メーカー | モデル | プロセッサ | RAM | ストレージ | アップグレード | 画面 | 解像度 | 重量 | SeaBIOS | 所見 |
---|---|---|---|---|---|---|---|---|---|---|---|
2010年12月 | 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) |
カスタムファームウェアで利用可能 | |||
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 を使う方が賢明でしょう。
インストール
一般的なインストール手順:
- デベロッパーモードを有効にする。
- SeaBIOS のある Chromebook:
- レガシーブート / SeaBIOS を有効化する。
- SeaBIOS をデフォルトに設定 (必須ではありませんが推奨。書き込み保護を無効にする必要があります)。
- SeaBIOS のない Chromebook:
- カスタムファームウェアに書き換え。
- インストールメディアを準備。64ビットのメディアを手動で作成するには他の Linux マシンが必要です。
- Arch Linux インストールメディアを起動して Arch をインストール。
デベロッパーモードの有効化
ChromeOS の中からスーパーユーザーシェルにアクセスするには デベロッパーモード が必要です。SeaBIOS での起動を許可するなど、システムに変更を加えるために有効化は必須になります。
デベロッパーモードに入るには:
- Chromebook を起動します。
Esc + F3 (Refresh)
キーを押しながら、Power
ボタンを押して下さい。これでリカバリーモードに入ります。Ctrl + D
を押して下さい (プロンプトは出ません)。確認がされてから、システムは状態を初期化してデベロッパーモードを有効にします。
スーパーユーザーシェルにアクセス
デベロッパーモードに移行した後は、スーパーユーザーのプロンプトを表示する必要があります。スーパーユーザーシェルのアクセス方法は 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 を起動できます。
以上で Chromebook の SeaBIOS の有効化が完了です。SeaBIOS をデフォルトに設定しない場合は Arch Linux のインストールに進むことができます。
デフォルトで SeaBIOS を起動
デフォルトで SeaBIOS を起動するには、Chrome OS で set_gbb_flags.sh を実行する必要があります (Chrome OS に初めから入っています、Arch Linux では正しく動作しません)。
- ハードウェア書き込み保護を無効化。ファームウェア書き込み保護セクションのハードウェア書き込み保護の無効化を見て下さい。
- スーパーユーザーシェルで次を入力:
# sudo su
- ソフトウェア書き込み保護の無効化。
# flashrom --wp-disable
- 書き込み保護が無効化されているか確認。
# flashrom --wp-status
- 何もパラメータを付けずに
set_gbb_flags.sh
を実行。
# set_gbb_flags.sh
- 以下の出力がされたか確認、[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ビットのインストール
- gparted などで USB ドライブに新しく FAT32 パーティションを作成し
ArchLinux
というラベルを付けます。
- 新しいパーティションをマウント (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 インストーラのブートメニューが表示されるので、通常通りにインストールすることができます。
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 に設定します。
Arch Linux と Chrome OS の選択
システムを再起動してください。Ctrl + l
を押して SeaBIOS を起動してから Arch を起動するか Ctrl + d
を押して ChromeOS を起動します。
ここで SeaBIOS をデフォルトに設定することもできます (Chrome OS があるので後でいつでも出来ます)。
インストール後の設定
パッチのあたったカーネル
linux-chromebookAUR と linux-mainline-chromebookAUR には、Linux の上流ソースにはまだマージされていない、Chromebook のより良いサポートのための様々なパッチが含まれています。含まれているパッチは以下の通り:
- タッチパッドとタッチスクリーンのドライバーのサポート。
- TPM 関連の修正。標準のファームウェアでサスペンドから正しく復帰するために必要なカーネルモジュールパラメータの設定が必要なくなります。
- ログレベルの調整。ログに無駄な情報が流れないようにします。
これらのパッケージは追加の設定の必要をなくし、手動でモジュールをビルドしてインストールする手間が省けます。
上流ソースにパッチがマージされるたびにパッチのリストは小さくなっていくので、パッチのリストを見てパッケージが必要かどうか決めるのを推奨します。
パッチのあたったカーネルパッケージのインストール
- AUR からビルドするかビルド済みのパッケージをダウンロード (Yaourt を使用する場合は
/etc/yaourtrc
のTMPDIR
を/tmp
以外のどこか別のところにすると良いでしょう)。 - linux パッケージは削除してかまいません。
# pacman -R linux
- パッチのあたったカーネルパッケージをインストール。
# pacman -U linux*chromebook*.pkg.tar.xz
ビデオドライバー
Intel Graphics を見て下さい。
タッチパッドやタッチスクリーンのカーネルモジュール
カーネル 3.17 から、関連するパッチは全て上流のソースにマージされたので、core の linux パッケージでタッチデバイスはサポートされています。
タッチパッドやタッチスクリーンのサポートがない場合は linux-chromebookAUR や linux-mainline-chromebookAUR のパッチのリストを見て下さい。あなたの使っている Chromebook モデルに関連するパッチが存在したらそのパッケージをインストールしてください。そのようなパッチが見つからなくても焦る必要はありません。Chromium OS のソースには関連する変更が含まれており、Chromium OS はオープンソースなので、開発者はパッチの追加をリクエストすることができるはずです。
サスペンドの修正
以下はサスペンド機能を修正するための手順です。最新の 3.17 カーネルでもサスペンドの修正は要ります。プリインストールされている SeaBIOS や John Lewis のビルド済みカスタム ROM と linux-chromebookAUR を使用している場合、以下の修正は必要ありません。
他の方法も議論されており場合によってはそちらのほうが上手くいくかもしれません [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_touchpadAUR は全く使えません。
参照:
- 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 デーモンを使ってホットキーを設定することができます。sxhkdAUR の他に 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-chromebookAUR をインストールする方法もあります。詳しくは [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 を変更してください。
ファームウェア書き込み保護
ファームウェア (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 のスクリプトを使って書き込む
スクリプトの説明
John Lewis の getnflash_johnlewis_rom.sh
スクリプトは何をするのか
flashrom
の Chromium OS の32ビット版を自動でダウンロード。- 現在のファームウェアをバックアップ。
# ./flashrom --wp-disable
を実行してソフトウェア書き込み保護を無効化。- dmidecode で Chromebook の製品名を確認して適当なカスタムファームウェアをダウンロード。
- カスタムファームウェアを書き込み。
スクリプトは何をしないのか
- あなたに確認を取りません。
- ハードウェア書き込み保護が無効化されているか確認しません。
- 特定の Chromebook の下位モデルとカスタムファームウェアの互換性を確認しません。
まとめ
- ハードウェア書き込み保護を無効化してください。
- FAQ と John の Wiki ページを読みましょう。
- あなたの機種の Chromebook がサポートされているか確認してください。
- 特定の下位モデルがサポートしている機種の表に記載されているか確認して、なかったら Google+ の coreboot on Chromebook コミュニティでアドバイスを求めましょう。
Chrome OS でスクリプトを実行
- スーパーユーザーシェルにアクセス。
- Lewis のサイトの ROM ダウンロードページに書かれているコマンドを入力。
- スクリプトが終了したらシステムを再起動する前に外部ストレージにバックアップされたファームウェアをコピー。
以上でデバイスにカスタムファームウェアがインストールされたはずです。うまくいくように願いながら再起動しましょう。
Arch Linux のインストールの一環でファームウェアの書き込みを行ったときは、Arch Linux のインストールを続行してください。カスタムファームウェアでインストールメディアが正しく起動したら、ハードウェア書き込み保護は有効に戻してかまいません。
Arch Linux でスクリプトを実行
- 64ビット環境の Arch Linux では
pacman.conf
で Multilib リポジトリを有効にして lib32-glibc をインストールする必要があります。
# pacman -S lib32-glibc
- dmidecode をインストールしてください。
# pacman -S dmidecode
- Lewis のサイトの ROM ダウンロードページに書かれているコマンドを入力。
- スクリプトが終了したらシステムを再起動する前に外部ストレージにバックアップされたファームウェアをコピー。
以上でデバイスにカスタムファームウェアがインストールされたはずです。神の再来を願って再起動しましょう。
カスタムファームウェアで 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
元のファームウェアを書き込む
ハードウェア書き込み保護を無効化して flashrom を使って手動でファームウェアを書き込む方法を見てオリジナルのファームウェアのバックアップを書き込んで下さい。
Chromebook の文鎮化の復旧
必要なツール
- プログラム書き込み機。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