最近FF13ネタばっかりなので少しはLinuxネタも書こうと思います。
ここではkiwi-ngというツールを使ってオリジナルのLinuxディストロを作る方法を紹介します。
この方法を使えばOpenSUSE、ubuntu、CentOS、Fedoraなど様々なディストロをベースに自分のLinuxディストロを作れます。
なお私自身もこの方法でAlexandrite OSというディストロを開発しているので是非参考にしてください。
環境構築
sudo zypper install python3-kiwi
sudo dnf install kiwi-cli
その他のディストロでは
sudo pip install kiwi
を利用してkiwi-ngをインストールします。詳細は公式ドキュメントを見てください。
Installation — KIWI NG 9.23.38 documentation
ディストロを実際に作る
1.下準備
まず適当な作業ディレクトリを作成しましょう。当然ですがパスに日本語やスペースが含まれないよう注意してください。
次に以下のファイルを好きな方法でダウンロードして作成した作業ディレクトリの直下に配置してください。
これでbuild.shを実行すれば簡単にビルドできるようになりますがまだ設定は終わっていません。build.shの11行目の distro_dir=
の後ろの部分を自分の作るLinuxディストロの名前に変えましょう。(初期ではalexandriteになっています。)
2.kiwiの設定ファイルを作る
続いて先程指定したディストロ名と全く同じ名前のディレクトリを作ってください。例えば先程 distro_dir=hogefuge
と設定した場合は "hogefuge" というディレクトリを作業ディレクトリ直下に作成しましょう。
次にconfig.xmlを準備しますがこれを1から作るとかなり面倒なので既存の公開されているconfig.xmlを改造しようと思います。
以下のリンク先のファイルとディレクトリ全てを Step2 で作成したディレクトリ直下にダウンロードしてください。gitコマンドを使うと楽です。使い方は各自調べてください()
作りたいディストロ(ホストOSは関係ない)を何ベースにするかによってダウンロードするファイルが変わるので注意しましょう。
OpenSUSE tumbleweedベースの場合
kiwi/build-tests/x86/tumbleweed/test-image-live at master · OSInside/kiwi · GitHub
OpenSUSE leapベースの場合
kiwi/build-tests/x86/leap/test-image-live at master · OSInside/kiwi · GitHub
ubuntuベースの場合
kiwi/build-tests/x86/ubuntu/test-image-live-disk at master · OSInside/kiwi · GitHub
fedoraベースの場合
kiwi/build-tests/x86/fedora/test-image-live-disk at master · OSInside/kiwi · GitHub
CentOSベースの場合
kiwi/build-tests/x86/centos/test-image-live-disk-v8 at master · OSInside/kiwi · GitHub
ちなみにkiwi-ng自体はpacmanにも対応しているのでその気になればArchベースで作ることも可能かと思いますがやったことないので分かりません。私はOpenSUSEが大好きなのでOpenSUSE leapベースで検証しています。
結果ディレクトリ構成が以下のようになってるか確認しましょう
作業ディレクトリ
→build.sh
→[自分で指定したディストロ名のディレクトリ]
⇛config.sh
⇛config.xml
⇛root
3.カスタマイズする
config.xmlをカスタマイズしておおまかな設定をします。
と言っても見れば分かります。公式ドキュメントやAlexandrite OSのconfig.xmlも参考にして自力で好きなようにカスタマイズしましょう。ここではつまずきやすいポイントだけ解説しておきます。
・ <users>内に記述するパスワードは平文で書かない。openssl passwd -1 'パスワード'
でハッシュ値化したものを記述する
参考↓
ログインできない不具合を修正 · nexryai/project-alexandrite@21c40d8 · GitHub
・ 一番最初の img schemaversion="x.x" name=" [ディストロ名] "
のschemaversionの値は環境によって違う場合がある。バージョンが違うとその趣旨のエラーが出るのでそこで言われた数値を設定すれば解決します。
・インストーラーを実装したい場合、calamaresというパッケージをインストールするよう設定すると一応インストールも可能になる。
config.xmlが完成したら最後のカスタマイズしていきましょう。
rootというディレクトリがあるのでそこに入りましょう。予めいくつかのファイルが存在していますがこれはそのままにしておきましょう。ここの中身は完成したルートディレクトリに上書きされます。他に追加したいファイルがあればここに追加します。例えばgtkテーマを追加したい場合
root/usr/share/themes
にテーマが入ったディレクトリをコピーしましょう。(ディレクトリがなければ作りましょう)この辺は普通のLinuxデスクトップのカスタマイズと大差ないので説明は省きます。
root/etc/skel/.config
に設定ファイルを作れば初期設定として適応できます。
スケルトンディレクトリについては他のサイトでも解説されているので参考にしてみると良いかもしれません。
さて後は作業ディレクトリ直下に戻りbuild.shを管理者権限で実行するだけです。ビルドには時間がかかりますがゲームでもして気長に待ちましょう。
完了するとtmpディレクトリの下のoutというディレクトリにisoファイルがあるはずです。
以上で終了です。お疲れ様でした。他に分からないことがあればTwitter (@nexryai) までどうぞ。