Archiso

提供: ArchWiki
2022年9月3日 (土) 19:26時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎カスタムプロファイルを準備する: 冒頭の文章を同期)
ナビゲーションに移動 検索に移動

関連記事

Archiso は Arch Linux のライブ CD/USB ISO イメージを構築するための 高度にカスタマイズ可能なツールです。公式のイメージは Archiso でビルドされています。レスキューシステム、Linux インストーラー、そして他のシステム用のベースとして使用できます。この Wiki 記事では、Archiso のインストールの仕方と、成果物の ISO イメージに含まれるパッケージやファイルなどを設定する方法について説明します。技術的な要求とビルドの手順は プロジェクトの公式ドキュメントを参照してください。Archiso はいくつもの Bash スクリプトで実装されており、mkarchiso コマンドがその中心です。このコマンドのオプションは mkarchiso -h で文書化されているので、ここでは説明しません。

インストール

archiso パッケージか archiso-gitAUR パッケージをインストールしてください。archiso-profilesAUR パッケージには、コミュニティによって提供されている追加のプロファイルが含まれています。

カスタムプロファイルを準備する

Archiso には2つのプロファイルが付属しています。relengbaseline です。

  • releng は毎月リリースされる公式インストール ISO を作成するために使われます。カスタマイズ ISO イメージを作成するためのベースとしても使用できます。
  • baseline は最小限の構成であり、メディアからライブ環境を起動するために必要な最小限のパッケージのみが含まれています。

未変更のプロファイルをビルドする場合は、#ISO をビルドする までスキップしてください。archiso に同梱されているプロファイルのうちどれかをカスタマイズしたい場合は、ディレクトリ /usr/share/archiso/configs/profile-name/ を、自由な名前の書き込み可能なディレクトリへコピーしてください。例えば:

$ cp -r /usr/share/archiso/configs/releng/ archlive

カスタムプロファイルをカスタマイズ、ビルドするには以下のセクションに進んでください。

プロファイルの構造

Archiso プロファイルはISOイメージファイルの内容を定義するファイルが含まれています。プロファイルの構造は /usr/share/doc/archiso/README.profile.rst[1] で文書化されています。

パッケージを選択する

packages.x86_64 を編集してLiveシステムにどのパッケージをインストールするかを設定してください。1行で1つのパッケージが定義されます。

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

公式リポジトリに存在しないパッケージ (カスタムパッケージや AUR/ABS からのパッケージ) を追加するには, カスタムローカルリポジトリを作成 し、そこにパッケージを追加してください。その後、pacman.conf にリポジトリを以下のように追加してください:

archlive/pacman.conf
...
[customrepo]
SigLevel = Optional TrustAll
Server = file:///path/to/customrepo
...
ノート: pacman.conf の順番について。カスタムリポジトリを最優先にするには、設定を他のリポジトリより上に記述してください

multilibリポジトリ

multilib リポジトリからパッケージをインストールする場合は pacman.conf の設定をアンコメントしてください。

イメージにファイルを追加

airootfs ディレクトリはライブシステムの root ディレクトリ (/) の起点として使用されます。このディレクトリの全てのファイルがパッケージがインストールされる前に作業ディレクトリにコピーされます。

変更されたファイルやディレクトリを airootfs/ 以下の目的の場所にコピーします。例えば、もし iptables スクリプトを現在のライブイメージで使用したい場合、それをこのようにコピーします。

$ cp -r /etc/iptables archlive/airootfs/etc

同様に いくつかの特別な場所にある設定ファイルは特別な注意が必要です。 不完全なディレクトリ構造は mkdir(1) で作成できます。

ヒント: インストールユーザーのホームディレクトリにファイルを追加する場合、 archlive/airootfs/root/ にファイルを設置してください。.全てのユーザーのホームディレクトリに設置したい場合、それらを archlive/airootfs/etc/skel/.

に設置してください。

ノート: カスタムファイルがパッケージによって提供されているファイルと衝突する場合、 バックアップファイル に指定されていない限り上書きされます。

デフォルトでは パーミッション は、ファイルは 644 ディレクトリは 755 に設定されており、全ては root ユーザーによって所有されています。他のパーミッションや所有者を設定するには、 file_permissions 連想配列を profiledef.sh で設定してください. 詳細は README.profile.rst を確認してください。

