「Archiso」の版間の差分
(冒頭部分を英語版から翻訳) |
|||
17行目: | 17行目: | ||
{{Related|Archboot}} |
{{Related|Archboot}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | '''Archiso''' は Arch Linux |
+ | '''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'' で文書化されているので、ここでは説明しません。 |
− | == |
+ | == インストール == |
+ | {{Pkg|archiso}} もしくは {{AUR|archiso-git}}パッケージをインストールしてください |
||
+ | == カスタムプロファイルを準備する == |
||
− | {{Note| |
||
+ | Archiso は2つの設定ファイルで構成されています。 '''releng''' と '''baseline''' です。 |
||
− | * Archiso を使う場合 x86_64 環境で動作させる必要があります [https://projects.archlinux.org/archiso.git/tree/docs/README.build#n67]。 |
||
− | * 以下の作業は全て root で行うことを推奨します。そうしないと、後でパーミッションの問題が発生するでしょう。 |
||
− | }} |
||
− | 初めに、[[公式リポジトリ]]から {{Pkg|archiso}} を[[インストール]]する必要があります。もしくは、[[AUR]] の {{AUR|archiso-git}} を使うこともできます。 |
||
+ | * '''releng''' は毎月リリースされる公式のイメージファイルをビルドするために使われています。カスタマイズされたISOを作成するためのベースにもできます。 |
||
− | 作業用のディレクトリを作成します。ライブイメージへの変更はすべてこのディレクトリで行います: {{ic|~/archlive}} で問題ないでしょう。 |
||
+ | * '''baseline''' は最小限の構成であり、Liveシステムがメディアから起動するための最小限のパッケージが含まれています。 |
||
− | $ mkdir ~/archlive |
||
+ | プロファイルに何も変更を加えずにビルドする場合は、[[Archiso#ISOをビルドする]] までスキップしてください。既存のプロファイルをカスタマイズしたい場合は、{{ic|/usr/share/archiso/configs/''profile''/}}ディレクトリを好きな名前で書き込み可能な場所にコピーします。例: |
||
− | ホストシステムにインストール先に archiso スクリプトを新しく作成した作業ディレクトリにコピーしてください。 |
||
+ | $ cp -r /usr/share/archiso/configs/''profile''/ archlive |
||
+ | プロファイルをカスタマイズ、ビルドするには以下の手順に進んでください。 |
||
− | Archiso には2つの"プロファイル"があります: ''releng'' と ''baseline''。 |
||
− | * インストール済みのお気に入りのプログラムや設定を使って、Arch Linux のフルカスタマイズライブ版を作りたい場合は、''releng'' を使います。 |
||
− | * インストール済みのパッケージは使わずに、最小設定を使って、ベーシックなライブメディアを作りたい場合は、''baseline'' を使います。 |
||
− | |||
− | 必要に応じて、以下を実行してください ('PROFILE' は '''releng''' か '''baseline''' のどちらかに置き換えてください)。 |
||
− | # cp -r /usr/share/archiso/configs/'''profile'''/* ~/archlive |
||
− | |||
− | * ''releng'' プロファイルを使って完全にカスタマイズしたイメージを作成する場合は、[[#ライブメディアの設定]] に進んで下さい。 |
||
− | * ''baseline'' プロファイルを使って最低限のイメージを作成する場合は、カスタマイズをする必要がないので、[[#ISO の作成]] に進んで下さい。 |
||
== ライブメディアの設定 == |
== ライブメディアの設定 == |
2021年10月1日 (金) 20:01時点における版
Archiso は Arch Linux のライブ CD 及びライブ USB イメージを構築するための 高度にカスタマイズ可能なツールです。公式の CD/USB ISO イメージは Archiso でビルドされています。とても汎用的なツールなので、レスキューシステムやインストールディスクから、特殊なライブ CD/DVD/USB システムまで、あらゆるものを作成することができます。この Wiki 記事では Archiso のインストールの仕方とインストールされるファイルやパッケージなどを構成する方法を説明します。技術的な要求とビルドの手順は プロジェクトの公式ドキュメントを参照してください。Archiso はいくつもの Bash スクリプトで実装されており、mkarchiso コマンドがその中心です。このコマンドのオプションは mkarchiso -h で文書化されているので、ここでは説明しません。
インストール
archiso もしくは archiso-gitAURパッケージをインストールしてください
カスタムプロファイルを準備する
Archiso は2つの設定ファイルで構成されています。 releng と baseline です。
- releng は毎月リリースされる公式のイメージファイルをビルドするために使われています。カスタマイズされたISOを作成するためのベースにもできます。
- baseline は最小限の構成であり、Liveシステムがメディアから起動するための最小限のパッケージが含まれています。
プロファイルに何も変更を加えずにビルドする場合は、Archiso#ISOをビルドする までスキップしてください。既存のプロファイルをカスタマイズしたい場合は、/usr/share/archiso/configs/profile/
ディレクトリを好きな名前で書き込み可能な場所にコピーします。例:
$ cp -r /usr/share/archiso/configs/profile/ archlive
プロファイルをカスタマイズ、ビルドするには以下の手順に進んでください。
ライブメディアの設定
このセクションでは作成するイメージの設定について説明します。ライブイメージに含めたいパッケージや設定を定義することができます。
~/archlive
ディレクトリには多数のファイルとディレクトリが存在しますが、ここでは以下のファイルとディレクトリにだけ触れます:
packages.*
- インストールしたいパッケージを一行ごとに記述したリストです。airootfs
ディレクトリ - このディレクトリはオーバーレイとして機能し、カスタマイズを行うことができます。
基本的に、パッケージのインストール以外のシステム設定は全て ~/archlive/airootfs/root/customize_airootfs.sh
でスクリプト化することができます。新しい環境から実行されるということを想定してスクリプトを書いてください。スクリプト内では /
が作成されるライブ ISO のルートディレクトリになります。
パッケージをインストール
ライブ CD 環境にインストールしたいパッケージのリストを作成してください。1行毎にパッケージの名前を記述したファイルになります。特定の用途用のライブ CD を作りたい場合に有用です。packages.both
に追加したいパッケージを指定してください。32ビットあるいは64ビット環境でのみインストールしたいソフトウェアの場合は packages.i686
や packages.x86_64
ファイルを使います。
カスタムローカルリポジトリ
カスタムパッケージや AUR/ABS からパッケージを準備するためにカスタムローカルリポジトリを作成することもできます。両方のアーキテクチャでパッケージを用意する場合、問題が起きないように特定のディレクトリの順番を守るようにしてください。
例えば:
~/customrepo
~/customrepo/x86_64
~/customrepo/x86_64/foo-x86_64.pkg.tar.xz
~/customrepo/x86_64/customrepo.db.tar.gz
~/customrepo/x86_64/customrepo.db
(repo-add
によって作成されるシンボリックリンク)
~/customrepo/i686
~/customrepo/i686/foo-i686.pkg.tar.xz
~/customrepo/i686/customrepo.db.tar.gz
~/customrepo/i686/customrepo.db
(repo-add
によって作成されるシンボリックリンク)
それから ~/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 グループに含まれているパッケージのインストールを避ける
デフォルトでは~/archlive/build.sh
で使用されるスクリプトである/usr/bin/mkarchiso
は-i
フラグなしでpacstrap
というarch-install-scriptsの1つを呼び出します。
これによりPacmanはインストールプロセス中にユーザーからの入力を待たなくなります。
baseグループパッケージを~/archlive/pacman.conf
のIgnorePkg
行に追加してブラックリストに登録するとき、Pacmanはまだインストールする必要があるかどうかを尋ねます。つまり、ユーザー入力がバイパスされたときにパッケージをインストールします。これらのパッケージを削除するには、いくつかのオプションがあります。
- Dirty:
/usr/bin/mkarchiso
のpacstrap
を呼び出す各行に-i
フラグを追加します。
- Clean:
/usr/bin/mkarchiso
のコピーを作成します。そこにフラグを追加し~/archlive/build.sh
を修正して修正されたmkarchiso
スクリプトを呼び出します。
- Advanced: 基本インストール後にパッケージを明示的に削除します。
~/archlive/build.sh
の関数が作成されるため、インストールプロセス中にユーザーからの入力をあまりしなくても済むようになります。
ユーザーを追加
ユーザー管理は通常のインストール方法と同じ方法で行うことができます。ただしコマンドは ~/archlive/releng/airootfs/root/customize_airootfs.sh
に記述してください。ユーザー管理に関する情報はユーザー管理を見て下さい。
イメージにファイルを追加
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
コマンドを追加してください。このコマンドを追加しないと既に存在するユーザーを追加することになり再作成が停止してしまいます [1]。
! 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
次に、新しいシステムの整合性を保つために、ディレクトリを複数作成してカーネルイメージを新しい root にコピーします:
# cp -vaT /run/archiso/bootmnt/arch/boot/$(uname -m)/vmlinuz /mnt/boot/vmlinuz-linux
その後、インストールガイド#fstab に書かれているとおりに fstab を生成してください。
Chroot とベースシステムの設定
次に、新しくインストールしたシステムに chroot します:
# arch-chroot /mnt /bin/bash
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