コンテンツにスキップ

「インストール ISO のリマスタリング」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
同期
redirect like the English page
タグ: 新規リダイレクト
 
(他の1人の利用者による、間の2版が非表示)
1行目: 1行目:
#redirect [[Archiso]]
[[Category:Arch の入手とインストール]]
[[Category:ライブ Arch システム]]
[[en:Remastering the Install ISO]]
[[ru:Remastering the Install ISO]]
{{Related articles start}}
{{Related|Archiso}}
{{Related articles end}}
大抵は公式の Arch Linux の ISO イメージをリマスタリングする必要はありません。しかしながら、場合によってはリマスタリングが望ましいときもあります。
* ハードウェアを動作させるのに追加のプログラムが必要な場合 (非常に稀です)。
* インターネットに接続ができないマシンにインストールする場合。
* 多数のマシンに Arch Linux を入れる必要があり、同じ手順で何度もインストールする場合。

作成した ISO はライブ環境として起動できるので、レスキューディスクとして使ったり、テスト用・デモ用など使い道は他にも色々あります。

== Archiso ==

既存の ISO をリマスタリングするよりも、[[Archiso]] を使用した方がインストール ISO の再構築は簡単です。

== 手動 ==

=== 概要 ===

インストーラー ISO には2つの Arch Linux 環境が同居しています。片方は32ビット (i686) でもう片方は64ビット (x86_64) です。ルートファイルシステムは {{ic|arch/i686/airootfs.sfs}} と {{ic|arch/x86_64/airootfs.sfs}} に保存されています。カーネルと initramfs は {{ic|arch/boot/i686}} と {{ic|arch/boot/x86_64}} に存在します。ISO を完全にリマスタする場合、32ビット環境と64ビット環境の両方に変更を加える必要があります。

起動時に initramfs はラベル (例: {{ic|ARCH_201410}}) によって起動に使われたデバイスを検索して、適切なアーキテクチャのルートファイルシステムをマウントします。

=== ISO の展開 ===

