Chrome OS デバイス

提供: ArchWiki
2015年11月5日 (木) 15:52時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:ノートパソコン en:Chrome OS devices it:Chromebook {{Related articles start}} {{Related|Chromebook}} {{Related|Chrome OS カスタムファー...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

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

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

目次

イントロダクション

レガシーブート

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

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

SeaBIOS が存在しない機種

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

  • 特定の機種では、ファームウェアのフラッシュメモリの RW_LEGACY にだけ SeaBIOS ペイロードを書き込むことができる場合があります (例: Acer C740, Acer C910, Google Chromebook Pixel 2)。Chrome OS の flashrom を使って手動で RW_LEGACY をアップデートしたり、John Lewis の flash_chromebook_rom.sh スクリプトによってサポートされていれば、スクリプトを使って SeaBIOS を書き込むことができます。この方法の利点は (RW_LEGACY 以外の) 標準のファームウェアは変わらないということです。
  • SeaBIOS が付属するカスタムファームウェアを書き込む。
  • ファームウェアのフラッシュメモリの BOOT_STUB に書き込む。この方法では SeaBIOS ペイロードを追加して、SeaBIOS をロードするようにファームウェアを書き換えます。完全にファームウェアを書き換えるよりも安全ではありますが、欠点が複数存在します (例: サスペンドや VMX に対応していない)。John Lewis の flash_chromebook_rom.sh スクリプトの Modify ROM to run SeaBIOS exclusively オプションです。
  • Chrome OS のカーネルとモジュールを使用する ChrUbuntu を使う。
  • 自分でカーネルをビルドして署名する。[1][2] を参照。

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

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

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

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

事前注意事項

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

Chromebook 機種一覧

Chromebook のページにハードウェアの比較表が載っています。SeaBIOS の有無やストレージの拡張ができるかどうかなどの情報も記載。

インストール

警告: 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 フラグを設定していないとバッテリーが空になったときにシステムが破損する可能性があります。dev_boot_usbdev_boot_legacy がデフォルトの値にリセットされ、Chrome OS が強制的にリカバリを行なって、内蔵ストレージの Arch Linux 環境を失うことになります。ただし、Chrome OS のリカバリイメージを修正してまた値を設定することは可能です [3]
警告: 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 に含まれていない)。
  • 以下の出力がされたか確認、[4] を参照。
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 のインストールに進んで下さい。デバイスが正しく起動したら、ハードウェア書き込み保護を有効に戻して下さい。

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

ノート: 以下は Chrome OS からカスタムファームウェアを書き込む手順です。詳しい情報は Chrome OS カスタムファームウェアのページを見て下さい。
  • ハードウェア書き込み保護を無効化します。

ハードウェア書き込み保護のネジ/スイッチ/ジャンパの位置は使用している Chrome OS デバイスのページを見て下さい。使用しているデバイスのページが ArchWiki にない場合、Information for Chrome OS DevicesCoreboot の Chromebook ページ を見て下さい。ファームウェア書き込み保護に関する詳細は Chrome OS カスタムファームウェア#ファームウェア書き込み保護 を見て下さい。

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

ファームウェアの書き込みに成功したら Arch Linux のインストールを行って下さい。

Arch Linux のインストール

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

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

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

  • 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 があるので後でいつでも出来ます)。

インストール後の設定

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

ノート: あなたの使っているデバイスがパッチのあたったカーネルを必要としない場合はこのセクションは無視してかまいません。

基本的に Chrome OS 端末では公式の linux パッケージを使うことが推奨されていますが、Chromebook Pixel 2015 など、ごく最近に発売された端末はパッチのあてられたカーネルを必要とすることがあります。

linux-samus4AUR には Chromebook Pixel 2015 のためのパッチが含まれており、上流の Linux カーネルにまだマージされていない、タッチパッドやタッチスクリーン、スピーカーなどの機能の修正を行います。詳しくは its GitHub のページ を見て下さい。

パッチがあてられたカーネルが必要な場合、上流ソースにパッチがマージされるたびにパッチのリストは小さくなっていくので、パッチのリストを見てパッケージが必要かどうか決めるのを推奨します。最終的には公式の linux パッケージが使えるようになるはずです。

Linux カーネルの詳細はカーネルを見て下さい。

ビデオドライバー

Intel Graphics を見て下さい。

タッチパッドとタッチスクリーン

Touchpad Synapticsタッチスクリーンを見て下さい。

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

タッチパッドの設定

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

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

Chromium OS input drivers

xf86-input-cmtAUR offers a port of the Chromium OS input driver: xf86-input-cmt as an alternative for the Synaptics input driver. It provides tweaked configuration files for most devices, and provides functionality that the Synaptics input driver does not such as palm rejection. Additionally, it enables functionality not enabled by default in the Chromium OS input driver such as tap-to-drag.

Please note, the input driver does not work under some circumstances where you have insufficient permissions to access /dev/input/event This will affect you if you use startx to load a DE/WM session. If this is the case or if the driver does not load for any other cases, you should run:

# usermod -a -G input $USER

Where $USER is the current user wanting to use the input driver.

It should also be noted that some users have reported the driver does not work in GDM but works normally after log in. If you are affected by this, you should run:

# usermod -a -G input gdm

After reboot, you should be able to use the touchpad normally.

Fixing suspend

ノート: Lid suspend might not work directly after boot, you might need to wait a little.

