「Archiso」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(customize_airootfs.shが非推奨とされていたためフラグ立て)
(同期)
 
(2人の利用者による、間の18版が非表示)
1行目: 1行目:
 
[[Category:ライブ Arch システム]]
 
[[Category:ライブ Arch システム]]
 
[[Category:Arch の入手とインストール]]
 
[[Category:Arch の入手とインストール]]
  +
[[Category:Arch プロジェクト]]
[[ar:Archiso]]
 
[[el:Archiso]]
 
 
[[en:Archiso]]
 
[[en:Archiso]]
 
[[es:Archiso]]
 
[[es:Archiso]]
 
[[fr:Archiso]]
 
[[fr:Archiso]]
[[it:Archiso]]
+
[[pt:Archiso]]
[[nl:Archiso]]
 
 
[[ru:Archiso]]
 
[[ru:Archiso]]
[[sk:Archiso]]
 
[[uk:Archiso]]
 
 
[[zh-hans:Archiso]]
 
[[zh-hans:Archiso]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|インストール ISO のリマスタリング}}
+
{{Related|Preboot Execution Environment}}
{{Related|PXE}}
+
{{Related|オフラインインストール}}
{{Related|Archboot}}
+
{{Related|USB インストールメディア}}
 
{{Related articles end}}
 
{{Related articles end}}
'''Archiso''' は Arch Linux のライブ CD 及びライブ USB イメージを構築するための 高度にカスタマイズ可能なツールです。公式の CD/USB ISO イメージは Archiso でビルドされています。とても汎用的なツールなので、レスキューシステムインストールディスクから特殊なライブ CD/DVD/USB システムまで、あらゆるもを作成するこできます。この Wiki 記事では Archiso のインストールの仕方とインストルされるファイルやパッケージなどを構成する方法説明します。技術的な要求とビルドの手順は [https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/docs プロジェクトの公式ドキュメント]を参照してください。Archiso はいくつもの Bash スクリプトで実装されており、mkarchiso コマンドがその中心です。このコマンドのオプションは ''mkarchiso -h'' で文書化されているので、ここでは説明しません。
+
[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}} パッケージを[[インストール]]してください。{{AUR|archiso-profiles}} パッケージには、コミュニティによって提供されている追加のプロファイルが含まれています。
   
 
== カスタムプロファイルを準備する ==
 
== カスタムプロファイルを準備する ==
Archiso は2つの設定ファイルで構成されています。 '''releng''' と '''baseline''' です。
 
   
  +
Archiso には2つのプロファイルが付属しています。'''releng''' と '''baseline''' です。
* '''releng''' は毎月リリースされる公式のイメージファイルをビルドするために使われています。カスタマイズされたISOを作成するためのベースにもできます。
 
  +
* '''baseline''' は最小限の構成であり、Liveシステムがメディアから起動するための最小限のパッケージが含まれています。
 
  +
* '''releng''' は毎月リリースされる公式インストール ISO を作成するために使われます。カスタマイズ ISO イメージを作成するためのベースとしても使用できます。
  +
* '''baseline''' は最小限の構成であり、メディアからライブ環境を起動するために必要な最小限のパッケージのみが含まれています。
  +
  +
