MoonLightOS

ガイド

ダウンロードからインストールの完了まで。うまくいかないときの対処も含めて。

始める前に

64ビットのx86パソコンであれば動きます。インストーラーにはメモリ1.7GBとディスク18GB以上が必要です。下の数値は、余裕をもって動かせる目安です。

最小推奨
メモリ2GB4GB
ディスク18GB30GB
プロセッサー64ビットのx86プロセッサーであれば可デュアルコア
グラフィックスフレームバッファーのあるグラフィックスであれば可この15年以内のGPU

UEFIと従来のBIOSのどちらも、同じイメージで起動できます。Secure Bootは有効のままで構いません。

ダウンロードと検証

イメージはmoonlightos-26.04.5-bengunur-amd64.isoという1つのファイルで、その隣のもう1つのファイルにSHA-256チェックサムが入っています。書き込む前に必ず確認してください。ダウンロードが不完全だと、起動はするのに分かりにくい形で失敗するUSBメモリができあがります。

LinuxまたはmacOSで、ダウンロードを保存したフォルダー内で実行します。

sha256sum -c moonlightos-26.04.5-bengunur-amd64.iso.sha256

WindowsのPowerShellで実行し、表示されたハッシュを.sha256ファイルの値と見比べます。

Get-FileHash .\moonlightos-26.04.5-bengunur-amd64.iso -Algorithm SHA256
Get-Content .\moonlightos-26.04.5-bengunur-amd64.iso.sha256

1つ目のコマンドはOKと表示します。2つ目はハッシュを表示するので、ファイルの値と一致していることを確認してください。それ以外の結果なら、ダウンロードが壊れています。

26.04.5 をダウンロード

USBメモリへの書き込み

イメージはハイブリッドISOなので、そのままブロックコピーするだけで足ります。専用ツールは不要で、同じUSBメモリがUEFIのパソコンでもBIOSのパソコンでも起動します。USBメモリの中身はすべて消えます。容量は8GB以上必要です。

LinuxまたはmacOSでは、先にデバイス名を確認してから(Linuxではlsblk、macOSではdiskutil list)実行します。

sudo dd if=moonlightos-26.04.5-bengunur-amd64.iso of=/dev/sdX bs=4M status=progress oflag=direct conv=fsync
sudo dd if=moonlightos-26.04.5-bengunur-amd64.iso of=/dev/rdiskN bs=4m   # macOS

デバイス名は必ず二重に確認してください。ddは指定されたデバイスにそのまま書き込みます。

Windows

RufusのDDイメージモード、balenaEtcher、Ventoyのいずれかを使います。RufusにISOモードとDDモードのどちらで書き込むか聞かれたら、DDを選んでください。

USBメモリからの起動

USBメモリを挿したままパソコンの電源を入れ、一時的な起動メニューを開きます(メーカーによりF12、F8、F2、Esc、Delのいずれか)。または、ファームウェアの設定でUSBを最初の起動デバイスにします。Secure Bootの設定を変える必要はありません。

起動メニュー

  • Try or Install MoonLightOS

    通常の項目です。起動アニメーションとともにライブセッションを開始します。

  • Try or Install MoonLightOS (safe graphics)

    同じものを、カーネルモードセッティングを無効にして起動します。画面が真っ暗なままのときや表示が乱れるときに使ってください。

  • MoonLightOS in RAM (needs 6 GB+)

    システム全体をメモリに読み込むので、起動後にUSBメモリを抜けます。

  • Check this medium for defects

    USBメモリ上の全ファイルを、ビルド時に記録したチェックサムと照合します。

  • Verbose boot (no splash, logs to serial)

    すべてのメッセージを画面と最初のシリアルポートに出力します。画面が使えるようになる前に失敗する起動を確認できる唯一の方法です。

  • UEFI firmware settings

    ファームウェアの設定画面を開き直します。

MoonLightOSのスクリーンショット
その後、起動アニメーションが表示されます。ロゴは静止したまま、ハローが脈打ち、進捗バーが伸びていきます。