ブートローダー

デフォルトのファイルで大抵は動作するので、触れる必要はほとんどありません。

Due to the modular nature of isolinux, you are able to use lots of addons since all *.c32 files are copied and available to you. Take a look at the official syslinux site and the archiso git repo. Using said addons, it is possible to make visually attractive and complex menus. See here.

ログインマネージャ

この記事またはセクションは情報が古くなっています。
理由: airootfs/root/customize_airootfs.shは非推奨(deprecated)になっています。替わりにpacman hooksを使用してください(51のCHANGELOG参照) (Discuss)

ブート時に X を起動させるのはログインマネージャの systemd サービスを有効化すれば出来ます。どの .service ファイルがソフトリンクを必要としているのかわからない場合、作成する iso と同じプログラムを使っていればすぐに確認することができます:

$ ls -l /etc/systemd/system/display-manager.service

そして ~/archlive/airootfs/etc/systemd/system に同じソフトリンクを作成します。LXDM の場合:

# ln -s /usr/lib/systemd/system/lxdm.service ~/archlive/airootfs/etc/systemd/system/display-manager.service

これでライブ環境でシステムを起動した時に LXDM が有効になります。

もしくは airootfs/root/customize_airootfs.sh で他のサービスと同じようにサービスを有効化することもできます。

起動時に自動的にグラフィカル環境が実行されるようにしたい場合 airootfs/root/customize_airootfs.sh を編集して以下の行を:

systemctl set-default multi-user.target

次のように置き換えてください:

systemctl set-default graphical.target

自動ログインの変更

getty の自動ログインの設定は airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf にあります。

このファイルを編集することで自動ログインするユーザーを変更することができます:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin isouser --noclear %I 38400 linux

もしくは上記の設定を削除することで自動ログインを無効化することも可能です。

ISO をビルドする

CD や USB に焼くことのできる ISO を以下のコマンドでビルドしてください:

# mkarchiso -v -w /path/to/work_dir -o /path/to/out_dir /path/to/profile/
  • -w は作業ディレクトリを指定します。このオプションが指定されない場合、カレントディレクトリ内の work をデフォルトとして使用します。
  • -o は、ビルド済み ISO イメージが置かれるディレクトリを指定します。このオプションが指定されない場合、カレントディレクトリ内の out をデフォルトとして使用します。
  • mkarchiso の実行時にはプロファイルファイル profiledef.sh は指定できず、そのファイルまでのパスのみを指定できることに注意してください (訳注: つまり、そのファイルが存在するディレクトリを指定する)。

/path/to/profile/ はカスタムプロファイルへのパスに置き換えてください。未変更のプロファイルをビルドする場合は /usr/share/archiso/configs/releng/ に置き換えてください。

ヒント: メモリ容量が十分ならば、作業ディレクトリを tmpfs 上に置くのが好ましいでしょう。例えば:
# mkarchiso -v -w /tmp/archiso-tmp /path/to/profile/

スクリプトは、指定されたパッケージを work_directory/x86_64/airootfs へダウンロード・インストールし、カーネルと init イメージを作成し、カスタマイズを適用し、最後に ISO をビルドして出力ディレクトリへ保存します。

作業ディレクトリの削除

警告: mkarchiso の実行が中断された場合、作業ディレクトリを削除する前に findmnt(8) を実行して、マウントバインドが存在しないことを確認してください。さもないと、データが消失する場合があります (例えば、/run/media/user/label にマウントされている外部デバイスが、ビルドプロセス中に work/x86_64/airootfs/run/media/user/label へバインドされます)。

一時ファイルが作業ディレクトリにコピーされています。ISO を正常にビルドした後であれば、作業ディレクトリとその内容を削除できます。例えば:

# rm -rf /path/to/work_dir

ISO を使う

CD

iso を cd に書き込んでください。光学ディスクドライブ#焼き込みに従ってください。

USB

USB インストールメディアを見て下さい。

GRUB

マルチブート USB ドライブ#Arch_Linux を見て下さい。

grub4dos

Grub4dos はマルチブート USB を作成することができるユーティリティです。同じ USB スティックから複数の Linux ディストリを起動することができます。