未変更のプロファイルをビルドする場合は、[[#ISO をビルドする]] までスキップしてください。archiso に同梱されているプロファイルのうちどれかをカスタマイズしたい場合は、ディレクトリ {{ic|/usr/share/archiso/configs/''profile-name''/}} を、自由な名前の書き込み可能なディレクトリへコピーしてください。例えば:
   
  +
$ cp -r /usr/share/archiso/configs/releng/ archlive
プロファイルに何も変更を加えずにビルドする場合は、[[Archiso#ISOをビルドする]] までスキップしてください。既存のプロファイルをカスタマイズしたい場合は、{{ic|/usr/share/archiso/configs/''profile''/}}ディレクトリを好きな名前で書き込み可能な場所にコピーします。例:
 
$ cp -r /usr/share/archiso/configs/''profile''/ archlive
 
   
プロファイルをカスタマイズ、ビルドするには以下の手順に進んでください。
+
カスタムプロファイルをカスタマイズ、ビルドするには以下のセクションに進んでください。
   
 
=== プロファイルの構造 ===
 
=== プロファイルの構造 ===
   
Archiso プロファイルはISOイメージファイルの内容を定義するファイルが含まれています。プロファイルの構造は {{ic|/usr/share/doc/archiso/README.profile.rst}}[https://gitlab.archlinux.org/archlinux/archiso/-/blob/master/docs/README.profile.rst] で文書化されています。
+
Archiso プロファイルは、生成される ISO イメージの内容を定義する設定ファイルが含まれています。プロファイルの構造は {{ic|/usr/share/doc/archiso/README.profile.rst}}[https://gitlab.archlinux.org/archlinux/archiso/-/blob/master/docs/README.profile.rst] で文書化されています。
   
 
=== パッケージを選択する ===
 
=== パッケージを選択する ===
   
{{ic|packages.x86_64}} を編集してLiveシステムにどのパッケージをインストールするかを設定してください。1行で1つのパッケージが定義されます。
+
{{ic|packages.x86_64}} を編集して、ライブシステムイメージにどのパッケージをインストールするかを選択してください。1行で1つのパッケージが定義されます。
   
==== カスタムローカルリポジトリ ====
+
==== カスタムローカルリポジトリ ====
   
公式リポジトリに存在しないパッケージ (カスタムパッケージや [[AUR]]/[[ABS]] からのパッケージ) を追加するには, [[Pacman ヒント#カスタムローカルリポジトリ|カスタムローカルリポジトリを作成]] し、そこにパッケージを追加してください。その後、{{ic|pacman.conf}} にリポジトリを以下のように追加してください:
+
標準の Arch リポジトリに存在しないパッケージ (カスタムパッケージや [[AUR]]/[[ABS]] からのパッケージ) を追加するには, [[カスタムローカルリポジトリ]] を設定し、そこにパッケージを追加してください。その後、{{ic|pacman.conf}} にリポジトリを以下のように追加してください:
   
 
{{hc|''archlive''/pacman.conf|2=
 
{{hc|''archlive''/pacman.conf|2=
53行目: 52行目:
 
}}
 
}}
   
  +
{{Note|
{{Note|{{ic|pacman.conf}} の順番について。カスタムリポジトリを最優先にするには、設定を他のリポジトリより上に記述してください}}
 
  +
* {{ic|pacman.conf}} 内での順番は重要です。カスタムリポジトリを最優先させるには、他のリポジトリエントリよりも上にそのリポジトリを配置してください。
  +
* この {{ic|pacman.conf}} はイメージのビルドのためだけに使用されます。Live 環境内で使用されるものではありません。Live 環境内で使用されるようにするには、[[#イメージにリポジトリを追加する]] を見てください。
  +
}}
   
==== multilibリポトリ ====
+
==== multilib のパッケージ ====
   
[[multilib]] リポジトリからパッケージをインストールする場合は {{ic|pacman.conf}} の設定をアンコメントしてください。
+
[[multilib]] リポジトリからパッケージをインストールする場合は{{ic|pacman.conf}} 内にある multilib リポジトリをアンコメントしてください。
   
=== イメージにファイルを追加 ===
+
=== イメージにファイルを追加する ===
   
 
airootfs ディレクトリはライブシステムの [[Wikipedia:Root directory|root ディレクトリ]] ({{ic|/}}) の起点として使用されます。このディレクトリの全てのファイルがパッケージがインストールされる前に作業ディレクトリにコピーされます。
 
airootfs ディレクトリはライブシステムの [[Wikipedia:Root directory|root ディレクトリ]] ({{ic|/}}) の起点として使用されます。このディレクトリの全てのファイルがパッケージがインストールされる前に作業ディレクトリにコピーされます。
   
変更されたファイルやディレクトリを {{ic|airootfs/}} 下の目的の場所にコピーます。例えば、もし iptables スクリプトを現在のライブイメージで使用したい場合、それをのようにコピーします
+
カスタムのファイルやディレクトリを {{ic|airootfs/}} 下の好きな場所に配置てください。例えば、現在のシステム上の iptables スクリプトのセットをライブイメージで使用したい場合、それ以下のようにコピーします:
   
 
$ cp -r /etc/iptables ''archlive''/airootfs/etc
 
$ cp -r /etc/iptables ''archlive''/airootfs/etc
   
同様に いくつかの特別な場所にある設定ファイルは特別な注意が必要です。 不完全なディレクトリ構造は {{man|1|mkdir}} で作成できます。
+
同様に、こ階層の下のどこかに存在する特別な設定ファイルにも注意が必要です。ディレクトリ構造のかけている部分は {{man|1|mkdir}} で作成できます。
   
{{Tip|インストールユーザーのホームディレクトリにファイルを追加する場合、 {{ic|''archlive''/airootfs/root/}} にファイルを設置してください。.全てのユーザーのホームディレクトリに設置したい場合、それらを {{ic|''archlive''/airootfs/etc/skel/}}.}} に設置してください。
+
{{Tip|インストールユーザーのホームディレクトリにファイルを追加する場合、 {{ic|''archlive''/airootfs/root/}} にファイルを設置してください。全てのユーザーのホームディレクトリに設置したい場合、それらを {{ic|''archlive''/airootfs/etc/skel/}}.}} に設置してください。
   
{{Note|カスタムファイルがパッケージによって提供されているファイルと衝突する場合、 [[Pacnew と Pacsave ファイル#パッケージのバックアップファイル|バックアップファイル]] に指定されていない限り上書きされます。 }}
+
{{Note|カスタムファイルがパッケージによって提供されているファイルと衝突する場合、[[Pacnew と Pacsave ファイル#パッケージのバックアップファイル|バックアップファイル]] に指定されていない限り上書きされます。 }}
   
デフォルトでは [[パーミッション]] は、ファイルは {{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 のリポジトリサイトから直接入手できます。
  +
  +
=== カーネル ===
  +
  +
archiso に含まれている両プロファイルには {{Pkg|linux}} しかありませんが、ISO には他の[[カーネル]]、さらに言えば複数のカーネルをも含ませることができます。
  +
  +
まず、{{ic|packages.x86_64}} を編集して、お好みのカーネルパッケージ名を記入します。''mkarchiso'' を実行すると、すべての {{ic|''work_dir''/airootfs/boot/vmlinuz-*}} と {{ic|''work_dir''/boot/initramfs-*.img}} (加えて、UEFI 起動に使われる FAT イメージ) が ISO に入ります。
  +
  +
デフォルトでは、[[mkinitcpio]] プリセットはフォールバックの initramfs イメージもビルドします。ISO の場合、メインの initramfs イメージには {{ic|autodetect}} フックが含まれないので、追加のフォールバックイメージは不要になります。(スペースの節約やビルドプロセスの高速化のために) フォールバック initramfs イメージを作成しないようにするには、{{ic|''archlive''/airootfs/etc/mkinitcpio.d/''pkgbase''.preset}} 内にカスタムのプリセットを配置してください。例えば、{{Pkg|linux-lts}} の場合:
  +
  +
{{hc|''archlive''/airootfs/etc/mkinitcpio.d/linux-lts.preset|2=
  +
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]] をサポートしています。設定ファイルの構文に関する情報はそれぞれのブートローダーの記事を参照してください。
デフォルトのファイルで大抵は動作するので、触れる必要はほとんどありません。
 
   
  +
{{Tip|1=<nowiki></nowiki>
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 [http://syslinux.zytor.com/wiki/index.php/SYSLINUX official syslinux site] and the [https://projects.archlinux.org/archiso.git/tree/configs/syslinux-iso/boot-files archiso git repo]. Using said addons, it is possible to make visually attractive and complex menus. See [http://syslinux.zytor.com/wiki/index.php/Comboot/menu.c32 here].
 
  +
* '''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?title=Comboot/menu.c32] を見てください。
  +
}}
   
  +
mkarchiso は、[[systemd-boot]] の設定が {{ic|efiboot}} ディレクトリ内に、[[GRUB]] の設定ファイルが {{ic|grub}} ディレクトリ内に、[[syslinux]] の設定がディレクトリ {{ic|syslinux}} と {{ic|isolinux}} 内に存在することを期待します。
=== ログインマネージャ ===
 
{{Out of date|{{ic|airootfs/root/customize_airootfs.sh}}は非推奨(deprecated)になっています}}
 
ブート時に X を起動させるのはログインマネージャの [[systemd]] サービスを有効化すれば出来ます。どの .service ファイルがソフトリンクを必要としているのかわからない場合、作成する iso と同じプログラムを使っていればすぐに確認することができます:
 
   
  +
==== UEFI セキュアブート ====
$ ls -l /etc/systemd/system/display-manager.service
 
   
  +
UEFI セキュアブートが有効な環境で Archiso を起動できるようにしたい場合、署名済みのブートローダーを使わねばなりません。[[セキュアブート#インストールメディアを起動する]] の指示に従うことで可能です。
そして {{ic|~/archlive/airootfs/etc/systemd/system}} に同じソフトリンクを作成します。LXDM の場合:
 
   
  +
=== systemd ユニット ===
# ln -s /usr/lib/systemd/system/lxdm.service ~/archlive/airootfs/etc/systemd/system/display-manager.service
 
   
これでライブ環境でテム起動した時LXDM有効ります。
+
ライブ環境で systemd のサービ/ソケット/タイマー[[有効化]]するは、{{ic|systemctl enable}}行うよう、シンボリックリンクを手動で作成する必要があります。
   
  +
例えば、{{ic|gpm.service}} ({{ic|1=WantedBy=multi-user.target}} を含んでいます) を有効化するには、以下を実行してください:
もしくは {{ic|airootfs/root/customize_airootfs.sh}} で他のサービスと同じようにサービスを有効化することもできます。
 
   
  +
$ mkdir -p ''archlive''/airootfs/etc/systemd/system/multi-user.target.wants
起動時に自動的にグラフィカル環境が実行されるようにしたい場合 {{ic|airootfs/root/customize_airootfs.sh}} を編集して以下の行を:
 
  +
$ ln -s /usr/lib/systemd/system/gpm.service ''archlive''/airootfs/etc/systemd/system/multi-user.target.wants/
   
  +
必要なシンボリックリンクは systemd ユニットを読めば分かります。サービスがインストール済みならば、それを[[有効化]]して systemctl の出力を観察することで、必要なシンボリックリンクを知ることができます。
systemctl set-default multi-user.target
 
   
  +
==== ログインマネージャ ====
次のように置き換えてください:
 
   
  +
ログインマネージャの [[systemd]] サービスを有効化することで、X を起動時に起動します。どの ''.service'' を有効化すべきかわからない場合、ISO のシステム上にあるものと同じプログラムを使っていればすぐに確認することができます:
systemctl set-default graphical.target
 
  +
  +
$ ls -l /etc/systemd/system/display-manager.service
  +
  +
そして {{ic|''archlive''/airootfs/etc/systemd/system/}} に同じソフトリンクを作成してください。LXDM の場合:
  +
  +
$ ln -s /usr/lib/systemd/system/lxdm.service ''archlive''/airootfs/etc/systemd/system/display-manager.service
  +
  +
これでライブ環境でシステムを起動した時に LXDM が有効になります。
   
=== 自動ログイン変更 ===
+
==== 自動ログイン変更する ====
   
 
getty の自動ログインの設定は {{ic|airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf}} にあります。
 
getty の自動ログインの設定は {{ic|airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf}} にあります。
111行目: 184行目:
 
[Service]
 
[Service]
 
ExecStart=
 
ExecStart=
ExecStart=-/sbin/agetty --autologin '''isouser''' --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}} を作成してください:
== ISO の作成 ==
 
   
  +
[Service]
以上で .iso を作成する準備ができました。
 
  +
ExecStart=
  +
ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear --autologin root --keep-baud 115200,57600,38400,9600 - $TERM
   
  +
=== ユーザとパスワード ===
まず {{ic|out/}} ディレクトリを作成してください:
 
   
  +
ライブ環境で利用可能なユーザを作成するには、{{ic|''archlive''/airootfs/etc/passwd}}、{{ic|''archlive''/airootfs/etc/shadow}}、{{ic|''archlive''/airootfs/etc/group}} そして {{ic|''archlive''/airootfs/etc/gshadow}} を手動で編集しなければなりません。
# mkdir ~/archlive/out/
 
   
  +
{{Note|これらのファイルが存在する場合、それらには root ユーザと root グループが含まれていなければなりません。}}
そして {{ic|~/archlive}} の中で、以下のコマンドを実行:
 
   
  +
例えば、{{ic|archie}} ユーザを追加するとします。{{man|5|passwd}} の文法に従ってそのユーザを {{ic|''archlive''/airootfs/etc/passwd}} に追加してください:
# ./build.sh -v
 
   
  +
{{hc|''archlive''/airootfs/etc/passwd|
スクリプトは {{ic|work/*/airootfs}} に指定したパッケージをダウンロードしたりインストールしません。そしてカーネルと init イメージを作成して、あなたのカスタマイズを適用して iso を {{ic|out/}} に保存します。
 
  +
root:x:0:0:root:/root:/usr/bin/zsh
  +
archie:x:1000:1000::/home/archie:/usr/bin/zsh
  +
}}
   
  +
{{Note|{{ic|passwd}} ファイルは改行で終わっていなければなりません。}}
作成した ISO は CD や USB に焼いて使ってください。
 
   
  +
{{ic|openssl passwd -6}} を使ってパスワードのハッシュ値を生成し、{{man|5|shadow}} の文法に従ってそのハッシュ値を {{ic|''archlive''/airootfs/etc/shadow}} に追加してください。例えば:
=== ISO の再作成 ===
 
{{Out of date|{{ic|airootfs/root/customize_airootfs.sh}}は非推奨(deprecated)になっています}}
 
修正を加えた後に ISO を再作成することは公式にはサポートされていませんが、2ステップで簡単にできます。まずワークディレクトリのロックファイルを削除してください:
 
   
  +
{{hc|''archlive''/airootfs/etc/shadow|2=
# rm -v work/build.make_*
 
  +
root::14871::::::
  +
archie:$6$randomsalt$cij4/pJREFQV/NgAgh9YyBIoCRRNq2jp5l8lbnE5aLggJnzIRmNVlogAg8N6hEEecLwXHtMQIl2NX2HlDqhCU1:14871::::::
  +
}}
  +
  +
{{man|5|group}} に従って、ユーザのグループと、そのユーザが所属するグループを {{ic|''archlive''/airootfs/etc/group}} に追加してください。例えば:
  +
  +
{{hc|''archlive''/airootfs/etc/group|2=
  +
root:x:0:root
  +
adm:x:4:archie
  +
wheel:x:10:archie
  +
uucp:x:14:archie
  +
archie:x:1000:
  +
}}
  +
  +
{{man|5|gshadow}} に従って、適切な {{ic|''archlive''/airootfs/etc/gshadow}} を作成してください:
  +
  +
{{hc|''archlive''/airootfs/etc/gshadow|2=
  +
root:!*::root
  +
archie:!*::
  +
}}
  +
  +
{{ic|/etc/shadow}} と {{ic|/etc/gshadow}} のパーミッションが正しいことを確認してください:
  +
  +
{{hc|''archlive''/profiledef.sh|2=
  +
...
  +
file_permissions=(
  +
...
  +
["/etc/shadow"]="0:0:0400"
  +
["/etc/gshadow"]="0:0:0400"
  +
)
  +
}}
  +
  +
パッケージのインストール後、''mkarchiso'' は {{ic|''archlive''/airootfs/etc/passwd}} 内にあるユーザの指定されたホームディレクトリをすべて作成し、{{ic|''work_directory''/x86_64/airootfs/etc/skel/*}} をそれらへコピーします。コピーされたファイルには適切なユーザとグループの所有権が付与されます。
  +
  +
=== ISO で使用されるディストリビューション名を変更する ===
  +
  +
まず、{{ic|/etc/os-release}} ファイルを rootfs 内の {{ic|etc/}} フォルダにコピーしてください。そして、そのファイルを適宜編集してください。GRUB と syslinux 内部での名前も変更できます。
  +
  +
== ISO をビルドする ==
  +
  +
CD や USB に焼くことのできる ISO を以下のコマンドでビルドしてください:
  +
  +
# mkarchiso -v -w ''/path/to/work_dir'' -o ''/path/to/out_dir'' ''/path/to/profile/''
  +
  +
* {{ic|-w}} は作業ディレクトリを指定します。このオプションが指定されない場合、カレントディレクトリ内の {{ic|work}} をデフォルトとして使用します。
  +
* {{ic|-o}} は、ビルド済み ISO イメージが置かれるディレクトリを指定します。このオプションが指定されない場合、カレントディレクトリ内の {{ic|out}} をデフォルトとして使用します。
  +
* mkarchiso の実行時にはプロファイルファイル {{ic|profiledef.sh}} は指定できず、そのファイルまでのパスのみを指定できることに注意してください (訳注: つまり、そのファイルが存在するディレクトリを指定する)。
  +
  +
{{ic|''/path/to/profile/''}} はカスタムプロファイルへのパスに置き換えてください。未変更のプロファイルをビルドする場合は {{ic|/usr/share/archiso/configs/releng/}} に置き換えてください。
  +
  +
{{Tip|メモリ容量が十分ならば、作業ディレクトリを [[tmpfs]] 上に置くのが好ましいでしょう。例えば:
  +
  +
# mkarchiso -v -w /tmp/archiso-tmp ''/path/to/profile/''
  +
  +
}}
  +
  +
スクリプトは、指定されたパッケージを {{ic|''work_directory''/x86_64/airootfs}} へダウンロード・インストールし、カーネルと init イメージを作成し、カスタマイズを適用し、最後に ISO をビルドして出力ディレクトリへ保存します。
  +
  +
=== 作業ディレクトリの削除 ===
   
  +
{{Warning|''mkarchiso'' の実行が中断された場合、作業ディレクトリを削除する前に {{man|8|findmnt}} を実行して、マウントバインドが存在しないことを確認してください。さもないと、'''データが消失する場合があります''' (例えば、{{ic|/run/media/''user''/''label''}} にマウントされている外部デバイスが、ビルドプロセス中に {{ic|work/x86_64/airootfs/run/media/''user''/''label''}} へバインドされます)。}}
それから {{ic|airootfs/root/customize_airootfs.sh}} スクリプトを編集して、以下のように {{ic|useradd}} 行の前に {{ic|id}} コマンドを追加してください。このコマンドを追加しないと既に存在するユーザーを追加することになり再作成が停止してしまいます [https://bugs.archlinux.org/task/41865]。
 
   
  +
一時ファイルが作業ディレクトリにコピーされています。ISO を正常にビルドした後であれば、作業ディレクトリとその内容を削除できます。例えば:
! id arch && useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch
 
   
  +
# rm -rf ''/path/to/work_dir''
{{ic|/etc/sudoers}} などの作成済みユーザーのデータやシンボリックリンクも削除してください。
 
   
 
== ISO を使う ==
 
== ISO を使う ==
   
  +
選択肢については [[インストールガイド#インストールメディアの準備]] を見てください。
=== CD ===
 
   
  +
== ISO を QEMU でテストする ==
iso を cd に書き込んでください。[[光学ディスクドライブ#焼き込み]]に従ってください。
 
   
  +
任意の依存パッケージである {{pkg|qemu-desktop}} と {{pkg|edk2-ovmf}} を[[インストール]]してください。
=== USB ===
 
   
  +
[[QEMU]] を使ってビルド済みイメージを実行するには、{{ic|run_archiso}} という便利なスクリプトを使ってください:
[[USB インストールメディア]]を見て下さい。
 
   
  +
$ run_archiso -i ''/path/to/''archlinux-''yyyy.mm.dd''-x86_64.iso
=== GRUB ===
 
   
  +
仮想マシンは UEFI エミュレートを使って実行することもできます:
[[マルチブート USB ドライブ#Arch_Linux]] を見て下さい。
 
   
  +
$ run_archiso -u -i ''/path/to/''archlinux-''yyyy.mm.dd''-x86_64.iso
=== grub4dos ===
 
   
  +
== ヒントとテクニック ==
Grub4dos はマルチブート USB を作成することができるユーティリティです。同じ USB スティックから複数の Linux ディストリを起動することができます。
 
   
  +
=== オンラインビルド ===
grub4dos で USB にインストールされたシステムを起動するには、ISO をループマウントして {{ic|/arch}} ディレクトリを USB の''ルートディレクトリ''にコピーしてください。それから grub4dos から {{ic|menu.lst}} ファイルを編集して以下の行を追加してください:
 
   
  +
利用可能な Arch システムがない場合や、他の GNU/Linux ディストリビューションから Archiso をセットアップする必要がある場合、[https://colab.research.google.com/github/tallero/archiso-profiles/ オンラインのビルダー] があります。
{{bc|<nowiki>
 
title Archlinux x86_64
 
kernel /arch/boot/x86_64/vmlinuz archisolabel=<your usb label>
 
initrd /arch/boot/x86_64/archiso.img
 
</nowiki>}}
 
   
  +
=== SSH 経由でインストールするための ISO を準備する ===
{{ic|x86_64}} の部分は必要に応じて変更して適当なラベル名を付けてください。
 
   
  +
{{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}} 内に記入する必要があります。
インターネットに接続できない、パッケージを何度もダウンロードしたくないなどの理由で archiso (例: [https://www.archlinux.jp/download/ 公式の月次リリース]) をインストールするときは以下を読んでください:
 
   
  +
SSH 鍵は、手動 (ここで説明します) か、[[SSH からインストール#Installation on a headless server|cloud-init]] によって追加することができます。
まず、[[インストールガイド#インターネットへの接続|#インターネット接続の確立]]などのセクションを飛ばして[[インストールガイド#ベースシステムのインストール|#ベースシステムのインストール]]まで[[インストールガイド]]に従ってください。
 
   
  +
鍵を手動で追加するには、まず、書き込み可能なディレクトリに [[#カスタムプロファイルを準備する|Archiso の releng プロファイルをコピー]]してください。次の例では {{ic|archlive}} を使っています。
=== 新しい 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
 
   
  +
$ cp -r /usr/share/archiso/configs/''profile/'' archlive
その後、[[インストールガイド#fstab]] に書かれているとおりに fstab を生成してください。
 
   
  +
ログインに使用されるユーザーのホームディレクトリ内に {{ic|.ssh}} ディレクトリを作成してください。以下の例では root ユーザを使用しています。
=== Chroot とベースシステムの設定 ===
 
次に、新しくインストールしたシステムに chroot します:
 
# arch-chroot /mnt /bin/bash
 
   
  +
$ mkdir archlive/airootfs/root/.ssh
{{Note|[[インストールガイド#システムの設定]]における他の設定 (ロケールやキーマップなど) を行う前に、ライブ環境の跡 (つまり、ライブ環境に適合しない archiso のカスタマイズ) を消す必要があります。}}
 
   
  +
(ログインに使用される) SSH 公開鍵を {{ic|authorized_keys}} に追加してください:
==== 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
 
   
  +
$ cat ~/.ssh/''key1''.pub >> archlive/airootfs/root/.ssh/authorized_keys
==== 特殊な udev ルールの削除 ====
 
  +
$ cat ~/.ssh/''key2''.pub >> archlive/airootfs/root/.ssh/authorized_keys
[https://projects.archlinux.org/archiso.git/tree/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules この udev ルール] は有線ネットワークインターフェイスが存在する場合に自動的に dhcpcd を起動します。
 
   
  +
{{ic|.ssh}} ディレクトリと {{ic|authorized_keys}} ファイルに正しい[[パーミッション]]と所有者を設定してください:
# rm /etc/udev/rules.d/81-dhcpcd.rules
 
   
  +
{{hc|archlive/profiledef.sh|2=
==== archiso によって作成されたサービスの無効化と削除 ====
 
  +
...
ライブ環境用に作成されているサービスファイルがあるので、サービスを無効化してファイルを削除してください (新しい環境では不要であるため):
 
  +
file_permissions=(
# 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}
 
  +
["/root"]="0:0:0750"
# rm /etc/systemd/scripts/choose-mirror
 
  +
["/root/.ssh"]="0:0:0700"
  +
["/root/.ssh/authorized_keys"]="0:0:0600"
  +
)
  +
}}
   
  +
最後に、[[#ISO をビルドする|ISO をビルドしてください]]。ISO のブート時に [[OpenSSH]] が起動し、対応する SSH 秘密鍵を使ってログインできるようになります。
==== ライブ環境の特殊なスクリプトの削除 ====
 
ライブ環境には 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
 
   
  +
=== iwd を使って Wi-Fi ネットワークに自動的に接続する ===
==== archlinux 鍵のインポート ====
 
   
  +
プロファイルの {{ic|airootfs}} ディレクトリ内に {{ic|/var/lib/iwd/}} を作成し、正しいパーミッションを設定してください:
公式リポジトリを使うには archlinux のマスター鍵をインポートする必要があります ([[pacman-key#キーリングの初期化]])。通常は pacstrap でインポートされますが、以下のコマンドでインポートすることもできます:
 
   
  +
$ mkdir -p ''archlive''/airootfs/var/lib/iwd
# pacman-key --init
 
# pacman-key --populate archlinux
 
   
  +
{{hc|archlive/profiledef.sh|2=
{{Note|エントロピーを生成するにはキーボードやマウスを動かす必要があります。}}
 
  +
...
  +
file_permissions=(
  +
...
  +
["/var/lib/iwd"]="0:0:0700"
  +
)
  +
}}
   
  +
[[iwd#ネットワーク設定]] と {{man|5|iwd.network}} の指示に従って、Wi-Fi ネットワークのためのネットワーク設定ファイルを作成してください。
==== システムの設定 ====
 
スキップした[[インストールガイド#システムの設定]]セクションの設定 (ロケールやタイムゾーン、ホストネームなど) を行って[[インストールガイド#Initramfs]] に書いてあるように初期 RAM ディスクを作成してインストールを完了してください。
 
   
  +
設定ファイルは {{ic|''archlive''/airootfs/var/lib/iwd/}} 内に保存してください。
==== グラフィカルログインの有効化 (任意) ====
 
   
  +
=== ルートファイルシステムのサイズを調整する ===
[[GDM]] などのディスプレイマネージャを使用する場合、systemd のデフォルトターゲットを {{ic|multi-user.target}} からグラフィカルログインができるターゲットに変更すると良いでしょう:
 
  +
# systemctl disable multi-user.target
 
  +
Live 環境内でパッケージをインストールする際 (例えば [[DKMS]] モジュールが必要なハードウェア)、ルートファイルシステムのデフォルトサイズでは小さすぎてパッケージのダウンロードとインストールができないかもしれません。
# systemctl enable graphical.target
 
  +
  +
{{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 のブートパラメータ]参照してください。
  +
  +
=== 暗号化 ===
  +
  +
バニラの {{ic|mkarchiso}} で暗号化済みイメージの生成や、[https://gitlab.archlinux.org/archlinux/archiso/-/merge_requests/217 archiso] での [[LUKS]] サポート、[https://gitlab.archlinux.org/mkinitcpio/mkinitcpio-archiso/-/merge_requests/25 mkinitcpio-archiso] での [[dm-crypt/システム設定|encrypt]] フックの互換性、{{Pkg|cryptsetup}} でのネストされた {{ic|cryptkey}} のサポートを実現するには、マージリクエストが受理される必要があります。
  +
  +
そのような機能がすでにマージされているパッケージは、{{AUR|archiso-encryption}}{{Broken package link|package not found}}、{{AUR|mkinitcpio-archiso-encryption}}、{{AUR|cryptsetup-nested-cryptkey}}{{Broken package link|package not found}} です。
  +
  +
既存のプロファイルで暗号化を有効化するには:
  +
* {{ic|profiledef.sh}} 内の {{ic|airootfs_image_type}} に {{ic|+luks}} を追加する。
  +
* {{ic|profiledef.sh}} で {{ic|encryption_key}} を設定する (パスワードの代わりにキーファイルを使用するため)。
  +
* {{ic|/etc/mkinitcpio.conf}} で {{ic|encrypt}} フックを有効化する。
  +
* AUR パッケージ (あるいは前述のソースでカスタムの代替をビルドする) を {{ic|packages.x86_64}} に追加する。
  +
* {{ic|keys}} ビルドモードを {{ic|profiledef.sh}} 内の {{ic|buildmodes}} 配列に追加する (キーファイルを含む第2の ISO をビルドするため。この ISO は外部のストレージに入れて、システムを起動するために使用できます)。
  +
  +
{{ic|baseline}} プロファイルと {{ic|releng}} プロファイルをベースとした設定例は、{{AUR|archiso-profiles}} パッケージの {{ic|ebaseline}} と {{ic|ereleng}} で見られます。
  +
  +
=== Google Compute Engine イメージ ===
  +
  +
Google Compute Engine 互換の {{ic|releng}} 圧縮イメージは {{AUR|archlinux-gce}} で手に入ります。
  +
  +
=== Libvirt VM 設定 ===
  +
  +
{{ic|releng}} イメージを実行する [[libvirt]] 設定は、{{AUR|archlinux-libvirt}} で手に入ります。
  +
  +
== トラブルシューティング ==
  +
  +
=== ウィンドウマネージャがフリーズする ===
  +
  +
Live CD で[[ウィンドウマネージャ]]を使いたい場合、必要な正しい[[ビデオドライバー]]を追加しなければなりません。さもないと、ロード中にウィンドウマネージャがフリーズする場合があります。
   
 
== 参照 ==
 
== 参照 ==
=== ドキュメントとチュートリアル ===
 
* [https://projects.archlinux.org/archiso.git Archiso プロジェクトページ]
 
* [https://projects.archlinux.org/archiso.git/tree/docs 公式ドキュメント]
 
   
  +
* [https://gitlab.archlinux.org/archlinux/archiso Archiso プロジェクトページ]
=== カスタマイズテンプレートのサンプル ===
 
  +
* [https://gitlab.archlinux.org/archlinux/archiso/-/tree/master/docs 公式ドキュメント]
* [http://easy.open.and.free.fr/didjix/ Archiso で作成された Arch Linux によるライブ DJ ディストリビューション]
 
  +
* [https://lists.archlinux.org/mailman3/lists/arch-releng.lists.archlinux.org/ Arch Linux Release Engineering メーリングリスト]
  +
* [ircs://irc.libera.chat/archlinux-releng #archlinux-releng — Arch Linux Release Engineering IRC channel]
  +
* [https://github.com/pierres/archiso-manager archiso-manager — 公式の月次 ISO をビルドする際に用いられるツール]
  +
  +
{{TranslationStatus|Archiso|2024-03-30|804822}}

2024年3月30日 (土) 19:26時点における最新版

関連記事

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 を編集して、ライブシステムイメージにどのパッケージをインストールするかを選択してください。1行で1つのパッケージが定義されます。

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

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

archlive/pacman.conf
...
[customrepo]
SigLevel = Optional TrustAll
Server = file:///path/to/customrepo
...
ノート:
  • pacman.conf 内での順番は重要です。カスタムリポジトリを最優先させるには、他のリポジトリエントリよりも上にそのリポジトリを配置してください。
  • この pacman.conf はイメージのビルドのためだけに使用されます。Live 環境内で使用されるものではありません。Live 環境内で使用されるようにするには、#イメージにリポジトリを追加する を見てください。

multilib のパッケージ

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

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

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 を確認してください。

イメージにリポジトリを追加する

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 ブート用に GRUBsystemd-boot をサポートしています。設定ファイルの構文に関する情報はそれぞれのブートローダーの記事を参照してください。

ヒント:
  • releng プロファイルは、El Torito を使って光学ディスクに焼いた場合や、Isohybrid を使ってハードディスクに書き込んだ場合は、BIOS と UEFI ブートの両方をサポートする ISO をデフォルトでビルドします。
  • isolinux のモジュール性により、.c32 ファイルがすべてコピーされ利用可能なので、多くのアドオンを利用できます。公式の syslinux サイトarchiso git リポジトリ を参照してください。アドオンを使えば、魅力的で複雑なメニューを作ることができます。[2] を見てください。

mkarchiso は、systemd-boot の設定が efiboot ディレクトリ内に、GRUB の設定ファイルが grub ディレクトリ内に、syslinux の設定がディレクトリ syslinuxisolinux 内に存在することを期待します。

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/passwdarchlive/airootfs/etc/shadowarchlive/airootfs/etc/group そして archlive/airootfs/etc/gshadow を手動で編集しなければなりません。

ノート: これらのファイルが存在する場合、それらには root ユーザと root グループが含まれていなければなりません。

例えば、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
ノート: passwd ファイルは改行で終わっていなければなりません。

openssl passwd -6 を使ってパスワードのハッシュ値を生成し、shadow(5) の文法に従ってそのハッシュ値を archlive/airootfs/etc/shadow に追加してください。例えば:

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"
)

パッケージのインストール後、mkarchisoarchlive/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/ に置き換えてください。

ヒント: メモリ容量が十分ならば、作業ディレクトリを 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 を使う

選択肢については インストールガイド#インストールメディアの準備 を見てください。

ISO を QEMU でテストする

任意の依存パッケージである qemu-desktopedk2-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

ヒントとテクニック

オンラインビルド

利用可能な Arch システムがない場合や、他の GNU/Linux ディストリビューションから Archiso をセットアップする必要がある場合、オンラインのビルダー があります。

SSH 経由でインストールするための ISO を準備する

ノート: archlinux-2021.02.01-x86_64.iso 以降、cloud-init のサポートが提供されるようになり、sshd.serviceデフォルトで有効化されています

システムと対話せずに 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 モジュールが必要なハードウェア)、ルートファイルシステムのデフォルトサイズでは小さすぎてパッケージのダウンロードとインストールができないかもしれません。

ヒント: このようなサイズが設定されている理由は BBS#210389 を見てください。歴史的な詳細は FS#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

SIZE で利用できるパラメータは tmpfs(5) § size を参照してください。

(e キーや Tab キーを押して) ブートローダーの段階でサイズを設定するには、以下のブートオプションを使用してください:

cow_spacesize=SIZE

イメージのビルド段階でサイズを設定するには、先のブートオプションを以下のファイルに追加してください:

  • efiboot/loader/entries/*.cfg
  • grub/*.cfg
  • syslinux/*.cfg

結果は以下のコマンドで確認できます:

$ df -h

mkinitcpio-archiso のブートパラメータ参照してください。

暗号化

バニラの mkarchiso で暗号化済みイメージの生成や、archiso での LUKS サポート、mkinitcpio-archiso での encrypt フックの互換性、cryptsetup でのネストされた cryptkey のサポートを実現するには、マージリクエストが受理される必要があります。

そのような機能がすでにマージされているパッケージは、archiso-encryptionAUR[リンク切れ: package not found]mkinitcpio-archiso-encryptionAURcryptsetup-nested-cryptkeyAUR[リンク切れ: package not found] です。

既存のプロファイルで暗号化を有効化するには:

  • profiledef.sh 内の airootfs_image_type+luks を追加する。
  • profiledef.shencryption_key を設定する (パスワードの代わりにキーファイルを使用するため)。
  • /etc/mkinitcpio.confencrypt フックを有効化する。
  • AUR パッケージ (あるいは前述のソースでカスタムの代替をビルドする) を packages.x86_64 に追加する。
  • keys ビルドモードを profiledef.sh 内の buildmodes 配列に追加する (キーファイルを含む第2の ISO をビルドするため。この ISO は外部のストレージに入れて、システムを起動するために使用できます)。

baseline プロファイルと releng プロファイルをベースとした設定例は、archiso-profilesAUR パッケージの ebaselineereleng で見られます。

Google Compute Engine イメージ

Google Compute Engine 互換の releng 圧縮イメージは archlinux-gceAUR で手に入ります。

Libvirt VM 設定

releng イメージを実行する libvirt 設定は、archlinux-libvirtAUR で手に入ります。

トラブルシューティング

ウィンドウマネージャがフリーズする

Live CD でウィンドウマネージャを使いたい場合、必要な正しいビデオドライバーを追加しなければなりません。さもないと、ロード中にウィンドウマネージャがフリーズする場合があります。

参照

翻訳ステータス: このページは en:Archiso の翻訳バージョンです。最後の翻訳日は 2024-03-30 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。