ライブセッション

最初に表示されるのは初期設定ウィザードです。システムの言語を選び、キーボードレイアウトを確認し(入力欄で試せます)、Wi-Fiに接続したら、試用するかインストールするかを選びます。ここで設定した内容はすべて実際のシステム設定で、インストーラーも同じ選択を引き継ぎます。

MoonLightOSのスクリーンショット

ライブセッションは、手を加えていないシステムそのものです。デスクトップもツールも設定ページもすべて同じです。ライブセッションのユーザー名はmoonlightで、パスワードはありません。インストーラーを起動するまで、ここでの操作がディスクに触れることはありません。

インストールするには、デスクトップのInstall MoonLightOSをダブルクリックするか、初期設定ウィザードをもう一度開いてインストールを選びます。

インストール

インストーラーはCalamaresです。7つの画面を進めると、ディスクへのコピーが始まります。

  1. ようこそ

    インストーラーの言語と、このガイドへのリンク。

  2. 地域

    地域とタイムゾーン。ロケールと数値の表記はここから決まります。

  3. キーボード

    ウィザードで選んだ内容が設定済みです。入力欄で確認できます。

  4. パーティション

    初期設定はディスクの消去で、スワップファイル付きのext4ファイルシステムを作ります。btrfs、xfs、f2fsも選べるほか、手動でのパーティション設定もできます。システムを暗号化にチェックを入れるとLUKS2でディスク全体を暗号化し、パスフレーズを設定します。これは起動のたびに入力するもので、忘れると復旧できません。UEFIのパソコンでは512MiBのEFIパーティションを作成します。

  5. ユーザー

    名前、パソコンの名前、ユーザー名、そして2種類の文字種を含む8文字以上のパスワード。最初のアカウントがsudo経由でこのパソコンを管理します。rootアカウントは無効のままで、自分で有効にしない限り自動ログインもしません。

  6. 概要

    インストーラーがこれから行うことの一覧です。この時点ではまだ何も書き込まれていません。

  7. インストール

    システムをディスクにコピーし、ブートローダーを導入し(UEFIではファームウェアの起動一覧にMoonLightOSとして登録されます)、ライブセッションの残骸を取り除きます。完了したら再起動してUSBメモリを抜いてください。

このパソコンに入っている他のOSは、初回起動時にos-proberが検出してGRUBメニューに追加します。

初回起動

インストールしたシステムは、どのインストールでも共通の、イメージとまったく同じ状態から始まります。このパソコン固有でなければならないものは、ログイン画面が出る前に初回起動時に作られます。作り終えたサービスは自分を無効にします。

  • 新しいマシンID。ネットワークを見ている人が、2つのインストールを結び付けられないようにするためです。
  • 新しいSSHホスト鍵。イメージをダウンロードした全員が同じ鍵を共有していては、ホストの検証に意味がなくなるからです。
  • GRUBメニュー。実際のディスクと、そこに入っている他のOSが見えるようになった時点で作ります。
  • 実際に搭載されているハードウェア向けに作り直したinitramfs。小さくなり、起動アニメーションも早く表示されます。
  • アイコン、フォント、デスクトップのキャッシュ。初回ログインが遅くならないようにするためです。
  • ファイアウォール。改めて有効にします。

出力は/var/log/moonlight-firstboot.logに書き出されます。その後ログイン画面が表示され、初回ログイン後にようこそウィンドウが開きます。

MoonLightOSのスクリーンショット