grub4dos で USB にインストールされたシステムを起動するには、ISO をループマウントして /arch ディレクトリを USB のルートディレクトリにコピーしてください。それから grub4dos から menu.lst ファイルを編集して以下の行を追加してください:

title Archlinux x86_64
kernel /arch/boot/x86_64/vmlinuz archisolabel=<your usb label>
initrd /arch/boot/x86_64/archiso.img

x86_64 の部分は必要に応じて変更して適当なラベル名を付けてください。

インターネットにアクセスできない環境でのインストール

インターネットに接続できない、パッケージを何度もダウンロードしたくないなどの理由で archiso (例: 公式の月次リリース) をインストールするときは以下を読んでください:

まず、#インターネット接続の確立などのセクションを飛ばして#ベースシステムのインストールまでインストールガイドに従ってください。

新しい root に archiso をインストール

pacstrap でパッケージをインストールする代わりに (リモートのリポジトリからパッケージをダウンロードするわけですが今はインターネット接続がありません)、ライブ環境から新しい chroot に全てをコピーしてください:

# time cp -ax / /mnt
ノート: オプション (-x) を使って、新しい root にコピーしないように複数のディレクトリを除外しています。

次に、新しいシステムの整合性を保つために、ディレクトリを複数作成してカーネルイメージを新しい root にコピーします:

# cp -vaT /run/archiso/bootmnt/arch/boot/$(uname -m)/vmlinuz /mnt/boot/vmlinuz-linux

その後、インストールガイド#fstab に書かれているとおりに fstab を生成してください。

Chroot とベースシステムの設定

次に、新しくインストールしたシステムに chroot します:

# arch-chroot /mnt /bin/bash
ノート: インストールガイド#システムの設定における他の設定 (ロケールやキーマップなど) を行う前に、ライブ環境の跡 (つまり、ライブ環境に適合しない archiso のカスタマイズ) を消す必要があります。

journald の設定の復旧

archiso のカスタマイズ によってシステムのジャーナルはメモリに保存されるようになっており、そのままだと再起動でジャーナルは消えてしまいます:

# sed -i 's/Storage=volatile/#Storage=auto/' /etc/systemd/journald.conf

特殊な udev ルールの削除

この udev ルール は有線ネットワークインターフェイスが存在する場合に自動的に dhcpcd を起動します。

# rm /etc/udev/rules.d/81-dhcpcd.rules

archiso によって作成されたサービスの無効化と削除

ライブ環境用に作成されているサービスファイルがあるので、サービスを無効化してファイルを削除してください (新しい環境では不要であるため):

# systemctl disable pacman-init.service choose-mirror.service
# rm -r /etc/systemd/system/{choose-mirror.service,pacman-init.service,etc-pacman.d-gnupg.mount,getty@tty1.service.d}
# rm /etc/systemd/scripts/choose-mirror

ライブ環境の特殊なスクリプトの削除

ライブ環境には archiso スクリプトによっていくつかスクリプトがインストールされており、これらは新しい環境では必要ありません:

# rm /etc/systemd/system/getty@tty1.service.d/autologin.conf
# rm /root/{.automated_script.sh,.zlogin}
# rm /etc/mkinitcpio-archiso.conf
# rm -r /etc/initcpio

archlinux 鍵のインポート

公式リポジトリを使うには archlinux のマスター鍵をインポートする必要があります (pacman-key#キーリングの初期化)。通常は pacstrap でインポートされますが、以下のコマンドでインポートすることもできます:

# pacman-key --init
# pacman-key --populate archlinux
ノート: エントロピーを生成するにはキーボードやマウスを動かす必要があります。

システムの設定

スキップしたインストールガイド#システムの設定セクションの設定 (ロケールやタイムゾーン、ホストネームなど) を行ってインストールガイド#Initramfs に書いてあるように初期 RAM ディスクを作成してインストールを完了してください。

グラフィカルログインの有効化 (任意)

GDM などのディスプレイマネージャを使用する場合、systemd のデフォルトターゲットを multi-user.target からグラフィカルログインができるターゲットに変更すると良いでしょう:

# systemctl disable multi-user.target
# systemctl enable graphical.target

参照

ドキュメントとチュートリアル

カスタマイズテンプレートのサンプル