既存の Linux からインストール

提供: ArchWiki
移動先: 案内検索

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

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

ブートストラップの目的は arch-install-scripts (pacstraparch-root など) が走る環境をセットアップすることです。 ホストシステムにネイティブに arch-install-scripts をインストールするか、Arch Linux ベースの chroot を設定することでこれを行います。

ホストシステムで Arch Linux を動かしている場合は、arch-install-scripts をインストールするだけです。

ノート: このガイドでは新しいターゲット Arch Linux アーキテクチャのプログラムを実行することができる既存のホストシステムが必要です。ホストが x86_64 の場合、32ビット chroot 環境を作成するために i686-pacman を使うことができます。64ビット環境に32ビット環境をインストールを見て下さい。ただし、ホストが32ビットのプログラムしかサポートしていない場合、64ビット環境を作成するのは簡単ではありません。

Arch Linux ベースの chroot

ホストシステムの中で Arch システムを動かします。 実際のインストールは Arch システムから実行します。 chroot の中に入れ子になったシステムが含まれます。 設定して chroot に入る方法は以下の3つがあります。

ノート: ホストシステムは Linux 2.6.32 以降である必要があります。
ノート: 以下の3つの方法からどれか一つを選んで、それから記事の残りを読んでインストールを完了してください。

方法 1: ブートストラップイメージを使う

ミラーからブートストラップイメージをダウンロードしてください:

 $ curl -O https://mirrors.kernel.org/archlinux/iso/2015.06.01/archlinux-bootstrap-2015.06.01-x86_64.tar.gz

tarball を展開してください:

# cd /tmp
# tar xzf <path-to-bootstrap-image>/archlinux-bootstrap-2015.06.01-x86_64.tar.gz

リポジトリサーバーを選択してください:

 # nano /tmp/root.x86_64/etc/pacman.d/mirrorlist
ノート: x86_64 のホストシステムから i686 イメージをブートストラップする場合は、pacman が正しい i686 パッケージをインストールするように /tmp/root.i686/etc/pacman.conf を編集して Architecture = i686 を明示的に定義する必要があります。

chroot に入って下さい

  • bash 4 以降がインストールされている場合は:
  # /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
  • インストールされていない場合は以下のコマンドを実行してください:
  # cp /etc/resolv.conf /tmp/root.x86_64/etc
  # mount --rbind /proc /tmp/root.x86_64/proc
  # mount --rbind /sys /tmp/root.x86_64/sys
  # mount --rbind /dev /tmp/root.x86_64/dev
  # mount --rbind /run /tmp/root.x86_64/run
    (assuming /run exists on your system)
  # chroot /tmp/root.x86_64/

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

最新の Arch Linux インストールメディアの root イメージをマウントして chroot することが可能です。この方法は指定のパッケージをインストールする必要なくホストシステムの中で Arch Linux をインストールできるという利点があります。

ノート: 先に進む前に、ホストシステムに squashfs の最新バージョンをインストールしてください。インストールしていないと次のエラーが表示されます: FATAL ERROR aborting: uncompress_inode_table: failed to read block
  • root イメージはミラーの一つから取得することができます。squashfs フォーマットは編集ができないので root イメージを unsquash してマウントします。
  • root イメージを unsquash するには、次を実行してください:
# unsquashfs -d /squashfs-root root-image.fs.sfs
  • これで root イメージをループマウントすることができます:
# mkdir /arch
# mount -o loop /squashfs-root/root-image.fs /arch
  • chroot する前に、マウントポイントを設定してネットワークのために resolv.conf をコピーする必要があります。
# mount -t proc none /arch/proc
# mount -t sysfs none /arch/sys
# mount -o bind /dev /arch/dev
# mount -o bind /dev/pts /arch/dev/pts # important for pacman (for signature check)
# cp -L /etc/resolv.conf /arch/etc #this is needed to use networking within the chroot
  • 新しくインストールする Arch 環境に chroot する準備がすべて整いました:
# chroot /arch bash

方法 3: (スクリプトを使って) 手動で chroot を組み立てる

このスクリプトは archinstall-pkg という名前のディレクトリを作成し、必要なパッケージをそこにダウンロードします。それからパッケージを archinstall-chroot ディレクトリに展開します。最後に、マウントポイントを準備して、pacman を設定し chroot に入ります。

