「Archiso」の版間の差分
61行目: | 61行目: | ||
=== イメージにファイルを追加 === |
=== イメージにファイルを追加 === |
||
+ | airootfs ディレクトリはライブシステムの [[Wikipedia:Root directory|root ディレクトリ]] ({{ic|/}}) の起点として使用されます。このディレクトリの全てのファイルがパッケージがインストールされる前に作業ディレクトリにコピーされます。 |
||
− | {{Note|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.}} |
||
+ | 変更されたファイルやディレクトリを {{ic|airootfs/}} 以下の目的の場所にコピーします。例えば、もし iptables スクリプトを現在のライブイメージで使用したい場合、それをこのようにコピーします。 |
||
− | 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. |
||
+ | $ cp -r /etc/iptables ''archlive''/airootfs/etc |
||
− | 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 |
||
+ | 同様に いくつかの特別な場所にある設定ファイルは特別な注意が必要です。 不完全なディレクトリ構造は {{man|1|mkdir}} で作成できます。 |
||
− | Placing files in the users home directory is a little different. Do not place them within {{ic|airootfs/home}}, but instead create a skel directory within {{ic|airootfs/}} and place them there. We will then add the relevant commands to the {{ic|customize_airootfs.sh}} which we are going to use to copy them over on boot and sort out the permissions. |
||
+ | {{Tip|インストールユーザーのホームディレクトリにファイルを追加する場合、 {{ic|''archlive''/airootfs/root/}} にファイルを設置してください。.全てのユーザーのホームディレクトリに設置したい場合、それらを {{ic|''archlive''/airootfs/etc/skel/}}.}} に設置してください。 }} |
||
− | First, create the skel directory: |
||
− | # mkdir ~/archlive/airootfs/etc/skel |
||
+ | {{Note|カスタムファイルがパッケージによって提供されているファイルと衝突する場合、 [[pacman/Pacnew and Pacsave#Package backup files|backup files]] に指定されていない限り上書きされます。 }} |
||
− | Now copy the 'home' files to the skel directory, e.g for {{ic|.bashrc}}: |
||
− | # cp ~/.bashrc ~/archlive/airootfs/etc/skel/ |
||
+ | デフォルトでは [[permissions]] は、ファイルは {{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|~/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 {{ic|/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 {{ic|xinitrc}} in {{ic|~/archlive/airootfs/etc/skel/}} and then modify {{ic|customize_airootfs.sh}} to move it appropriately. |
||
=== ブートローダー === |
=== ブートローダー === |
2021年10月1日 (金) 20:45時点における版
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
プロファイルをカスタマイズ、ビルドするには以下の手順に進んでください。
プロファイルの構造
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 ...
multilibリポジトリ
multilib リポジトリからパッケージをインストールする場合は pacman.conf
の設定をアンコメントしてください。
イメージにファイルを追加
airootfs ディレクトリはライブシステムの root ディレクトリ (/
) の起点として使用されます。このディレクトリの全てのファイルがパッケージがインストールされる前に作業ディレクトリにコピーされます。
変更されたファイルやディレクトリを airootfs/
以下の目的の場所にコピーします。例えば、もし iptables スクリプトを現在のライブイメージで使用したい場合、それをこのようにコピーします。
$ cp -r /etc/iptables archlive/airootfs/etc
同様に いくつかの特別な場所にある設定ファイルは特別な注意が必要です。 不完全なディレクトリ構造は mkdir(1) で作成できます。
に設置してください。 }}
デフォルトでは permissions は、ファイルは 644
ディレクトリは 755
に設定されており、全ては root ユーザーによって所有されています。他のパーミッションや所有者を設定するには、 {ic|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.
ログインマネージャ
ブート時に 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
次に、新しいシステムの整合性を保つために、ディレクトリを複数作成してカーネルイメージを新しい 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