nexryai.log

Linuxを弄ったりする逸般人のログ

kiwi-ngを使ってオリジナルのLinuxを作る

最近FF13ネタばっかりなので少しはLinuxネタも書こうと思います。

ここではkiwi-ngというツールを使ってオリジナルのLinuxディストロを作る方法を紹介します。

この方法を使えばOpenSUSEubuntuCentOSFedoraなど様々なディストロをベースに自分のLinuxディストロを作れます。

なお私自身もこの方法でAlexandrite OSというディストロを開発しているので是非参考にしてください。

github.com

環境構築

OpenSUSE

sudo zypper install python3-kiwi

 

Fedora

sudo dnf install kiwi-cli

 

その他のディストロでは

sudo pip install kiwi

 

を利用してkiwi-ngをインストールします。詳細は公式ドキュメントを見てください。

Installation — KIWI NG 9.23.38 documentation

 

ディストロを実際に作る

1.下準備

まず適当な作業ディレクトリを作成しましょう。当然ですがパスに日本語やスペースが含まれないよう注意してください。

次に以下のファイルを好きな方法でダウンロードして作成した作業ディレクトリの直下に配置してください。

project-alexandrite/build.sh at 6c4b7e8a76bc4b5eda2813f7eb1ae8c49c3e9499 · nexryai/project-alexandrite · GitHub

 

これで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) までどうぞ。

 

Copyright © 2020-2021 nexryai All Rights Reserved. プライバシーポリシー

一部のページで使用しているスクリーンショットに写っているコンテンツや画像の権利は各著作権者に属します
© 2020 SQUARE ENIX CO., LTD. All Rights Reserved.
© 2011 SQUARE ENIX CO., LTD. All Rights Reserved. CHARACTER DESIGN: TETSUYA NOMURA