Archlinux 安装教程

自从转到Archlinux后,就再也没有想过尝试其他Linux发行版,同时也从Archlinux学到了很多知识。按照惯例,先说几句废话。

这篇blog原本是本人发表在开源中国的,不过既然独立出来写博客,那么也就停止对那篇文章的更新了,我会在原文中注明新的地址。

原文主要针对的是使用BIOS和MBR的计算机,不过考虑到目前大家都开始使用支持UEFI的机器,并且可能由于部分原因需要使用GPT,此文也就更新了相关内容(其实是我换新机器了。。。)。

Archlinux的优点:

1.滚动升级,使用最新的包,比如最新的内核
3.较完美得解决软件包的依赖问题
4.详细的wiki,基本能够找到你想要的

Archlinux的缺点:

1.据说pacman会滚动失败
2.安装有一定难度
3.软件包可能存在bug

如果你不怕折腾,但又厌倦无休止的折腾,那么ArchLinux是一个比较好的选择,但不要在生产环境中使用它,因为这纯粹是自找麻烦。

===Changelog===

[2015-4-20] 添加ibus-rime的相关配置,fcitx-sogoupinyin不再作为首选方案。
[2016-1-28] 添加deepin桌面的配置,并将其作为首选方案,重新启用fcitx-sogoupinyin
[2016-4-15] 修正EFI的boot loader,使用bootctl
[2017-4-22] 修正DDE潜在的依赖缺失问题,感谢Dr. Xie

0x00 安装准备


1.安装介质

我是从USTC的源上下载镜像文件的,教育网速度飞快,点击进入,非教育网用户,点击进入
你可以选择刻录到光盘或者U盘,或者放到手机里等等,在此不再复述,如果你不会,请先学习相关内容。

2.测试网络

如果你使用有线网,直接ping任何网站(当然不能是局域网内的)。
如果你使用无线网,我的建议是使用wifi-menu,没有有线网卡的机器有时候的确很让人无奈。。。

0x01 安装基本系统


1.UEFI模式测试

如果你想使用UEFI,并且你的机器支持UEFI,你在引导时应该会看到如下选项,

Arch Linux archiso x86_64 UEFI USB
UEFI Shell x86_64 v1
UEFI Shell x86_64 v2
EFI Default Loader

你应该可以知道Archlinux只提供64位的UEFI模式安装,32位无法引导,本人已经尝试过了。
如果你忘记了是否出现过上述选项,你也可以使用如下命令:

efivar -l

如果你看到了一大串内容,那就是进入了UEFI安装模式。否则,请记住,你的电脑可能不支持UEFI或者你没进入UEFI安装模式,在后续内容中,你应该选择BIOS和MBR。

2.创建分区

在这里设计到一个很大的内容,如何安排分区,这个看每个人如何规划了,下面我将使用一个比较普遍的方案:

/dev/sda1  1G  /boot  物理分区
/dev/sda2  40G /      物理分区
/dev/sda3  60G /home  物理分区
/dev/sda4  8G  swap   物理分区

关于分区的扩展知识,请参考wiki,点击进入

首先是MBR分区的创建,GPT的请略过,这里使用的工具是fdisk。

fdisk /dev/sda

本机只有一个硬盘,所以使用/dev/sda,如果你有多个硬盘,应该也能知道该使用什么绝对地址了。
分区的方法都比较相似,使用m,可以列出所有命令,请根据提示分区。

其次是GPT分区,基本和MBR分区一样,只是我们使用的工具是gdisk。

gdisk /dev/sda

需要注意的是分区的标志,

/dev/sda1 EF00
/dev/sda2 8300
/dev/sda3 8300
/dev/sda4 8200

3.安装文件系统

接下来是安装文件系统,在这里GPT和MBR的区别只有/dev/sda1这个分区,我们放到最后解释。这里我们使用的FS是比较成熟的ext4,至于最新的btrfs,老实说我没用过,即使我用的是SSD,并且“据说”btrfs对SSD有优化,大家可以尝试下。

mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkswap /dev/sda4
swapon /dev/sda4

最后一条命令是开启交换分区。
对于/boot这个分区,使用MBR的命令如下:

mkfs.ext4 /dev/sda1

对于GPT分区,请使用如下命令:

mkfs.fat -F32 /dev/sda1

4.挂载分区

如果你使用推荐的分区,请使用如下命令,否则,请自行调整

mount /dev/sda2 /mnt
mkdir /mnt/{boot,home}
mount /dev/sda1 /mnt/boot
mount /dev/sda3 /mnt/home

5.选择更新源

