「Archiso」の版間の差分
(→カスタムプロファイルを準備する: 同期) |
(同期) |
||
(同じ利用者による、間の10版が非表示) | |||
1行目: | 1行目: | ||
+ | {{Lowercase title}} |
||
[[Category:ライブ Arch システム]] |
[[Category:ライブ Arch システム]] |
||
[[Category:Arch の入手とインストール]] |
[[Category:Arch の入手とインストール]] |
||
[[Category:Arch プロジェクト]] |
[[Category:Arch プロジェクト]] |
||
− | [[en: |
+ | [[en:archiso]] |
− | [[es: |
+ | [[es:archiso]] |
− | [[fr: |
+ | [[fr:archiso]] |
− | [[pt: |
+ | [[pt:archiso]] |
− | [[ru: |
+ | [[ru:archiso]] |
− | [[zh-hans: |
+ | [[zh-hans:archiso]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Preboot Execution Environment}} |
{{Related|Preboot Execution Environment}} |
||
{{Related|オフラインインストール}} |
{{Related|オフラインインストール}} |
||
+ | {{Related|USB インストールメディア}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [https://gitlab.archlinux.org/archlinux/archiso Archiso] は Arch Linux のライブ CD/USB ISO イメージを構築するための 高度にカスタマイズ可能なツールです。[https://www.archlinux.jp/download/ 公式のイメージ]は |
+ | [https://gitlab.archlinux.org/archlinux/archiso Archiso] は Arch Linux のライブ CD/USB ISO イメージを構築するための 高度にカスタマイズ可能なツールです。[https://www.archlinux.jp/download/ 公式のイメージ]は archiso でビルドされています。レスキューシステム、Linux インストーラー、そして他のシステム用のベースとして使用できます。この Wiki 記事では、archiso のインストールの仕方と、成果物の ISO イメージに含まれるパッケージやファイルなどを設定する方法について説明します。技術的な要求とビルドの手順は [https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/docs プロジェクトの公式ドキュメント]を参照してください。Archiso はいくつもの Bash スクリプトで実装されており、''mkarchiso'' コマンドがその中心です。このコマンドのオプションは ''mkarchiso -h'' で文書化されているので、ここでは説明しません。 |
== インストール == |
== インストール == |
||
− | {{Pkg|archiso}} パッケージか {{AUR|archiso-git}} パッケージを[[インストール]]してください |
+ | {{Pkg|archiso}} パッケージか {{AUR|archiso-git}} パッケージを[[インストール]]してください。 |
== カスタムプロファイルを準備する == |
== カスタムプロファイルを準備する == |
||
41行目: | 43行目: | ||
==== カスタムのローカルリポジトリ ==== |
==== カスタムのローカルリポジトリ ==== |
||
− | 標準の Arch リポジトリに存在しないパッケージ ( |
+ | 標準の Arch リポジトリに存在しないパッケージ ([[AUR]] のパッケージや、[[ABS]] でカスタマイズされたパッケージなど) を追加するには, [[カスタムローカルリポジトリ]]を設定し、そこにパッケージを追加してください。その後、{{ic|pacman.conf}} にリポジトリを以下のように追加してください: |
{{hc|''archlive''/pacman.conf|2= |
{{hc|''archlive''/pacman.conf|2= |
||
51行目: | 53行目: | ||
}} |
}} |
||
+ | {{Note| |
||
− | {{Note|{{ic|pacman.conf}} 内での順番は重要です。カスタムリポジトリを最優先させるには、他のリポジトリエントリよりも上にそのリポジトリを配置してください。}} |
||
+ | * {{ic|pacman.conf}} 内での順番は重要です。カスタムリポジトリを最優先させるには、他のリポジトリエントリよりも上にそのリポジトリを配置してください。 |
||
+ | * この {{ic|pacman.conf}} はイメージのビルドのためだけに使用されます。Live 環境内で使用されるものではありません。Live 環境内で使用されるようにするには、[[#イメージにリポジトリを追加する]] を見てください。 |
||
+ | }} |
||
==== multilib のパッケージ ==== |
==== multilib のパッケージ ==== |
||
72行目: | 77行目: | ||
デフォルトでは、ファイルの[[パーミッション]]は {{ic|644}}、ディレクトリのパーミッションは {{ic|755}} に設定されており、全て root ユーザーによって所有されています。特定のファイルやフォルダーに別のパーミッションや所有者を設定するには、 {{ic|file_permissions}} 連想配列を {{ic|profiledef.sh}} で設定してください. 詳細は [https://gitlab.archlinux.org/archlinux/archiso/-/blob/master/docs/README.profile.rst README.profile.rst] を確認してください。 |
デフォルトでは、ファイルの[[パーミッション]]は {{ic|644}}、ディレクトリのパーミッションは {{ic|755}} に設定されており、全て root ユーザーによって所有されています。特定のファイルやフォルダーに別のパーミッションや所有者を設定するには、 {{ic|file_permissions}} 連想配列を {{ic|profiledef.sh}} で設定してください. 詳細は [https://gitlab.archlinux.org/archlinux/archiso/-/blob/master/docs/README.profile.rst README.profile.rst] を確認してください。 |
||
+ | |||
+ | === イメージにリポジトリを追加する === |
||
+ | |||
+ | Live 環境内で使用できるリポジトリを追加するには、[[pacman#リポジトリとミラー|適切に変更された]] {{ic|pacman.conf}} を作成し、{{ic|''archlive''/airootfs/etc/}} に配置してください。 |
||
+ | |||
+ | (追加した) リポジトリがキーを使用する場合、{{ic|''archlive''/airootfs/usr/share/pacman/keyrings/}} にそのキーを配置してください。キーファイル名は {{ic|.gpg}} で終わらなければなりません。さらに、キーは信頼されていなければなりません。これは、GnuPG でエクスポートされた信頼ファイルを同じディレクトリ内に作成することにより可能です。信頼ファイル名は {{ic|-trusted}} で終わらなければなりません。最初のフィールドはキーのフィンガープリント、2つめのフィールドは信頼です。{{ic|/usr/share/pacman/keyrings/archlinux-trusted}} を例にすることができます。 |
||
+ | |||
+ | ==== archzfs 例 ==== |
||
+ | |||
+ | この例でのファイルは以下の通りです: |
||
+ | airootfs |
||
+ | ├── etc |
||
+ | │ ├── pacman.conf |
||
+ | │ └── pacman.d |
||
+ | │ └── archzfs_mirrorlist |
||
+ | └── usr |
||
+ | └── share |
||
+ | └── pacman |
||
+ | └── keyrings |
||
+ | ├── archzfs.gpg |
||
+ | └── archzfs-trusted |
||
+ | |||
+ | {{hc|airootfs/etc/pacman.conf|2= |
||
+ | ... |
||
+ | [archzfs] |
||
+ | Include = /etc/pacman.d/archzfs_mirrorlist |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | {{hc|airootfs/etc/pacman.d/archzfs_mirrorlist|<nowiki> |
||
+ | Server = https://archzfs.com/$repo/$arch |
||
+ | Server = https://mirror.sum7.eu/archlinux/archzfs/$repo/$arch |
||
+ | Server = https://mirror.biocrafting.net/archlinux/archzfs/$repo/$arch |
||
+ | Server = https://mirror.in.themindsmaze.com/archzfs/$repo/$arch |
||
+ | Server = https://zxcvfdsa.com/archzfs/$repo/$arch |
||
+ | </nowiki>}} |
||
+ | |||
+ | {{hc|airootfs/usr/share/pacman/keyrings/archzfs-trusted|2= |
||
+ | DDF7DB817396A49B2A2723F7403BD972F75D9D76:4: |
||
+ | }} |
||
+ | |||
+ | {{ic|archzfs.gpg}} 自体は https://archzfs.com/archzfs.gpg のリポジトリサイトから直接入手できます。 |
||
=== カーネル === |
=== カーネル === |
||
94行目: | 141行目: | ||
=== ブートローダー === |
=== ブートローダー === |
||
− | Archiso では、BIOS ブート用に [[syslinux]]、UEFI ブート用に [[systemd-boot]] をサポートしています。設定ファイルの構文に関する情報はそれぞれのブートローダーの記事を参照してください。 |
+ | Archiso では、BIOS ブート用に [[syslinux]]、UEFI ブート用に [[GRUB]] と [[systemd-boot]] をサポートしています。設定ファイルの構文に関する情報はそれぞれのブートローダーの記事を参照してください。 |
{{Tip|1=<nowiki></nowiki> |
{{Tip|1=<nowiki></nowiki> |
||
* '''releng''' プロファイルは、El Torito を使って光学ディスクに焼いた場合や、[https://wiki.syslinux.org/wiki/index.php?title=Isohybrid Isohybrid] を使ってハードディスクに書き込んだ場合は、BIOS と UEFI ブートの両方をサポートする ISO をデフォルトでビルドします。 |
* '''releng''' プロファイルは、El Torito を使って光学ディスクに焼いた場合や、[https://wiki.syslinux.org/wiki/index.php?title=Isohybrid Isohybrid] を使ってハードディスクに書き込んだ場合は、BIOS と UEFI ブートの両方をサポートする ISO をデフォルトでビルドします。 |
||
− | * isolinux のモジュール性により、''.c32'' ファイルがすべてコピーされ利用可能なので、多くのアドオンを利用できます。[https://wiki.syslinux.org/wiki/index.php/SYSLINUX 公式の syslinux サイト] と [https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/configs/releng/syslinux archiso git リポジトリ] を参照してください。アドオンを使えば、魅力的で複雑なメニューを作ることができます。[https://wiki.syslinux.org/wiki/index.php |
+ | * isolinux のモジュール性により、''.c32'' ファイルがすべてコピーされ利用可能なので、多くのアドオンを利用できます。[https://wiki.syslinux.org/wiki/index.php/SYSLINUX 公式の syslinux サイト] と [https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/configs/releng/syslinux archiso git リポジトリ] を参照してください。アドオンを使えば、魅力的で複雑なメニューを作ることができます。[https://wiki.syslinux.org/wiki/index.php?title=Comboot/menu.c32] を見てください。 |
}} |
}} |
||
− | mkarchiso は、[[systemd-boot]] の設定が {{ic|efiboot}} ディレクトリ内に、[[ |
+ | mkarchiso は、[[systemd-boot]] の設定が {{ic|efiboot}} ディレクトリ内に、[[GRUB]] の設定ファイルが {{ic|grub}} ディレクトリ内に、[[syslinux]] の設定がディレクトリ {{ic|syslinux}} 内に存在することを期待します。 |
==== UEFI セキュアブート ==== |
==== UEFI セキュアブート ==== |
||
− | UEFI セキュアブートが有効な環境で |
+ | UEFI セキュアブートが有効な環境で archiso を起動できるようにしたい場合、署名済みのブートローダーを使わねばなりません。[[セキュアブート#インストールメディアを起動する]] の指示に従うことで可能です。 |
=== systemd ユニット === |
=== systemd ユニット === |
||
140行目: | 187行目: | ||
ExecStart=-/sbin/agetty --autologin '''''username''''' --noclear %I 38400 linux |
ExecStart=-/sbin/agetty --autologin '''''username''''' --noclear %I 38400 linux |
||
− | もしくは |
+ | もしくは {{ic|autologin.conf}} も一緒に削除することで自動ログインを無効化することも可能です。 |
+ | |||
+ | シリアルコンソールを使用している場合、代わりに以下の内容で {{ic|airootfs/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf}} を作成してください: |
||
+ | |||
+ | [Service] |
||
+ | ExecStart= |
||
+ | ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear --autologin root --keep-baud 115200,57600,38400,9600 - $TERM |
||
=== ユーザとパスワード === |
=== ユーザとパスワード === |
||
155行目: | 208行目: | ||
}} |
}} |
||
+ | {{Note|{{ic|passwd}} ファイルは改行で終わっていなければなりません。}} |
||
− | {{ic|openssl passwd -6}} を使ってパスワードのハッシュ値を生成し、{{man|5|shadow}} の文法に従ってそのハッシュ値を {{ic|''archlive''/airootfs/etc/shadow}} に追加してください。例えば: |
||
+ | |||
+ | {{man|5|shadow}} の構文に従って {{ic|''archlive''/airootfs/etc/shadow}} にユーザーを追加してください。そのユーザーにパスワードを設定したい場合は、{{ic|openssl passwd -6}} でパスワードのハッシュ値を計算し、その値をファイルに追加してください。例えば: |
||
{{hc|''archlive''/airootfs/etc/shadow|2= |
{{hc|''archlive''/airootfs/etc/shadow|2= |
||
161行目: | 216行目: | ||
archie:$6$randomsalt$cij4/pJREFQV/NgAgh9YyBIoCRRNq2jp5l8lbnE5aLggJnzIRmNVlogAg8N6hEEecLwXHtMQIl2NX2HlDqhCU1:14871:::::: |
archie:$6$randomsalt$cij4/pJREFQV/NgAgh9YyBIoCRRNq2jp5l8lbnE5aLggJnzIRmNVlogAg8N6hEEecLwXHtMQIl2NX2HlDqhCU1:14871:::::: |
||
}} |
}} |
||
+ | |||
+ | パスワードの列を空欄にした場合、ユーザーはパスワード無しでログインできます。 |
||
{{man|5|group}} に従って、ユーザのグループと、そのユーザが所属するグループを {{ic|''archlive''/airootfs/etc/group}} に追加してください。例えば: |
{{man|5|group}} に従って、ユーザのグループと、そのユーザが所属するグループを {{ic|''archlive''/airootfs/etc/group}} に追加してください。例えば: |
||
194行目: | 251行目: | ||
=== ISO で使用されるディストリビューション名を変更する === |
=== ISO で使用されるディストリビューション名を変更する === |
||
− | まず、{{ic|/etc/os-release}} ファイルを rootfs 内の etc/ フォルダにコピーしてください。そして、そのファイルを適宜編集してください。GRUB と syslinux 内部での名前も変更できます。 |
+ | まず、{{ic|/etc/os-release}} ファイルを rootfs 内の {{ic|etc/}} フォルダにコピーしてください。そして、そのファイルを適宜編集してください。GRUB と syslinux 内部での名前も変更できます。 |
== ISO をビルドする == |
== ISO をビルドする == |
||
240行目: | 297行目: | ||
$ run_archiso -u -i ''/path/to/''archlinux-''yyyy.mm.dd''-x86_64.iso |
$ run_archiso -u -i ''/path/to/''archlinux-''yyyy.mm.dd''-x86_64.iso |
||
+ | == ヒントとテクニック == |
||
− | == インターネットにアクセスできない環境でのインストール == |
||
+ | === SSH 経由でインストールするための ISO を準備する === |
||
− | インターネットに接続できない、パッケージを何度もダウンロードしたくないなどの理由で archiso (例: [https://www.archlinux.jp/download/ 公式の月次リリース]) をインストールするときは以下を読んでください: |
||
+ | {{Note|{{ic|archlinux-2021.02.01-x86_64.iso}} 以降、[https://gitlab.archlinux.org/archlinux/archiso/-/tree/bd2b861aa39167e4fc658a354071b95fbd050c0f/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants cloud-init のサポート]が提供されるようになり、{{ic|sshd.service}} は [https://gitlab.archlinux.org/archlinux/archiso/-/blob/bd2b861aa39167e4fc658a354071b95fbd050c0f/configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service デフォルトで有効化されています]。}} |
||
− | まず、[[インストールガイド#インターネットへの接続|#インターネット接続の確立]]などのセクションを飛ばして[[インストールガイド#ベースシステムのインストール|#ベースシステムのインストール]]まで[[インストールガイド]]に従ってください。 |
||
+ | システムと対話せずに [[SSH からインストール|SSH から Arch Linux をインストールする]]には、SSH 公開鍵を {{ic|authorized_keys}} 内に記入する必要があります。 |
||
− | === 新しい root に archiso をインストール === |
||
− | {{ic|pacstrap}} でパッケージをインストールする代わりに (リモートのリポジトリからパッケージをダウンロードするわけですが今はインターネット接続がありません)、ライブ環境から新しい chroot に''全て''をコピーしてください: |
||
− | # time cp -ax / /mnt |
||
− | {{Note|オプション ({{ic|-x}}) を使って、新しい root にコピーしないように複数のディレクトリを除外しています。}} |
||
− | 次に、新しいシステムの整合性を保つために、ディレクトリを複数作成してカーネルイメージを新しい root にコピーします: |
||
− | # cp -vaT /run/archiso/bootmnt/arch/boot/$(uname -m)/vmlinuz /mnt/boot/vmlinuz-linux |
||
+ | SSH 鍵は、手動 (ここで説明します) か、[[SSH からインストール#Installation on a headless server|cloud-init]] によって追加することができます。 |
||
− | その後、[[インストールガイド#fstab]] に書かれているとおりに fstab を生成してください。 |
||
+ | 鍵を手動で追加するには、まず、書き込み可能なディレクトリに [[#カスタムプロファイルを準備する|archiso の releng プロファイルをコピー]]してください。次の例では {{ic|archlive}} を使っています。 |
||
− | === Chroot とベースシステムの設定 === |
||
− | 次に、新しくインストールしたシステムに chroot します: |
||
− | # arch-chroot /mnt /bin/bash |
||
+ | $ cp -r /usr/share/archiso/configs/''profile/'' archlive |
||
− | {{Note|[[インストールガイド#システムの設定]]における他の設定 (ロケールやキーマップなど) を行う前に、ライブ環境の跡 (つまり、ライブ環境に適合しない archiso のカスタマイズ) を消す必要があります。}} |
||
+ | ログインに使用されるユーザーのホームディレクトリ内に {{ic|.ssh}} ディレクトリを作成してください。以下の例では root ユーザを使用しています。 |
||
− | ==== journald の設定の復旧 ==== |
||
− | [https://projects.archlinux.org/archiso.git/tree/configs/releng/airootfs/root/customize_airootfs.sh#n19 archiso のカスタマイズ] によってシステムのジャーナルはメモリに保存されるようになっており、そのままだと再起動でジャーナルは消えてしまいます: |
||
− | # sed -i 's/Storage=volatile/#Storage=auto/' /etc/systemd/journald.conf |
||
+ | $ mkdir archlive/airootfs/root/.ssh |
||
− | ==== 特殊な udev ルールの削除 ==== |
||
− | [https://projects.archlinux.org/archiso.git/tree/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules この udev ルール] は有線ネットワークインターフェイスが存在する場合に自動的に dhcpcd を起動します。 |
||
+ | (ログインに使用される) SSH 公開鍵を {{ic|authorized_keys}} に追加してください: |
||
− | # rm /etc/udev/rules.d/81-dhcpcd.rules |
||
+ | $ cat ~/.ssh/''key1''.pub >> archlive/airootfs/root/.ssh/authorized_keys |
||
− | ==== archiso によって作成されたサービスの無効化と削除 ==== |
||
+ | $ cat ~/.ssh/''key2''.pub >> archlive/airootfs/root/.ssh/authorized_keys |
||
− | ライブ環境用に作成されているサービスファイルがあるので、サービスを無効化してファイルを削除してください (新しい環境では不要であるため): |
||
− | # 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 |
||
+ | {{ic|.ssh}} ディレクトリと {{ic|authorized_keys}} ファイルに正しい[[パーミッション]]と所有者を設定してください: |
||
− | ==== ライブ環境の特殊なスクリプトの削除 ==== |
||
− | ライブ環境には 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 |
||
+ | {{hc|archlive/profiledef.sh|2= |
||
− | ==== archlinux 鍵のインポート ==== |
||
+ | ... |
||
+ | file_permissions=( |
||
+ | ... |
||
+ | ["/root"]="0:0:0750" |
||
+ | ["/root/.ssh"]="0:0:0700" |
||
+ | ["/root/.ssh/authorized_keys"]="0:0:0600" |
||
+ | ) |
||
+ | }} |
||
+ | 最後に、[[#ISO をビルドする|ISO をビルドしてください]]。ISO のブート時に [[OpenSSH]] が起動し、対応する SSH 秘密鍵を使ってログインできるようになります。 |
||
− | 公式リポジトリを使うには archlinux のマスター鍵をインポートする必要があります ([[pacman-key#キーリングの初期化]])。通常は pacstrap でインポートされますが、以下のコマンドでインポートすることもできます: |
||
+ | === iwd を使って Wi-Fi ネットワークに自動的に接続する === |
||
− | # pacman-key --init |
||
− | # pacman-key --populate archlinux |
||
+ | プロファイルの {{ic|airootfs}} ディレクトリ内に {{ic|/var/lib/iwd/}} を作成し、正しいパーミッションを設定してください: |
||
− | {{Note|エントロピーを生成するにはキーボードやマウスを動かす必要があります。}} |
||
+ | $ mkdir -p ''archlive''/airootfs/var/lib/iwd |
||
− | ==== システムの設定 ==== |
||
− | スキップした[[インストールガイド#システムの設定]]セクションの設定 (ロケールやタイムゾーン、ホストネームなど) を行って[[インストールガイド#Initramfs]] に書いてあるように初期 RAM ディスクを作成してインストールを完了してください。 |
||
+ | {{hc|archlive/profiledef.sh|2= |
||
− | ==== グラフィカルログインの有効化 (任意) ==== |
||
+ | ... |
||
+ | file_permissions=( |
||
+ | ... |
||
+ | ["/var/lib/iwd"]="0:0:0700" |
||
+ | ) |
||
+ | }} |
||
+ | |||
+ | [[iwd#ネットワーク設定]] と {{man|5|iwd.network}} の指示に従って、Wi-Fi ネットワークのためのネットワーク設定ファイルを作成してください。 |
||
+ | |||
+ | 設定ファイルは {{ic|''archlive''/airootfs/var/lib/iwd/}} 内に保存してください。 |
||
+ | |||
+ | === ルートファイルシステムのサイズを調整する === |
||
+ | |||
+ | Live 環境内でパッケージをインストールする際 (例えば [[DKMS]] モジュールが必要なハードウェア)、ルートファイルシステムのデフォルトサイズでは小さすぎてパッケージのダウンロードとインストールができないかもしれません。 |
||
+ | |||
+ | {{Tip|1=このようなサイズが設定されている理由は [https://bbs.archlinux.org/viewtopic.php?pid=1628972#p1628972 BBS#210389] を見てください。歴史的な詳細は {{Bug|45618}} を見てください。}} |
||
+ | |||
+ | ISO 環境でファイルをダウンロードしたりパッケージをインストールした際に以下のエラーメッセージが発生することで分かります: |
||
+ | |||
+ | error: partition / too full: 63256 blocks needed, 61450 blocks free |
||
+ | error: not enough free disk space |
||
+ | error: failed to commit transaction (not enough free disk space) |
||
+ | Errors occurred: no packages were upgraded. |
||
+ | |||
+ | サイズを実行中に変更するには: |
||
+ | |||
+ | # mount -o remount,size=''SIZE'' /run/archiso/cowspace |
||
+ | |||
+ | {{ic|''SIZE''}} で利用できるパラメータは {{man|5|tmpfs|size}} を参照してください。 |
||
+ | |||
+ | ({{ic|e}} キーや {{ic|Tab}} キーを押して) ブートローダーの段階でサイズを設定するには、以下のブートオプションを使用してください: |
||
+ | |||
+ | cow_spacesize=''SIZE'' |
||
+ | |||
+ | イメージのビルド段階でサイズを設定するには、先のブートオプションを以下のファイルに追加してください: |
||
+ | |||
+ | * {{ic|efiboot/loader/entries/*.cfg}} |
||
+ | * {{ic|grub/*.cfg}} |
||
+ | * {{ic|syslinux/*.cfg}} |
||
+ | |||
+ | 結果は以下のコマンドで確認できます: |
||
+ | |||
+ | $ df -h |
||
+ | [https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio-archiso/blob/master/docs/README.bootparams mkinitcpio-archiso のブートパラメータ]参照してください。 |
||
− | [[GDM]] などのディスプレイマネージャを使用する場合、systemd のデフォルトターゲットを {{ic|multi-user.target}} からグラフィカルログインができるターゲットに変更すると良いでしょう: |
||
− | # systemctl disable multi-user.target |
||
− | # systemctl enable graphical.target |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
314行目: | 400行目: | ||
* [ircs://irc.libera.chat/archlinux-releng #archlinux-releng — Arch Linux Release Engineering IRC channel] |
* [ircs://irc.libera.chat/archlinux-releng #archlinux-releng — Arch Linux Release Engineering IRC channel] |
||
* [https://github.com/pierres/archiso-manager archiso-manager — 公式の月次 ISO をビルドする際に用いられるツール] |
* [https://github.com/pierres/archiso-manager archiso-manager — 公式の月次 ISO をビルドする際に用いられるツール] |
||
+ | |||
+ | {{TranslationStatus|Archiso|2024-07-28|812247}} |
2024年7月28日 (日) 19:59時点における最新版
Archiso は Arch Linux のライブ CD/USB ISO イメージを構築するための 高度にカスタマイズ可能なツールです。公式のイメージは archiso でビルドされています。レスキューシステム、Linux インストーラー、そして他のシステム用のベースとして使用できます。この Wiki 記事では、archiso のインストールの仕方と、成果物の ISO イメージに含まれるパッケージやファイルなどを設定する方法について説明します。技術的な要求とビルドの手順は プロジェクトの公式ドキュメントを参照してください。Archiso はいくつもの Bash スクリプトで実装されており、mkarchiso コマンドがその中心です。このコマンドのオプションは mkarchiso -h で文書化されているので、ここでは説明しません。
目次
インストール
archiso パッケージか archiso-gitAUR パッケージをインストールしてください。
カスタムプロファイルを準備する
Archiso には2つのプロファイルが付属しています。releng と baseline です。
- 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
を編集して、ライブシステムイメージにどのパッケージをインストールするかを選択してください。1行で1つのパッケージが定義されます。
カスタムのローカルリポジトリ
標準の Arch リポジトリに存在しないパッケージ (AUR のパッケージや、ABS でカスタマイズされたパッケージなど) を追加するには, カスタムローカルリポジトリを設定し、そこにパッケージを追加してください。その後、pacman.conf
にリポジトリを以下のように追加してください:
archlive/pacman.conf
... [customrepo] SigLevel = Optional TrustAll Server = file:///path/to/customrepo ...
multilib のパッケージ
multilib リポジトリからパッケージをインストールする場合は、pacman.conf
内にある multilib リポジトリをアンコメントしてください。
イメージにファイルを追加する
airootfs ディレクトリはライブシステムの root ディレクトリ (/
) の起点として使用されます。このディレクトリの全てのファイルがパッケージがインストールされる前に作業ディレクトリにコピーされます。
カスタムのファイルやディレクトリを airootfs/
下の好きな場所に配置してください。例えば、現在のシステム上の iptables スクリプトのセットをライブイメージで使用したい場合、それらを以下のようにコピーします:
$ cp -r /etc/iptables archlive/airootfs/etc
同様に、この階層の下のどこかに存在する特別な設定ファイルにも注意が必要です。ディレクトリ構造のかけている部分は mkdir(1) で作成できます。
に設置してください。
デフォルトでは、ファイルのパーミッションは 644
、ディレクトリのパーミッションは 755
に設定されており、全て root ユーザーによって所有されています。特定のファイルやフォルダーに別のパーミッションや所有者を設定するには、 file_permissions
連想配列を profiledef.sh
で設定してください. 詳細は README.profile.rst を確認してください。
イメージにリポジトリを追加する
Live 環境内で使用できるリポジトリを追加するには、適切に変更された pacman.conf
を作成し、archlive/airootfs/etc/
に配置してください。
(追加した) リポジトリがキーを使用する場合、archlive/airootfs/usr/share/pacman/keyrings/
にそのキーを配置してください。キーファイル名は .gpg
で終わらなければなりません。さらに、キーは信頼されていなければなりません。これは、GnuPG でエクスポートされた信頼ファイルを同じディレクトリ内に作成することにより可能です。信頼ファイル名は -trusted
で終わらなければなりません。最初のフィールドはキーのフィンガープリント、2つめのフィールドは信頼です。/usr/share/pacman/keyrings/archlinux-trusted
を例にすることができます。
archzfs 例
この例でのファイルは以下の通りです:
airootfs ├── etc │ ├── pacman.conf │ └── pacman.d │ └── archzfs_mirrorlist └── usr └── share └── pacman └── keyrings ├── archzfs.gpg └── archzfs-trusted
airootfs/etc/pacman.conf
... [archzfs] Include = /etc/pacman.d/archzfs_mirrorlist ...
airootfs/etc/pacman.d/archzfs_mirrorlist
Server = https://archzfs.com/$repo/$arch Server = https://mirror.sum7.eu/archlinux/archzfs/$repo/$arch Server = https://mirror.biocrafting.net/archlinux/archzfs/$repo/$arch Server = https://mirror.in.themindsmaze.com/archzfs/$repo/$arch Server = https://zxcvfdsa.com/archzfs/$repo/$arch
airootfs/usr/share/pacman/keyrings/archzfs-trusted
DDF7DB817396A49B2A2723F7403BD972F75D9D76:4:
archzfs.gpg
自体は https://archzfs.com/archzfs.gpg のリポジトリサイトから直接入手できます。
カーネル
archiso に含まれている両プロファイルには linux しかありませんが、ISO には他のカーネル、さらに言えば複数のカーネルをも含ませることができます。
まず、packages.x86_64
を編集して、お好みのカーネルパッケージ名を記入します。mkarchiso を実行すると、すべての work_dir/airootfs/boot/vmlinuz-*
と work_dir/boot/initramfs-*.img
(加えて、UEFI 起動に使われる FAT イメージ) が ISO に入ります。
デフォルトでは、mkinitcpio プリセットはフォールバックの initramfs イメージもビルドします。ISO の場合、メインの initramfs イメージには autodetect
フックが含まれないので、追加のフォールバックイメージは不要になります。(スペースの節約やビルドプロセスの高速化のために) フォールバック initramfs イメージを作成しないようにするには、archlive/airootfs/etc/mkinitcpio.d/pkgbase.preset
内にカスタムのプリセットを配置してください。例えば、linux-lts の場合:
archlive/airootfs/etc/mkinitcpio.d/linux-lts.preset
PRESETS=('archiso') ALL_kver='/boot/vmlinuz-linux-lts' ALL_config='/etc/mkinitcpio.conf' archiso_image="/boot/initramfs-linux-lts.img"
最後に、ブートローダーの設定ファイルを生成して、カーネルを起動可能にしてください。
ブートローダー
Archiso では、BIOS ブート用に syslinux、UEFI ブート用に GRUB と systemd-boot をサポートしています。設定ファイルの構文に関する情報はそれぞれのブートローダーの記事を参照してください。
mkarchiso は、systemd-boot の設定が efiboot
ディレクトリ内に、GRUB の設定ファイルが grub
ディレクトリ内に、syslinux の設定がディレクトリ syslinux
内に存在することを期待します。
UEFI セキュアブート
UEFI セキュアブートが有効な環境で archiso を起動できるようにしたい場合、署名済みのブートローダーを使わねばなりません。セキュアブート#インストールメディアを起動する の指示に従うことで可能です。
systemd ユニット
ライブ環境で systemd のサービス/ソケット/タイマーを有効化するには、systemctl enable
が行うように、シンボリックリンクを手動で作成する必要があります。
例えば、gpm.service
(WantedBy=multi-user.target
を含んでいます) を有効化するには、以下を実行してください:
$ mkdir -p archlive/airootfs/etc/systemd/system/multi-user.target.wants $ ln -s /usr/lib/systemd/system/gpm.service archlive/airootfs/etc/systemd/system/multi-user.target.wants/
必要なシンボリックリンクは systemd ユニットを読めば分かります。サービスがインストール済みならば、それを有効化して systemctl の出力を観察することで、必要なシンボリックリンクを知ることができます。
ログインマネージャ
ログインマネージャの systemd サービスを有効化することで、X を起動時に起動します。どの .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 が有効になります。
自動ログインを変更する
getty の自動ログインの設定は airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf
にあります。
このファイルを編集することで自動ログインするユーザーを変更することができます:
[Service] ExecStart= ExecStart=-/sbin/agetty --autologin username --noclear %I 38400 linux
もしくは autologin.conf
も一緒に削除することで自動ログインを無効化することも可能です。
シリアルコンソールを使用している場合、代わりに以下の内容で airootfs/etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf
を作成してください:
[Service] ExecStart= ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear --autologin root --keep-baud 115200,57600,38400,9600 - $TERM
ユーザとパスワード
ライブ環境で利用可能なユーザを作成するには、archlive/airootfs/etc/passwd
、archlive/airootfs/etc/shadow
、archlive/airootfs/etc/group
そして archlive/airootfs/etc/gshadow
を手動で編集しなければなりません。
例えば、archie
ユーザを追加するとします。passwd(5) の文法に従ってそのユーザを archlive/airootfs/etc/passwd
に追加してください:
archlive/airootfs/etc/passwd
root:x:0:0:root:/root:/usr/bin/zsh archie:x:1000:1000::/home/archie:/usr/bin/zsh
shadow(5) の構文に従って archlive/airootfs/etc/shadow
にユーザーを追加してください。そのユーザーにパスワードを設定したい場合は、openssl passwd -6
でパスワードのハッシュ値を計算し、その値をファイルに追加してください。例えば:
archlive/airootfs/etc/shadow
root::14871:::::: archie:$6$randomsalt$cij4/pJREFQV/NgAgh9YyBIoCRRNq2jp5l8lbnE5aLggJnzIRmNVlogAg8N6hEEecLwXHtMQIl2NX2HlDqhCU1:14871::::::
パスワードの列を空欄にした場合、ユーザーはパスワード無しでログインできます。
group(5) に従って、ユーザのグループと、そのユーザが所属するグループを archlive/airootfs/etc/group
に追加してください。例えば:
archlive/airootfs/etc/group
root:x:0:root adm:x:4:archie wheel:x:10:archie uucp:x:14:archie archie:x:1000:
gshadow(5) に従って、適切な archlive/airootfs/etc/gshadow
を作成してください:
archlive/airootfs/etc/gshadow
root:!*::root archie:!*::
/etc/shadow
と /etc/gshadow
のパーミッションが正しいことを確認してください:
archlive/profiledef.sh
... file_permissions=( ... ["/etc/shadow"]="0:0:0400" ["/etc/gshadow"]="0:0:0400" )
パッケージのインストール後、mkarchiso は archlive/airootfs/etc/passwd
内にあるユーザの指定されたホームディレクトリをすべて作成し、work_directory/x86_64/airootfs/etc/skel/*
をそれらへコピーします。コピーされたファイルには適切なユーザとグループの所有権が付与されます。
ISO で使用されるディストリビューション名を変更する
まず、/etc/os-release
ファイルを rootfs 内の etc/
フォルダにコピーしてください。そして、そのファイルを適宜編集してください。GRUB と syslinux 内部での名前も変更できます。
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/
に置き換えてください。
スクリプトは、指定されたパッケージを work_directory/x86_64/airootfs
へダウンロード・インストールし、カーネルと init イメージを作成し、カスタマイズを適用し、最後に ISO をビルドして出力ディレクトリへ保存します。
作業ディレクトリの削除
一時ファイルが作業ディレクトリにコピーされています。ISO を正常にビルドした後であれば、作業ディレクトリとその内容を削除できます。例えば:
# rm -rf /path/to/work_dir
ISO を使う
選択肢については インストールガイド#インストールメディアの準備 を見てください。
ISO を QEMU でテストする
任意の依存パッケージである qemu-desktop と edk2-ovmf をインストールしてください。
QEMU を使ってビルド済みイメージを実行するには、run_archiso
という便利なスクリプトを使ってください:
$ run_archiso -i /path/to/archlinux-yyyy.mm.dd-x86_64.iso
仮想マシンは UEFI エミュレートを使って実行することもできます:
$ run_archiso -u -i /path/to/archlinux-yyyy.mm.dd-x86_64.iso
ヒントとテクニック
SSH 経由でインストールするための ISO を準備する
システムと対話せずに SSH から Arch Linux をインストールするには、SSH 公開鍵を authorized_keys
内に記入する必要があります。
SSH 鍵は、手動 (ここで説明します) か、cloud-init によって追加することができます。
鍵を手動で追加するには、まず、書き込み可能なディレクトリに archiso の releng プロファイルをコピーしてください。次の例では archlive
を使っています。
$ cp -r /usr/share/archiso/configs/profile/ archlive
ログインに使用されるユーザーのホームディレクトリ内に .ssh
ディレクトリを作成してください。以下の例では root ユーザを使用しています。
$ mkdir archlive/airootfs/root/.ssh
(ログインに使用される) SSH 公開鍵を authorized_keys
に追加してください:
$ cat ~/.ssh/key1.pub >> archlive/airootfs/root/.ssh/authorized_keys $ cat ~/.ssh/key2.pub >> archlive/airootfs/root/.ssh/authorized_keys
.ssh
ディレクトリと authorized_keys
ファイルに正しいパーミッションと所有者を設定してください:
archlive/profiledef.sh
... file_permissions=( ... ["/root"]="0:0:0750" ["/root/.ssh"]="0:0:0700" ["/root/.ssh/authorized_keys"]="0:0:0600" )
最後に、ISO をビルドしてください。ISO のブート時に OpenSSH が起動し、対応する SSH 秘密鍵を使ってログインできるようになります。
iwd を使って Wi-Fi ネットワークに自動的に接続する
プロファイルの airootfs
ディレクトリ内に /var/lib/iwd/
を作成し、正しいパーミッションを設定してください:
$ mkdir -p archlive/airootfs/var/lib/iwd
archlive/profiledef.sh
... file_permissions=( ... ["/var/lib/iwd"]="0:0:0700" )
iwd#ネットワーク設定 と iwd.network(5) の指示に従って、Wi-Fi ネットワークのためのネットワーク設定ファイルを作成してください。
設定ファイルは archlive/airootfs/var/lib/iwd/
内に保存してください。
ルートファイルシステムのサイズを調整する
Live 環境内でパッケージをインストールする際 (例えば DKMS モジュールが必要なハードウェア)、ルートファイルシステムのデフォルトサイズでは小さすぎてパッケージのダウンロードとインストールができないかもしれません。
ISO 環境でファイルをダウンロードしたりパッケージをインストールした際に以下のエラーメッセージが発生することで分かります:
error: partition / too full: 63256 blocks needed, 61450 blocks free error: not enough free disk space error: failed to commit transaction (not enough free disk space) Errors occurred: no packages were upgraded.
サイズを実行中に変更するには:
# mount -o remount,size=SIZE /run/archiso/cowspace
SIZE
で利用できるパラメータは tmpfs(5) § size を参照してください。
(e
キーや Tab
キーを押して) ブートローダーの段階でサイズを設定するには、以下のブートオプションを使用してください:
cow_spacesize=SIZE
イメージのビルド段階でサイズを設定するには、先のブートオプションを以下のファイルに追加してください:
efiboot/loader/entries/*.cfg
grub/*.cfg
syslinux/*.cfg
結果は以下のコマンドで確認できます:
$ df -h
mkinitcpio-archiso のブートパラメータ参照してください。
トラブルシューティング
ウィンドウマネージャがフリーズする
Live CD でウィンドウマネージャを使いたい場合、必要な正しいビデオドライバーを追加しなければなりません。さもないと、ロード中にウィンドウマネージャがフリーズする場合があります。