Install from existing Linux (简体中文)

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

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

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

这些准备步骤的目的在于为搭建一个 arch-install-scripts(如 pacstraparch-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 整个系统至主分区。 重启前须修改引导器配置。