chromebookでSDカードにcroutonとchromebrewを両方インストール


C204EE というchromebookを入手後ほぼ使っていませんでしたが今更ながら使ってみました
cerelon N4000 メモリ4GB HDD16GB
画面は小さいものの電池持ちは良く、耐衝撃で防滴仕様、ハードに使える印象です。負荷中は熱くなりやすいです。
crostiniも使えますが、コンテナ使用、直接ext4を扱えないといった問題があり、パフォーマンスの点でchromebrewやcroutonの優位性があると言っていいでしょう。重い作業をしないならcrostiniで十分です。

16GB中は半分システムが確保しているので使えるのは8GB、そのうちゲストモード用に1.8GBを確保しているので6.2GBしか使えません。初期化後ログインした後、残5.2GBという厳しい状況です。特にchromebrewはたくさんのライブラリをインストールして使わないライブラリ依存関係を考慮しないで溜め込む仕様ですので容量問題は重要です。初期化後一つアプリを入れるだけで容量オーバーになることもありました。

この方法はシンボリックリンク使ってSSD上にデータを置かない方法です。他のサイトでもSDカードにインストールする方法が出ています。しかしこの方法は、ショートカットを本体に置くだけでデータは全てSDにおいています。なのでいつ本体を初期化してもデータは失いません。またchromebrewも同時に共存できています。
基本的にSDを酷使するためにバックアップはこまめに取っておくことを推奨します。自分はgoogleドライブの100GBを契約して最大限活用しています。

chromebrewのインストールをテストして、micoSDカードから起動する方法に切り替えます。
シンボリックリンク使ってSSD上にデータを置かない方法です。
この方法だと本体にデータを置かないので気軽にリセットできますね。

できるだけ容量を確保するために、初期化後、ログインしないでゲストモードでセットアップ、テストをして、それをmicroSDにコピーして microSDからubuntuを起動するほうが効率が良いと思います。ログイン前の画面でCTRL+ALT+SHIFT+Rで初期化できます。
またUSB3.0のメモリよりSDのほうが書き込み速度が早いのでSDメインで使います

chromebrewとcroutonの違い
chromebrewはchromeOSのcroshにのcrewパッケージシステムを追加します
制限なし パッケージが少ない SDカード起動だと安定性にかける

croutonはchromeOSのカーネルを利用してコンテナから起動させる
コンテナ特有の制限あり。例えばカーネルやハードウェアに関する制限を受ける
例、USBハードウェアを認識しない VPNを使えないなど。

chromebrewはchromeOS上のアプリのように使えるので使いやすい印象です。clostiniのようにコンテナ上で動かさないのでパフォーマンスは優れています。日本語入力は現状できていません。
croutonはxiwi起動だと描画が乱れやすい。xorgなら安定しています。

SDカードがスリープするとマウント解除される問題があります。復帰時にnoexecマウントするのですが、chromebrewだとライブラリや実行ファイルが実行できなくなり本体ごと固まります、crostiniだと落ちるくらいですみますが、SDへのダメージは避けられません。
USBだと問題ないという情報もありましたが、自分の環境ではUSBもスリープ時にマウントされる場合が多かったです。またスリープ時以外にも瞬間的にマウント解除され、固まることもありました。これでは常用は難しいです。

解決策として、デフォルトでは/media/removable/にマウントされるのをアンマウントしてhomeフォルダ以下にマウントします。
ここでは/home/chronos/user/SDにマウントしています。
この設定をしてから一度もアンマウントされず安定しています。~/.bashrcに記述しておくと楽です。

chromeOSのファイラーからマウントを解除 または
sudo umount /dev/sda1 /removable/media/SD

/home/chronos/user/SDに権限追加してマウントします。
mkdir ~/SD
sudo mount -o exec,suid,dev,symfollow /dev/sdb1 /home/chronos/user/SD

ディベロッパー時電源オン画面スキップ方法
ctrl + D

crouton integrationインストール
これとxiwiまたはextensionをいれることによってクリップボードの共有が可能になります。
https://goo.gl/OVQOEt

セキュリティーのための開発者パスワードの設定
ctrl + alt + T
shell
sudo chromeos-setdevpasswd
sudo crossystem dev_boot_signed_only=1

