Chrome OS Flex のPCに、Linux 環境を構築した(といっても、Chrome に自動でやってもらったのですが)ところ、Linux に興味が湧いてきたので、Grokに聞きながら勉強してみたいと思います。
◆まず、Linux とは何か?
正確には2つの意味がある。
狭義:Linuxカーネル(心臓部分)だけ
広義:Linuxカーネル + いろんなソフトがセットになったディストリビューション(Debian、Red Hat Ubuntu 等)
1991年にLinus Torvalds(リーナス・トーバルズ)という当時大学生だったフィンランド人が、UNIX (1969年にAT&Tベル研究所で開発されたマルチタスクOS)を参考にして作ったオープンソースのOSだが、現在、全世界のサーバーの約80〜90%、スーパーコンピュータ全部、Androidスマホ、クラウド(AWS・Google Cloud・Azureのほとんど)、IoT機器、テレビ、ルーターなどは、Linux で動いている。
◆なぜ WindowsマシンでLinuxが動くのか?
最大の理由は今のPCのハードウェアが、WindowsとLinuxの両方が長年対応してきた共通規格(x86-64 + UEFI + 業界標準チップ)でできているから。
◆Chrome OS Flexで「Linux 開発環境」を有効にしたとき、OS側で行われていた作業は何か?
Chrome OS Flexの中に軽量なLinuxコンテナ(Debianベース)を自動で作成・起動している状態。
Chrome OS Flex(Chromium OS系)は元々Linuxカーネルで動いている。
その同じカーネル上で、LXC(Linux Containers) というOSレベルの仮想化技術を使って独立したLinux環境を作った→ 完全な仮想マシンではない(同じ Linux カーネルを使っている〜この部分を「コンテナ」という。アプリケーション(+それに必要な全部)を、ホストOSから隔離した軽量な箱に入れたもの」)。
具体的には、このようなことが行われた。
1.Debianコンテナのダウンロード
Googleのサーバーから最新のDebian(現在はDebian 11 → 12に移行が進んでいる)のイメージをダウンロード
2.展開とインストール
これを展開して、ユーザーのホームディレクトリとは別の領域(通常は「/home/ユーザー名/linux」のような場所)に配置 (ディスク容量はデフォルトで10GBを確保)
3.ネットワーク・ファイルシステムの橋渡し設定
NATネットワーク(プライベートIPアドレスをグローバルIPアドレスに変換)が自動で構築される。
4.Chrome OS側とLinux側の間でファイル共有
「Linuxファイル」というフォルダがFilesアプリに表示される
クリップボード共有、ポートフォワーディング(ポート転送)なども有効化
5.Wayland/X11のウィンドウ統合
Linuxで起動したGUIアプリ(VS Code、GIMP、Firefoxなど)が、Chrome OSのデスクトップ上にネイティブウィンドウのように表示されるよう設定
6.ターミナルアプリのインストールと起動
最後に「ターミナル」というアプリが自動でシェルフに追加され、クリックするとDebianのbash(コマンドライン操作シェル)が起動する
◆Linux のフィル構造はどうなっているのか?
「ルートディレクトリ」と呼ばれる頂点にあたるディレクトリがあり、その下に「home」や「media」「boot」といったディレクトリが並ぶ。
WindowsでいうところのCDROMやUSBメモリは、Linuxでは「media」ディレクトリの配下に配置される。
また、「home」ディレクトリ以下がWindowsで言うところの「CドライブのUsersフォルダ」の中に該当。

まだまだ、分からないことが多いが、今のところはこれぐらいにしておこう。