Arch Linux ISO をリマスタするには、オリジナルの ISO イメージのコピーが必要です。[https://www.archlinuxjp.org/download/ ダウンロードページ] からダウンロードしてください。

そして、ISO をマウントするために新しいディレクトリを作成:

# mkdir /mnt/archiso

作成したディレクトリに ISO をマウント (ISO なので当然読み取り専用になります):

# mount -t iso9660 -o loop /path/to/archISO /mnt/archiso

編集できるように他のディレクトリに中身をコピー:

$ cp -a /mnt/archiso ~/customiso

{{Note|{{ic|customiso}} は存在しないディレクトリである必要があります。既に存在していると {{ic|customiso}} の中に {{ic|archiso}} という名前のサブディレクトリが作成されます。}}

=== カスタマイズ ===

==== x86_64 環境の改造 ====
x86_64 環境にディレクトリを移動:
$ cd ~/customiso/arch/x86_64

{{ic|airootfs.sfs}} を解凍 ({{ic|squashfs-root}} を作成):

$ unsquashfs airootfs.sfs

{{Note|上記のコマンドを実行するには {{Pkg|squashfs-tools}} が必要です。}}

解凍された {{ic|squashfs-root}} の中身に変更を加えます。chroot することでパッケージをインストールしたりできます:

# arch-chroot squashfs-root /bin/bash

{{Note|
* {{ic|arch-chroot}} は {{Pkg|arch-install-scripts}} パッケージに含まれています。
* {{ic|arch-chroot}} スクリプトが使えない場合 (Arch ベースのディストリを改造する場合など)、api ファイルシステムをマウントして DNS の設定をコピーしてください。詳しくは [[Chroot#chroot を使う]]を参照。}}

パッケージをインストールするには、pacman のキーリングを初期化する必要があります:

(chroot) # pacman-key --init
(chroot) # pacman-key --populate archlinux

{{Note|上記のコマンドは時間がかかります。詳しくは [[Pacman-key#キーリングの初期化|Pacman-Key]] を参照。}}

カーネルや initrd を更新する際は、さらに一手間必要です。例えば chroot の中で {{Pkg|archiso}} をインストールして {{ic|/etc/mkinitcpio.conf}} の中身を変更して:

(chroot) # pacman -Syu --force archiso linux
(chroot) # nano /etc/mkinitcpio.conf

{{ic|1=HOOKS="...}} という行を以下のようにした場合:

HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard"

まず initramfs を更新します:

(chroot) # mkinitcpio -p linux

インストールしたパッケージのリストを作成して、pacman のキャッシュを消去し chroot を抜けてください:

(chroot) # LANG=C pacman -Sl | awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > /pkglist.txt
(chroot) # pacman -Scc
(chroot) # exit

カーネルや initramfs を更新したときは、それらをコピーしてください:

$ cp squashfs-root/boot/vmlinuz-linux ~/customiso/arch/boot/x86_64/vmlinuz
$ cp squashfs-root/boot/initramfs-linux.img ~/customiso/arch/boot/x86_64/archiso.img

パッケージのリストを移動:
$ mv squashfs-root/pkglist.txt ~/customiso/arch/pkglist.x86_64.txt

{{ic|airootfs.sfs}} を再作成:

$ rm airootfs.sfs
$ mksquashfs squashfs-root airootfs.sfs

残ったファイルを削除:

# rm -r squashfs-root

{{ic|airootfs.sfs}} の MD5 チェックサムを更新:
$ md5sum airootfs.sfs > airootfs.md5

==== i686 環境の改造 ====

x86_64 環境の場合とおおむね同じですが異なるところもいくつかあります:

# コマンドの中で使用する {{ic|x86_64}} は {{ic|i686}} に置き換えてください。
# chroot を実行するとき、以下のコマンドを使ってください:

# setarch i686 arch-chroot squashfs-root /bin/bash

{{Note|arch-chroot スクリプトをインストールしていない場合、{{ic|chroot}} を実行するときに {{ic|setarch i686}} を前に付けてください。}}

==== EFI ブートイメージの改造 ====

カーネルや initramfs を上書きした上に EFI 環境で起動する場合、EFI ブートイメージを更新してください。EFI ブートイメージは {{ic|FAT16}} ファイルシステムなので {{Pkg|dosfstools}} が必要になります。

$ mkdir mnt
# mount -t vfat -o loop ~/customiso/EFI/archiso/efiboot.img mnt
# cp ~/customiso/arch/boot/x86_64/vmlinuz mnt/EFI/archiso/vmlinuz.efi
# cp ~/customiso/arch/boot/x86_64/archiso.img mnt/EFI/archiso/archiso.img

{{ic|No space left on device}} エラーが表示された場合、{{ic|efiboot.img}} のサイズを変更する必要があります。新しい {{ic|efiboot.img}} を作成して古いファイルをコピー ({{ic|50}} は適当なサイズに置き換えてください)。

$ dd if=/dev/zero bs=1M count=50 of=efiboot-new.img
$ mkfs.fat -n "ARCHISO_EFI" efiboot-new.img
$ mkdir new
# mount -t fat -o loop efiboot-new.img new
$ cp -r mnt/* new/
# umount new mnt
$ mv efiboot-new.img ~/customiso/EFI/archiso/efiboot.img

上記のコマンドで作成された新しい {{ic|efiboot.img}} を使用してください。

=== 新しい ISO の作成 ===

({{pkg|cdrtools}} に含まれている) {{ic|genisoimage}} で新しい ISO イメージを作成:

$ genisoimage -l -r -J -V "ARCH_201209" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o ../arch-custom.iso ./

{{Note|
* ISO ラベルはオリジナルのラベルと同じでなければイメージが起動できません (上の例ならば {{ic|ARCH_201209}})。
* {{ic|-b}} と {{ic|-c}} オプションで指定するパスは ISO のルートディレクトリからの相対パスになります。}}

作成された ISO イメージは CD, DVD, BD からのみ起動できます。USB スティックやハードディスクから起動するには、[http://www.syslinux.org/wiki/index.php/Isohybrid isohybrid] 機能が必要になります。{{pkg|syslinux}} に含まれている isohybrid プログラムを使って ISO に処理を加えてください。ISO の {{ic|/isolinux/isolinux.bin}} のバージョンとインストールした SYSLINUX のバージョンは同じでなければなりません。

genisoimage と isohybrid を実行する代わりに mkarchiso の xorriso を使うこともできます:
$ iso_label="ARCH_201209"
$ xorriso -as mkisofs \
-iso-level 3 \
-full-iso9660-filenames \
-volid "${iso_label}" \
-eltorito-boot isolinux/isolinux.bin \
-eltorito-catalog isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-isohybrid-mbr ~/customiso/isolinux/isohdpfx.bin \
-output arch-custom.iso \
~/customiso

{{ic|-isohybrid-mbr}} オプションでは [[MBR]] テンプレートファイルを指定する必要があります。オリジナルの ISO には {{ic|/isolinux/isohdpfx.bin}} ファイルが存在し、ISO で使用している SYSLINUX のバージョンと対応しています。コピーした ISO の中身にファイルが存在しない場合、上記の xorriso コマンドを実行する前にオリジナルの ISO イメージファイルから抽出する必要があります:

$ dd if=/path/to/archISO bs=512 count=1 of=~/customiso/isolinux/isohdpfx.bin

オリジナルの ISO が EFI で起動できる場合、上のコマンドの "-isohybrid-mbr ..." と "-output ..." の間に以下のオプションを追加することで新しい ISO でも起動することが可能です:

-eltorito-alt-boot \
-e EFI/archiso/efiboot.img \
-no-emul-boot -isohybrid-gpt-basdat \

{{ic|/EFI/archiso/efiboot.img}} ファイルは FAT ファイルシステムのイメージファイルです。オリジナルの ISO に存在しない場合、作成された ISO で EFI はサポートされません。

新しく作成した ISO イメージ {{Ic|arch-custom.iso}} はホームディレクトリに保存されます。[[USB インストールメディア]]に書かれているように ISO イメージを USB スティックに書き込んでください。もしくは適当なソフトウェアを使って CD, DVD, BD に ISO イメージを焼いてください。Arch で焼く方法は [[光学ディスクドライブ#ISO イメージを CD, DVD, BD に書き込む]]を見てください。

== larch ==

[[larch]] はよりデスクトップベースの方法を提供していて、Arch Linux をホストにする必要はありません。

{{Note|
* バージョン 2.6.39 から、バニラカーネルは aufs のサポートを止めたので、カスタムカーネルを使う必要があります。
* {{AUR|linux-aufs_friendly}} は arch カーネルの AUFS バージョンであり、larch は i686 のビルド済みバイナリを用意しているので、64ビットにする必要がない場合は何もコンパイルしなくて大丈夫です。
}}

== poison-livecd-creator ==

非常にシンプルなライブ CD クリエイタです。Makefile を使ってライブ CD イメージを生成し、pacman を使って base と追加パッケージをライブ CD にインストールします。ライブ CD に入れるパッケージを選んでビルドできます。さらに、柔軟性を確保するために、ライブ CD の起動に [[GRUB]] を使っています。フォーマットする必要なくライブ USB スティックを作れます。USB ドライブに GRUB をインストールして ISO 内のファイルをドライブの root ディレクトリにコピーする必要があります。poison-livecd-creator は Arch Linux 上で動かし [[pacman]] を使います: {{AUR|poison-livecd-creator}}{{Broken package link|{{aur-mirror|poison-livecd-creator}}}}。

== Linux-pf ==

aufs などをサポートしており、ライブ CD を作成する選択肢となります: {{AUR|linux-pf}}。

{{Note|バージョン 2.6.39 から、バニラカーネルは aufs のサポートを止めたので、カスタムカーネルを使う必要があります。}}

== 参照 ==

* http://www.knoppix.net/wiki/KnoppixRemasteringHowto
* http://syslinux.zytor.com/iso.php
* http://busybox.net/
* [http://www.linux-live.org/ Linux Live Kit]

2020年8月16日 (日) 10:19時点における最新版

転送先: