CommonLispで書かれたOperating System 「Mezzano OS」 を使ってみた

はじめに

ネットで自作OSについて調べていたところ、Common Lispで書かれたOperating System「Mezzano OS」の存在を知り、試しに使ってみたくなりました。
というわけで、今回は「Mezzano OS」の導入方法についてまとめた記事を書いてみました。
自分の環境は「Ubuntu 17.10」です。

前準備

SBCLのインストール

今回はCommonLispのSBCL(Steel Bank Common Lisp)を使用します。
以下のコマンドを実行して、SBCLをインストールします。

sudo apt install sbcl

続行しますか?[y/n]と聞かれるので、「y」と入力します。

Quicklispのインストール

まずは、以下のコマンドでquicklisp.lispをダウンロードしてきます。

curl -O http://beta.quicklisp.org/quicklisp.lisp

次に、ダウンロードしてきたquicklisp.lispをSBCLで実行します。

sbcl --load quicklisp.lisp

色々処理が終わったら入力できるようになるので、以下のコマンドを入力しQuicklispをインストール。

(quicklisp-quickstart:install)

インストールが終わったら以下のコマンドを入力し、.sbclrcにquicklispのパスを通します。
こうすることで、sbcl起動時に自動的にロードされるようになります。

(ql:add-to-init-file)

ついでに、以下の必要なライブラリもロードしておきます。

(ql:quickload "Alexandria")
(ql:quickload "Iterate")
(ql:quickload "Nibbles")
(ql:quickload "CL-PPCRE")
(ql:quickload "CL-FAD")

ロードが終わったら一旦終了します。

(quit)

QEMU/KVMのインストール

以下のコマンドでQEMU/KVMをインストールします。

sudo apt install qemu
sudo apt install kvm

Quick Start

MBuildのダウンロード

「Mezzano OS」をビルドするためのソースコード一式をGithubからダウンロードし、ディレクトリに入ります。

git clone https://github.com/froggey/MBuild.git
cd MBuild

必要な最新ソースコード一式のダウンロード

以下のコマンドを実行することで「Mezzano」及び「home」ディレクトリ内に最新のソースコードがダウンロードされます。

git submodule update --init

Makefile編集

SBCLとFILE_SERVER_IPの設定を行います。
好きなエディタでMakefileを開き、先頭箇所を以下のように編集してください。

SBCL := sbcl
FILE_SERVER_IP := ローカル・マシンのIPアドレス(例:192.168.0.8)

ローカル・マシンのIPアドレスはip address(旧ifconfig)コマンドで調べられます。

コールドイメージの作成

以下のコマンドでコールドイメージを作成します。

make cold-image

「mezzano.image」が作成されていたら成功です。

QEMU/KVMではなく、VirtualBoxを使用する場合は、以下のコマンドでコールドイメージを作成してください。

make cold-image-vmdk

「mezzano.vmdk」が作成されていたら成功です。

ファイルサーバの起動

ターミナル(端末)をもう一つ起動し、「MBuild」ディレクトリへ移動してから以下のコマンドを実行します。
これを忘れると「Mezzano OS」が起動出来ないので注意。

make run-file-server

Mezzano OS 起動

QEMUで起動する場合は、以下のコマンドを実行します。

make qemu

KVMで起動する場合は、以下のコマンドを実行します。

make kvm

KVMの方がQEMUよりもはるかに速いので、KVMを使用することをお勧めします。
初回起動時はかなり時間がかかります。(自分の環境下では30分くらいかかりました。)
次回起動時はすぐに起動します。

起動に成功すると以下のような画面が表示されます。

Screenshot from 2018-05-08 22-36-13.png

アプリケーション紹介

「Mezzano OS」上で動作するアプリケーションについて、いくつか紹介します。

Lisp REPL

Common Lispで作られたOSなのでやっぱりLisp REPLはありますよね。

Screenshot from 2018-05-09 11-05-17.png

IRC (Internet Relay Chat)

サーバを介してクライアントとクライアントが会話をする仕組みのチャットアプリです。

Screenshot from 2018-05-09 11-09-06.png

Editor

テキストエディタです。

Screenshot from 2018-05-09 11-13-47.png

Mandelbrot

マンデルブロ集合が描画されます。

Screenshot from 2018-05-09 11-14-55.png

Peek & Memory Monitor

Peekは、Threadやメモリ、ネットワーク、CPU、ディスクなどの状態を覗き見るアプリです。
タスクマネージャ的なものかな?
Memory Monitorはメモリの状態を視覚的に表示しているのだろうけど、よくわからない・・・。

Screenshot from 2018-05-09 11-19-08.png

Filer

Filerです。
REMOTEタブではホストOSのファイルやディレクトリも見れるようになってます。

Screenshot from 2018-05-09 11-25-42.png

Telnet

Telnetもあります。

Screenshot from 2018-05-09 11-30-42.png

最後に

まさか、Common Lispで作られたOSがあるとは思わなかったので見つけた時は驚きました・・・。
使い方もMBuild (Mezzanoビルド用ソースコード)のREADMEにわかりやすく書いてあったので、そんなに詰まることはありませんでした。

自分もいつかこんな自作OSを作ってみたいですね〜。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.