オフラインインストール

提供: ArchWiki
2022年9月6日 (火) 10:27時点におけるAshMyzk (トーク | 投稿記録)による版 (冒頭を翻訳)
ナビゲーションに移動 検索に移動

関連記事

インターネットに接続せずに Archiso (例えば、公式月次リリース) をそのままインストールしたい場合や、ほしいパッケージを何度もダウンロードしたくない場合:

まず、インストールガイドインストールガイド#必須パッケージのインストール の前まで行ってください (ただし、インストールガイド#インターネットへの接続 はスキップする)。

新しい環境をブートストラップ可能にする方法は主に2つあります: 必要なファイルすべてを持つローカルリポジトリを準備する方法と、archiso からファイルを手動でコピーする方法です。1番目の方法を取ることを強く推奨します。

ローカルリポジトリを使う方法 (推奨)

ローカルリポジトリを準備する

Pacman ヒント#パッケージを CD/DVD や USB スティックからインストールする の指示に従って、必要なファイルを含むローカルリポジトリを別のホスト環境上に準備してください。

最低限、システムを機能させるには以下のパッケージをインストールすることが推奨されます:

# pacman -Syw --cachedir . --dbpath /tmp/blankdb base base-devel linux linux-firmware systemd mkinitcpio vim

カスタムのオフラインリポジトリを作成してください:

# repo-add ./custom.db.tar.gz ./*[^sig]

マウントと設定

リポジトリの準備が済んだら、外部メディアを新しい環境に接続し、新しく作成したルートファイルシステムにメディアをマウントしてください:

# mkdir /mnt/repo
# mount /dev/sdX /mnt/repo

archiso /etc/pacman.conf を編集し、新しいセクションを追加してください:

[custom]
SigLevel = Optional
Server = file:///mnt/repo/

pacman がデフォルトのリポジトリでエラーを吐かないようにするために、[core][extra][community] のセクションをコメントアウトしてください。

Pacstrap

これで、ローカルで利用可能なパッケージを新しい環境に pacstrap することができます:

# pacstrap /mnt base base-devel linux linux-firmware mkinitcpio systemd vim

Chroot

新しいシステムがオフライン、あるいはネットワークから物理的に切り離されたままになることが予想される場合、ローカルリポジトリのみを使うように設定する必要があります。

新しい環境に chroot して、先に説明したように /etc/pacman.conf を編集してください (ただし、/mnt を除いて):

[custom]
SigLevel = Optional
Server = file:///repo/

他のすべてのリポジトリをコメントアウトし、保存してください。通常通り、新しいシステムの設定を続けてください。

これで、このオフラインのシステムのアップデートは、ローカルリポジトリの最新のコピーを持ってきて、それを /repo にマウントし、通常通り pacman のコマンドを実行することで行えます。

ファイルをコピーする方法

このセクションは削除するべきか検討が行われています。
Reason: ルートファイルシステムのイメージを ISO から展開する方法は、サポートされているインストール手段ではありません。この方法のカスタマイズは、インストール済みのシステムには適していません。 (議論: トーク:オフラインインストール#)
この記事またはセクションの正確性には問題があります。
理由: archiso からファイルをコピーするのではなく、Arch のミラーから手に入る "bootstrap" イメージを対象のディスクに直接展開することができます。archiso を変更する必要はなく、最小のシステムを手に入れることができます。 (議論: トーク:オフラインインストール#)
この記事またはセクションは情報が古くなっています。
理由: 複数のファイル (カーネル、mkinitcpio フック、設定ファイル、journald 設定ファイル、choose-mirror スクリプトなど) の名前と場所が変更されています。 (Discuss)

新しい root に archiso をインストール

pacstrap でパッケージをインストールする代わりに (リモートのリポジトリからパッケージをダウンロードするわけですが今はインターネット接続がありません)、ライブ環境から新しい root に全てをコピーしてください:

# 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 ルールの削除

この記事またはセクションは情報が古くなっています。
理由: https://gitlab.archlinux.org/archlinux/archiso/commit/0d67870667ee8c2084dea2bbdf1323288e2e7457 を見ると、systemd-networkd と systemd-resolved の変更によって以下の文章を書き換える必要があります。 (Discuss)

この udev ルール は有線ネットワークインターフェイスが存在する場合に自動的に dhcpcd を起動します。

# rm /etc/udev/rules.d/81-dhcpcd.rules

archiso によって作成されたサービスの無効化と削除

ライブ環境用に作成されているサービスファイルがあるので、pacman-init.servicechoose-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
ノート: mkinitcpio-archiso.conf ファイルはもはや存在しません。追加の手順については #Initramfs の設定 を見てください。

archlinux 鍵のインポート

公式リポジトリを使うには archlinux のマスター鍵をインポートする必要があります (pacman-key#キーリングの初期化)。通常は pacstrap でインポートされますが、以下のコマンドでインポートすることもできます:

# pacman-key --init
# pacman-key --populate
ノート: エントロピーを生成して最初のステップを高速化するにはキーボードやマウスを動かす必要があります。

Initramfs の設定

archiso からファイルシステムをコピーしたので、適切な initramfs をインストールするために mkinitcpio.conf を編集する必要があります。 テキストエディタで /etc/mkinitcpio.conf を開き、唯一コメントアウトされていない HOOKS をコメントアウト/削除し、以下に置き換えてください:

# HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)

システムの設定

スキップしたインストールガイド#システムの設定セクションの設定 (ロケールやタイムゾーン、ホストネームなど) を行ってインストールガイド#Initramfs に書いてあるように初期 RAM ディスクを作成してインストールを完了してください。