DebianのISOを作るスクリプトを書いた話

初めに 見出しへのリンク

今回はDebianのISOを作成するスクリプトを作った話をしよう。

njb-fm/debiso: Debian Remix Creator - GitHub

概要 見出しへのリンク

Kamuriki Linuxはバージョン3からDebianベースに切り替えた。 (噛み砕いて説明すると、「Debian」とそこから派生した「Ubuntu」というOSがある→Kamurikiは元々Ubuntuを改造していたが諸事情によりDebianの改造に変えたというコト。ちなみに全て自由ソフトウェアなので改造も自由にできる)

バージョン2まではUbuntu向けのスクリプトがあって、それを使って作ってたんだけど、GNU GPL(一般公衆利用許諾書)なのが嫌で今回自作するに至った訳だ。

ちなみにライセンスは三条項BSD(さっきのリンク先の「LICENSE_ja」が非公式の和訳)。GPLとは以下の点で違う。

  • ソースコードを公開する必要がない
  • 派生物へのライセンス感染(って言うとちょっと失礼。だってウイルスみたいに感染するんだも~ん)がない

こういうのをコピーレフトって言うんだけど、BSDにはコピーレフト条項がないくらいにはガバガバ。改造したコードの公開はどうぞお構いなくって感じ。んでKamurikiも3.0からは三条項BSDライセンスで配布する。

仕組み 見出しへのリンク

さて本題に入ろう。ここからより技術的な話になるのでついて来られない人は次の見出しまで飛ばしてね。

このスクリプトはつまるところ仮想環境を使わないでDebianのISOを作れるものだ。 具体的にはchroot上でAPT(場合によってはFlatpakも)を動かしている。そのためSnapCraftには対応しない…まあFlatpakがあるからいいや。

既存のDebianのISOイメージを改造しないという点でライセンス問題にも対処できる。但しSELinuxには対応していない。

以上、技術的な話でした。

やってみよう 見出しへのリンク

まず依存関係をインストールしよう。Debian/Ubuntu系の場合はこのコマンド。

sudo apt install binutils debootstrap dosfstools grub-efi-amd64-bin grub-efi-ia32-bin grub-pc-bin mtools squashfs-tools unzip xorriso

Fedora系ではこのコマンド。1.1にて32ビットUEFIのサポートを削除したので、バージョン9以降のEnterprise系でも動くようになった。

sudo dnf install binutils debootstrap dosfstools grub-efi-ia32 grub-efi-x64 grub-pc mtools squashfs-tools unzip xorriso

Arch/Manjaro系ではこのコマンド。Univalentでも動く。

sudo pacman -S binutils debootstrap dosfstools grub mtools squashfs-tools unzip xorriso

次にDebISOををダウンロードする。ここから最新のtarballをダウンロードして解凍。出てきたディレクトリにcdする。

今回は設定ファイルを何もいじらずそのまま使おう。設定ファイルら辺は公式マニュアルを読んでね。

DebianのISOを作りたい場合はこれ。

sudo ./mkdebiso -p configs/debian-sample

UbuntuのISOを作りたい場合はこれ。

sudo ./mkdebiso -p configs/ubuntu-sample

これで依存関係が自動でインストールされ、ISOの構築作業が始まる。途中で止まる箇所がいくつかあるので、キーボードで適切な値を入力しよう(大抵は「yes」或いは「y」だけど)。

これでGNOMEを搭載したFlatpak対応のDebian BookwormかUbuntu JammyのISOが作られる。ちなみにChromeのPPAを追加してあるので「sudo apt install google-chrome」でインストールできる(ソフト自体ではなくPPAの追加ならモーマンタイ)。

後書き 見出しへのリンク

みんなたくさん改造して、思い思いのDebianディストロを作ってね。

ではさらばじゃ!