Help us understand the problem. What is going on with this article?

Chromebook C101PAの環境をC434Tに移植: Linuxを主体に

ASUSのChromebook C434Tをゲットしたので,C101PAの環境を移植したよ,というお話.

ChromeOSはGoogleアカウントによる諸々の環境の同期機能がある.Chromeアプリ,拡張機能,ブックマークなどChrome周辺の同期さらにはAndroidアプリ・設定の同期はかなり高度におこなわれる.

しかし,Crostiniによるlinux環境については当然,同期の対象にはならないので,自分で移植する必要がある.

以下にやった作業とか課題をメモした.これをベースにして,Chromebookの最大の強みでもあるlinux環境の移植の自動化,半自動化ができれば,他のchromebook導入が合理化できるんじゃないか,という甘い期待.

◆移植の大枠

  • Chromeアプリ,拡張機能はGoogleアカウントに紐付けられているので何もせずに同期可能.アプリ一覧を見ると勝手にインストールされている.
  • Androidアプリも同様.一部同期できないのは,デバイスがアプリに対応していないもの.
  • Linuxはベースとなってるアーキテクチャが違うとバイナリ互換性がないので注意!!あたりまえだけどな.(実はこの地雷踏んだ.その話はあとで).C101からC434はarmからamdだから,バイナリーコピーは無理.すべてインストールしなおす必要がある.

◆C101Pでやったこと…あんまり覚えてない.こら.

思い出してみる.C101Pで嬉しかったのは,ChromebookでLinuxが稼働したこと.C302は良いマシンだが,Crostiniが動かない.Croutonなら動くそうだが,なんだか面倒.つまり,C101PはLinuxアプリが使えることがものすっごく嬉しいってこと.

もう一点は,多くのAndroidアプリが稼働すること.もともとChromebookを使い始めたのは,あるAndroidアプリを12インチ以上の大画面で使いたいという要求から.ほかにもChromeアプリもあるけど,Androidアプリ版のほうが使い勝手がいいとか,そういうものも結構ある.

いずれにせよ,Chromeアプリでかゆいところに手が届いていない部分を,AndroidなりLInuxなりでカバーするというのがChromebook導入の狙いだったのだ.

◆やったこと(再)

まず,なにが最初から入ってて,なにをあとからインストールしたのか,リストアップ.

$ apt list
(ズラズラズラ……)
(ズラズラズラ……)
(ズラズラズラ……)
(ズラズラズラ……)

apt listコマンドは「インストール(installed)」「自動(automatic)」という注釈がつく.ちなみにリスト一覧をみるだけなので,super userにならなくてもいい,つまりsudoコマンドは不要.

これを利用して,自分が手動でインストールしたものを切り出す.どうするかというと,
1. 出力されるリストから「"installed"かつ"automatic*ではない*"行」をgrepしてやる.
2. ついでに行頭のパッケージ名だけを切り出す.

こういう感じ.↓↓

$ apt list | grep 'installed' | grep -v 'automatic' | awk -F '/' '{print $1}' > C101list

これを新旧ホストでやる.ファイル名は適当にC101list, C423listとか.要するに手動インストールされたパッケージ名のみを切り出す作業.(listだけならsudoは不要)

$ diff C101list C423list | grep '^>'

これで差分をとってファイル保存.
その中でこれは必要というものを選択.

apt-file
apt-utils
dnsutils
expect
fdclone
fonts-ipafont
git
gthumb
iputils-ping
libreoffice
libreoffice-help-ja
locales-all
mupdf
task-japanese
vim-gtk
w3m
x11-apps

片っ端からapt install

順番が関係あるかもしれないパッケージは前にもってくるとか,ちょっと気を使ったが,aptが適切に処理してくれるだろうから気にしなくてもいいかもね.

xargsとか使えばスマートにできるのだろうが,さほどの数でもないし,スクリプトにガシガシ書いて実行.すべてインストールできた.

◆自分の環境のコピー

自分のホームにvimやらcshやらの設定ファイルがある.ある意味これが作業環境の命でもある.
ホームをそっくりコピーする.

ChromeOSはGoogleDriveをファイルシステムして認識でき,さらにlinuxで共有ができる.便利.

ただし自動的に共有はしてくれず,フォルダ毎に共有を明示的に切り替える必要がある.

