Chromebook

提供: ArchWiki
2014年12月18日 (木) 11:02時点におけるimported>Enonoymousによる版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

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

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

目次

イントロダクション

レガシーブート

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

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

SeaBIOS が存在しない機種

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

このページで説明しているインストール方法には、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 機種一覧

ハードウェアの比較表

警告: 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 を使う方が賢明でしょう。

インストール

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

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

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

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

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

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

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

  • Chromebook を起動します。
  • Esc + F3 (Refresh) キーを押しながら、Power ボタンを押して下さい。これでリカバリーモードに入ります。
  • Ctrl + D を押して下さい (プロンプトは出ません)。確認がされてから、システムは状態を初期化してデベロッパーモードを有効にします。
ノート: 白いブートスプラッシュ画面で 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 を起動できます。

ノート: プリインストールされている 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 では正しく動作しません)。

警告: GBB フラグを設定していないとバッテリーが空になったときにシステムが破損する可能性があります。Chrome OS が強制的にリカバリを行なって、内蔵ストレージの Arch Linux 環境は失うことになります。
警告: 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
ノート: 最近のバージョンの 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ビットのインストール
ノート: 64ビットの Arch Linux インストールメディア の最新版 (2013.10.01 より後) にはバグが存在するため (FS#40637)、公式イメージを使って64ビットのインストールをすることは現在不可能です。以下はイメージを修正して、正しくイメージを起動できるようにして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 インストーラのブートメニューが表示されるので、通常通りにインストールすることができます。

ノート: ここではブートローダーとして 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 に設定します。
ノート: 一部の人々が言っていることとは裏腹に、grub パーティションはディスクの一番最初のパーティションである必要はありません。どのみち既存の ChromeOS パーティションがあるため最初にするのは至難です。
Arch Linux と Chrome OS の選択

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

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

インストール後の設定

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

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

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

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

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

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

  • AUR からビルドするかビルド済みのパッケージをダウンロード (Yaourt を使用する場合は /etc/yaourtrcTMPDIR/tmp 以外のどこか別のところにすると良いでしょう)。
  • linux パッケージは削除してかまいません。
# pacman -R linux
# pacman -U linux*chromebook*.pkg.tar.xz

ビデオドライバー

Intel Graphics を見て下さい。

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

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

タッチパッドやタッチスクリーンのサポートがない場合は linux-chromebookAURlinux-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 ファイルがないか見て下さい。
  • KDESynaptiks などのタッチパッド設定ツールを使う。Synaptiks はメンテナンスがされておらず KDE 4.11 ではクラッシュすると書かれていますが、KDE 4.12.2 では問題なく動作します。別のユーティリティ、kcm_touchpadAUR は全く使えません。

参照:

ホットキー

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 が必要になります。

別の xbindkeys の設定

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

  • [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 を変更してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ハードウェア書き込み保護のネジ/スイッチ/ジャンパの場所や、無効化する方法についてはあなたが使っている機種の Chromebook の ArchWiki ページを見て下さい (Chromebook 機種一覧を参照)。ArchWiki にデバイスに関する情報がない場合は Information for Chrome OS DevicesCoreboot の 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 の下位モデルとカスタムファームウェアの互換性を確認しません。
まとめ
警告: カスタムファームウェアを書き込むときは、デバイスが文鎮化するかもしれないということを覚悟してください。そして文鎮化の対処法を見ておいて下さい。
Chrome OS でスクリプトを実行
ノート: ここにコマンドを記述しないのは、実際に実行する前にサイトにサクセスして実際にページを読んで欲しいからです。
  • スクリプトが終了したらシステムを再起動する前に外部ストレージにバックアップされたファームウェアをコピー。

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

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

Arch Linux でスクリプトを実行
  • 64ビット環境の Arch Linux では pacman.conf で Multilib リポジトリを有効にして lib32-glibc をインストールする必要があります。
# pacman -S lib32-glibc
  • dmidecode をインストールしてください。
# pacman -S dmidecode
ノート: ここにコマンドを記述しないのは、実際に実行する前にサイトにサクセスして実際にページを読んで欲しいからです。
  • スクリプトが終了したらシステムを再起動する前に外部ストレージにバックアップされたファームウェアをコピー。

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

カスタムファームウェアで 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 -V|grep 'Found' |grep 'flash chip'

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

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

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

Chromebook の文鎮化の復旧

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

必要なツール

  • プログラム書き込み機。Raspberry PiBus 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 が便利な理由)。

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

既知の問題

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

参照