以官方Wiki的方式安装ArchLinux

写在前面

本文首发于我的博客

更新修改的内容第一时间不会同步到简书,敬请各位移步博客原文https://www.viseator.com/2017/05/17/arch_install/查看或评论

这可能是你能找到的最适合你的中文ArchLinux安装教程。

前几天硬盘挂了,万幸的是家目录放在了另一块硬盘上所以存活了下来。不得不再重装一遍Arch,算上帮朋友装的,这已经是我第四次安装Arch了。也想借此机会记录这个过程写一篇完全按照官方Wiki指导再加上Wiki上没有重点写出来但是安装过程中会遇到的一些问题的一篇不太一样的安装教程。

很多人提起起Arch的第一反应就是安装困难,这种困难有很多原因,也就是接下来我们将会面对的问题。

  • 没有图形界面的引导:Arch只给我们提供了一个最小的环境,所有的安装操作都需要在命令行中完成,这对于不习惯命令行操作的人来说是最难以跨越的一个坎。许多发行版之所以可以流行开来就是因为他们提供了友好的、流程化的安装过程,这帮很多人解决了学习Linux的第一步:安装一个Linux
  • 预备知识的不足与缺乏查找并解决问题的能力:一些对于安装系统比较重要的知识例如系统引导、配置文件的编辑、简单的命令行操作等没有接触过,所以操作时往往摸不着头脑,一旦自己的操作结果与教程不符便不知道如何去解决遇到的问题。
  • 缺乏合适的教程:安装Arch最好的也是最完备的教程就是官方的Installation guideWiki,虽然部分内容有中文版,但是中文的翻译有些时候会落后于英文版,不推荐完全依赖于中文Wiki。并且官方Wiki的写作方式更偏向于文档,没有我们所习惯的按步骤编排的安装过程,给不熟悉这种写作方式的同学造成了阅读与使用上的困难。国内的可以找到的教程往往都是时间比较久远,或是没有提及或是忽略了一些新手容易犯错误的地方。

本篇教程致力于与现有的Wiki保持一致,并且适当地加入一些适合初学者学习的链接,希望可以让阅读了这篇教程的同学可以提高自己利用现有及以后可能出现的新的Wiki内容的能力。

ArchLinux或者是Linux的优点就不在这里多说了,我相信打开这篇教程的同学一定可以从这样的过程中得到很多。

下面就正式开始我们的教程。

安装教程

前期准备

安装介质

在安装之前我们先要准备一个安装介质,在这里只推荐U盘作为安装介质。

  1. https://www.archlinux.org/download/页面下方的中国镜像源中下载archlinux-**-x86_64.iso这个iso文件。

磁盘准备

我们需要有一块空闲的磁盘区域来进行安装,这里的空闲指的是没有被分区的空间。下面来介绍如何准备这块空间。

  • windows下空出一块分区来安装:利用windows自带的磁盘管理工具就可以:

    1. 右击windows图标,在弹出菜单中选择磁盘管理(其他版本的windows请自行找到打开磁盘管理的方式):
arch01.jpeg
2.  右击想要删除的分区,选择删除卷(注意这步之后这个分区的所有数据将会丢失):
arch02.jpeg

U盘安装

下面的过程实际上都在刚刚准备好的U盘启动介质上的Linux系统下进行,所以启动时都应该选择U盘

设置启动顺序

这一步在不同品牌的电脑上都不一样,所以需要大家自行搜索自己电脑品牌+启动顺序这个关键词来进行设置。

例如我的电脑搜索神舟 启动顺序可以得到如下的结果:

https://zhidao.baidu.com/question/170954184.html

一般来说现在的主板都可以不用进入BIOS而快速地切换启动顺序,只要找到相应的快捷键就可以了。

进入U盘下的Linux系统

  1. 按上一步设置好启动顺序,启动之后会看到如下界面(UEFI启动方式的界面可能不同):
arch03.jpeg
如果直接进入`windows`,请检查启动顺序是否设置成功,U盘是否在制作启动介质时成功写入。

如果没有看到这个界面,请检查U盘是否制作成功,如果多次遇到问题可以考虑换一个U盘。

选择第一个选项。
  1. 这时Arch开始加载,你将会看到屏幕显示如下内容:
arch04.jpeg
加载完成后你将会进入一个有命令提示符的界面:
arch05.jpeg
如果出现`FAIL`或是其他错误信息导致无法启动请自行搜索错误信息来获得解决方法。

这就是`Linux`的终端界面了,接下来我们将通过在这个界面执行一系列命令来将`Arch`安装到我们的磁盘上。

下面进行的过程是按照官方Installation guide为依据进行的,出现的任何问题都可以到链接中的相应部分查找原文找到解决方式。

检查引导方式

目前的引导方式主要分为EFI引导+GPT分区表与BIOS(LEGACY)引导+MBR分区表两种,几乎比较新的机器都采用了EFI/GPT引导的方式。关于这部分的内容如果有兴趣可以通过这个链接进行了解:

http://www.chinaz.com/server/2016/1017/595444.shtml

如果你不知道自己的引导方式,请在命令提示符下执行以下命令:

ls /sys/firmware/efi/efivars

这里的ls是命令,空格后面的一串为路径,作为ls命令的参数。ls命令的作用是显示路径目录下的所有的文件(夹)。


如果你对命令行下的常用操作(TAB补全、取消命令等)不熟悉,请先学习了解下面部分实用的快捷键或命令:

Tab键 命令行自动补全。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配你键入字符的所有命令

↑(Ctrl+p) 显示上一条命令

↓(Ctrl+n) 显示下一条命令

Ctrl-C: 终止当前正在执行的命令


输入命令并回车执行后,如果提示

ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

表明你是以BIOS方式引导,否则为以EFI方式引导。现在只需要记住这个信息,之后会用到。

联网

arch并不能离线安装,因为我们需要联网来下载需要的组件,所以我们首先要连接网络。

  • 如果你是有线网并且路由器支持DHCP的话插上网线后先执行以下命令获取IP地址:

    dhcpcd
    
  • 然后执行以下命令来判断网络连接是否正常:

    ping www.baidu.com
    

    如果可以看到类似下面的内容就说明连上了网络:

arch05.jpg
>   再次提示用快捷键Ctrl-C可以终止当前正在执行的命令
  • 如果你是无线网,请执行以下命令:

    wifi-menu
    

    这是一个实用的命令行下联网工具,有字符形式的图形化界面,利用它可以方便地联网,如果它没能起作用,需要进入以下页面查找解决方式:

    https://wiki.archlinux.org/index.php/Wireless_network_configuration

    连接以后同样可以通过上面的ping命令来进行测试。

更新系统时间

执行如下命令:

timedatectl set-ntp true

正常情况下这样的命令并没有输出,所谓没有消息就是最好的消息

分区与格式化

特别注意:涉及到分区与格式化的操作要格外注意,命令在回车之前请再三确认知道自己在做什么,并且没有输错命令,否则将会来带来数据的丢失!如果有需要在操作之前请备份重要的数据。

但是我们也并不要过于惧怕分区与格式化过程,正确操作的情况下不会对你其他数据产生任何影响。

查看目前的分区情况

执行命令:

fdisk -l

以我的电脑为例:

arch06.jpg

可以看到我的一块238.5g的硬盘(/dev/sda就代表这块硬盘),下面列出了/dev/sda*这三个分区,/dev/sda3是我存活下来的家目录,可以看到它的类型为Linux分区。注意看StartEnd的数值,这个数值代表扇区号,可以理解成硬盘被划分成了一个个小单元,可以直观地看出来在/dev/sda2End/dev/sda3Start之间空出了一大块未分配的空间,接下来我们将分配这块区域。


  • 如果你是BIOS/MBR方式引导,跳过下面创建一个引导分区的步骤。
  • 如果你是EFI/GPT方式引导,并且同时安装了其他系统,那么你应该可以在分区列表中发现一个较小的并且类型为EFI的分区(注意查看硬盘的大小,这个EFI分区有可能是你U盘中的,需要排除),这是你的引导分区,请记下它的路径(/dev/sdxY)备用,跳过下面创建一个引导分区的步骤。
  • 如果你是EFI/GPT方式引导,但是没有这个较小的并且类型为EFI的引导分区(这种情况一般只会出现在新的硬盘),那么你需要先创建一个引导分区

创建一个引导分区(仅上面所列的第三种情况需要进行这步

执行命令:

fdisk /dev/sdx (请将sdx替换成你要操作的磁盘如sdb sdc等)

下面你就进入了fdisk的操作环境, 输入m并回车可以查看各命令的作用。

  1. 如果你是一块全新的硬盘,输入g来创建一个全新的gpt分区表。

  2. 输入n创建一个新的分区,首先会让你选择起始扇区,一般直接回车使用默认数值即可,然后可以输入结束扇区或是分区大小,这里我们输入+512M来创建一个512M的引导分区。

  3. 这时我们可以输入p来查看新创建的分区。

  4. 输入t并选择新创建的分区序号来更改分区的类型,输入l可以查看所有支持的类型,输入ef更改分区的类型为EFI

  5. 输入w来将之前所有的操作写入磁盘生效,在这之前可以输入p来确认自己的分区表没有错误。

  6. 输入以下命令来格式化刚刚创建的引导分区:

    mkfs.fat -F32 /dev/sdxY (请将的sdxY替换为刚创建的分区)
    

现在引导分区就创建好了。

创建根分区

输入命令:

fdisk /dev/sdx (请将sdx替换成你要操作的磁盘如sdb sdc等)
  1. 如果你是一块全新的硬盘,输入o来创建一个新的MBR分区表。

  2. 输入n创建一个新的分区,首先会让你选择起始扇区,一般直接回车使用默认数值即可,然后可以输入结束扇区或是分区大小,如果我们想要使创建的分区完全占满空闲的空间,可以直接回车使用默认结束扇区。

  3. 这时我们可以输入p来查看新创建的分区。

  4. 输入w来将之前所有的操作写入磁盘生效,在这之前可以输入p来确认自己的分区表没有错误。

  5. 输入以下命令来格式化刚刚创建的根分区:

    mkfs.ext4 /dev/sdxY (请将的sdxY替换为刚创建的分区)
    

这是我的分区过程供参考:

arch07.jpg
arch08.jpg

挂载分区

执行以下命令将根分区挂载到/mnt

mount /dev/sdxY /mnt (请将sdxY替换为之前创建的根分区)

如果你是EFI/GPT引导方式,执行以下命令创建/boot文件夹并将引导分区挂载到上面。BIOS/MBR引导方式无需进行这步。

mkdir /mnt/boot
mount /dev/sdxY /mnt/boot (请将sdxY替换为之前创建或是已经存在的引导分区)

选择镜像源

因为从这步开始,需要进行一些编辑配置文件的操作,所以需要掌握一些命令行下非常著名的一款编辑器Vim的基本操作,在这里推荐学习下面这个链接中的存活部分,可以完成编辑、复制粘贴与保存工作即可。

http://coolshell.cn/articles/5426.html


镜像源是我们下载的软件包的来源,我们需要根据自己的地区选择不同的源来加快下载的速度。

执行以下命令,用Vim来编辑/etc/pacman.d/mirrorlist这个文件

vim /etc/pacman.d/mirrorlist

提示:输入路径时可以用Tab键补全

arch09.jpg

找到标有China的镜像源,normal模式下按下dd可以剪切光标下的行,按gg回到文件首,按p将行粘贴到文件最前面的位置(优先级最高)。

当然也可以直接手工输入。

这里推荐使用清华、浙大源:

Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch

最后记得用:wq命令保存文件并退出。

安装基本包

下面就要安装最基本的ArchLinux包到磁盘上了。这是一个联网下载并安装的过程。

执行以下命令:

pacstrap /mnt base base-devel

根据下载速度的不同在这里需要等待一段时间,当命令提示符重新出现的时候就可以进行下一步操作了。

配置Fstab

生成自动挂载分区的fstab文件,执行以下命令:

genfstab -L /mnt >> /mnt/etc/fstab

由于这步比较重要,所以我们需要输出生成的文件来检查是否正确,执行以下命令:

cat /mnt/etc/fstab
arch10.jpg

如图,可以看到/dev/sda4被挂载到了根分区。

/dev/sda3是我之前存活下来的家目录被挂载到了/home目录(你们没有这条)。

如果是EFI/GPT引导的还应该有引导分区被挂载到/boot目录

Chroot

Chroot意为Change root,相当于把操纵权交给我们新安装(或已经存在)的Linux系统,执行了这步以后,我们的操作都相当于在磁盘上新装的系统中进行

执行如下命令:

arch-chroot /mnt

这里顺便说一下,如果以后我们的系统出现了问题,只要插入U盘并启动, 将我们的系统根分区挂载到了/mnt下,再通过这条命令就可以进入我们的系统进行修复操作。


设置时区

依次执行如下命令设置我们的时区为上海并生成相关文件:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
arch11.jpg

提前安装必须软件包

因为我们现在已经Chroot到了新的系统中,只有一些最基本的包(组件),这时候我们就需要自己安装新的包了,下面就要介绍一下ArchLinux下非常强大的包管理工具pacman,大部分情况下,一行命令就可以搞定包与依赖的问题。

安装包的命令格式为pacman -S 包名pacman会自动检查这个包所需要的其他包(即为依赖)并一起装上。下面我们就通过pacman来安装一些包,这些包在之后会用上,在这里先提前装好。

执行如下命令:

pacman -S vim dialog wpa_supplicant ntfs-3g

一路确认之后包就被成功装上了。

arch12.jpg

图中只安装了Vim和它的依赖。

设置Locale

设置我们使用的语言选项,执行如下命令来编辑/etc/locale.gen文件:

vim /etc/locale.gen

在文件中找到zh_CN.UTF-8 UTF-8 zh_HK.UTF-8 UTF-8 zh_TW.UTF-8 UTF-8 en_US.UTF-8 UTF-8这四行,去掉行首的#号,保存并退出。如图:

arch13.jpg
arch14.jpg

然后执行:

locale-gen
arch15.jpg

打开(不存在时会创建)/etc/locale.conf文件:

vim /etc/locale.conf

在文件的第一行加入以下内容:

LANG=en_US.UTF-8

保存并退出。

设置主机名

打开(不存在时会创建)/etc/hostname文件:

vim /etc/hostname

在文件的第一行输入你自己设定的一个myhostname

保存并退出。

编辑/etc/hosts文件:

vim /etc/hosts

作如下修改(将myhostname替换成你自己设定的主机名)

127.0.0.1   localhost.localdomain   localhost
::1     localhost.localdomain   localhost
127.0.1.1   myhostname.localdomain  myhostname
arch16.jpg

这里我设置的是viseator

保存并退出。

设置Root密码

RootLinux中具有最高权限帐户,有些敏感的操作必须通过Root用户进行,比如使用pacman,我们之前进行所有的操作也都是以Root用户进行的,也正是因为Root的权限过高,如果使用不当会造成安全问题,所以我们之后会新建一个普通用户来进行日常的操作。在这里我们需要为Root帐户设置一个密码:

执行如下命令:

passwd

按提示设置并确认就可以了。

arch17.jpg

或许有的人已经发现官方Wiki和一些其他教程资料中的命令是以#$开头的,这两个符号就对应着命令行中的命令提示符,#代表以Root用户执行命令,$代表以普通用户执行命令,平时使用教程中的命令时应该注意这一点。


安装Intel-ucode(非IntelCPU可以跳过此步骤)

直接pacman安装:

pacman -S intel-ucode

安装Bootloader

经常听说很多人因为引导问题导致系统安装失败,多数是因为教程没有统一或是过时的教程引起的,这里只要按照步骤来其实是不难的。

这里我们安装最流行的Grub2

  • 首先安装os-prober这个包,它可以配合Grub检测已经存在的系统,自动设置启动选项。

    pacman -S os-prober
    

如果为BIOS/MBR引导方式:
  • 安装grub包:

    pacman -S grub
    
  • 部署grub

    grub-install --target=i386-pc /dev/sdx (将sdx换成你安装的硬盘)
    

    注意这里的sdx应该为硬盘(例如/dev/sda),而不是形如/dev/sda1这样的分区。

  • 生成配置文件:

    grub-mkconfig -o /boot/grub/grub.cfg
    
arch18.jpg

如果你没有看到如图所示的提示信息,请仔细检查是否正确完成上面的过程。

如果报warning failed to connect to lvmetad,falling back to device scanning.错误。参照这篇文章,简单的方法是编辑/etc/lvm/lvm.conf这个文件,找到use_lvmetad = 11修改为0,保存,重新配置grub。


如果为EFI/GPT引导方式:
  • 安装grubefibootmgr两个包:

    pacman -S grub efibootmgr
    
  • 部署grub

    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
    
  • 生成配置文件:

    grub-mkconfig -o /boot/grub/grub.cfg
    

提示信息应与上面的图类似,如果你发现错误,请仔细检查是否正确完成上面的过程。

如果报warning failed to connect to lvmetad,falling back to device scanning.错误。参照这篇文章,简单的方法是编辑/etc/lvm/lvm.conf这个文件,找到use_lvmetad = 11修改为0,保存,重新配置grub。


安装后检查

如果你是多系统,请注意上面一节中对os-prober这个包的安装。

强烈建议使用如下命令检查是否成功生成各系统的入口,如果没有正常生成会出现开机没有系统入口的情况:

vim /boot/grub/grub.cfg

检查接近末尾的menuentry部分是否有windows或其他系统名入口。下图例子中是Arch Linux入口与检测到的windows10入口(安装在/dev/sda1),具体情况可能有不同:

arch22.jpg

如果你没有看到Arch Linux系统入口或者该文件不存在,请先检查/boot目录是否正确部署linux内核:

cd /boot
ls

查看是否有initramfs-linux-fallback.img initramfs-linux.img intel-ucode.img vmlinuz-linux这几个文件,如果都没有,说明linux内核没有被正确部署,很有可能是/boot目录没有被正确挂载导致的,确认/boot目录无误后,可以重新部署linux内核:

pacman -S linux

再重新生成配置文件,就可以找到系统入口。

如果你已经安装os-prober包并生成配置文件后还是没有生成其他系统的入口

你目前处的U盘安装环境下有可能无法检测到其他系统的入口,请在下一步中重启登陆之后重新运行

grub-mkconfig -o /boot/grub/grub.cfg

如果还没有生成其他系统的入口,请参照:

https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Combining_the_use_of_UUIDs_and_basic_scripting

编辑配置文件手动添加引导的分区入口。


重启

接下来,你需要进行重启来启动已经安装好的系统,执行如下命令:

exit
reboot

注意这个时候你可能会卡在有两行提示的地方无法正常关机,长按电源键强制关机即可,没有影响。

关机后拔出U盘,启动顺序会自动以硬盘启动,如果一切顺利,那么你将会看到下面的界面:

arch19.jpg

启动时有可能会有输出信息显示在这里,直接回车就可以了。

输入root,再输入之前设置的密码,显示出命令提示符,恭喜你,你已经成功安装ArchLinux

安装后配置

虽然系统安装好了,但是还没有进行基本配置和安装图形界面,所以接下来我们要进行一些必须的配置和图形界面的安装。

请见下一篇文章:ArchLinux安装后的必须配置与图形界面安装教程

特别感谢

博客评论区中Senrey_SongYKunimzhwkhaonan maoLichen Zhang对于本教程内容的指正。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,442评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,604评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,576评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,652评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,495评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,370评论 1 274
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,792评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,435评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,735评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,777评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,553评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,399评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,806评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,038评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,330评论 1 253
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,766评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,964评论 2 337

推荐阅读更多精彩内容