5年前のChromebookを懐かしむ

Aug 12, 2020 blog chromebook

Abstract

筆者は,日本ではChromebookが鳴かず飛ばずであった2015年頃からChromebookを使い,四苦八苦してきた. 当時のChromebookは今日のようなCrodtiniなる素晴らしい機能はなく,Linux環境の構築には大変な苦労が必要であった. また,筆者が買ったChromebookがARMコアであったこともそれに拍車をかけた. そんなじゃじゃ馬と過ごした日々を,最新のChromebookを使いながら懐かしんでみる.

そもそもChromebookとは

Chromebookと聞くとネットサーフィンしかできないパソコンをイメージする人もいるかも知れない. これは,ある意味では正しい.というのも,Crostiniがサポートされていない古い機種や,プロセッサがARM系列のChromebookでは,Linux環境が構築できない or 限られたアプリケーションしか使えない可能性が有るからである.

ARMコア

ここで筆者が初めて手にしたChromebookであるC100PAを紹介しよう. C100PAは安価でありながら,9時間のバッテリー持ちと薄くて軽量なボディ,アルミ故の剛性から当時のブロガーが高く評価していた.筆者もそのような記事を見て購入した口なのだが,そこには大きな落とし穴が有った.

C100PAはRK3288CというARM系列のプロセッサを搭載していたのである.

ARMって?

Qiitaに入り浸っている人には説明不要だと思うが,一応解説しておく. ARM系列のプロセッサは一般にスマートフォンやRaspberry piに使われる事が多い. また,携帯ゲームにも採用されており,あのゲームボーイアドバンスもARMコアである. 通常,ARMプロセッサはPCのCPUに採用されることはない.しかしながら,Chromebookでは低価格帯の機種に搭載されていることが多く,知らずに買ってしまうことがしばしば有る.

ARMコアを搭載したChromebookの何が問題かというと,x86/x64アーキテクチャ向けに作られたアプリが使えないのである.

一般に,Linuxのアプリケーションはバイナリファイルにコンパイルされた状態で配布される. バイナリファイルとはコンピュータ上でそのまま実行できるように1と0の数字からなる命令が並べられたファイルである. もちろん,ランダムに1や0を並べ立てているのではなく,その内容は各アーキテクチャごとに決められた命令セットに依存する. そして,残念なことにARMコアとx86/x64は命令セットが異なる.つまりARMプロセッサはx86/x64向けに作られたバイナリファイルを解釈できないのである.

例えば,名前を呼んではいけないあのPCもARMプロセッサであり,オフィスソフト以外がまともに動かないといういぶし銀なパソコンとなっている.

DebianやUbuntu,Archlinux等の有名どころではARM向けのパッケージも存在するが,x86/x64向けのリポジトリよりも種類が少ないために選択肢が狭まる,もしくは選択肢がないという局面にしばしば陥る.

最近,RISC-Vというオープンでかつフリーの命令セットがにわかに脚光を浴びている.これが普及すれば,いつの日かプロセッサの違いを気にしなくてすむ日が来るかもしれない.

閑話休題,ChromebookでLinux環境を使い倒すにはプロセッサのアーキテクチャがx86/x64であることを確認しなければならない.

crouton or デュアルブート

CrostiniはGoogleが公式に用意したLinux環境であるが,それ以前にもChromebookでLinuxを走らせる試みは有った.

これは,何も不思議な話ではない.関数電卓やデジタルカメラにDOOMが移植されたように ノイマン型コンピュータとしての基本構造を持つ機器にLinuxを移植するのは現生人類の遺伝子に刻まれた行動である.

しかし,Chromebookはその基本構造自体が他のパソコンとは異なり,Linuxの移植は簡単な話ではなかった.

まず,当時最も手軽で,活気のあった手法はcroutonというものであった. これは,Chrome OS上でリナックスを走らせるという今日のcrostiniと似たアプローチであったが, crostiniほど洗練されていなかったためかリソースを爆食いした.

もう一つのアプローチはデュアルブートである.

「あれ?デュアルブートできるなら簡単じゃね?」

と思われるだろうがそれは間違いである.上述の通り,Chromebookは基本構造が他のパソコンとは異なる, そのためgrubは使えないし,Macのようなブートキャンプも存在しない. そもそもBIOSでもUEFIでもないブート方式のため,専用のブートローダを用意するか, Chrome OSから抽出する必要がった.

選ばれたのは,デュアルブートでした

上に挙げたデメリットがありながら,デュアルブートを選択したのは, Arch linuxの公式ガイド が充実していたからである.

何も考えなくてもこの手順に従えばArch Linuxがインストールできる. 何度も環境を作り直したためか,一連のコマンドをほとんど何も見ずに実行できるレベルに達した. 今では完全に忘れてしまったが.

突然落ちるBluetooth

かような困難をくぐり抜け.ようやくLinux環境を手にしたのもつかの間, 今度はBluetoothが突然落ちる不具合に見舞われた.何度Arch Linuxを入れ直しても 解決せず,Bluetoothは諦めるしかなかった. 幸いChromebookのタッチパッドは非常に優秀であったため,これは大した問題ではなかった.

音割れFirefox

もちろんBluetoothが使えないだけなら常用できる範囲である. しかしながらFirefoxで動画を再生すると音割れするという不具合により, 動画を見るという人類に平等に与えられた権利を行使できない苦しみが筆者を襲った. こんなことって有る?

一番の問題

様々な不具合が存在するLinux環境であるが,一番の問題は情報の少なさである. 一体,C100PAにArch Linuxをインストールしている人類がどれだけいるのか. 特定の機種の特定のOSでしか発生しない問題なんて,はなから議論の遡上に載るはずがないのである.

思ったよりも長くなったため,今日はここで一区切りとする.