失败了N多次终于成功了,一点点看着ArchLinux的Wiki弄出来的。希望对朋友们有用。

ArchLinux的Wiki有很详细的介绍,如果有不懂的可以参考:ArchLinuxWiki

首先明确下如果你想用UEFI+GPT方式,在建立虚拟机的时候必须选择64位的,不要问我为什么,我不知道,我是试出来的,后来才明白UEFI+GPT只能支持64位系统。还有,建立虚拟机之后,设置里面的系统选项卡启用EFI需要勾选。

wKiom1ZK5xjwlgCrAAB97QWo2VA693.png

Arch物理资源配置:

这些都需要看自己电脑配置的情况

我的配置是:

CPU2核心,内存1G,硬盘4G,其他默认。

下面就启动进入安装了

#列出当前设备
lsblk

有两种分区类型:
GUID 分区表(GPT)
主引导记录(MBR)
Arch 安装盘中包含了多种分区工具,可以根据分区表的类型进行选择:
parted: 支持 GPT 和 MBR
fdisk, cfdisk, sfdisk: GPT 和 MBR
gdisk, cgdisk, sgdisk: GPT

注:我在使用Wiki上的parted命令时总是大小分不正确,可能我还是不太会用。这里我用gdisk命令。

#使用gdisk交互模式进行硬盘分区操作,下面x是lsblk命令列出的你的硬盘的块号,我的是a
gdisk /dev/sda

gdisk命令用法可以参考ArchLinuxWiki

#首先建立新的空GUID分区表
o(不是数字0)

下面进行分区,分区方案仅供参考(总大小:4G)

  • EFI启动分区:512M

  • /(root)分区:1.5G

  • swap交换分区:2G

#使用n命令创建一个新的分区。
n
#输入分区序号,这里默认直接回车。

#输入起始地址,或者输入偏移量大小,这里还是使用默认的,直接回车。

#输入结束地址,或者输入偏移量大小,这里输入+512M,分给EFI启动。
+512M
#输入分区类型代码,EFI分区类型代码ef00。
ef00
#创建第二个分区,同上。
n
#输入分区序号。

#输入起始地址。

#输入结束地址,这里输入1.5G,分给/(root)分区。
+1.5G
#输入分区类型代码,linux文件系统分区类型代码8300,默认就是8300,所以直接打回车。

#创建第三个分区,同上。
n
#输入分区序号。

#输入起始地址。

#输入结束地址,这里输入2G,分给swap交换分区。
+2G
#输入分区类型代码,swap交换分区类型代码8200。
8200
#最后千万别忘了写入分区信息
w

分区结束,下面将分区进行格式化为需要的文件系统。

首先查看sda所有分区

lsblk /dev/sda

会出现三个分区

分区名称分区大小分区设备标号挂载点
EFI512M/dev/sda1
/1.5G/dev/sda2
swap2G/dev/sda3


EFI分区需要格式化为fat32或vfat32。

/(root)分区需要格式化为ext类型,推荐ext4。

swap交换分区需要格式化为linux swap类型。

mkfs.vfat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
mkswap /dev/sda3

挂载已经格式化好文件系统的分区。

先挂载 / (root) 分区,其它目录都要在 / 分区中创建然后再挂载。在安装环境中用 /mnt 目录挂载 root:

mount /dev/sda2 /mnt

然后挂载其余单独分区(除了 Swap),比如 /boot,/var。先创建目录,然后挂载分区:

建议将 EFI 系统分区挂载到 /mnt/boot。

mkdir -p /mnt/boot
mount /dev/sda1 /mnt/boot

挂载swap分区:

swapon /dev/sda3

再看下分区表

lsblk /dev/sda
分区名称分区大小分区设备标号挂载点
EFI512M/dev/sda1/boot
/1.5G/dev/sda2/
swap2G/dev/sda3[swap]

至此就可以安装Arch了。

在安装系统之前需要调整一下镜像源地址,将中国的镜像源地址放在mirrirlist文件开头。

nano /etc/pacman.d/mirrorlist
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

更改镜像列表后请务必使用 pacman -Syy 强制刷新

pacman -Syy

使用 pacstrap 来安装基本系统。如果您想通过 AUR 或者 ABS 编译安装软件包,需要装上 base-devel:

pacstrap -i /mnt base base-devel

使用 -i 选项时会在实际安装前进行确认,可以不要。

生成分区表,用以下命令生成 fstab

genfstab -U -p /mnt >> /mnt/etc/fstab

切换到新系统:

arch-chroot /mnt /bin/bash

本地化:

nano /etc/locale.gen

添加以下字符编码:

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN GB2312

接着执行locale-gen以生成locale讯息:

locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf

创建初始 ramdisk 环境(这个我还是没有弄明白是干吗的~!~)。

mkinitcpio -p linux

用 passwd 设置一个 root 密码:

passwd
输入密码
请再次输入密码

下面安装 bootloader,这里请注意,bootloader引导程序有很多选择,但是它们都是通过EFISTUB进行引导操作的,区别就是外观不同,兼容性不同,Wiki里面提供的是systemd-boot这个程序的安装方法以及ArchLinux通过systemd-boot的引导方法,想查看还有哪些bootloader可以使用请参考:bootloader

我首先使用的也是systemd-boot程序引导的ArchLinux,可以参考:systemd-boot

安装程序假定系统使用 GPT 分区表,具有 Unified Extensible Firmware Interface#EFI 系统分区,FAT32 格式,512 MiB 或更大,gdisk type 为 EF00). EFI 系统分区挂载到 /boot。

安装 systemd-boot 到 EFI 系统分区:

bootctl install

用nano编辑bootctl的配置文件,/boot/loader/loader.conf

#默认加载的启动配置文件,系统会在/boot/loader/entries目录下寻找arch.conf
default  arch
#超时时间
timeout  4
#是否允许用户编辑内核参数。1(默认值)是允许,0 是阻止。因为用户可以通过 init=/bin/bash 来绕过root密码并获得root权限,建议设置成0。
editor   0

增加启动选项

nano新建/boot/loader/entries/arch.conf配置文件

用 blkid -s PARTUUID -o value /dev/sda2 找到/(root)分区的PARTUUID, 请注意这里不是EFI分区,是/(root)分区!!!请将自己的PARTUUID替换下面的PARTUUID。
#要在EFI引导程序中显示的操作系统的名称
title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw

保存退出。

主机名

设置个您喜欢的主机名,例如:

echo ArchLinux20160222 > /etc/hostname

并在 /etc/hosts 添加同样的主机名:

#<ip-address>    <hostname.domain.org>    <hostname>
127.0.0.1        localhost.localdomain    localhost    ArchLinux20160222
::1              localhost.localdomain    localhost    ArchLinux20160222

离开 chroot 环境:

exit

关闭计算机:

poweroff

移除安装ISO文件。

再次启动,OK。