「既存の Linux からインストール」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
107行目: 107行目:
 
==== 方法 B: LiveCD イメージを使う ====
 
==== 方法 B: LiveCD イメージを使う ====
   
  +
最新の Arch Linux インストールメディアのルートイメージをマウントして chroot することができます。この方法では特定のパッケージをインストールして準備をしなくても Arch Linux のインストール環境を動作させることができるというメリットがあります。
It is possible to mount the root image of the latest Arch Linux installation media and then chroot into it. This method has the advantage of providing a working Arch Linux installation right within the host system without the need to prepare it by installing specific packages.
 
   
{{Note|Before proceeding, make sure the latest version of [http://squashfs.sourceforge.net/ squashfs] is installed on the host system. Otherwise, errors like the following are to be expected: {{ic|FATAL ERROR aborting: uncompress_inode_table: failed to read block}}.}}
+
{{Note|先に進む前に、ホスト環境に最新版の [http://squashfs.sourceforge.net/ squashfs] がインストールされていることを確認してください。バージョンが古いと、次のようなエラーが発生します: {{ic|FATAL ERROR aborting: uncompress_inode_table: failed to read block}}}}
   
* The root image can be found on one of the [https://www.archlinux.org/download mirrors] under either arch/x86_64/ or arch/i686/, depending on the desired architecture. The squashfs format is not editable, so we unsquash the root image and mount it.
+
* ルートイメージは [https://www.archlinuxjp.org/download/ ミラー] arch/x86_64/ arch/i686/ に存在します (使用したいアーキテクチャにあわせて選んでください)。squashfs フォーマットは編集ができないため、ルートイメージを unsquash してからマウントします。
   
  +
*ルートイメージを unsquash するには、次を実行:
*To unsquash the root image, run
 
 
{{bc|# unsquashfs airootfs.sfs}}
 
{{bc|# unsquashfs airootfs.sfs}}
   
  +
* [[Change Root|chroot]] する前に、マウントポイントを設定して {{ic|resolv.conf}} をコピーする必要があります:
* Before [[Change root|chrooting]] to it, we need to set up some mount points and copy the resolv.conf for networking.
 
 
{{bc|
 
{{bc|
 
# mount --bind squashfs-root squashfs-root
 
# mount --bind squashfs-root squashfs-root
126行目: 126行目:
 
}}
 
}}
   
  +
* それから、新しくインストールする Arch 環境に chroot してください:
* Now, everything is prepared to chroot into the newly installed Arch environment
 
 
{{bc|# chroot squashfs-root bash}}
 
{{bc|# chroot squashfs-root bash}}
   
=== Using the chroot environment ===
+
=== chroot 環境を使う ===
   
The bootstrap environment is really barebones (no {{ic|nano}}, no {{ic|ping}}, no {{ic|cryptsetup}}, no {{ic|lvm}}). Therefore, we need to set up [[pacman]] in order to download the rest of the {{ic|base}} and, if needed, {{ic|base-devel}}.
+
ブートストラップ環境は完全なベアボーンです ({{ic|nano}} {{ic|ping}} {{ic|cryptsetup}} {{ic|lvm}} も存在しません)。したがって、[[pacman]] をセットアップして {{ic|base}} (必要であれば {{ic|base-devel}} も) ダウンロードする必要があります。
   
==== Initializing pacman keyring ====
+
==== pacman キーリングの初期化 ====
   
  +
インストールを開始する前に、pacman の鍵をセットアップしてください。[[pacman-key#キーリングの初期化]]を読んでから (エントロピーが必要です)、以下のコマンドを実行:
Before starting the installation, pacman keys need to be setup. Before running the following two commands, read [[pacman-key#Initializing the keyring]] to understand the entropy requirements:
 
 
{{bc|
 
{{bc|
 
# pacman-key --init
 
# pacman-key --init
141行目: 141行目:
 
}}
 
}}
   
  +
{{Tip|{{Pkg|haveged}} のインストール・実行はホスト環境で行う必要があります。pacman のキーリングを初期化しないとパッケージをインストールすることはできないためです。''systemd'' は chroot で動作していることを認識すると [https://superuser.com/questions/688733/start-a-systemd-service-inside-chroot サービスの起動リクエスト] を無視します。他のコンソール (TTY, ターミナル, SSH セッションなど) で {{ic|ls -Ra /}} を実行する場合、リモートのヘッドレスサーバーに十分なエントロピーを供給するのに必要な実行回数は5回あるいは6回です。}}
{{Tip|Installing and running {{Pkg|haveged}} must be done on the host system, since it is not possible to install packages before initializing pacman keyring and because ''systemd'' will detect it is running in a chroot and [https://superuser.com/questions/688733/start-a-systemd-service-inside-chroot ignore activation request].
 
   
  +
==== ミラーを選択して基本ツールをダウンロード ====
If you go with doing {{ic|ls -Ra /}} in another console (TTY, terminal, SSH session...), do not be afraid of running it in a loop a few times: five or six runs from the host proved sufficient to generate enough entropy on a remote headless server.}}
 
   
  +
[[ミラー#特定のミラーを有効にする|ミラーを選択]]したら、[[ミラー#pacman にパッケージリストを更新させる|パッケージリストを更新]]して必要なパッケージを[[インストール]]してください: {{Grp|base}}, {{Grp|base-devel}}, {{Pkg|parted}} など。
==== Selecting a mirror and downloading basic tools ====
 
   
  +
=== インストールのヒント ===
After [[Mirrors#Enabling_a_specific_mirror|selecting a mirror]], [[Mirrors#Force_pacman_to_refresh_the_package_lists|refresh the package lists]] and [[install]] what you need: {{Grp|base}}, {{Grp|base-devel}}, {{Pkg|parted}} etc.
 
   
  +
[[インストールガイド#パーティション]]に進んで[[インストールガイド]]の残りのセクションに従ってください。
=== Installation tips ===
 
   
  +
ホスト環境によっては特定の設定が必要になることがあります。以下のセクションを見てください。
You can now proceed to [[Installation_guide#Partition_the_disks]] and follow the rest of the [[Installation guide]].
 
 
Some host systems or configurations may require certain extra steps. See the sections below for tips.
 
   
 
==== Debian ベースのホスト ====
 
==== Debian ベースのホスト ====
159行目: 157行目:
 
===== /dev/shm =====
 
===== /dev/shm =====
   
  +
Debian ベースのホスト環境では、{{ic|pacstrap}} が以下のエラーを表示することがあります:
On some Debian-based host systems, {{ic|pacstrap}} may produce the following error:
 
   
 
{{hc|# pacstrap /mnt base|
 
{{hc|# pacstrap /mnt base|
167行目: 165行目:
 
}}
 
}}
   
This is because in some versions of Debian, {{ic|/dev/shm}} points to {{ic|/run/shm}} while in the Arch-based chroot, {{ic|/run/shm}} does not exist and the link is broken. To correct this error, create a directory {{ic|/run/shm}}:
+
Debian では、{{ic|/dev/shm}} {{ic|/run/shm}} になっているのに対して、Arch chroot では {{ic|/run/shm}} が存在せずリンクが壊れてしまうのが原因です。エラーを回避するには、{{ic|/run/shm}} ディレクトリを作成してください:
 
# mkdir /run/shm
 
# mkdir /run/shm
   
 
===== /dev/pts =====
 
===== /dev/pts =====
   
While installing {{ic|archlinux-2015.07.01-x86_64}} from a Debian 7 host, the following error prevented both [https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in pacstrap] and [[Change_root#Using_arch-chroot|arch-chroot]] from working:
+
Debian 7 ホストから {{ic|archlinux-2015.07.01-x86_64}} をインストールしたとき、[https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in pacstrap] [[Change_Root#arch-chroot を使う|arch-chroot]] が以下のエラーで動作しません:
   
 
{{hc|# pacstrap -i /mnt|
 
{{hc|# pacstrap -i /mnt|
179行目: 177行目:
 
}}
 
}}
   
Apparently, this is because these two scripts use a common function. {{ic|chroot_setup()}}[https://projects.archlinux.org/arch-install-scripts.git/tree/common#n76] relies on newer features of {{Pkg|util-linux}}, which are incompatible with Debian 7 userland (see {{Bug|45737}}).
+
スクリプトが一般的な関数を使っているのが原因です。{{ic|chroot_setup()}}[https://projects.archlinux.org/arch-install-scripts.git/tree/common#n76] {{Pkg|util-linux}} の新しい機能に依存していますが、Debian 7 のユーザーランドでは使用することができません ({{Bug|45737}} を参照)
   
The solution for ''pacstrap'' is to manually execute its [https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in#n77 various tasks], but use the [[Change_root#Using_chroot|regular procedure]] to mount the kernel filesystems on the target directory ({{ic|"$newroot"}}):
+
[https://projects.archlinux.org/arch-install-scripts.git/tree/pacstrap.in#n77 様々な作業] を手動で実行して対象ディレクトリ ({{ic|"$newroot"}}) にカーネルファイルシステムを[[Change_Root#chroot を使う|通常の方法]]でマウントしてください:
   
 
{{bc|1=
 
{{bc|1=
198行目: 196行目:
 
}}
 
}}
   
Instead of using {{ic|arch-chroot}} for [[Installation guide#Chroot]], simply use {{ic|chroot "$newroot"}}.
+
[[インストールガイド#Chroot]] では {{ic|arch-chroot}} のかわりに、{{ic|chroot "$newroot"}} を使います。
   
 
===== lvmetad =====
 
===== lvmetad =====
   
  +
Debian 7 のホストの {{ic|archlinux-bootstrap-2015.07.01-x86_64}} から [[LVM]] の[[LVM#論理ボリュームの作成|論理ボリューム]]を作成しようとすると以下のエラーが発生します:
Trying to create [[LVM]] [[LVM#Logical_volumes|logical volumes]] from an {{ic|archlinux-bootstrap-2015.07.01-x86_64}} environment on a Debian 7 host resulted in the following error:
 
   
 
{{hc|# lvcreate -L 20G lvm -n root|
 
{{hc|# lvcreate -L 20G lvm -n root|
210行目: 208行目:
 
Aborting. Failed to wipe start of new LV.}}
 
Aborting. Failed to wipe start of new LV.}}
   
(Physical volume and volume group creation worked despite {{ic|/run/lvm/lvmetad.socket: connect failed: No such file or directory}} being displayed.)
+
{{Tip|物理ボリュームやボリュームグループの作成については {{ic|/run/lvm/lvmetad.socket: connect failed: No such file or directory}} というエラーが表示されますが問題ありません。}}
   
  +
(Debian から) chroot の外側に論理ボリュームを作成することでエラーを回避できます。その後、chroot して利用してください。
This could be easily worked around by creating the logical volumes outside the chroot (from the Debian host). They are then available once chrooted again.
 
   
  +
また、システムから LVM を使用している場合に、以下の出力がされることがあります:
Also, if the system you are using has lvm, you might have the following output:
 
   
 
{{hc|1=# grub-install --target=i386-pc --recheck /dev/mapper/main-archroot|2=
 
{{hc|1=# grub-install --target=i386-pc --recheck /dev/mapper/main-archroot|2=
230行目: 228行目:
 
}}
 
}}
   
This is because debian does not use lvmetad by default. You need to edit {{ic|/etc/lvm/lvm.conf}} and set {{ic|use_lvmetad}} to {{ic|0}}:
+
Debian がデフォルトで lvmetad を使用しないのが原因です。{{ic|/etc/lvm/lvm.conf}} を編集して {{ic|use_lvmetad}} {{ic|0}} に設定してください:
   
 
use_lvmetad = 0
 
use_lvmetad = 0
   
  +
上記の設定を行うと起動の initrd ステージでエラーが発生します。GRUB の生成を行ってから変更してください。ソフトウェア RAID + LVM の場合、以下の手順で設定します:
This will trigger later an error on boot in the initrd stage. Therefore, you have to change it back after the grub generation. In a software RAID + LVM, steps would be the following:
 
   
* After installing all the system, when you have to do all the initramfs (mkinitcpio) and grub thing.
+
* システムを全てインストールした後、initramfs (mkinitcpio) grub の設定を行います。
* Change /etc/mdadm.conf to reflect your RAID config (if any)
+
* {{ic|/etc/mdadm.conf}} RAID の構成にあわせて変更してください。
* Change HOOKS and MODULES according to lvm and raid requirements: {{ic|1=MODULES="dm_mod" HOOKS="base udev '''mdadm_udev''' ... block '''lvm2''' filesystems ..."}}
+
* LVM RAID の要件を満たすように HOOKS MODULES を変更してください: {{ic|1=MODULES="dm_mod" HOOKS="base udev '''mdadm_udev''' ... block '''lvm2''' filesystems ..."}}
  +
* mkinitcpio で initrd イメージを生成してください。
* Generate initrd images with mkinitcpio
 
* Change /etc/lvm/lvm.conf to put use_lvmetad = 0
+
* {{ic|/etc/lvm/lvm.conf}} を編集して {{ic|1=use_lvmetad=0}} と記述します。
* Generate grub config (grub-mkconfig)
+
* GRUB の設定を生成してください (grub-mkconfig)
* Change /etc/lvm/lvm.conf to put use_lvmetad = 1
+
* {{ic|/etc/lvm/lvm.conf}} を編集して {{ic|1=use_lvmetad=1}} と記述します。
   
 
==== Fedora ベースのホスト ====
 
==== Fedora ベースのホスト ====
   
  +
Fedora ベースのホストやライブ USB では {{ic|genfstab}} を使って [[fstab]] を生成しようとしたときに問題が発生することがあります。重複するエントリを削除して "seclabel" オプションを削除してください。後者は Fedora だけで使われるオプションで、システムが起動できなくなります。
On Fedora based hosts and live USBs you may encounter problems when using {{ic|genfstab}} to generate your [[fstab]]. Remove duplicate entries and the "seclabel" option where it appears, as this is Fedora-specific and will keep your system from booting normally.
 
   
  +
== 再起動する前に確認すること ==
== Things to check before you reboot==
 
   
  +
再起動する前に、新しくインストールした環境に chroot してください。
Before rebooting, chroot into the newly-installed system.
 
   
  +
後で SSH を使って起動できるように root パスワードを設定:
Set a root password so that you can log in with ssh later:
 
 
# passwd
 
# passwd
   
  +
[[SSH]] をインストールして起動時に自動的に実行されるように[[有効化]]してください。
Install [[ssh]] and [[enable]] it to start automatically at boot.
 
   
  +
起動時に自動的に接続されるように[[ネットワーク]]を設定してください。
Configure the [[network]] connection to start automatically at boot.
 
   
  +
[[ブートローダー]]をセットアップしてルートパーティションと同じように適切なスワップパーティションを使用するように設定します。古い環境を起動できるようにブートローダーを設定することもできます。その場合、サーバーの既存の {{ic|/boot}} パーティションを再利用するのも有用です。
Set up a [[boot loader]] and configure it to use the swap partition you appropriated earlier as the root partition. You might want to configure your bootloader to be able to boot into your old system; it is helpful to re-use the server's existing /boot partition in the new system for this purpose.
 
   
 
== LiveCD を使わずに既存の環境を置き換える ==
 
== LiveCD を使わずに既存の環境を置き換える ==
   
  +
ディスク上に 700MB 程度の空き容量を見繕ってください。スワップパーティションを無効化してシステムをセットアップします。
Find ~700MB of free space somewhere on the disk, e.g. by partitioning a swap partition. You can disable the swap partition and set up your system there.
 
   
 
=== 昔のスワップパーティションを新しいルートパーティションに設定 ===
 
=== 昔のスワップパーティションを新しいルートパーティションに設定 ===
   
Check {{ic|cfdisk}}, {{ic|/proc/swaps}} or {{ic|/etc/fstab}} to find your swap partition. Assuming your hard drive is located on sdaX (X will be a number).
+
{{ic|cfdisk}}, {{ic|/proc/swaps}}, {{ic|/etc/fstab}} をチェックしてスワップパーティションを確認してください。ハードドライブが {{ic|sdaX}} として、以下を実行:
 
Do the following:
 
   
  +
スワップ領域を無効化:
Disable the swap space:
 
 
# swapoff /dev/sdaX
 
# swapoff /dev/sdaX
   
  +
ファイルシステムを作成 ({{ic|/dev/sdaX}} の ID フィールドは "Linux" (83) に設定):
Create a filesystem on it
 
 
# fdisk /dev/sda
 
# fdisk /dev/sda
(set /dev/sdaX ID field to "Linux" - Hex 83)
 
 
# mke2fs -j /dev/sdaX
 
# mke2fs -j /dev/sdaX
   
  +
マウントするためにディレクトリを作成:
Create a directory to mount it in
 
 
# mkdir /mnt/newsys
 
# mkdir /mnt/newsys
   
  +
一時的に新しいディレクトリをマウント:
Finally, mount the new directory for installing the intermediate system.
 
 
# mount -t ext4 /dev/sdaX /mnt/newsys
 
# mount -t ext4 /dev/sdaX /mnt/newsys
   
 
=== インストール ===
 
=== インストール ===
  +
空き容量が 700MB 以下の場合、base グループのパッケージを確認して、インターネット接続を立ち上げて一時的なパーティションで実行するのに必要なパッケージだけを選択してください。個別のパッケージを pacstrap に指定して、-c オプションを使います。
If less than 700MB are available, examine the packages in the group base, and select only those required to get a system with internet connection up and running in the temporary partition. This will mean explicitly specifying individual packages to pacstrap, as well as passing it the -c option, to get packages downloaded to the host system to avoid filling up valuable space.
 
   
 
新しい Arch Linux システムをインストールして、新しく作成したシステムで再起動し、プライマリパーティションに[[Rsync によるフルシステムバックアップ|システム全体を rsync]] してください。再起動する前にブートローダーの設定を修正してください。
 
新しい Arch Linux システムをインストールして、新しく作成したシステムで再起動し、プライマリパーティションに[[Rsync によるフルシステムバックアップ|システム全体を rsync]] してください。再起動する前にブートローダーの設定を修正してください。

2016年9月5日 (月) 23:38時点における版

関連記事

この文章では Linux ホストシステムから Arch Linux をインストールするのに必要なブートストラッププロセスを説明しています。ブートストラップした後は、インストールガイドの記述に従ってインストールを行なって下さい。

既存の Linux から Arch Linux をインストールすることが考えられるのは以下の場合になります:

ブートストラップの目的は arch-install-scripts のスクリプト (pacstraparch-chroot など) が走る環境をセットアップすることです。

ホストシステムで Arch Linux を動かしている場合は、arch-install-scripts をインストールするだけです。ホスト環境で他の Linux ディストリビューションを使っている場合、まず Arch Linux ベースの chroot をセットアップする必要があります。

ノート: このガイドでは新しいターゲット Arch Linux アーキテクチャのプログラムを実行することができる既存のホストシステムが必要です。ホストが x86_64 の場合、32ビット chroot 環境を作成するために i686-pacman を使うことができます。64ビット環境に32ビット環境をインストールを見て下さい。ただし、ホストが32ビットのプログラムしかサポートしていない場合、64ビット環境を作成するのは簡単ではありません。
警告: コマンドを実行する前にコマンドの意味を考えてください。システムを破壊して重要なデータを喪失した場合、データ復旧会社に頼むと多額の請求費が届くでしょう。

バックアップと準備

メールやウェブサーバーなど全てのデータをバックアップしてください。マシン設定の情報も控えておきましょう。サーバーの設定やホストネームなどです。

以下は必要なデータのリストです:

  • IP アドレス
  • ホストネーム (ノート: ルートサーバーも大抵の場合、プロバイダーのドメインに含まれます。/etc/hosts を確認・バックアップしてください)
  • DNS サーバー (/etc/resolv.conf を確認)
  • SSH 鍵 (サーバーを使っている人が他にいる場合、新しい鍵を認証する必要があります。Apache やメールサーバー、SSH サーバーなどの鍵が該当します)
  • ハードウェアの情報 (ネットワークカードなど。インストール済みの /etc/modules.conf を参照してください)
  • GRUB 設定ファイル

ローカルのハードドライブに /etc ディレクトリのコピーを作成すると良いでしょう。

Arch Linux が動作しているホストからインストール

arch-install-scripts パッケージをインストールしてください。

インストールガイド#パーティションのマウントに従ってください。/mnt ディレクトリを別の用途に使っている場合、/mnt/install などのように他のディレクトリを作成してください。

その後インストールガイド#インストールに従ってください。ホストにミラーリストが存在するため、インストールガイド#ミラーの選択は省略できます。

ヒント: 全てのパッケージをもう一度ダウンロードするかわりに、pacman のキャッシュをネットワークで共有するpacstrap-c オプションを使う方法もあります。
ノート: 既存の Arch 環境の複製を作成したい場合、新しいパーティションにファイルシステムをコピーするだけで作成できます。その場合、以下の設定が必要です:
  • /etc/fstab を作成して /etc/hostname を編集
  • /etc/machine-id を削除。起動時に新しいファイルが作成されます。
  • その他インストールメディアに適宜変更を加える
  • ブートローダーのインストール
ルートファイルシステムをコピーするときは、cp -ax あるいは rsync -axX コマンドを使います。マウントポイントの中身はコピーされず (-x)、システムバイナリのケイパビリティ属性は維持されます (rsync -X)。

他の Linux ディストリビューションが動作しているホストからインストール

以下のサブセクションに書かれている手順を自動化するツールが複数存在します。詳しくはそれぞれのホームページを見てください。

以下では手動でインストールする方法を記述しています。ホスト環境の中で Arch を動作させ、ネストされた環境は chroot の中に格納します。

chroot の作成

chroot をセットアップする方法は2つ存在します。簡単な方法と複雑な方法の2つです。どちらか片方を選択してください。その後、#chroot 環境を使うに進んでください。

方法 A: ブートストラップイメージを使う (推奨)

ミラー からブートストラップイメージをダウンロード:

# cd /tmp
# curl -O https://mirrors.kernel.org/archlinux/iso/2016.09.03/archlinux-bootstrap-2016.09.03-x86_64.tar.gz

署名をダウンロードして (URL に .sig が付きます)、GnuPG で検証することもできます。

tarball を解凍:

# tar xzf <path-to-bootstrap-image>/archlinux-bootstrap-2016.09.03-x86_64.tar.gz

/tmp/root.x86_64/etc/pacman.d/mirrorlist を編集してリポジトリサーバーを選択してください。

ノート: x86_64 のホスト環境から i686 イメージをブートストラップした場合、i686 のパッケージが pacman によって取得されるように /tmp/root.i686/etc/pacman.conf を編集して Architecture = i686 と記述してください。

chroot 環境に入ってください:

  • bash 4 以上がインストールされていて、unshare が --fork と --pid オプションに対応している場合:
# /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
  • bash 4 未満の場合、以下のコマンドを実行:
# mount --bind /tmp/root.x86_64 /tmp/root.x86_64
# cd /tmp/root.x86_64
# cp /etc/resolv.conf etc
# mount -t proc /proc proc
# mount --rbind /sys sys
# mount --rbind /dev dev
# mount --rbind /run run    # (assuming /run exists on the system)
# chroot /tmp/root.x86_64 /bin/bash

方法 B: LiveCD イメージを使う

最新の Arch Linux インストールメディアのルートイメージをマウントして chroot することができます。この方法では特定のパッケージをインストールして準備をしなくても Arch Linux のインストール環境を動作させることができるというメリットがあります。

ノート: 先に進む前に、ホスト環境に最新版の squashfs がインストールされていることを確認してください。バージョンが古いと、次のようなエラーが発生します: FATAL ERROR aborting: uncompress_inode_table: failed to read block
  • ルートイメージは ミラー の arch/x86_64/ と arch/i686/ に存在します (使用したいアーキテクチャにあわせて選んでください)。squashfs フォーマットは編集ができないため、ルートイメージを unsquash してからマウントします。
  • ルートイメージを unsquash するには、次を実行:
# unsquashfs airootfs.sfs
  • chroot する前に、マウントポイントを設定して resolv.conf をコピーする必要があります:
# mount --bind squashfs-root squashfs-root
# mount -t proc none squashfs-root/proc
# mount -t sysfs none squashfs-root/sys
# mount -o bind /dev squashfs-root/dev
# mount -o bind /dev/pts squashfs-root/dev/pts  ## important for pacman (for signature check)
# cp -L /etc/resolv.conf squashfs-root/etc  ## this is needed to use networking within the chroot
  • それから、新しくインストールする Arch 環境に chroot してください:
# chroot squashfs-root bash

chroot 環境を使う

ブートストラップ環境は完全なベアボーンです (nanopingcryptsetuplvm も存在しません)。したがって、pacman をセットアップして base を (必要であれば base-devel も) ダウンロードする必要があります。

pacman キーリングの初期化

インストールを開始する前に、pacman の鍵をセットアップしてください。pacman-key#キーリングの初期化を読んでから (エントロピーが必要です)、以下のコマンドを実行:

# pacman-key --init
# pacman-key --populate archlinux
ヒント: haveged のインストール・実行はホスト環境で行う必要があります。pacman のキーリングを初期化しないとパッケージをインストールすることはできないためです。systemd は chroot で動作していることを認識すると サービスの起動リクエスト を無視します。他のコンソール (TTY, ターミナル, SSH セッションなど) で ls -Ra / を実行する場合、リモートのヘッドレスサーバーに十分なエントロピーを供給するのに必要な実行回数は5回あるいは6回です。

ミラーを選択して基本ツールをダウンロード

ミラーを選択したら、パッケージリストを更新して必要なパッケージをインストールしてください: base, base-devel, parted など。

インストールのヒント

インストールガイド#パーティションに進んでインストールガイドの残りのセクションに従ってください。

ホスト環境によっては特定の設定が必要になることがあります。以下のセクションを見てください。

Debian ベースのホスト

/dev/shm

Debian ベースのホスト環境では、pacstrap が以下のエラーを表示することがあります:

# pacstrap /mnt base
==> Creating install root at /mnt
mount: mount point /mnt/dev/shm is a symbolic link to nowhere
==> ERROR: failed to setup API filesystems in new root

Debian では、/dev/shm/run/shm になっているのに対して、Arch の chroot では /run/shm が存在せずリンクが壊れてしまうのが原因です。エラーを回避するには、/run/shm ディレクトリを作成してください:

# mkdir /run/shm
/dev/pts

Debian 7 ホストから archlinux-2015.07.01-x86_64 をインストールしたとき、pacstraparch-chroot が以下のエラーで動作しません:

# pacstrap -i /mnt
mount: mount point /mnt/dev/pts does not exist
==> ERROR: failed to setup chroot /mnt

スクリプトが一般的な関数を使っているのが原因です。chroot_setup()[1]util-linux の新しい機能に依存していますが、Debian 7 のユーザーランドでは使用することができません (FS#45737 を参照)。

様々な作業 を手動で実行して対象ディレクトリ ("$newroot") にカーネルファイルシステムを通常の方法でマウントしてください:

# newroot=/mnt
# mkdir -m 0755 -p "$newroot"/var/{cache/pacman/pkg,lib/pacman,log} "$newroot"/{dev,run,etc}
# mkdir -m 1777 -p "$newroot"/tmp
# mkdir -m 0555 -p "$newroot"/{sys,proc}
# mount --bind "$newroot" "$newroot"
# mount -t proc /proc "$newroot/proc"
# mount --rbind /sys "$newroot/sys"
# mount --rbind /run "$newroot/run"
# mount --rbind /dev "$newroot/dev"
# pacman -r "$newroot" --cachedir="$newroot/var/cache/pacman/pkg" -Sy base base-devel ... ## add the packages you want
# cp -a /etc/pacman.d/gnupg "$newroot/etc/pacman.d/"       ## copy keyring
# cp -a /etc/pacman.d/mirrorlist "$newroot/etc/pacman.d/"  ## copy mirrorlist

インストールガイド#Chroot では arch-chroot のかわりに、chroot "$newroot" を使います。

lvmetad

Debian 7 のホストの archlinux-bootstrap-2015.07.01-x86_64 から LVM論理ボリュームを作成しようとすると以下のエラーが発生します:

# lvcreate -L 20G lvm -n root
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /dev/lvm/root: not found: device not cleared
  Aborting. Failed to wipe start of new LV.
ヒント: 物理ボリュームやボリュームグループの作成については /run/lvm/lvmetad.socket: connect failed: No such file or directory というエラーが表示されますが問題ありません。

(Debian から) chroot の外側に論理ボリュームを作成することでエラーを回避できます。その後、chroot して利用してください。

また、システムから LVM を使用している場合に、以下の出力がされることがあります:

# grub-install --target=i386-pc --recheck /dev/mapper/main-archroot
Installing for i386-pc platform.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad. Falling back to internal scanning.

Debian がデフォルトで lvmetad を使用しないのが原因です。/etc/lvm/lvm.conf を編集して use_lvmetad0 に設定してください:

use_lvmetad = 0

上記の設定を行うと起動の initrd ステージでエラーが発生します。GRUB の生成を行ってから変更してください。ソフトウェア RAID + LVM の場合、以下の手順で設定します:

  • システムを全てインストールした後、initramfs (mkinitcpio) や grub の設定を行います。
  • /etc/mdadm.conf を RAID の構成にあわせて変更してください。
  • LVM と RAID の要件を満たすように HOOKS と MODULES を変更してください: MODULES="dm_mod" HOOKS="base udev mdadm_udev ... block lvm2 filesystems ..."
  • mkinitcpio で initrd イメージを生成してください。
  • /etc/lvm/lvm.conf を編集して use_lvmetad=0 と記述します。
  • GRUB の設定を生成してください (grub-mkconfig)。
  • /etc/lvm/lvm.conf を編集して use_lvmetad=1 と記述します。

Fedora ベースのホスト

Fedora ベースのホストやライブ USB では genfstab を使って fstab を生成しようとしたときに問題が発生することがあります。重複するエントリを削除して "seclabel" オプションを削除してください。後者は Fedora だけで使われるオプションで、システムが起動できなくなります。

再起動する前に確認すること

再起動する前に、新しくインストールした環境に chroot してください。

後で SSH を使って起動できるように root パスワードを設定:

# passwd

SSH をインストールして起動時に自動的に実行されるように有効化してください。

起動時に自動的に接続されるようにネットワークを設定してください。

ブートローダーをセットアップしてルートパーティションと同じように適切なスワップパーティションを使用するように設定します。古い環境を起動できるようにブートローダーを設定することもできます。その場合、サーバーの既存の /boot パーティションを再利用するのも有用です。

LiveCD を使わずに既存の環境を置き換える

ディスク上に 700MB 程度の空き容量を見繕ってください。スワップパーティションを無効化してシステムをセットアップします。

昔のスワップパーティションを新しいルートパーティションに設定

cfdisk, /proc/swaps, /etc/fstab をチェックしてスワップパーティションを確認してください。ハードドライブが sdaX として、以下を実行:

スワップ領域を無効化:

# swapoff /dev/sdaX

ファイルシステムを作成 (/dev/sdaX の ID フィールドは "Linux" (83) に設定):

# fdisk /dev/sda
# mke2fs -j /dev/sdaX

マウントするためにディレクトリを作成:

# mkdir /mnt/newsys

一時的に新しいディレクトリをマウント:

# mount -t ext4 /dev/sdaX /mnt/newsys

インストール

空き容量が 700MB 以下の場合、base グループのパッケージを確認して、インターネット接続を立ち上げて一時的なパーティションで実行するのに必要なパッケージだけを選択してください。個別のパッケージを pacstrap に指定して、-c オプションを使います。

新しい Arch Linux システムをインストールして、新しく作成したシステムで再起動し、プライマリパーティションにシステム全体を rsync してください。再起動する前にブートローダーの設定を修正してください。