archinstall-bootstrap.sh
#!/bin/bash
# last edited 02. March 2014
# This script is inspired on the archbootstrap script.

FIRST_PACKAGE=(filesystem)
BASH_PACKAGES=(glibc ncurses readline bash)
PACMAN_PACKAGES=(acl archlinux-keyring attr bzip2 coreutils curl e2fsprogs expat gnupg gpgme keyutils krb5 libarchive libassuan libgpg-error libgcrypt libssh2 lzo2 openssl pacman xz zlib)
# EXTRA_PACKAGES=(pacman-mirrorlist tar libcap arch-install-scripts util-linux systemd)
PACKAGES=(${FIRST_PACKAGE[*]} ${BASH_PACKAGES[*]} ${PACMAN_PACKAGES[*]})

# Change to the mirror which best fits for you
# USA
MIRROR='http://mirrors.kernel.org/archlinux'
# Germany
# MIRROR='http://archlinux.limun.org'

# You can set the ARCH variable to i686 or x86_64
ARCH=`uname -m`
LIST=`mktemp`
CHROOT_DIR=archinstall-chroot
DIR=archinstall-pkg
mkdir -p "$DIR"
mkdir -p "$CHROOT_DIR"
# Create a list of filenames for the arch packages
wget -q -O- "$MIRROR/core/os/$ARCH/" | sed -n "s|.*href=\"\\([^\"]*xz\\)\".*|\\1|p" >> $LIST
# Download and extract each package.
for PACKAGE in ${PACKAGES[*]}; do
        FILE=`grep "$PACKAGE-[0-9]" $LIST|head -n1`
        wget "$MIRROR/core/os/$ARCH/$FILE" -c -O "$DIR/$FILE"
        xz -dc "$DIR/$FILE" | tar x -k -C "$CHROOT_DIR"
        rm -f "$CHROOT_DIR/.PKGINFO" "$CHROOT_DIR/.MTREE" "$CHROOT_DIR/.INSTALL" 
done
# Create mount points
mount -t proc proc "$CHROOT_DIR/proc/"
mount -t sysfs sys "$CHROOT_DIR/sys/"
mount -o bind /dev "$CHROOT_DIR/dev/"
mkdir -p "$CHROOT_DIR/dev/pts"
mount -t devpts pts "$CHROOT_DIR/dev/pts/"

# Hash for empty password  Created by doing: openssl passwd -1 -salt ihlrowCo and entering an empty password (just press enter)
# echo 'root:$1$ihlrowCo$sF0HjA9E8up9DYs258uDQ0:10063:0:99999:7:::' > "$CHROOT_DIR/etc/shadow"
# echo "myhost" > "$CHROOT_DIR/etc/hostname"
[ -f "/etc/resolv.conf" ] && cp "/etc/resolv.conf" "$CHROOT_DIR/etc/"

mkdir -p "$CHROOT_DIR/etc/pacman.d/"

echo "Server = $MIRROR/\$repo/os/$ARCH" >> "$CHROOT_DIR/etc/pacman.d/mirrorlist"

chroot $CHROOT_DIR pacman-key --init
chroot $CHROOT_DIR pacman-key --populate archlinux
chroot $CHROOT_DIR pacman -Syu pacman --force
[ -f "/etc/resolv.conf" ] && cp "/etc/resolv.conf" "$CHROOT_DIR/etc/"
echo "Server = $MIRROR/\$repo/os/$ARCH" >> "$CHROOT_DIR/etc/pacman.d/mirrorlist"
chroot $CHROOT_DIR

chroot 環境を使う

pacman キーリングの初期化

インストールを始める前に、pacman のキーを設定する必要があります。pacman-key#キーリングの初期化 を読んでエントロピーの必要性について理解してから以下の2つのコマンドを実行してください:

# pacman-key --init
# pacman-key --populate archlinux

インストール

インストールガイドパーティションのマウントベースシステムのインストールのセクションに従って下さい。

Debian ベースのホスト

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

システムの設定

ここからは、インストールガイドパーティションのマウントセクションに従って下さい。

LiveCD を使わずに既存のシステムを置き換える

swap パーティションをパーティション分けするなどしてディスクのどこかに ~500MB の空き容量を作って下さい。 そこに新しい Arch Linux システムをインストールして、新しく作成したシステムで再起動し、プライマリパーティションにシステム全体を rsync してください。 再起動する前にブートローダーの設定を修正してください。