chromeのファイラで
 → GoogleDrive右クリック
 → 「linuxと共有」

でオッケー.これでlinuxからは,

/mnt/chromeos/GoogleDrive

で見える.いちいちここにcdするのも面倒なので,おいらはホームディレクトリにシンボリックリンクを張っている.

ln -s /mnt/chromos/GoogleDrive/MyDrive ~/

新旧両方で同じ構成にしておくと便利.
で,旧ホストで,自分のホーム全体をtarでまとめる.

cd /home
sudo tar cf ~/MyDrive/yourdirname.tar yourdirname/
(↑yourdirnameは自分のホームディレクトリ名)

これで,GoogleDriveの「MyDrive」に,ディレクトリごとまとめたtarballファイルができる.

GoogleDriveなので,少し同期するのに時間がかる(数十秒かな)のでちょっと待ってから,新ホストで,tarballを荷解きする.

cd /home
sudo tar xf ~/MyDrive/yourdirname.tar

これ,しれっと上書きされるので,新ホストで変更したファイルがあれば,別名保存しておくほうがいい.← このことを考えると,引っ越しは新ホストでいろいろ仕事をし始める前にするべきだ.

◆環境設定自動化のしくみづくり

完全自動化までいかずとも,半自動化ーーたとえばバッチファイル2発でオッケーとか,そういう感じで,新しいChromebookが来たときにはサクサクっと設定を済ませたい.複数のPCに対して同じ設定をするのはなにが必要なのか.

よく考えれば,差分は特に取る必要はなく,すでにインストールしてあればaptがリビジョンを判断してインストールするしないを決めてくれる.

ということは,
「これとこれは必要だよね」というパッケージのリストを作ればいい
ということになる.結局はそういうことかよ.すいません.

Linuxは,debianだとapt installを使うのだが,インストールするべきパッケージ名のリストがある場合,一括インストールはどうすればいいのか.

apt-getで一括インストール(Qiita)

あった.このスクリプトでえいやーだな.

◆ツールの選別選手権

で,ここからは,Chromebookで使うLinuxツール,アプリは何がいいのか?教材として必要なものはなにか?

つまり,Chromeアプリ,拡張機能,Androidアプリでもちと弱い機能のアプリは何か,ということだ.

  • 言語
  • Office系

◆番外編: Crostini linuxの究極救助法

上のほうで,Linuxはアーキテクチャが違うとバイナリ互換ではないという,当たり前田のクラッカー話をした.何を血迷ったかこの地雷を見事に踏んでしまったおかげで,究極のLinux復活法を発見したので報告する.

C101PAでいろんなものをインストールしていたので,C434Tが来てさあ使うぞ,となった時に自分の環境がない,ほしいアプリもない.当たり前だけど.で,この状態から,一刻も早く脱出したいがためにやった力技が,/usr 以下を全部コピってしまえ大作戦.

$ sudo tar czf ~/MyDocs/c101usr.tgz /usr

てな感じでGoogleDriveに/usr以下のtarballを作り,それをC434T側で解いて上書きしてしまうという作戦.

バリバリのバイナリコピーなのだ.で,C434T側で,

$ cd /
$ sudo tar zxf ~/MyDocs/c101usr.tgz

とやってしまったとたん,どんどんC434Tのアーキテクチャであるamd64のバイナリが,C101のアーキテクチャであるarm64のバイナリに上書きされていき,気づいた時には ls すらできない状態に陥ってしまった.

この時点でことの重大さを初めて自覚.あわててコピーを停止したがすでに遅し.shutdownもできない.

うあああああああああ.

ドンづまり.抜き差しならぬ.にっちもさっちもいかぬ.「オワタ感120%」の状況.

こんな状況,ググってもでてこんわ!

で,ふと冷静になって考えた.一番最初,Linux(ベータ版)をインストールするのはどうやったか?

→ 答えは簡単.ChromeOSの設定→LInux(ベータ版)を"ON"にすればいい.

ということは,「もう一度インストールし直すにはどうすればいいのか?」

→ 答えは簡単だった.

  1. Linux(ベータ版)を"OFF"にしてLinuxを削除する.
  2. その後,"ON"にしてLinuxを再インストール. これでよかったのだぁぁ.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした