# Install from existing Linux (简体中文)

翻译状态： 本文是英文页面 Install_from_Existing_Linux 的翻译，最后翻译时间：2014-09-16，点击这里可以查看翻译后英文页面的改动。

本指南给出了从当前 Linux 发行版安装 Arch Linux 所需的准备步骤。 准备完成后的安装参考Installation guide (简体中文)。

从当前 Linux 发行版安装 Arch Linux 对以下情形有所帮助：

- 远程安装 Arch Linux，如一台（虚拟的）根服务器
- 无需 LiveCD 替换当前 Linux 发行版（参见#无 LiveCD 替换当前系统）
- 创建基于 Arch Linux 的新 Linux 发行版或 LiveCD
- 创建 Arch Linux 的 chroot 环境，如可为 Docker 基础容器创建
- 为无盘机器准备 rootfs-over-NFS

这些准备步骤的目的在于为搭建一个 arch-install-scripts（如 `pacstrap` 和 `arch-root`）可运行的环境。 这个目的可通过在当前系统安装 arch-install-scripts 或搭建基于 Arch Linux-based 的 chroot 环境达成。

若当前发行版为 Arch Linux，可直接安装 arch-install-scripts。

注意: 本指南要求当前系统能够运行目标 Arch Linux 构架的程序。x86_64 系统可通过 i686-pacman 搭建起32位的 chroot 环境。参见 Arch64 Install bundled 32bit system。但从32位系统搭建64位的环境并不容易。

## 基于 Arch Linux 的 chroot

主意是在当前系统内运行 Arch Linux。 实际安装是在 Arch Linux 内进行的。 该嵌套系统包含于 chroot。 以下为搭建并进入 chroot 的方法，从简单到复杂。

注意: 当前系统 Linux 版本应至少为 2.6.32
注意: 从以下方法中选择一种并按余下部分完成安装。

### 创建 chroot

#### 方法一：使用 Bootstrap 镜像（推荐）

从镜像站下载 bootstrap 镜像：

     $ curl -O http://mirror.bjtu.edu.cn/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 系统通过 bootstrap 引导 i686 镜像，须编辑 `/tmp/root.i686/etc/pacman.conf` 并设置 `Architecture = i686` 以便 pacman 获取 i686 的软件包。

进入 chroot

- 若安装了4或更高版本的 bash：

      # /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/

- 若无，执行：

      # cd /tmp/root.x86_64
      # cp /etc/resolv.conf etc
      # mount --rbind /proc proc
      # mount --rbind /sys sys
      # mount --rbind /dev dev
      # mount --rbind /run run
        （假设 /run 存在）
      # chroot /tmp/root.x86_64 /bin/bash

#### 方法二：使用 LiveCD 镜像

挂载最新的 Arch Linux 安装介质并 chroot 是可能的。这种方法为当前系统提供了可运作的 Arch Linux 安装程序而无需另外准备。

注意: 开始前，确保最近版本的 squashfs 已安装。否则会出现诸如 `FATAL ERROR aborting: uncompress_inode_table: failed to read block`的错误信息。

- 依据构架的不同，根镜像能在镜像站的 arch/x86_64/ 或 arch/i686/ 目录下找到。squashfs 格式无法编辑，因此需要解压出根镜像并挂载。

- 解压，运行

    # unsquashfs -d /squashfs-root root-image.fs.sfs

- 以 loop 挂载根镜像

    # 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 # pacman 所需（用于签名检查）
    # cp -L /etc/resolv.conf /arch/etc # 网络连接所需

- 准备完毕，chroot 入新系统

    # chroot /arch bash

### 使用 chroot 环境

#### 初始化 pacman 密匙环

开始安装前，需要设置 pacman 密匙。执行以下命令前请阅读pacman-key_(简体中文)#初始化密匙环以理解其对熵的要求：

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

#### 安装

请按照Installation guide (简体中文)中的挂载分区和安装基本系统小节进行安装。

##### 基于 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

#### 配置系统

请按照Installation guide (简体中文)中的挂载分区及余下小节完成配置。

## 无 LiveCD 替换当前系统

在硬盘上划分出 ~650MB 的空闲空间，如分割 swap 分区。若空闲空间小于 600 MB，则须筛选软件包，恰好使系统能在该分区上运行建立网络连接。这意味着需要为 pacstrap 通过选项 -c 指定软件包，以免占满了宝贵的空间。

一旦完成安装，重启进入该系统并rsync 整个系统至主分区。 重启前须修改引导器配置。

Category:

- Getting and installing Arch (简体中文)