コンテンツにスキップ

「オフラインインストール」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
AshMyzk (トーク | 投稿記録)
 
Kgx (トーク | 投稿記録)
同期
 
(2人の利用者による、間の11版が非表示)
1行目: 1行目:
[[Category:ライブ Arch システム]]
[[Category:ライブ Arch システム]]
[[Category:Arch の入手とインストール]]
[[Category:Arch の入手とインストール]]
[[cs:Offline installation]]
[[en:Offline installation]]
[[en:Offline installation]]
[[ru:Offline installation]]
[[ru:Offline installation]]
[[zh-hans:Offline installation]]
[[zh-hans:Offline installation]]
{{Warning|ルートファイルシステムイメージ ({{ic|airootfs.sfs}}) の展開、またはライブ環境のルートファイルシステムのコピーは、サポートされているインストール方法ではありません。{{ic|airootfs.sfs}} には、インストールされたシステムには適していない、または安全でないカスタム設定が含まれています。}}
{{Related articles start}}
この記事では、インターネット接続の無いシステムで Arch Linux をインストールする方法を説明します。これを行うには、インターネット接続のある別のシステムが必要です。
{{Related|パッケージのオフラインインストール}}
{{Related articles end}}


まず、[[インストールガイド]] に従って、インターネット接続を必要とする手順(例えば、[[インストールガイド#インターネットへの接続]])をスキップし、[[インストールガイド#必須パッケージのインストール]] に従う代わりに、このガイドを続行してください。
If you wish to install the [[Archiso]] (e.g. [https://archlinux.org/download/ the official monthly release]) as it is without an Internet connection, or, if you do not want to download the packages you want again:


== ローカルリポジトリを準備する ==
First, follow the [[Installation guide]], skipping the [[Installation guide#Connect to the internet]] section, until the [[Installation guide#Install essential packages]] step.


[[Pacman ヒント#パッケージを CD/DVD や USB スティックからインストールする]] の指示に従って、必要なファイルを含むローカルリポジトリを別のホスト環境上に準備してください。
There are two main methods to enable bootstrapping the new installation: preparing a local pacman repository with all the required files, and manually copying the files from the archiso. The first version is highly recommended.


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


# pacman -Syw --cachedir . --dbpath /tmp/blankdb base linux linux-firmware
=== Prepare local repository ===


{{Tip|その他必要なソフトウェアの追加を検討している場合、こちらを参照してください。[[インストールガイド#必須パッケージのインストール]]}}
Follow [[Pacman/Tips and tricks#Installing packages from a CD/DVD or USB stick]] for instructions on preparing a local repository with the necessary files on a separate host installation.


カスタムのオフラインリポジトリを作成してください:
At the very least, for a functioning system, the following packages are recommended:


# repo-add ./custom.db.tar.gz ./*[^sig]
# pacman -Syw --cachedir . --dbpath /tmp/blankdb base base-devel linux linux-firmware systemd mkinitcpio vim


== マウントと設定 ==
Create your custom offline repository


リポジトリの準備が済んだら、外部メディアを新しい環境に接続し、新しく作成したルートファイルシステムにメディアをマウントしてください:
# repo-add ./custom.db.tar.gz ./*[^sig]


# mount --mkdir /dev/sd''xy'' /mnt/repo
=== Mount and configure ===


archiso {{ic|/etc/pacman.conf}} を編集し、新しいセクションを追加してください:
Once the repository is prepared, connect the external media to the new installation, and mount it on the newly created root filesystem:


{{hc|/etc/pacman.conf|2=
# mkdir /mnt/repo
[custom]
# mount /dev/sdX /mnt/repo
SigLevel = Optional
Server = file:///mnt/repo/
}}


pacman がデフォルトのリポジトリでエラーを吐かないようにするために、{{ic|[core]}}、{{ic|[extra]}}、のセクションをコメントアウトしてください。
Edit your archiso {{ic|/etc/pacman.conf}} and add a new section:


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


これで、ローカルで利用可能なパッケージを新しい環境に pacstrap することができます:
Comment out {{ic|[core]}}, {{ic|[extra]}} and {{ic|[community]}} so that pacman does not fail on the default repositories.


# pacstrap -K /mnt base linux linux-firmware
=== Pacstrap ===


{{Tip|このコマンドでは、[[#ローカルリポジトリを準備する]] で使用されるパッケージと一致させます。}}
You can now continue to pacstrap your locally-available packages to the new installation:


== パッケージのオフラインインストール ==
# pacstrap /mnt base base-devel linux linux-firmware mkinitcpio systemd vim


=== ファイルからインストールする ===
=== Chroot ===


ネットワークにアクセスする前にいくつかのパッケージを手動でインストールする必要があり、一時的にオフラインインストールをする場合、ローカルのパッケージをインストールする方法について [[pacman#追加コマンド]] を参照してください。
In case the new system is expected to remain offline or airgapped, it should be configured to expect local repositories only.


[[シェル]]の[[Wikipedia:ja:グロブ|グロブ]]を使うことで、多くのパッケージを一度にインストールすることができます:
After chrooting into your new installation, edit the new {{ic|/etc/pacman.conf}} in the same way as previously (but without the {{ic|/mnt}} prefix):


# pacman -U /package/folder/*.tar.zst
[custom]
SigLevel = Optional
Server = file:///repo/


=== オフラインキャッシュ ===
Comment out all other repositories and save. Continue configuring the new system as usual.


必要なファイルを {{ic|/var/lib/pacman/sync}} と {{ic|/var/cache/pacman/pkg}} に入れることで、検索、更新、そしてインストールすべきものがすべて揃っていると {{ic|pacman}} に認識させることができます。以下の方法は2つのフォーラムスレッドが元になっています: [https://bbs.archlinux.org/viewtopic.php?pid=463238#p463238][https://bbs.archlinux.org/viewtopic.php?id=30431]。
From now on any updates to the offline system can be made by bringing an up to date copy of the local repository, mounting it to {{ic|/repo}} and running pacman commands as usual.


手順:
== ファイルをコピーする方法 ==


# インターネットアクセスのあるコンピュータ上で最新のパッケージデータベースをダウンロードする。
{{Remove|ルートファイルシステムのイメージを ISO から展開する方法は、サポートされているインストール手段ではありません。この方法のカスタマイズは、インストール済みのシステムには適していません。}}
# それらをオフラインのコンピュータへ転送する。
# オフラインコンピュータからアップデートする必要のあるパッケージのリストを生成する。
# インターネットアクセスのあるコンピュータ上でそれらのパッケージを署名と共にダウンロードする。
# それらをオフラインのコンピュータの pacman キャッシュへ転送する。
# 更新をインストールする。


{{Tip|デフォルトのリポジトリをデフォルト (core、extra、community、multilib) から変更した場合、{{ic|/etc/pacman.conf}} ファイルを確認しておくべきです。}}
{{Accuracy|archiso からファイルをコピーするのではなく、Arch のミラーから手に入る "bootstrap" イメージを対象のディスクに直接展開することができます。archiso を変更する必要はなく、最小のシステムを手に入れることができます。}}


以下のスクリプトは最新のパッケージデータベースをダウンロードします。必要であれば、{{ic|MIRROR}} を [https://archlinux.org/mirrors/status/ ミラーステータスリスト]の別のミラーに変更してください。
{{Out of date|複数のファイル (カーネル、mkinitcpio フック、設定ファイル、journald 設定ファイル、choose-mirror スクリプトなど) の名前と場所が変更されています。}}


{{hc|download_databases.sh|2=
=== 新しい root に archiso をインストール ===
#!/bin/sh


ARCH="x86_64"
{{ic|pacstrap}} でパッケージをインストールする代わりに (リモートのリポジトリからパッケージをダウンロードするわけですが今はインターネット接続がありません)、ライブ環境から新しい root に''全て''をコピーしてください:
MIRROR="https://mirrors.kernel.org/archlinux/"
# cp -ax / /mnt
{{Note|オプション ({{ic|-x}}) を使って、新しい root にコピーしないようにいくつかの特殊なディレクトリを除外しています。}}
次に、新しいシステムの整合性を保つために、カーネルイメージを新しい root にコピーします:
# cp -vaT /run/archiso/bootmnt/arch/boot/$(uname -m)/vmlinuz /mnt/boot/vmlinuz-linux


wget "${MIRROR}/core/os/${ARCH}/core.db"
その後、[[インストールガイド#fstab の生成]] に書かれているとおりに fstab を生成してください。
wget "${MIRROR}/extra/os/${ARCH}/extra.db"
wget "${MIRROR}/community/os/${ARCH}/community.db"
wget "${MIRROR}/multilib/os/${ARCH}/multilib.db"


# 必要に応じて以下もアンコメント (/etc/pacman.conf や pacman.conf.d でカスタマイズしている場合):
=== Chroot とベースシステムの設定 ===


#wget "${MIRROR}/testing/os/${ARCH}/testing.db"
次に、新しくインストールしたシステムに chroot します:
#wget "${MIRROR}/community-testing/os/${ARCH}/community-testing.db"
# arch-chroot /mnt /bin/bash
#wget "${MIRROR}/multilib-testing/os/${ARCH}/multilib-testing.db"


# 必要に応じてデバッグパッケージやステージングパッケージも追加。
{{Note|[[インストールガイド#システムの設定]]における他の設定 (ロケールやキーマップなど) を行う前に、ライブ環境の跡 (つまり、非ライブ環境に適合しない archiso のカスタマイズ) を消す必要があります。}}
}}


このスクリプトを[[実行可能属性|実行可能]]にして実行してください。複数の ''.db'' ファイルが取得されます。
==== journald の設定の復旧 ====


以下の手順では、これらの ''.db'' ファイルをオフラインの PC へ転送し、(まるで {{ic|pacman -Sy}} を実行したかのように) 最新のパッケージリストで作業できるようにし、更新が必要なパッケージのリストを生成します:
[https://gitlab.archlinux.org/archlinux/archiso/blob/master/configs/releng/airootfs/root/customize_airootfs.sh#L19 archiso のカスタマイズ]によってシステムのジャーナルはメモリに保存されるようになっており、そのままだと再起動でジャーナルは消えてしまいます:
# sed -i 's/Storage=volatile/#Storage=auto/' /etc/systemd/journald.conf


# cp *.db /var/lib/pacman/sync/
==== 特殊な udev ルールの削除 ====
# pacman -Sup --noconfirm > pkglist


{{Note|{{ic|/etc/pacman.d/mirrorlist}} ファイルで定義されているサーバのうち少なくとも1つは有効にしておいてください。さもないと、誤解を招くエラーメッセージが表示されてしまいます: {{ic|error: no database for package: package-name}}。}}
{{Out of date|https://gitlab.archlinux.org/archlinux/archiso/commit/0d67870667ee8c2084dea2bbdf1323288e2e7457 を見ると、systemd-networkd と systemd-resolved の変更によって以下の文章を書き換える必要があります。}}


対応するパッケージ署名もダウンロードする必要があります。なので、ダウンロードすべき署名のリストを用意してください:
[https://gitlab.archlinux.org/archlinux/archiso/-/blob/769fbecef3ea7411c6e68ff1c4838f49b7c5d648/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules この udev ルール] は有線ネットワークインターフェイスが存在する場合に自動的に dhcpcd を起動します。


# sed -e 's/\.zst$/.zst.sig/' ../pkglist > ../siglist
# rm /etc/udev/rules.d/81-dhcpcd.rules


次に、インターネットにアクセスできる場所にこれらの2つのリストを持ってきて、リスト内のパッケージを空のディレクトリ内でダウンロードしてください:
==== archiso によって作成されたサービスの無効化と削除 ====


# wget -nv -i ../pkglist
ライブ環境用に作成されているサービスファイルがあるので、{{ic|pacman-init.service}} と {{ic|choose-mirror.service}} を[[無効化]]してファイルを削除してください (新しい環境では不要であるため):
# wget -nv -i ../siglist


{{Tip|[https://www.cygwin.com cygwin] などの Windows 環境を使ってパッケージをダウンロードする場合、デフォルトの Windows ファイル命名規則ではコロンなどをエスケープする必要があるので、ファイル名がマングリングされます。(そのような制限に従っていない cygwin で) これを防ぐには、{{ic|1=wget --restrict-file-names=unix}} を使用してください。}}
# 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


すべての {{ic|*.pkg.tar.zst}} と {{ic|*.pkg.tar.zst.sig}} ファイルをオフラインのコンピュータへ移動させ、それらを {{ic|/var/cache/pacman/pkg}} 内に置き、最後に以下を実行してください:
==== ライブ環境の特殊なスクリプトの削除 ====


# pacman -Su
ライブ環境には 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


=== ローカルリポジトリ ===
{{Note|{{ic|mkinitcpio-archiso.conf}} ファイルはもはや存在しません。追加の手順については [[#Initramfs の設定]] を見てください。}}


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


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


新しい環境に chroot して、先に説明したように {{ic|/etc/pacman.conf}} を編集してください (ただし、{{ic|/mnt}} を除いて):
# pacman-key --init
# pacman-key --populate


{{hc|/etc/pacman.conf|2=
{{Note|エントロピーを生成して最初のステップを高速化するにはキーボードやマウスを動かす必要があります。}}
[custom]
SigLevel = Optional
Server = file:///repo/
}}


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


これで、このオフラインのシステムのアップデートは、ローカルリポジトリの最新のコピーを持ってきて、それを {{ic|/repo}} にマウントし、通常通り pacman のコマンドを実行することで行えます。
archiso からファイルシステムをコピーしたので、適切な initramfs をインストールするために {{ic|mkinitcpio.conf}} を編集する必要があります。
テキストエディタで {{ic|/etc/mkinitcpio.conf}} を開き、唯一コメントアウトされていない {{ic|HOOKS}} をコメントアウト/削除し、以下に置き換えてください:


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


* [[ヘルプ:閲覧#オフラインでの閲覧|オフラインでの閲覧]]: ArchWiki をオフラインで見るための様々な手段。
==== システムの設定 ====


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

2025年2月19日 (水) 21:48時点における最新版

警告 ルートファイルシステムイメージ (airootfs.sfs) の展開、またはライブ環境のルートファイルシステムのコピーは、サポートされているインストール方法ではありません。airootfs.sfs には、インストールされたシステムには適していない、または安全でないカスタム設定が含まれています。

この記事では、インターネット接続の無いシステムで Arch Linux をインストールする方法を説明します。これを行うには、インターネット接続のある別のシステムが必要です。

まず、インストールガイド に従って、インターネット接続を必要とする手順(例えば、インストールガイド#インターネットへの接続)をスキップし、インストールガイド#必須パッケージのインストール に従う代わりに、このガイドを続行してください。

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

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

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

# pacman -Syw --cachedir . --dbpath /tmp/blankdb base linux linux-firmware
ヒント その他必要なソフトウェアの追加を検討している場合、こちらを参照してください。インストールガイド#必須パッケージのインストール

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

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

マウントと設定

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

# mount --mkdir /dev/sdxy /mnt/repo

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

/etc/pacman.conf
[custom]
SigLevel = Optional
Server = file:///mnt/repo/

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

Pacstrap

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

# pacstrap -K /mnt base linux linux-firmware
ヒント このコマンドでは、#ローカルリポジトリを準備する で使用されるパッケージと一致させます。

パッケージのオフラインインストール

ファイルからインストールする

ネットワークにアクセスする前にいくつかのパッケージを手動でインストールする必要があり、一時的にオフラインインストールをする場合、ローカルのパッケージをインストールする方法について pacman#追加コマンド を参照してください。

シェルグロブを使うことで、多くのパッケージを一度にインストールすることができます:

# pacman -U /package/folder/*.tar.zst

オフラインキャッシュ

必要なファイルを /var/lib/pacman/sync/var/cache/pacman/pkg に入れることで、検索、更新、そしてインストールすべきものがすべて揃っていると pacman に認識させることができます。以下の方法は2つのフォーラムスレッドが元になっています: [1][2]

手順:

  1. インターネットアクセスのあるコンピュータ上で最新のパッケージデータベースをダウンロードする。
  2. それらをオフラインのコンピュータへ転送する。
  3. オフラインコンピュータからアップデートする必要のあるパッケージのリストを生成する。
  4. インターネットアクセスのあるコンピュータ上でそれらのパッケージを署名と共にダウンロードする。
  5. それらをオフラインのコンピュータの pacman キャッシュへ転送する。
  6. 更新をインストールする。
ヒント デフォルトのリポジトリをデフォルト (core、extra、community、multilib) から変更した場合、/etc/pacman.conf ファイルを確認しておくべきです。

以下のスクリプトは最新のパッケージデータベースをダウンロードします。必要であれば、MIRRORミラーステータスリストの別のミラーに変更してください。

download_databases.sh
#!/bin/sh

ARCH="x86_64"
MIRROR="https://mirrors.kernel.org/archlinux/"

wget "${MIRROR}/core/os/${ARCH}/core.db"
wget "${MIRROR}/extra/os/${ARCH}/extra.db"
wget "${MIRROR}/community/os/${ARCH}/community.db"
wget "${MIRROR}/multilib/os/${ARCH}/multilib.db"

# 必要に応じて以下もアンコメント (/etc/pacman.conf や pacman.conf.d でカスタマイズしている場合):

#wget "${MIRROR}/testing/os/${ARCH}/testing.db"
#wget "${MIRROR}/community-testing/os/${ARCH}/community-testing.db"
#wget "${MIRROR}/multilib-testing/os/${ARCH}/multilib-testing.db"

# 必要に応じてデバッグパッケージやステージングパッケージも追加。

このスクリプトを実行可能にして実行してください。複数の .db ファイルが取得されます。

以下の手順では、これらの .db ファイルをオフラインの PC へ転送し、(まるで pacman -Sy を実行したかのように) 最新のパッケージリストで作業できるようにし、更新が必要なパッケージのリストを生成します:

# cp *.db /var/lib/pacman/sync/
# pacman -Sup --noconfirm > pkglist
ノート /etc/pacman.d/mirrorlist ファイルで定義されているサーバのうち少なくとも1つは有効にしておいてください。さもないと、誤解を招くエラーメッセージが表示されてしまいます: error: no database for package: package-name

対応するパッケージ署名もダウンロードする必要があります。なので、ダウンロードすべき署名のリストを用意してください:

# sed -e 's/\.zst$/.zst.sig/' ../pkglist > ../siglist

次に、インターネットにアクセスできる場所にこれらの2つのリストを持ってきて、リスト内のパッケージを空のディレクトリ内でダウンロードしてください:

# wget -nv -i ../pkglist
# wget -nv -i ../siglist
ヒント cygwin などの Windows 環境を使ってパッケージをダウンロードする場合、デフォルトの Windows ファイル命名規則ではコロンなどをエスケープする必要があるので、ファイル名がマングリングされます。(そのような制限に従っていない cygwin で) これを防ぐには、wget --restrict-file-names=unix を使用してください。

すべての *.pkg.tar.zst*.pkg.tar.zst.sig ファイルをオフラインのコンピュータへ移動させ、それらを /var/cache/pacman/pkg 内に置き、最後に以下を実行してください:

# pacman -Su

ローカルリポジトリ

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

完全なリポジトリ

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

/etc/pacman.conf
[custom]
SigLevel = Optional
Server = file:///repo/

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

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

参照

翻訳ステータス: このページは en:Offline installation の翻訳バージョンです。最後の翻訳日は 2024-02-29 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。