インストールする拡張機能の確認
crouton -t help

cli-extraはchromeosのshellで、操作できるようにする。
extensionは拡張機能と併用することでクリップボード共有
keyboardはchromebookのキーボードレイアウト追加

紛らわしいが、Requires以下の機能は依存関係にあるので自動的に入る
ので書かなくても良い
(例 )cli-extraを入れるとcoreは依存関係で自動的に入る
xiwiをいれるとaudioとextensionは依存関係で自動的に入る

(例 )xiwiをいれるならaudioとextensionはいらない

audio
        Support audio playback via Chromium OS's audio system.
        Requires: core
chrome
        Google Chrome browser, stable channel.
        Requires: x11
chrome-beta
        Google Chrome browser, beta channel.
        Requires: x11
chrome-dev
        Google Chrome browser, dev channel.
        Requires: x11
chromium
        Chromium browser. Uses the distro's version, which may be old.
        Requires: x11
cli-extra
        Basic CLI tools such as ssh.
        Requires: core
core
        Performs core system configuration. Most users would want this.
e17
        Installs the enlightenment desktop environment. (Approx. 50MB)
        Requires: gtk-extra
extension
        Clipboard synchronization and URL handling with Chromium OS.
        Requires: x11
gnome
        Installs the GNOME desktop environment. (Approx. 400MB)
        Requires: gtk-extra
gnome-desktop
        Installs GNOME along with common applications. (Approx. 1100MB)
        Requires: gnome
gtk-extra
        GTK-based tools including gdebi and a simple browser.
        Requires: x11
kde
        Installs a minimal KDE desktop environment. (Approx. 600MB)
        Requires: x11
kde-desktop
        Installs KDE along with common applications. (Approx. 1000MB)
        Requires: kde
keyboard
        Adds support for Chromebook keyboard special keys.
        Requires: x11
kodi
        Installs the KODI media player. (Approx. 200MB)
        Requires: x11
lxde
        Installs the LXDE desktop environment. (Approx. 200MB)
        Requires: gtk-extra
lxde-desktop
        Installs LXDE along with common applications. (Approx. 800MB)
        Requires: lxde
touch
        Touchscreen and limited generic gesture support.
        Requires: x11
unity
        Installs the Unity desktop environment. (Approx. 700MB)
        Requires: gtk-extra
unity-desktop
        Installs Unity along with common applications. (Approx. 1100MB)
        Requires: unity
x11
        X11 via autodetected backend. Does not install any desktop environment.
xfce
        Installs the Xfce desktop environment. (Approx. 250MB)
        Requires: gtk-extra
xfce-desktop
        Installs Xfce along with common applications. (Approx. 1200MB)
        Requires: xfce
xiwi
        X.org X11 backend running unaccelerated in a Chromium OS window.
        Requires: audio extension
xorg
        X.Org X11 backend. Enables GPU acceleration on supported platforms.
        Requires: audio

インストールするOSのバージョン確認
crouton -r help


Recognized debian releases:
    potato! woody! sarge! etch! lenny! squeeze! wheezy! jessie! stretch! buster
    bullseye bookworm sid
Recognized kali releases:
    moto! kali! sana! kali-rolling
Recognized ubuntu releases:
    warty! hoary! breezy! dapper! edgy! feisty! gutsy! hardy! intrepid! jaunty!
    karmic! lucid! maverick! natty! oneiric! precise! quantal! raring! saucy!
    trusty! utopic! vivid! wily! xenial yakkety! zesty! artful! bionic* cosmic!
    disco! eoan! focal* groovy! hirsute! impish*
Releases marked with ! are upstream end-of-life, and should be avoided.
Releases marked with * are unsupported, but may work with some effort.

!はサポート終了 *は不安定
sidとkali-rollingはついてないがデスクトップ環境はカーネルが古いためXorgで動作しません。 xiwiでは動作します。
AddScreen/ScreenInit failed for driver 0
Kernel is too old for Irisでエラー
xenial bionic focalは*だが動作します。

bionicの32bit版と focalの64bit版をインストールしてみます。バックアップをこまめに取っておくと問題が起こったときに役に立ちます。

croutonインストール
https://goo.gl/fd3zc からcroutonダウンロード
ctrl + alt + T
shell
/usr/loca/binではなくSDカードにcroutonインストールします。
sudo install -Dt /home/chronos/user/SD128/crouton/bin -m 755 ~/Downloads/crouton

/usr/loca/binにシンボリックリンクを張ります
ln -s /home/chronos/user/SD128/crouton/bin/* /usr/local/bin

bionic 32bit bootstrapバックアップ dオプションはダウンロードするだけです。 fオプションはbootstrapとバックアップ指定します。
sudo crouton -r bionic -a i386 -d -f /home/chronos/user/SD128/crouton/backup/bionic_i386_bootstrap.tar.bz2 -m http://ftp.riken.go.jp/Linux/ubuntu/

bionic 32bit bootstrapからcli-extraインストールします。

pオプションはchrootsとbinインストール先を指定します。 デフォルトは/user/localです。
sudo crouton -t cli-extra -f /home/chronos/user/SD128/crouton/backup/bionic_i386_bootstrap.tar.bz2 -m http://ftp.riken.go.jp/Linux/ubuntu/ -p /home/chronos/user/SD128/crouton/

バックアップ
sudo edit-chroot -b bionic -c /home/chronos/user/SD128/crouton/chroots -f /home/chronos/user/SD128/crouton/backup/bionic-i386-cliextra.tar.bz2

リストアする場合
sudo crouton -f /home/chronos/user/SD128/crouton/backup/bionic-i386-cliextra.tar.bz2

croutonとbionicを削除する場合
シンボリックリンクとchrootを削除します
cd /usr/local/bin
sudo rm -f crash_reporter_wrapper crouton delete-chroot edit-chroot enter-chroot mount-chroot startcli unmount-chroot startxfce4
rm -rf /home/chronos/user/SD128/crouton/chroots/bionic

xserver-xorg-video-allが無くて止まる問題はsudo enter-chrootでログインしてインストールします。

The following packages have unmet dependencies:
xorg : Depends: xserver-xorg (>= 1:7.7+19ubuntu7.1)
xserver-xorg-video-intel : Depends: xorg-video-abi-23
Depends: xserver-xorg-core (>= 2:1.18.99.901)

sudo apt install xserver-xorg-core

sudo crouton -t xorg,keyboard,extension,xfce -u -n bionic -p /home/chronos/user/SD/crouton

bionicタッチパッド有効化

bionicからsynapticsからlibinputへ変更になりました。設定が必要になります。

libinputからsynapticsへ戻すには
sudo apt install xserver-xorg-input-synaptics

libinputを使いsynapticsを使わない方法。タッチパッドのタッチは指の腹でしっかり押さないと反応しません
synapticsは指先だけで反応しますが、誤タッチもよくあります。

sudo vi /usr/share/X11/xorg.conf.d/40-libinput.conf

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "Tapping" "On"
        Option "ClickMethod" "buttonareas"
        Option "DisableWhileTyping" "On"
        Option "TappingDrag" "True"
        Option "TappingDragLock" "True"
        Option "TappingButtonMap" "lrm"
        Option "ScrollMethod" "twofinger"
        Option "NaturalScrolling" "True"
        Option "HorizontalScrolling" "True"
EndSection

タッチパッドの速度調整
xinput list デバイスID確認

xinput list-props 9
Coordinate Transformation Matrix の項目を確認 デフォルトでは以下のようになっています。
Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

最後の数値デフォルトの1から0.5あたりに変更します。少なくすると早くなります。 
xinput set-prop 9 145 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000, 0.000000 0.5000000

focal64bitインストール bionicと違って楽です。
focal 64bit bootstrap保存します。
sudo crouton -r focal -d -f /home/chronos/user/SD/crouton/backup/focal_bootstrap.tar.bz2 -m http://ftp.riken.go.jp/Linux/ubuntu/

focal 64bit bootstrapから拡張機能をインストールします。

デフォルトでxorg、 オプション付きでxiwi起動します 逆にしたい場合は前後入れ替えてください。
sudo crouton -t cli-extra,xorg,xiwi,keyboard,xfce -f /home/chronos/user/SD/crouton/backup/focal_bootstrap.tar.bz2
xorgのみの場合
sudo crouton -t cli-extra,xorg,extension,keyboard,xfce -f /home/chronos/user/SD/crouton/backup/focal_bootstrap.tar.bz2
cliのみの場合
sudo crouton -t cli-extra -f /home/chronos/user/SD/crouton/backup/focal_bootstrap.tar.bz2

バックアップ
sudo edit-chroot -b focal -c /home/chronos/user/SD/crouton/chroots -f /home/chronos/user/SD/crouton/backup/focal.tar.bz2
リストア
sudo crouton -f /home/chronos/user/SD128/crouton/backup/focal.tar.bz2

crouton起動方法
ctrl + alt + T
shell
sudo enter chroot

xfce動作テスト
croshからshellを開いて
xorg起動するには sudo startxfce4 ハードウェア描画
xiwi起動するには sudo startxfce4 -X ソフトウェア描画
xiwiでtabに表示させるには sudo startxfce4 -X xiwi-tab 

Ctrl+Alt+Shift+Back chromeOSに切り替え
Ctrl+Alt+Shift+Forward croutonに切り替え

次にchromebrew をインストールします。
curl -Ls git.io/vddgY | bash
でセットアップが始まり、/usr/local以下にインストールされます。
バックアップします
cp- rna /usr/local /home/chronos/user/SD/crew/backup/firstsetup/usr
不具合があれば/usr/local/以下を全削除してください。
cd /usr/local
rm -rf * .cache .config
リストア
cp -rna /home/chronos/user/SD/crew/backup/firstsetup/usr/local /usr/

chromebrewをSDカードに入れた場合の不具合
再起動時の不具合に注意
ログイン時にSD上のライブラリをnonexecマウントで読み込むため、SDから参照ができなくてエラーになります。
bashrcにexecマウントを記述しても同様。
ログイン前のVT-2モードで/usr/localを読み込まなくて
おかしくなったら/user/local以下の bin local64を別の名前にしてからログインしてexecマウントをしてから
名前を元に戻すと言うことが必要でした。

上記の不具合はSDカードのマウントポイントをhome以下にすることで解決できます。
ただし、crew apt upgrarde ができません crew apt updateはできます。

bashrcに次の記述をしています。

vi ~/.bashrc

# Put your fun stuff here.
sudo umount /media/removable/SD
sudo mount -o exec,suid,dev,symfollow /dev/sda1 /home/chronos/user/SD
read -p "${X} crouton? (y/N):" yn
case "$yn" in [yY]*) sudo startxfce4 -n focal ;; *) echo "skipped." ; : ;; esac
source /usr/local/etc/profile

以下のスクリプトファイルを作ります。
cd /usr/local
vi symlinks.sh

#!/bin/sh -x
sudo mount -o remount,exec,suid,dev,symfollow /dev/sda1 /home/chronos/user/SD
export CREW_PREFIX=/home/chronos/user/SD/crew/usr/local
sudo chown -R chronos:chronos /home/chronos/user/SD/crew/usr/local

find /usr/local/ -maxdepth 1 -type l | xargs rm -f
cp -rna /usr/local  /home/chronos/user/SD/crew/usr

cd /usr/local
rm -rf .cache .config bin cache chroots etc include lib lib64 libexec man sbin systemd share tmp var

ln -s /home/chronos/user/SD/crew/usr/local/.cache /usr/local/.cache
ln -s /home/chronos/user/SD/crew/usr/local/.config /usr/local/.config
ln -s /home/chronos/user/SD/crew/usr/local/bin /usr/local/bin
ln -s /home/chronos/user/SD/crew/usr/local/cache /usr/local/cache
ln -s /home/chronos/user/SD/crew/usr/local/chroots /usr/local/chroots
ln -s /home/chronos/user/SD/crew/usr/local/etc /usr/local/etc
ln -s /home/chronos/user/SD/crew/usr/local/include /usr/local/include
ln -s /home/chronos/user/SD/crew/usr/local/lib /usr/local/lib
ln -s /home/chronos/user/SD/crew/usr/local/lib64 /usr/local/lib64
ln -s /home/chronos/user/SD/crew/usr/local/libexec /usr/local/libexec
ln -s /home/chronos/user/SD/crew/usr/local/man/ /usr/local/man
ln -s /home/chronos/user/SD/crew/usr/local/sbin /usr/local/sbin
ln -s /home/chronos/user/SD/crew/usr/local/share /usr/local/share
ln -s /home/chronos/user/SD/crew/usr/local/systemd /usr/local/systemd
ln -s /home/chronos/user/SD/crew/usr/local/tmp /usr/local/tmp
ln -s /home/chronos/user/SD/crew/usr/local/var /usr/local/var

crew install hoge

./symlinks.shを実行すると/usr/localを全てSDにコピーしてシンボリックリンクを張ります
export CREW_PREFIX=/home/chronos/user/SD/crew/usr/localで出力先をSDカードにしていますが、
本体に作られることもあるのでそのたびに./symlinks.shを実行してください。
依存関係が多い場合は一気に全部入れないで分けて入れることを推奨します。
usr/local/に実ディレクトリがなく、インストールに失敗する場合、はSDカードからコピーするとインストールできます。
こまめにusr/local以下をバックアップすることをお勧めします。
何か問題があれば再起動すればマウントするまで素の環境で立ち上がるので復旧は容易です。

最後にcroutoのシンボリックリンクを変更します
ln -nfs /home/chronos/user/SD128/crouton/bin/* /home/chronos/user/SD128/crew/usr/local/bin

これでcroutonとchromebrewをSDに移すことができました。
本体にはショートカットをおいているだけの状態です。
crew searchでずらずらっとリストが表示されます
crew search | grep hogeなどで絞り込んでみるといいかもしれません

VMX有効化スクリプト
もともと全てのchromebookはVMXがオフの状態で出荷されているようです。
これはdisableVMX=ONの状態をdisableVMX=OFFにして制限を解くものでした。
アップデート時に不具合も起こすこともあるようなので試すときはバックアップをして自己責任でお願いします。

wineは動きましたが64bit環境のみです。現状32bitのビルドはできません。32bit環境のcroutonのほうが快適です。
qemuとaqemuで windows7は動いていますがKVMを選択して起動すると落ちます。

grep -E –color=auto 'vmx|svm|0xc0f’ /proc/cpuinfo
kvmが表示されるのでハードウエアとしてCPUのVT-Xは有効になっています
lsmod | grep kvm
lsmod | grep virtio
で調べたらvirtioのはありましたがkvmは表示されません
しかし/sys/moduleの中を見るとKVMがしっかり入っています。
sudo dmesg | grep kvmとすると
kvm: already loaded the other moduleとありました。すでに読み込まれているのになぜなのか
genntooのwikiによるとqemuの設定でAMDを無効にすれば回避できるとのことでした

現状日本語入力はできていません。chromeOSはibus-mozcのカスタム仕様ですが、chromebrewからは使えません
chromebrewでibusをインストールして
~/.bashrcに

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drxR

追加してshellを再起動します

ibus list-engineでchromeOS側の入力エンジンが見れます。日本語が入っているのが確認できました。mozcは見当たりません。

language: Other
xkb:jp:dvorak:jpn – Japanese (Dvorak)
xkb:jp::jpn – Japanese
xkb:jp:kana:jpn – Japanese (Kana)
xkb:jp:kana86:jpn – Japanese (Kana 86)
xkb:jp:OADG109A:jpn – Japanese (OADG 109A)
xkb:jp:mac:jpn – Japanese (Macintosh)

ここでibus engine xkb:jp:kana:jpnとする
“setxkbmap” (No such file or directory)のエラーになります。ibus-mozcのビルドが必要そうです。

emacs gvim sublime_text エディタ系はどれも快適に動きます。日本語入力はできていません
composer nginx php mysql LAMP環境も構築できました。
minecraftデモバージョン動作確認できました。java8版+1.165です。FPS10くらいですががmodを入れたらFPS40くらいになりました。
aqemu qemu 動作は重いですがwindowsxp windows7 動きます。現状qemu7.1.0ビルド失敗するのでビルドできたら多少マシになると思います。
wine 動きますが64bitのアプリのみです。 wine使うならcrostiniで32bit版使うほうがいいと思います。
vivaldi google-chrome ブラウザです。英語版ですがchromeOSのものと使用感そのまま同じです。日本語入力はききません。ログインできるのでゲストモードで拡張機能使用したいときに使っています。

chromebook

Posted by taroumaru