最初に行うこと

  • 外観を選ぶ

    ダークかライトかは、ようこそから直接選べます。それ以外はMoonLight Tweaksにまとまっています。デスクトップのレイアウト、壁紙、切り替えの時刻、ウィジェットなどです。

  • ドライバー

    ようこそ → ドライバー でドライバーマネージャーが開きます。NVIDIAのカードを積んだパソコンでは、プロプライエタリードライバーがISOに入っているので、インターネットに接続していなくても使えます。

  • ソフトウェア

    ストアにはsnap、Ubuntuのリポジトリ、Flathubがまとめて並びます。Thunderbird、Steam、Spotifyなども検索すればすぐ見つかります。

  • 指紋と顔

    ようこそ → 指紋認証、またはシステム設定 → アカウント から、指紋の登録や顔認証ロック解除の設定ができます。

  • バックアップ

    Timeshiftがシステムのスナップショットを定期的に取ります。必要になる前に設定しておいてください。

  • セキュリティ

    システム設定 → セキュリティ で、このパソコンの何が守られていて何が守られていないかが分かります。各行には直すためのボタンが付いています。

  • 開発者パック

    仮想マシン、PHPとデータベース、LaTeXは、ようこそからそれぞれワンクリックで、設定済みのリポジトリからインストールできます。

  • Windowsのソフト

    Windowsアプリを一度開いてください。Wineと、DXVK、VKD3D、フォント、ランタイムを準備します。あとは.exeファイルをそのまま開けます。

仮想マシン

VirtualBox

VirtualBoxでは初期値から3か所を変更しないと、このイメージがまったく起動しません。メモリ不足のように見えますが、実際は違います。GRUBがテーマ付きメニューを描くためにグラフィックスモードへ切り替える際、VirtualBoxの初期値であるビデオメモリ16MBでは失敗し、「Out of memory. You need to load the kernel first.」というメッセージが出ます。

タイプLinux / Ubuntu (64-bit)
メモリ4096MB(最小2048)
プロセッサー2個以上
ビデオメモリ128MB。実際に効くのはこの設定です
3Dアクセラレーション有効
グラフィックスコントローラーVMSVGA
EFIを有効化無効。BIOSで問題なく動き、VirtualBoxのEFIは作りかけです
自動インストールをスキップチェックを入れる
ディスク30GB以上

コマンドラインからは次のようにします。

VBoxManage modifyvm "MoonLightOS" \
    --ostype Ubuntu24_LTS_64 --memory 4096 --cpus 4 \
    --vram 128 --graphicscontroller vmsvga --accelerate3d on \
    --boot1 dvd --boot2 disk

VirtualBoxがこのメディアを「Ubuntu」と表示するのは、中に/casperフォルダーを見つけるからです。これはVirtualBoxの画面上のラベルにすぎず、メディア自体はMoonLightOSとして認識されます。それでもゲストのタイプはUbuntuにしてください。適切なチップセットとグラフィックスの初期値が選ばれるからです。

QEMU

ほとんどのパソコンと同じUEFIで起動します。先に書き込み可能なファームウェア変数と、書き込み先のディスクを作ります。

cp /usr/share/OVMF/OVMF_VARS.fd .
qemu-img create -f qcow2 disk.qcow2 30G
qemu-system-x86_64 \
  -enable-kvm -m 4096 -smp 4 \
  -machine q35 -cpu host \
  -device virtio-vga-gl -display gtk,gl=on \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -drive file=moonlightos-26.04.5-bengunur-amd64.iso,media=cdrom \
  -drive file=disk.qcow2,if=virtio

Microsoftの鍵を登録したファームウェアを使い、Secure Bootを実際に有効にした状態です。起動後、mokutil --sb-stateはSecureBoot enabledと表示し、設定 → MoonLightOSについて も同じ状態を示します。

cp /usr/share/OVMF/OVMF_VARS_4M.ms.fd OVMF_VARS.fd
qemu-system-x86_64 \
  -enable-kvm -m 4096 -smp 4 -machine q35,smm=on -cpu host \
  -global driver=cfi.pflash01,property=secure,value=on \
  -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.secboot.fd \
  -drive if=pflash,format=raw,file=OVMF_VARS.fd \
  -drive file=moonlightos-26.04.5-bengunur-amd64.iso,media=cdrom

従来のBIOSの場合。ISOはハイブリッドなので、同じファイルが昔ながらの方法でも起動します。

qemu-system-x86_64 -enable-kvm -m 2048 -cdrom moonlightos-26.04.5-bengunur-amd64.iso

2GBで動くことを確かめるには、アクセラレーションなし、メモリ最小で起動し、ライブセッションでzramがスワップとして見えていること、メモリの逼迫が低いままであることを確認します。

qemu-system-x86_64 -enable-kvm -m 2048 -smp 2 -vga std -cdrom moonlightos-26.04.5-bengunur-amd64.iso

# in the live session:
free -h                      # zram appears as swap
swapon --show                # /dev/zram0, zstd
cat /proc/pressure/memory    # "some avg10" under about 10 means it is keeping up
systemctl is-active earlyoom

VirtualBox、QEMU/SPICE、VMware向けのゲストツールはイメージに収録済みです。画面サイズの自動調整とクリップボードの共有は、これによるものです。

キーボードショートカット

一覧は機能のページにあります。初日に覚えておくと便利なものは次のとおりです。

Superメニューを開きます。Super+Spaceなら検索ボックスにカーソルが入った状態で開きます
Super+Vクリップボード履歴
Super+Nメモ
Print / Shift+Print画面全体/範囲のスクリーンショット。Shift+Super+5で撮影パネルが開きます
Super+Left / Rightウィンドウを画面半分に配置します
Ctrl+Upすべてのウィンドウ。Ctrl+Downですべてのデスクトップ
Super+L画面をロックします。Ctrl+Alt+Tで端末、Ctrl+Shift+Escでシステムモニターが開きます

ショートカット一覧

困ったときは

  • 起動メニューのあと画面が真っ暗なまま

    safe graphicsの項目を選んでください。それで起動するなら、そこからインストールし、あとでドライバーのページからプロプライエタリードライバーを有効にします。

  • 「Out of memory. You need to load the kernel first.」

    ビデオメモリ16MBのVirtualBoxです。128MBに増やして3Dアクセラレーションを有効にしてください。上の仮想マシンの項を参照してください。

  • デスクトップの動作が遅い

    設定 → MoonLightOSについて でOpenGLレンダラーを確認してください。ソフトウェア描画の場合、アニメーションはログイン時に自動で切れます。Tweaks → パフォーマンス から手動で切ることもできます。

  • USBメモリは起動するのに、そのあと分かりにくい形で失敗する

    起動メニューからCheck this medium for defectsを実行し、ダウンロードしたファイルのSHA-256チェックサムも確認してください。

  • Wi-Fiが使えない

    ドライバーのページを開いてください。Broadcomのドライバーはイメージに入っています。他のアダプターについては、ネットワークメニューにカーネルが検出したものが並びます。

  • 指紋リーダーが検出されない

    指紋認証を開いてください。センサーのメーカー名と、ネイティブ対応・マッチオンチップ・ベンダー製バイナリーのどれに当たるかを示し、取れる対処を説明します。

  • ログの読み方

    起動時に何が問題になったか、ログインマネージャーのログ、初回起動のログ、有効な起動テーマの名前を確認できます。

journalctl -b -p warning          # what the boot complained about
journalctl -b -u lightdm
cat /var/log/moonlight-firstboot.log
plymouth-set-default-theme        # should print: moonlightos

不具合を報告するときは、MoonLightOSについて → レポートをコピー でリリースとハードウェアの情報がクリップボードに入ります。moonlight-selftestは、デスクトップが実際に何をしているかを出力します。

moonlight-selftest | less

自分でビルドする

ディストリビューション全体が1つのリポジトリにまとまっています。画像素材は1つのロゴから作られ、テーマは1つの配色から生成され、1つのスクリプトがすべてをSecure Boot対応の起動可能なISOにまとめます。必要なのはDocker(ビルドはコンテナ内で動くので、OSは問いません)と、約25GBの空き容量です。

./build.shすべて実行:bootstrap → カスタマイズ → 圧縮 → ISO
./build.sh rootfsシステムのカスタマイズが終わった時点で停止
./build.sh image既存のルートファイルシステムを新しいISOに再パッケージ
./build.sh finishsquashfsを再利用し、ブートローダーとISOだけを作成
./build.sh shellビルド環境の中でシェルを開く
./build.sh clean作業用ボリュームを削除

ISOはout/に書き出され、その隣にSHA-256チェックサムが置かれます。WindowsではGit Bashから実行するか、build.ps1を使ってください。

ビルドの構成

build.sh手元のパソコンでの入口。すべてをコンテナ内で実行します
build/Dockerfile.builderビルド環境。対象リリースに固定しています
build/mkiso.shbootstrap、カーネルの取り出し、squashfs、ブートローダー、ISO
build/inchroot.shchroot内で行うすべての処理を14段階で
config/moonlight.confリリースを定義する文字列のすべて
packages/*.listイメージに入れるものと、取り除くもの
rootfs/そのままシステムにコピーされるファイル。MoonLightアプリもここに含まれます
brand/source/元のロゴと壁紙。brand/out/は生成されたものです
tools/gen-branding.py元のロゴ → 起動アニメーション、GRUB、ログイン画面、アイコン
tools/gen-themes.py1つの配色 → 完全な2つのテーマ
po/MoonLightアプリの翻訳
installer/Calamaresの設定と外観

ISOを作る前に、ビルドはイメージの中で120項目を超える必須検査を実行します。カーネル、署名済みshim、2つのテーマ、MoonToolsの各ツール、コーデック、Wi-Fiドライバー、翻訳、そして顔認証ロック解除と緊急パスワードが無効になっていることを確認します。1つでも落ちればビルドは止まります。作業領域にbind mountではなくDockerボリュームを使っているのは、WindowsやmacOSのbind mountではファイルの所有権、シンボリックリンク、デバイスノードが保持されないためです。

カスタマイズ

  • リリースの識別情報

    config/moonlight.confに、ディストリビューションを定義する文字列がすべて入っています。

  • 画像素材

    元のロゴか壁紙を差し替えてtools/gen-branding.pyを実行し直すと、起動アニメーション、GRUB、ログイン画面、アイコン、インストーラーの画像がすべて作り直されます。

  • 色

    tools/gen-themes.pyにダークとライトの配色が1つずつ入っており、同じ規則から完全な2つのテーマを生成します。

  • インストールするパッケージ

    packages/*.listに1行1パッケージで記述し、ファイル名順にインストールします。あとから削除するものは99-purge.listに並べます。

  • デスクトップの初期値

    rootfs/etc/dconf/db/moonlight.d/に、dconfのkeyfile形式で記述します。これは初期値であって固定ではないので、利用者はどれでも変更できます。

  • 手早く作り直す

    rootfs/やパッケージリストを変更したあとは、build.sh rootfsでキャッシュ済みのベースにchroot段階だけをやり直し、build.sh imageでISOを再パッケージします。build.sh finishは起動メニューの作業用です。

サポートと不具合の報告

役に立つ報告には、期待した動作、実際に起きたこと、そしてどのパソコンで起きたかが書かれています。MoonLightOSは3つ目を簡単にします。

  • MoonLightOSについて → レポートをコピー で、リリース、ハードウェア、グラフィックスレンダラー、Secure Bootの状態がテキストとしてクリップボードに入ります。
  • moonlight-selftestは、使われているテーマ設定、シェルのスタイルシートが正しく読み込まれたか、どのグラフィックスドライバーが有効か、どのサービスが失敗したかを出力します。
  • 起動の問題では、Verbose bootの項目がすべてのメッセージを画面と最初のシリアルポートに書き出します。
  • インストーラーについては、インストール済みシステムの/var/log/moonlight-firstboot.logと、journalctl -b -p warningを確認してください。

送り先

公開の課題トラッカーとサポート窓口は、用意ができ次第ここでお知らせします。それまでは報告内容を保管しておいてください。必要な情報は、上の2つのツールからすべて得られます。