The following are instructions to fix the suspend functionality. Even if you are using a pre-installed SeaBIOS or John Lewis' pre-built SeaBIOS you will still need this fix.

There have been a few alternatives discussed and those may work better for some. [5] [6]

To fix suspend, the general idea is to disable the EHCI_PCI module, which interferes with the suspend cycle. There are multiple ways to achieve this.

With kernel parameters

Add the following to your GRUB configuration:-

/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="modprobe.blacklist=ehci_pci"

Then rebuild your grub config. After rebuilding your GRUB config, reboot your computer.

With systemd

Sometimes the synaptics touchpad, and various other parts of the laptop are used as wakeup devices causing certain movements of the laptop during suspend to end suspend. In order to disable all wakeup devices except for the laptop lid sensor, create the following suspend-device-fix.sh file.

/usr/local/sbin/suspend-device-fix.sh
#!/bin/bash

awk '{if ($1 != "LID0" && $3 == "*enabled") print $1}' < /proc/acpi/wakeup | while read NAME
do echo "$NAME" > /proc/acpi/wakeup
done

exit 0

Now give the file executable permissions:

# chmod +x /usr/local/sbin/suspend-device-fix.sh

Create a systemd service to execute the script on every boot.

/etc/systemd/system/suspend-fix.service
[Unit]
Description=Suspend Fix

[Service]
Type=simple
ExecStart=/usr/local/sbin/suspend-device-fix.sh

[Install]
WantedBy=multi-user.target

First start the service.

# systemctl start suspend-fix.service

If it properly starts, then allow it to be started on bootup.

# systemctl enable suspend-fix.service

Add the following line at the end of /etc/rc.d/rc.local (if it does not exist, just create it) to prevent bad handling of EHCI USB:

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

Then, create the following cros-sound-suspend.sh file. Only the Ath9k binding/unbinding lines are listed below; see the alternatives linked above for additional sound suspend handling if you experience issues.

/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

Make sure to make the script executable:

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

Then rebuild your grub config.

Fixing audio

Haswell based models

One or more of followings might help solving audio related issues, setting snd_hda_intel module index reported the most useful. It is highly possible that you will not need to make any change.

  • Create /etc/modprobe.d/alsa.conf, the option index will make sure the analog output is the default (and not HDMI), the option model will notify the driver our board model which will make the built-in microphone usable (you can try instead model=alc283-sense-combo).
/etc/modprobe.d/alsa.conf
options snd_hda_intel index=1 model=alc283-dac-wcaps
  • Use the ~/.asoundrc file from [7].
  • If having problems with headphones (perhaps no audio playing), try alsactl restore in terminal. Now, ALSA should automatically switch between channels when using headphones/speakers.
  • To fix Flash audio with PulseAudio, use the ~/.asoundrc file from [8].

Chromebook Pixel 2015

linux-samus4AUR includes a patch for Broadwell SoC sound devices. Its GitHub page includes additional instructions for initializing the sound device.

Hotkeys

The Chromebook function keys recognized as standard F1-F10 by the kernel, it is preferable to map them accordingly to their appearance. It would also be nice to get the keys Delete, Home, End, PgUp, PgDown which in Chrome OS mapped to Alt + : BackSpace, Right, Left, Up, Down.

Sxhkd configuration

One way to set the hotkeys would be by using the Sxhkd daemon. Besides sxhkd, this also requires amixer, xorg-xbacklight, and xautomation.

  • See [9] for an example configuration in ~/.config/sxhkd/sxhkdrc.

Xbindkeys configuration

Another way to configure hotkeys would be by using Xbindkeys. Besides xbindkeys this requires amixer and xorg-xbacklight and xvkbd.

Alternate xbindkeys configuration

Volchange (originated in the Debian User Forums)) can manipulate the volume with PulseAudio instead of using amixer. Besides Volchange this requires xorg-xbacklight and xvkbd.

  • Download the script from [11].
  • Make it executable
$ chmod u+x ~/.local/bin/volchange

See [12] for a matching ~/.xbindkeysrc.

Patch xkeyboard-config

Another option is to install xkeyboard-config-chromebookAUR, for more details visit [13].

Mapping in Gnome with gsettings set

Some of the function keys can be mapped in Gnome with the advantage of HUD notifications on changes (like volume and brightness changes) which can supplement one of the mapping methods mentioned above. This linked example maps the brightness and volume actions. Notice that xdotool is required.

Power key and lid switch handling

Ignore using logind

Out of the box, systemd-logind will catch power key and lid switch events and handle them: it will shut down the Chromebook on a power key press, and a suspend on a lid close. However, this policy might be a bit harsh given that the power key is an ordinary key at the top right of the keyboard that might be pressed accidentally.

To configure logind to ignore power key presses and lid switches, add the lines to logind.conf below.

/etc/systemd/logind.conf
HandlePowerKey=ignore
HandleLidSwitch=ignore

Then restart logind for the changes to take effect.

Power key and lid switch events will still be logged to journald by logind. See Power management#ACPI events.

Ignore by Gnome

Install gnome-tweak-tool, open the Tweak Tool and under Power change the Power Button Action.

Known issues

Syslinux

Follow Syslinux installation instructions carefully. Try manual installation to see where the problem comes from. If you see Missing Operation System then it may be because you need to use correct bootloader binary. If syslinux does not work try other bootloader such as GRUB.

参照