「Archiso」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(冒頭部分を英語版から翻訳)
33行目: 33行目:
 
プロファイルをカスタマイズ、ビルドするには以下の手順に進んでください。
 
プロファイルをカスタマイズ、ビルドするには以下の手順に進んでください。
   
  +
=== プロファイルの構造 ===
   
  +
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|~/archlive}} ディレクトリには多数のファイルとディレクトリが存在しますが、ここでは以下のファイルとディレクトリにだけ触れます:
 
* {{ic|packages.*}} - インストールしたいパッケージを一行ごとに記述したリストです。
 
* {{ic|airootfs}} ディレクトリ - このディレクトリはオーバーレイとして機能し、カスタマイズを行うことができます。
 
   
  +
==== カスタムローカル・リポジトリ ====
基本的に、パッケージのインストール以外のシステム設定は全て {{ic|~/archlive/airootfs/root/customize_airootfs.sh}} でスクリプト化することができます。新しい環境から実行されるということを想定してスクリプトを書いてください。スクリプト内では {{ic|/}} が作成されるライブ ISO のルートディレクトリになります。
 
   
  +
公式リポジトリに存在しないパッケージ (カスタムパッケージや [[AUR]]/[[ABS]] からのパッケージ) を追加するには, [[Pacman ヒント#カスタムローカルリポジトリ|カスタムローカルリポジトリを作成]] し、そこにパッケージを追加してください。その後、{{ic|pacman.conf}} にリポジトリを以下のように追加してください:
=== パッケージをインストール ===
 
   
  +
{{hc|''archlive''/pacman.conf|2=
ライブ CD 環境にインストールしたいパッケージのリストを作成してください。1行毎にパッケージの名前を記述したファイルになります。特定の用途用のライブ CD を作りたい場合に有用です。{{ic|packages.both}} に追加したいパッケージを指定してください。32ビットあるいは64ビット環境でのみインストールしたいソフトウェアの場合は {{ic|packages.i686}} や {{ic|packages.x86_64}} ファイルを使います。
 
  +
...
  +
[''customrepo'']
  +
SigLevel = Optional TrustAll
  +
Server = file://''/path/to/customrepo''
  +
...
  +
}}
   
  +
{{Note|{{ic|pacman.conf}} の順番について。カスタムリポジトリを最優先にするには、設定を他のリポジトリより上に記述してください}}
{{Note|ライブ CD で[[ウィンドウマネージャ]]を使いたい場合、必要な[[Xorg#ドライバーのインストール|ビデオドライバー]]を追加する必要があります。追加しておかないとロード時に WM がフリーズします。}}
 
   
==== カスタムローカルリポジトリ ====
+
==== multilibリポジトリ ====
   
  +
[[multilib]] リポジトリからパッケージをインストールする場合は {{ic|pacman.conf}} の設定をアンコメントしてください。
カスタムパッケージや [[AUR]]/[[ABS]] からパッケージを準備するために[[Pacman ヒント#カスタムローカルリポジトリ|カスタムローカルリポジトリを作成]]することもできます。両方のアーキテクチャでパッケージを用意する場合、問題が起きないように特定のディレクトリの順番を守るようにしてください。
 
   
例えば:
 
 
*{{ic|~/customrepo}}
 
**{{ic|~/customrepo/x86_64}}
 
***{{ic|~/customrepo/x86_64/foo-x86_64.pkg.tar.xz}}
 
***{{ic|~/customrepo/x86_64/customrepo.db.tar.gz}}
 
***{{ic|~/customrepo/x86_64/customrepo.db}} ({{ic|repo-add}} によって作成されるシンボリックリンク)
 
**{{ic|~/customrepo/i686}}
 
***{{ic|~/customrepo/i686/foo-i686.pkg.tar.xz}}
 
***{{ic|~/customrepo/i686/customrepo.db.tar.gz}}
 
***{{ic|~/customrepo/i686/customrepo.db}} ({{ic|repo-add}} によって作成されるシンボリックリンク)
 
 
それから {{ic|~/archlive/pacman.conf}} に以下のように記述することでリポジトリを追加できます (他のリポジトリエントリよりも上に記述してください):
 
 
# custom repository
 
[customrepo]
 
SigLevel = Optional TrustAll
 
Server = file:///home/'''user'''/customrepo/$arch
 
 
これでビルドスクリプトは適切なパッケージを見つけに行くようになります。
 
 
正しく設定しなかった場合、以下のようなエラーメッセージが表示されます:
 
 
error: failed to prepare transaction (package architecture is not valid)
 
:: package foo-i686 does not have a valid architecture
 
   
 
==== base グループに含まれているパッケージのインストールを避ける ====
 
==== base グループに含まれているパッケージのインストールを避ける ====

2021年10月1日 (金) 20:14時点における版

関連記事

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

インストール

archiso もしくは archiso-gitAURパッケージをインストールしてください

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

Archiso は2つの設定ファイルで構成されています。 relengbaseline です。

  • releng は毎月リリースされる公式のイメージファイルをビルドするために使われています。カスタマイズされたISOを作成するためのベースにもできます。
  • baseline は最小限の構成であり、Liveシステムがメディアから起動するための最小限のパッケージが含まれています。

プロファイルに何も変更を加えずにビルドする場合は、Archiso#ISOをビルドする までスキップしてください。既存のプロファイルをカスタマイズしたい場合は、/usr/share/archiso/configs/profile/ディレクトリを好きな名前で書き込み可能な場所にコピーします。例:

$ cp -r /usr/share/archiso/configs/profile/ 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 の設定をアンコメントしてください。


base グループに含まれているパッケージのインストールを避ける

デフォルトでは~/archlive/build.shで使用されるスクリプトである/usr/bin/mkarchiso-iフラグなしでpacstrapというarch-install-scriptsの1つを呼び出します。 これによりPacmanはインストールプロセス中にユーザーからの入力を待たなくなります。

baseグループパッケージを~/archlive/pacman.confIgnorePkg行に追加してブラックリストに登録するとき、Pacmanはまだインストールする必要があるかどうかを尋ねます。つまり、ユーザー入力がバイパスされたときにパッケージをインストールします。これらのパッケージを削除するには、いくつかのオプションがあります。

  • Dirty: /usr/bin/mkarchisopacstrapを呼び出す各行に-iフラグを追加します。
  • Clean: /usr/bin/mkarchisoのコピーを作成します。そこにフラグを追加し~/archlive/build.shを修正して修正されたmkarchisoスクリプトを呼び出します。
  • Advanced: 基本インストール後にパッケージを明示的に削除します。~/archlive/build.shの関数が作成されるため、インストールプロセス中にユーザーからの入力をあまりしなくても済むようになります。

ユーザーを追加

ユーザー管理は通常のインストール方法と同じ方法で行うことができます。ただしコマンドは ~/archlive/releng/airootfs/root/customize_airootfs.sh に記述してください。ユーザー管理に関する情報はユーザー管理を見て下さい。

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

ノート: You must be root to do this, do not change the ownership of any of the files you copy over, everything within the airootfs directory must be root owned. Proper ownerships will be sorted out shortly.

The airootfs directory acts as an overlay, think of it as root directory '/' on your current system, so any files you place within this directory will be copied over on boot-up.

So if you have a set of iptables scripts on your current system you want to be used on you live image, copy them over as such:

# cp -r /etc/iptables ~/archlive/airootfs/etc

Placing files in the users home directory is a little different. Do not place them within airootfs/home, but instead create a skel directory within airootfs/ and place them there. We will then add the relevant commands to the customize_airootfs.sh which we are going to use to copy them over on boot and sort out the permissions.

First, create the skel directory:

# mkdir ~/archlive/airootfs/etc/skel

Now copy the 'home' files to the skel directory, e.g for .bashrc:

# cp ~/.bashrc ~/archlive/airootfs/etc/skel/

~/archlive/airootfs/root/customize_airootfs.sh が実行され新しいユーザーが作成されると、skel ディレクトリからファイルが自動的に新しいホームディレクトリにコピーされ、パーミッションが適切に設定されます。

Similarly, some care is required for special configuration files that reside somewhere down the hierarchy. As an example the /etc/X11/xinit/xinitrc configuration file resides on a path that might be overwritten by installing a package. To place the configuration file one should put the custom xinitrc in ~/archlive/airootfs/etc/skel/ and then modify customize_airootfs.sh to move it appropriately.

ブートローダー

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

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.

ログインマネージャ

ブート時に 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 の作成

以上で .iso を作成する準備ができました。

まず out/ ディレクトリを作成してください:

# mkdir ~/archlive/out/

そして ~/archlive の中で、以下のコマンドを実行:

# ./build.sh -v

スクリプトは work/*/airootfs に指定したパッケージをダウンロードしたりインストールしません。そしてカーネルと init イメージを作成して、あなたのカスタマイズを適用して iso を out/ に保存します。

作成した ISO は CD や USB に焼いて使ってください。

ISO の再作成

修正を加えた後に ISO を再作成することは公式にはサポートされていませんが、2ステップで簡単にできます。まずワークディレクトリのロックファイルを削除してください:

# rm -v work/build.make_*

それから airootfs/root/customize_airootfs.sh スクリプトを編集して、以下のように useradd 行の前に id コマンドを追加してください。このコマンドを追加しないと既に存在するユーザーを追加することになり再作成が停止してしまいます [2]

! id arch && useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch

/etc/sudoers などの作成済みユーザーのデータやシンボリックリンクも削除してください。

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

参照

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

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