「インストール ISO のリマスタリング」の版間の差分
(同期) |
Kusakata.bot (トーク | 投稿記録) 細 (文字列「www.archlinuxjp.org」を「www.archlinux.jp」に置換) |
||
28行目: | 28行目: | ||
=== ISO の展開 === |
=== ISO の展開 === |
||
− | Arch Linux ISO をリマスタするには、オリジナルの ISO イメージのコピーが必要です。[https://www. |
+ | Arch Linux ISO をリマスタするには、オリジナルの ISO イメージのコピーが必要です。[https://www.archlinux.jp/download/ ダウンロードページ] からダウンロードしてください。 |
そして、ISO をマウントするために新しいディレクトリを作成: |
そして、ISO をマウントするために新しいディレクトリを作成: |
2017年9月21日 (木) 09:15時点における版
関連記事
大抵は公式の Arch Linux の ISO イメージをリマスタリングする必要はありません。しかしながら、場合によってはリマスタリングが望ましいときもあります。
- ハードウェアを動作させるのに追加のプログラムが必要な場合 (非常に稀です)。
- インターネットに接続ができないマシンにインストールする場合。
- 多数のマシンに Arch Linux を入れる必要があり、同じ手順で何度もインストールする場合。
作成した ISO はライブ環境として起動できるので、レスキューディスクとして使ったり、テスト用・デモ用など使い道は他にも色々あります。
目次
Archiso
既存の ISO をリマスタリングするよりも、Archiso を使用した方がインストール ISO の再構築は簡単です。
手動
概要
インストーラー ISO には2つの Arch Linux 環境が同居しています。片方は32ビット (i686) でもう片方は64ビット (x86_64) です。ルートファイルシステムは arch/i686/airootfs.sfs
と arch/x86_64/airootfs.sfs
に保存されています。カーネルと initramfs は arch/boot/i686
と arch/boot/x86_64
に存在します。ISO を完全にリマスタする場合、32ビット環境と64ビット環境の両方に変更を加える必要があります。
起動時に initramfs はラベル (例: ARCH_201410
) によって起動に使われたデバイスを検索して、適切なアーキテクチャのルートファイルシステムをマウントします。
ISO の展開
Arch Linux ISO をリマスタするには、オリジナルの ISO イメージのコピーが必要です。ダウンロードページ からダウンロードしてください。
そして、ISO をマウントするために新しいディレクトリを作成:
# mkdir /mnt/archiso
作成したディレクトリに ISO をマウント (ISO なので当然読み取り専用になります):
# mount -t iso9660 -o loop /path/to/archISO /mnt/archiso
編集できるように他のディレクトリに中身をコピー:
$ cp -a /mnt/archiso ~/customiso
カスタマイズ
x86_64 環境の改造
x86_64 環境にディレクトリを移動:
$ cd ~/customiso/arch/x86_64
airootfs.sfs
を解凍 (squashfs-root
を作成):
$ unsquashfs airootfs.sfs
解凍された squashfs-root
の中身に変更を加えます。chroot することでパッケージをインストールしたりできます:
# arch-chroot squashfs-root /bin/bash
パッケージをインストールするには、pacman のキーリングを初期化する必要があります:
(chroot) # pacman-key --init (chroot) # pacman-key --populate archlinux
カーネルや initrd を更新する際は、さらに一手間必要です。例えば chroot の中で archiso をインストールして /etc/mkinitcpio.conf
の中身を変更して:
(chroot) # pacman -Syu --force archiso linux (chroot) # nano /etc/mkinitcpio.conf
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
airootfs.sfs
を再作成:
$ rm airootfs.sfs $ mksquashfs squashfs-root airootfs.sfs
残ったファイルを削除:
# rm -r squashfs-root
airootfs.sfs
の MD5 チェックサムを更新:
$ md5sum airootfs.sfs > airootfs.md5
i686 環境の改造
x86_64 環境の場合とおおむね同じですが異なるところもいくつかあります:
- コマンドの中で使用する
x86_64
はi686
に置き換えてください。 - chroot を実行するとき、以下のコマンドを使ってください:
# setarch i686 arch-chroot squashfs-root /bin/bash
EFI ブートイメージの改造
カーネルや initramfs を上書きした上に EFI 環境で起動する場合、EFI ブートイメージを更新してください。EFI ブートイメージは FAT16
ファイルシステムなので 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
No space left on device
エラーが表示された場合、efiboot.img
のサイズを変更する必要があります。新しい efiboot.img
を作成して古いファイルをコピー (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
上記のコマンドで作成された新しい efiboot.img
を使用してください。
新しい ISO の作成
(cdrtools に含まれている) 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 ./
作成された ISO イメージは CD, DVD, BD からのみ起動できます。USB スティックやハードディスクから起動するには、isohybrid 機能が必要になります。syslinux に含まれている isohybrid プログラムを使って ISO に処理を加えてください。ISO の /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
-isohybrid-mbr
オプションでは MBR テンプレートファイルを指定する必要があります。オリジナルの ISO には /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 \
/EFI/archiso/efiboot.img
ファイルは FAT ファイルシステムのイメージファイルです。オリジナルの ISO に存在しない場合、作成された ISO で EFI はサポートされません。
新しく作成した ISO イメージ arch-custom.iso
はホームディレクトリに保存されます。USB インストールメディアに書かれているように ISO イメージを USB スティックに書き込んでください。もしくは適当なソフトウェアを使って CD, DVD, BD に ISO イメージを焼いてください。Arch で焼く方法は 光学ディスクドライブ#ISO イメージを CD, DVD, BD に書き込むを見てください。
larch
larch はよりデスクトップベースの方法を提供していて、Arch Linux をホストにする必要はありません。
poison-livecd-creator
非常にシンプルなライブ CD クリエイタです。Makefile を使ってライブ CD イメージを生成し、pacman を使って base と追加パッケージをライブ CD にインストールします。ライブ CD に入れるパッケージを選んでビルドできます。さらに、柔軟性を確保するために、ライブ CD の起動に GRUB を使っています。フォーマットする必要なくライブ USB スティックを作れます。USB ドライブに GRUB をインストールして ISO 内のファイルをドライブの root ディレクトリにコピーする必要があります。poison-livecd-creator は Arch Linux 上で動かし pacman を使います: poison-livecd-creatorAUR[リンク切れ: アーカイブ: aur-mirror]。
Linux-pf
aufs などをサポートしており、ライブ CD を作成する選択肢となります: linux-pfAUR。