sed -i "s/^\b/#/g" /etc/pacman.d/mirrorlist
nano /etc/pacman.d/mirrorlist
pacman -Syy

还是和之前说的那样,请根据你的网络环境选择镜像,选择镜像,只需要将对应地址前的#去掉即可,这里推荐使用ustc或者163的源。
这里还有一个小故事,第一次安装Arch的时候,在mirrorlist中所有的Taiwan后面都有“Province of China”字样,顿生好感,只可惜现在的mirrorlist中已经没有这个彩蛋了。

6.部署基本系统

这里只要一条基本的命令就能自动完成部署了,比Gentoo简单不少。如果你想使用netstat和ifconfig之类的指令,请加上net-tools。

pacstrap -i /mnt base base-devel net-tools

7.生成fstab

fstab中记录了挂载的相关信息,Archlinux中提供了工具来一键生成(怎么感觉逼格有点低。。。)

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

这里使用的是UUID,如果不加-U,那么在fstab中记录的就是/dev/sdX之类的地址了,UUID的方式更加好,为什么呢?请自行wiki。

0x03 基本系统设置


首先请使用chroot进入部署好的基本系统,这里使用“进入”,只是为了避免此blog涵盖过多内容,关于chroot的知识,点击进入

arch-chroot /mnt /bin/bash
alias ls='ls --color'

后一条命令是为了让ls显示颜色,方便查看。

1.设置Locale

nano /etc/locale.gen

这里你至少开启en_US.UTF-8和zh_CN.UTF-8。

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

这里由于console字体的原因,中文会变成方框,如果你不安装桌面环境,请使用en_US.UTF-8。

2.设置console

nano /etc/vconsole.conf

输入如下内容

KEYMAP=us
FONT=

3.设置时区

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

这里大家可能会发现BIOS的时间和系统不一样了,我提供一个解决方案。

nano /etc/adjtime

输入如下内容:

0.000000 0 0.000000
0
LOCAL

原本是为了方便时区调整的措施,点击详解,对于多系统的用户而言,就很纠结了,特别是我这样有OCD的。

4.设置主机名

虽说这里的主机名可以有大写,不过我建议大家使用常规的英文小写。

echo 主机名 > /etc/hostname

你还得修改/etc/hosts文件的内容。

nano /etc/hosts

你会看到如下内容:

#
# /etc/hosts: static lookup table for host names
#
#<ip-address>    <hostname.domain.org>              <hostname>
127.0.0.1    localhost.localdomain localhost   主机名    
::1        localhost.localdomain localhost   主机名
#End of file

请把myhostname替换成你所设置的主机名。

5.生成初始ramdisk环境

mkinitcpio -p linux

6.用户设置

首先是设置root的密码:

passwd

创建一个日常用户,这里添加wheel用户组是为了能够使用sudo提权,毕竟我可不敢直接拿着root操作(虽然我经常这么干)。

useradd -m -g users -G wheel -s /bin/bash 用户名 
passwd 用户名

7.安装启动器

首先是对于BIOS用户,UEFI的请略过。这里推荐使用GRUB。

pacman -S grub-bios 
grub-install /dev/sda 
grub-mkconfig -o /boot/grub/grub.cfg

这三条命令分别是使用pacman获取grub,将引导信息写到sda,以及生成配置文件grub.cfg。

对于使用UEFI的用户,官方文档不再使用gummiboot,由于我已经很久没有重装系统了,因此也就没有关注官方的更新,对不住。现在的启动器是system-boot,应该是直接用systemd来接管启动,总算是统一了。

只需要运行如下命令:

bootctl install

虽然换成了system-boot,但是配置依旧少不了。

首先我们需要在/boot/loader/entries文件夹中创建名为arch.conf的配置文件,添加如下内容:

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sda2 rw

大致意思,各位根据名字应该就能猜个大概,这里只需要注意root部分可以填写UUID,但是为了图方面,我就直接用路径代替了,sda2即为root分区,各位需要根据自己的分区情况自行决定。

接下来需要配置/boot/loader/loader.conf,这个文件有默认的内容,只需要修改下即可。

timeout 3
default arch

如有特殊需求,请自行参考相关wiki,点击进入

8.重启

需要退出chroot,卸载分区,然后直接reboot。

exit
umount /mnt/{boot,home}
umount /mnt
reboot

请注意,如果你的机器只有无线网卡,并且你希望通过wifi-menu联网,那么请确保在reboot之前,你已经安装了dialog。

0x04 相关驱动安装


这里有个问题很纠结,我准备在这篇blog里先提供Gnome环境的配置,而目前Gnome能够只是wayland了,但是呢,还不完美,经过本人的测试,会出现部分触控失灵等问题。因此,先偷个懒,使用Gnome的默认环境X。

1.安装ALSA(声卡)

pacman -S alsa-utils

2.安装显卡驱动

由于我使用的是Intel核显,因此如下是核显驱动的安装,如果你使用的是其他显卡,请参考官方wiki,点击进入

pacman -S mesa xf86-video-intel

3.安装触摸板驱动

pacman -S xf86-input-synaptics

4. 安装显示服务器

这里可选wayland和xorg-server,gnome对于前者已经支持的比较完善了,当然大家亦可选择全装。

# xorg及其utils
pacman -S xorg-server xorg-xinit
# wayland
pacman -S wayland

0x05 桌面环境


在Archlinux中,有很多可用的桌面环境,以下简称DE,比如Gnome,KDE,Xfce等。截至2016年1月底,Gnome的最新版本为3.18.3,可以称之为稳定的DE。KDE5依旧一团糟,不建议读者使用。

另外有一个好消息,Deepin DE正式从AUR并入package group,也就是说大家再也无需担心依赖问题了,本次更新,新增DDE的配置。

Gnome DE安装

1. Gnome基本环境安装

pacman -S gnome

2.安装额外软件包

其实有另外一个包合集gnome-extra,只不过这个包里面包含了太多没用的东西,没什么用,OCD又犯了。。。

pacman -S file-roller evolution gedit gnome-music gnome-photos cheese gnome-mplayer
pacman -S unrar unzip p7zip

Deepin DE安装

如果你已经安装了Gnome,想要改为DDE,那么你需要先移除所有gnome相关的包,然后在按照如下进行配置,另外,在这个过程中networkmanager也会被移除,一定要再次安装,否则会相当麻烦。

1. DDE基本环境安装

pacman -S deepin deepin-extra lightdm lightdm-deepin-greeter

2.安装额外软件包

deepin-extra包含了deepin特有的一些应用,还是挺简洁的,这里就无需OCD加成了。不过,有些应用依旧缺失,需要补救一下。

pacman -S file-roller evince gedit thunderbird gpicview
pacman -S unrar unzip p7zip

在安装完DDE后,可能会遇到无法将语言改为中文的情况,只要删除~/.pam_environment文件即可。

3.安装浏览器

这里我们使用chromium,至于为什么不是firefox,原因有二,其一,我觉得它更快;其二,它能用最近的flash插件。

pacman -S chromium

最新的flash插件需要到AUR上去下,这里提供下载地址,点击下载
下载完成后,解压,进入相关目录。

makepkg
pacman -U 生成的文件名,以.xz结尾

4.配置输入法

关于输入法,大致有2个选择,ibus和fcitx,分别有ibus-rime和fcitx-sogoupinyin。

4.1 rime输入法配置

安装ibus-rime很简单

pacman -S ibus-rime

依赖会自动完成安装。和fcitx一样,我们需要配置一下.xprofile

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

然后,在设置的输入源中就能找到rime了,你会发现ibus和gnome的集成比fcitx好多了,而且现在ibus也比原来快多了。
Tip:关于半角全角和简体繁体切换,只需要在输入的时候按F4即可看到选项。

4.2 sogou输入法安装

先安装fcitx框架

pacman -S fcitx fcitx-qt4 fcitx-qt5 fcitx-gtk2 fcitx-gtk3 fcitx-configtool

这里会把qt的环境给依赖进来,没办法。。。
在用户目录下添加个配置文件:

$ nano ~/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

然后,从AUR下载fcitx-sougoupinyin,点击下载
先安装依赖opencc,这个神器是简体和繁体互相转换的库。

pacman -S opencc

解压下载的文件,进入目录,然后如下操作:

makepkg
pacman -U 生成的文件,以.xz结尾

之后重启的时候,进菜单点击搜狗图标,应该就能用了,不行的话可以尝试运行sogou-qimpanel。

5.注册相关服务

务必记得安装networkmanager,不然无法开启网络的自动探测。

pacman -S networkmanager

开启网络服务

systemctl enable NetworkManager

如果你安装的是Gnome,你需要开启gdm。

systemctl enable gdm

如果你安装的是Deepin,你需要开启lightdm

systemctl enable lightdm

另外对于deepin,我们还需要修改lightdm的一个配置文件/etc/lightdm/lightdm.conf。
在如下段中添加deepin的greeter-session。

[Seat:*]
...
greeter-session=lightdm-deepin-greeter

0xFF 写在最后


至此,恭喜你,已经成功安装Archlinux发行版,我希望每位读者都能到达这一步。我会持续更新这篇文章,只要我还在使用Archlinux。码字不易,且看且珍惜。如果你们发现什么错误或者有什么需求,请在评论中说明,我会尽快更正。

最后,声明一下,欢迎转载,但是请注明出处,并添加链接。

已有 47 条评论
  1. 阔以 :D (Hexo吧,找个时间转一下)谢谢分享

  2. u u

    谢谢楼主分享啊

  3. Chenjian Chenjian

    请问楼主,sda3就不管了,空着?

  4. Chenjian Chenjian

    我猜你的第4部分中"mount /dev/sda2 /mnt/home", 应该是"mount /dev/sda3 /mnt/home". 是吗?

    1. 哎呀,字打错了,谢谢指正^_^

  5. mphantom mphantom

    我按照楼主uefi的配置安装下来
    但是不能休眠 据说休眠要自己手动配置
    请问楼主是怎么配置的

    1. 你有添加swap分区吗?我这边是可以休眠的,只不过是直接按一下关机键,你可以试试看

      1. mphantom mphantom

        添加了 一按电源建就关机

      2. mphantom mphantom

        /boot/loader/entries/arch.conf 这个文件夹的内容 你有加resume吗。。。
        有的话能否贴一下内容

        1. 你说的应该是hibernate,我并没有添加过resume,我用的是suspend,对于超极本而言,所谓的suspend和hibernate也没什么大的区别了,毕竟不能拔出电池来验证一下。。。

          不过Gnome对hibernate的支持也不太好,并没有相应的按钮,之前的版本有extension来扩展,但是目前似乎兼容性都有问题,我帮你找了一下解决方案,需要配置内核参数和initramfs的hook,前者在arch.conf的options中添加,大致为resume=/dev/sdX,X为具体的分区号,也可以使用resume=UUID的方式;后者在/etc/mkinitcpio.conf中的HOOKS中添加resume,完成后,需要mkinitcpio -p linux,重新创建initramfs镜像。至于触发hibernate的按键,你可以将电源键的事件改成hibernate,参照https://wiki.archlinux.org/index.php/GNOME#power

          如果你要使用suspend的话,可以按住alt,然后选择关机的那个按钮,此时你应该会看到它变成了一个暂停的符号。如果不是长时间休眠的话,应该够用了。

  6. qvshuo qvshuo

    谢谢,相信今晚结合arch wiki和贵网站的此篇文章,我可以安装成功arch

  7. β β

    安装成功。
    当网络配置出问题:
    ping www.baidu.com
    ping:unknown host www.baidu.com
    ping 8.8.8.8
    connect:Network is unreachable

    这是因为host 用户名设置出错吗?
    文中第四点应该是将localname改成自己设定的用户名吗?

    1. 你需要提供更多的信息,比如ipconfig的输出
      可能是网络根本没配好

      你指的安装成功,是指哪一步?如果是gnome成功进入了,那么可能是networkmanager的问题,当然需要等待更加详细的信息才能判断。

      1. β β

        ifconfig
        lo:flags=73 mtu65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet 6 ::prefixlen 128
        ...........
        安装后重启,就没办法使用网络,所以gnome也无法安装

        1. 为什么只有lo,用ip link命令看看是否由其它网卡,如果仅仅是未分配地址,那可以运行dhcpcd解决,或者用静态地址也行,具体在netctl中配置。
          如果是驱动问题,那你需要去好好google了。。

  8. 请问楼主用的是 retina Macbook Pro 吗?
    体验怎么样?

    1. 穷学生,买不起。。。
      不过有一点可以肯定,rMBP可以装archlinux,但是retina分辨率在linux下用就太恐怖,只能说HiDpi在linux下尚不成熟,不知道最新的Gnome支持得怎么样了

      1. 噗,我发现我把 MBR 看成 MBP 了

  9. 等等 等等

    还不错

  10. ml ml

    创建新用户之后 提示说 invalid user name *** 是怎么回事?

    1. 提示说的挺明确的,换个正常点的username试试

  11. 旋木 旋木

    gummiboot。not found怎么办

    1. bozutung bozutung

      it is named system-boot now

      1. 谢谢提醒,已修正。

  12. 我来啦~ 发现一个Bug。

    看Deepin桌面环境安装,第一节的标题。
    你写成了“Gnome基本环境安装”

    1. 还有Bug,搜狗拼音的输入法的链接过期了。
      然后我makepkg的时候提示依赖xorg-prop这个包。

      1. AUR期间迁移到了git,很多链接都失效了,已纠正。

    2. 。。。失误失误

  13. muyu muyu

    按照楼主的EFI安装在bootctl install输出 file system /boot wrong 的情况

    1. 在更新system-boot部分内容的时候,刚好拿自己的机器按照本文重装了一遍,并没有发现问题。

      因此,我建议你回顾一下,是否按照文章的步骤安装的,尤其是

      1. 验证UEFI环境
      2. 确保分区和本文提供的一致,尤其是/boot和/
      3. 挂载是否成功,用lsblk验证下

      1. muyu muyu

        搞好了,设分区的时候,那个数值没有输入。
        顺便请教俩问题,每次启动系统之后,输入法都不能自己启动,我装的ibus,每次我都自己执行ibus-setup才会出来
        还有一个问题就是想看文件目录,但点击home文件夹,就会弹出选择打开程序
        我装的kde的桌面系统

        1. 问题1:可能是autostart文件夹的权限问题,建议看看,我之前从未遇到过,当然我使用的是fcitx-sogou
          问题2:可能是你并没有安装dolphin

  14. 对于GPT分区,请使用如下命令:

    mkfs.fat -F32 /dev/sd1
    少个a

  15. 嘻嘻瓦希 嘻嘻瓦希

    说几个点:
    1、intel显卡需要安装intel-ucode并配置,不然启动不了
    2、lightdm需要安装xorg-server包,不然lightdm不能正常启动
    3、deepin默认不能使用root登录,所以像我一样跳过创建常用用户步骤的童鞋在登录界面只能转圈了

    1. 你好,关于你说的几点,我大概看了下,
      1. 请问你用的是什么intel的显卡?我使用的是intel i5-5200u,没有安装intel-ucode,能够正常启动
      2. 关于xorg-server,如果你安装xf86-video-intel驱动,那么它应该会作为驱动被安装的,不知道你是不是有安装这个包
      3. 教程里面有说明需要创建一个日常用户,所以没有考虑使用root登录的情形,这可能是一个思维定式,因为我自己是绝不会用root登录DM的,也不建议这么做

      1. 嘻嘻瓦希 嘻嘻瓦希

        1. 我是虚拟机环境,真实机是i7-4700HQ,在安装前查看硬件信息PCI应该是intel-vmware之类的,记不得了。想偷个懒不装intel-ucode,结果系统启动不了,倒退快照装上就能正常启动了。
        2. 虚拟机显卡装xf86-video-vmware,不会有xorg-server,lightdm启动失败,log中的错误大概是cannot connect X server, path not found之类的。
        3. 按理说你的教程是没有错的哈,但是像我一样只是先尝试一下的人一般都会跳过创建普通用户的,而且我也没用过deepin,并不知道root不能登,缺乏经验卡在那里想了半天。

        1. 嘻嘻瓦希 嘻嘻瓦希

          对了,是intel处理器需要intel-ucode,并不是intel核显需要,我打错字了。
          摘录wiki
          ```
          Boot loader
          See Category:Boot loaders for available choices and configurations. For example, set up the boot loader with systemd-boot if your system supports UEFI, and GRUB when not.
          If you have an Intel CPU, install the intel-ucode package in addition, and enable microcode updates.
          ```
          详见https://wiki.archlinux.org/index.php/Installation_guide

          1. 是这样的,microcode update并不是所有intel处理器都需要安装的,当出现系统不稳定的时候,可以安装试试,但这个应该不是必不可少的。
            教程确实没有考虑虚拟机的情况,主要还是先入为主了。。。之后,我会考虑添加相关内容的。

  16. 需要更正一个地方:

    echo LANG=zh_CN.UTF-8 >> locale.conf

    应该写成:

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

  17. Deepin 的桌面环境 好像还需要安装

    pacman -S lightdm-deepin-greeter xorg-server

    1. greeter可能是忘记加了,xorg-server按理应该是作为依赖自动安装的。

  18. 建议在安装GRUB之前安装显卡驱动, 否则在Vmware上GRUB的分辨率会不正常.

    1. 我在ESXi和kvm上并未发现问题,是否有找到具体的原因?比如受某个配置项的影响?

  19. 倾书 倾书

    请问,怎么在system-boot加上win10的引导?

    1. 抱歉,我只使用Linux,所以并没有systemd-boot引导win10的配置经验。
      但是,我查了一下systemd-boot的wiki,里面是有相关描述的,具体见https://wiki.archlinux.org/index.php/Systemd-boot 中的“Adding Boot Entries”一节,大意是使用bootctl就能实现自动检测了,另外wiki强烈建议关闭win10的快速启动。

说两句: