archisoでGNOMEデスクトップ環境のライブISOイメージを作成してみました。
Fluentテーマを利用していてすっきりした見た目になっています。

環境

  • Arch Linux
  • archiso 83-1

構築

一旦、カスタマイズ前の状態でISOを作成してみます。

  1. archisoをインストール
    sudo pacman -S archiso
  2. プロジェクトディレクトリを作成
    cp -r /usr/share/archiso/configs/releng/ archiso-gnome
    cd archiso-gnome
  3. ISOをビルド
    sudo rm -rf work
    time sudo mkarchiso -v -o ./ ./

    N100 CPUで7分30秒で生成し、サイズは1.2GB

  4. VirtualBox等で生成されたISOが起動するか確認する

カスタマイズ

カスタマイズ方針

  • ブートローダはGRUB
  • デスクトップ環境はGNOME
  • GNOME Shell拡張機能を有効化
  • テーマはFluent
  • できるだけパッケージを利用する(後でアップデートできるように)
  • GUIインストーラCalamaresを有効化(調査中)

カスタムローカルリポジトリ

AURパッケージや独自パッケージをインストールするためにカスタムローカルリポジトリを作成します。

  1. リポジトリディレクトリの作成

    sudo mkdir -p /opt/custom-repo/x86_64
    sudo chown -R $USER:$GROUP /opt/custom-repo
  2. パッケージファイルの準備
    インストール済のAURパッケージを更新します。

    paru

    AURヘルパーparuのキャッシュディレクトリ~/.cache/paru/clone/配下から過去にインストールしたパッケージファイルを抽出できます。最新バージョンを利用します。

    extension-manager-0.6.3-3-x86_64.pkg.tar.zst
    fluent-cursor-theme-git-2025.02.26.r6.ge8ac55a-1-any.pkg.tar.zst
    fluent-gtk-theme-2025.04.17-1-any.pkg.tar.zst
    fluent-icon-theme-git-2025.02.26.r6.ge8ac55a-1-any.pkg.tar.zst
    gnome-shell-extension-blur-my-shell-68-1-any.pkg.tar.zst
    gnome-shell-extension-openweatherrefined-139-1-any.pkg.tar.zst
    paru-bin-2.0.4-3-x86_64.pkg.tar.zst
    ttf-hackgen-2.10.0-1-any.pkg.tar.zst
    yay-12.5.0-1-x86_64.pkg.tar.zst
  3. パッケージファイルのコードを修正したい場合
    例えば拡張機能のmetadata.jsonを修正したい場合

    paru -G gnome-shell-extension-openweatherrefined
    cd gnome-shell-extension-openweatherrefined
    makepkg -s

    File-Rollerでソースアーカイブ(*.tar.gz)を開いてmetadata.jsonを修正して上書き保存

    makepkg -f -A --skipchecksums

    パッケージ(*.pkg.tar.zst)が生成される。
    インストール確認する。

    sudo pacman -U *.pkg.tar.zst
  4. パッケージファイルの配置
    パッケージファイル*.pkg.tar.zstをカスタムリポジトリディレクトリ/opt/custom-repo/x86_64/に配置します。

  5. リポジトリデータベースの生成

    cd /opt/custom-repo/x86_64/
    rm custom-repo.*
    repo-add /opt/custom-repo/x86_64/custom-repo.db.tar.zst /opt/custom-repo/x86_64/*.pkg.tar.zst
  6. カスタムローカルリポジトリの参照設定

    ./pacman.conf
    [custom-repo]
    SigLevel = Optional TrustAll
    Server = file:///opt/$repo/$arch

インストールするパッケージの指定

インストールしたいパッケージ名を設定ファイル./packages.x86_64に追記する。

インストールするファイルの配置

インストールしたいファイルをディレクトリ./airootfs/配下に格納する。

  • 壁紙の場合
    ./airootfs/usr/local/share/backgrouns/
  • ユーザのホームディレクトリに配置したい場合(.bashrc等)
    ./airootfs/etc/skel/

dconf設定

  1. dconfデータベースの作成
    ./airootfs/etc/dconf/配下にgdmとuserのデータベースを作成する。
  2. ユーザ設定
    ./airootfs/etc/dconf/db/local.d/に設定ファイルを格納する。
  • 背景画像(org/gnome/desktop/background)の設定
  • インタフェース(org/gnome/desktop/interface)の設定
  • ウィンドウボタン(org/gnome/desktop/wm/preferences)の設定
  • GNOME Shell(org/gnome/shell)の設定
    拡張機能の有効化、お気に入りアプリの指定、ツアーのスキップ 等
  • 各GNOME Shell拡張機能(org/gnome/shell/extensions/***)の設定

    現在の設定値の確認はdconf-editor
    設定値のエクスポートはdconf dump <パス>

ISO生成

  1. ISOをビルド
    sudo rm -rf work
    time sudo mkarchiso -v -o ./ ./

    N100 CPUで24分で生成し、サイズは2.7GB

TODO

  • ソースアーカイブ内ファイルの差し替え手順整理、コマンド化
    tar -tvf openweatherrefined-v139.tar.gz | grep metadata.json
    tar -xvf openweatherrefined-v139.tar.gz gnome-openweather-139/metadata.json
    gnome-openweather-139/metadata.json
    "shell-version": [ "45", "46", "47", "48" ],
    tar -uvfz openweatherrefined-v139.tar.gz gnome-openweather-139/metadata.json
  • GUIインストーラの組み込み
  • 構築手順整備
  • GitHubにプロジェクトを登録
  • 生成したISOファイルをどこかに配置
  • CI
  • サイズ最適化(パッケージ削減)
  • 起動速度最適化
  • 天気の拡張の比較/選択
  • 電源アイコンの非表示(Just Perfectionかdconfで)