こんにちは、山田ハヤオです。
前回はAlter LinuxをベースにOSを開発するメリットを怪しいステマサイト風に説明しました。
今回は実際に開発を行う方法を解説します。
チャンネルを利用する
Alter Linuxは簡単に派生OSを作成できます。開発者はAlter Linux本体のソースコードをフォークする必要はありません。
Alter Linuxをベースに開発をするには「チャンネル」と呼ばれる仕組みを用いて開発を行います。
チャンネルはイメージファイルに含めるパッケージやファイル、設定などをプロファイルで簡単に切り替えられる仕組みです。
本家ArchISOのようにスクリプトごと変更する必要はありません。
これにより派生OSの開発者は自分のOSの変更部分にのみ開発に専念することができます。(ビルドスクリプトなどはAlter Linuxにまかせておけば大丈夫)
AlterLinuxでは、Xfce版とPlasma版をチャンネルを指定することによって切り替えています。
relengチャンネルを利用すればArchLinuxをビルドできます。
チャンネルについてもっと詳しく
チャンネルの本当のメリットは「共通のスクリプトを使用して様々な派生OSを作成できる」という点です。
AlterLinuxは公式ではXfceとPlasmaしかありませんが、実は非公式のチャンネルも開発していました。(これらは公式に入れる前にボツになったチャンネルです。)
それらのソースコードは全てこちらにあります。
ソースを見るとわかるのですが、スクリプトは最低限しかありません。
deepin.add
をAlterLinuxのソースコードに配置すればDeepin版Alter Linuxが、madeleine.add
を配置すればMadeleineOS1ハヤオが個人的にAlterLinuxの前身として開発していたOSをビルドすることができます。
このように「上書きするファイル」「設定を書いたファイル」「パッケージを書いたファイル」を用意することでどんなOSでもビルドできてしまうのがAlterLinuxのチャンネルです。
少しのカスタマイズなら「AlterLinuxの別バージョン」、高度にカスタマイズすれば「全く別のOS」を作成することができます。
チャンネルの雛形をダウンロードする
チャンネルを一から構築するのは大変なので、まずはチャンネルの雛形をソースコードから取り出しましょう。
作業ディレクトリを作成します。
mkdir myarch
cd myarch
これからはこのディレクトリで作業を行っていきます。
git clone https://github.com/fascodenet/alterlinux.git
mv ./alterlinux/channels/* ./
rm -rf alterlinux plasma
これでAlterLinuxのチャンネルがダウンロードできました。
最終的にshare
とxfce
、releng
というディレクトリが残れば成功です。
ディレクトリの解説
先程ダウンロードしたshare
とxfce
、releng
の解説を行います。
実際のカスタマイズするのはreleng
です。
share
は開発をする際に考慮する必要のあるファイルで、xfce
はチャンネル開発の見本です。
ディレクトリの構造
2つのディレクトリの中は基本的には同じ構造をしています。
中にはairootfs
とpackages
のディレクトリがあります。
airootfs
このディレクトリの中にはイメージファイルを作成する直前に/を上書きするファイルが含まれています。ファイルの権限等は維持されてコピーされます。
/root/customize_airootfs.sh
や/root/customize_airootfs_<channel name>.sh
といったスクリプトはairootfs
のコピー後に実行されるスクリプトです。
ここでタイムゾーンやインストーラなどの設定が行われています。
packages
このディレクトリは主にテキストファイルのみで構成されています。
ファイル名が.x86_64
で終わるコードにはインストールされるパッケージの一覧が書かれています。
excluide
というテキストファイルはインストールしないパッケージが書かれています。(このファイルを使用する方法は後ほど解説します。)
#
で始まる文は全てコメントとして扱われ、それ以外は1行につき1つのパッケージとして扱われます。
その他のファイル
xfce
にはその他のファイルが含まれているかもしれません。
また、packagesやairootfsにも更に細かな仕様があります。
それらは全て公式ドキュメントで解説されています。
(一部のカスタマイズ方法はこの下で説明しています。)
share
shareチャンネルは全てのチャンネルで共通で使用されるものが記述されています。
ここに記述されているパッケージはそれぞれのチャンネルで書く必要はありません。
ここに書かれているパッケージをどうしてもインストールしたくない場合はそれぞれのチャンネルでexclude
を設定して下さい。
xfce
実際のチャンネルです。このディレクトリのディレクトリ名がチャンネル名になります。
Alter Linux派生のOSを開発する場合、このディレクトリのみをGitで管理することになります。
そしてビルドする際はAlterLinuxのchannels
ディレクトリ内にチャンネルデータを追加してビルドを行います。
チャンネル名は必ず公式チャンネルと被らないようにし、AlterLinuxのGitの管理から除外するためにディレクトリ名の最後に.add
を付けて下さい。(ビルドする際のチャンネル名に.addは含まれません。)
releng
archisoのreleng
プロファイルを移植しました。ブートスプラッシュや日本語は利用できませんがチャンネルを開発するベースにすることができます。
実際にカスタマイズを行う
実際にディレクトリを改造してオリジナルのチャンネルを作成していきましょう。
チャンネルの名前を考えよう
ビルドを行う際、チャンネルを以下のように指定します。
./build.sh hoge
この際の名前を決めましょう。
既に使用されている名前や予約後としてxfce
やplasma
、share
やrebuild
、releng
があります。
これらの名前と被らないようにしてください。
ディレクトリ名を変更しよう
先程ダウンロードしたreleng
チャンネルを改造していきます。
先程決めたチャンネル名にreleng
ディレクトリの名前を変更します。
ディレクトリ名は「<チャンネル名>.add」にしてください。
今回はチャンネル名をcustomalter
にするのでディレクトリ名をcustomalter.add
にします。
制限を解除しよう
config
ファイル内で純粋なArchをビルドするために設定を固定しています。
その設定を無効化しましょう。以下の行を削除して下さい。
これらは-b
オプションや-k
、-c
をなど無効化します。
# Set to true to enable plymouth.(-b)
boot_splash=false
# See the `mksquashfs` help for details on these items.
sfs_comp="xz"
sfs_comp_opt=""
# Set the kernel that live session use.
# Please don't set anything if you want to use normal kernel.
# As of February 23, 2020, the available kernels are lts, zen, ck, , rt and lqx.
kernel=core
# Set the Japanese mode.
# When this is enabled, the packages in the japanese package list will be installed.
# A file for Japanese input is added.
japanese=false
設定を変更しよう
config
で上の行を削除してもまだ項目が残っています。
これはOS名やラベルなどの設定です。これは自由に変更できます。
設定しなかった場合、自動でAlterLinuxになります。
os_name
様々な部分に使用されるOS名です。今回はAlter Linux custom
にします。
どんな名前でも大丈夫ですがあまり長すぎると見にくいかもしれません。
iso_name
イメージファイルの名前に付けられるOS名です。上のos_name
と違い空白文字は入れられません。
チャンネル名はファイル名に含まれるのでここでは入れないほうが良いでしょう。
今回はalterlinux
にしました。
iso_label
イメージファイルのラベル名です。
$(date +%Y%m)
は日付が入ります。
ARCH_$(date +%Y%m)
と設定されている場合、2020年4月にビルドした場合、「ARCH_202004」になります。
あ、32文字以上は設定できなくてエラーになるので注意して下さい。
今回はALTER_$(date +%Y%m)
にしました。
iso_publisher
イメージファイルの作成者です。名前の後にメールアドレスかサイトのURLを入れましょう。
今回はYamada Hayao <https://fascode.net>
にしました。
iso_application
イメージファイルの表示名です。特に制限はないと思います。
Alter Linux Live/Rescue CD
と設定しました。
iso_version
イメージファイルのバージョンです。デフォルトでフルの日付になっていますがそのままで良いでしょう。
install_dir
イメージファイルでファイルを配置するディレクトリの名前です。今回はalter
にしました。
usershell
デフォルトのユーザーのシェルです。シェルをフルパスで記述して下さい。
今回は/bin/bash
にしました。
最終的に以下のようになれば設定の変更は完了です。
#!/usr/bin/env bash
#
# Yamada Hayao
# Twitter: @Hayao0819
# Email : hayao@fascode.net
#
# (c) 2019-2020 Fascode Network.
#
# config
#
# Overwrites the first to read and set the build script
# This configuration file follows the bash syntax.
#
# OS name used for startup screen, etc.
os_name="Alter Linux custom"
# OS name used for the name of the image file.
iso_name=alterlinux
# Image file label
iso_label="ALTER_$(date +%Y%m)"
# Image file creator information
iso_publisher="Yamada Hayao <https://fascode.net>"
# Image file name (not file name)
iso_application="Alter Linux Live/Rescue CD"
# Image file version
iso_version=$(date +%Y.%m.%d)
# Directory name used for installation
install_dir=alch
# Set the user's default shell.
usershell="/bin/bash"
ライブ起動時の背景画像を変更する
splash.png
を変更すると背景の画像を変えられます。
640×480のpng画像を利用できます。
これはAlterLinuxのデフォルトの背景です。
チャンネルの説明を設定する
description.txt
を変更します。一行で説明を英語で簡潔に書いて下さい。
Alter Linux channel customized by Hayao.
と設定しました。
ここまで前編
前半はここまでです。続き(中編か後編)はまた今度。
次回はairootfs
(/を上書きするファイル)やpackages
(パッケージリスト)のカスタマイズを行います。
コメント