🙄

chromebookにNixOSを導入して最強のlinux開発環境を整える。

に公開

最近ChromeBookを購入しました。
youtubeを見るネットサーフィンぐらいしかChromeBookの活用を見出していませんでした。
ChromeBookには、Linuxを使用できる機能があり、でも基本的にはdebian、ubuntuベースであまり使いたいとは思いませんでした。
なので頑張ってNixOSを自分の気に入ったOSを別で入れてみたいと思います。

chrome bookのターミナル

ChromeOS
ctrl+alt+f2~f7を押すとchromeOSの「仮想コンソール」を開けます。
ここではchromeOS自体の操作ができます。gentooのようなコマンドや、chromeOSで動いているソフトの詳細をpsなどで覗いてみたりできます。
でもブラウザからコピペできない。...

crosh(The ChromiumOS shell)
ctr + alt+ T を押すと ターミナルが出てきます。
「crosh(The ChromiumOS shell)」といいます。chromeOSで許可されたコマンドが使用できます。
https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crosh/README.md

termina
ChromeOSからはユーザー環境にしかアクセスできません。terminaから仮想環境を起動することができます。

ChromebookのLinux環境
Chromebookのlinux環境はterminaからlxcを実行しています。lxcはchromebook特有の機能ではないので他のOSでもよくproxmoxで使用したりしています。

CUIでアクセスできれば色々と操作できるかもしれませんが
GUI画面に入ってしまうと、絶対に管理者権限でchromebookを操作させないという意思を感じてChromeBookの安全性は素晴らしいですね。

手順

1.chromebookから、linuxを開く
2.ctrl+alt+Tでcroshを開きログインする。
3.crosh> vsh terminaでterminaに入る
4.(termina) chronos@localhost ~ $ lxc list

(termina) chronos@localhost ~ $ lxc list
+---------+---------+-----------------------+-------------------------------------------+-----------+-----------+
|  NAME   |  STATE  |         IPV4          |                   IPV6                    |   TYPE    | SNAPSHOTS |
+---------+---------+-----------------------+-------------------------------------------+-----------+-----------+
| penguin | RUNNING | 100.115.92.199 (eth0) | 2601:646:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (eth0) | CONTAINER | 0         |
+---------+---------+-----------------------+-------------------------------------------+-----------+-----------+

5.デフォルトインストールが実行された、ubuntu/debianは削除
(termina) chronos@localhost ~ $ lxc delete penguin
6.(termina) chronos@localhost ~ $ lxc list

(termina) chronos@localhost ~ $ lxc list
+---------+---------+-----------------------+-------------------------------------------+-----------+-----------+
|  NAME   |  STATE  |         IPV4          |                   IPV6                    |   TYPE    | SNAPSHOTS |
+---------+---------+-----------------------+-------------------------------------------+-----------+-----------+

6.OSをダウンロードします。

 (termina) chronos@localhost $ lxc copy images:nixos/24.11 local:
Creating mycontainer
Error: Failed instance creation: Failed getting remote image info:
Failed getting image: The requested image couldn't be found

失敗しました。
以前は機能したような気がします。

(termina) chronos@localhost ~ $ lxc remote list
+-----------------+------------------------------------------+---------------+-------------+--------+--------+--------+
|      NAME       |                   URL                    |   PROTOCOL    |  AUTH TYPE  | PUBLIC | STATIC | GLOBAL |
+-----------------+------------------------------------------+---------------+-------------+--------+--------+--------+
| images          | https://images.linuxcontainers.org       | simplestreams | none        | YES    | NO     | NO     |
+-----------------+------------------------------------------+---------------+-------------+--------+--------+--------+
| local (current) | unix://                                  | lxd           | file access | NO     | YES    | NO     |
+-----------------+------------------------------------------+---------------+-------------+--------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | simplestreams | none        | YES    | YES    | NO     |
+-----------------+------------------------------------------+---------------+-------------+--------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | simplestreams | none        | YES    | YES    | NO     |
+-----------------+------------------------------------------+---------------+-------------+--------+--------+--------+

実は、CanonicalによってLinuxContainerはLXDから買収されました。以下のURLは機能していますがダウンロードはできません。https://images.linuxcontainers.org
現在はhttps://images.lxd.canonical.com/ からダウンロードする必要があります。

6.リモートイメージサーバーを変更します。
(termina) chronos@localhost $ lxc remote set-url images https://images.lxd.canonical.com/

7.lxdのimageを探します。
lxc image list images:
lxc image list images:nixos
lxc image list images:nixos/24.05

8.自分の好きなOSをダウンロードして起動します。penguinは、コンテナ名なので好きなものに変更。chromeのlinuxから使いたい場合このままの設定。
とりあえずnixos/24.04入れてるけど
lxc image listで気になったosがあればそれを入れてもいいとおもいます。
lxc launch images:nixos/24.04 penguin

9.termianaから、linuxに入る。
lxc exec penguin bash

10.nixosを使用する。
/etc/nixos/に設定ファイルがおいてあるはず。
nixosの使用方法については以前自分が書いたのでこちらを参考。

https://zenn.dev/tositada/books/1c1564531ec8fc
https://zenn.dev/tositada/books/23ec29035b9665

ここまでできればあとは、自分でdocker入れたり、xserverを動かしてみたり、自由に操作可能になります。
自分のchromebookが、aarch64な環境なので、
ネイティブビルド出来る環境がでてきたの嬉しい。
x86以外でaarch64な環境を試したい時に、chromebook用意するのもいいかもしれないね。

Discussion