以官方Wiki的方式安装ArchLinux

原文链接  https://www.viseator.com/2017/05/17/arch_install/

写在前面,这是我第n次尝试安装arch linux,从网上看了很多的教程最后通过这篇教程成功的吃上archlinux,现在将原文经过简单修改之后转载在博客园子,作为一个简单的记录,便于同好交流也作为以后自己再需要的时候的一个查阅备份。

主要步骤:

1、制作启动盘

2、系统安装

     2-1联网、分区

     2-2修改系统源,安装基本系统

     2-3安装必备软件

     2-4设置启动项

3、archlinux安装后的配置

注意事项

请一定仔细阅读教程中的每一个指示,绝大部分安装失败都是由于没有仔细看教程,遗漏、错输指令导致的。安装的方式根据引导方式的不同会有所不同,所以请按教程中的指示进行,切忌一味地输命令而不管说明。

对于硬盘分区相关的操作,请更加小心检查命令,数据无价。

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

安装教程

前期准备

安装介质

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

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

如果是windows系统下制作安装介质,推荐使用usbwriter这款轻量级的工具,下载链接:

https://sourceforge.net/projects/usbwriter/  

 

U盘安装

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

设置启动顺序

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

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

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

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

进入U盘下的Linux系统

  1. 按上一步设置好启动顺序,启动之后会看到如下界面(UEFI启动方式的界面可能不同):

    如果直接进入windows,请检查启动顺序是否设置成功,U盘是否在制作启动介质时成功写入。

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

    选择第一个选项。

  2. 这时Arch开始加载,你将会看到屏幕显示如下内容:

    加载完成后你将会进入一个有命令提示符的界面:

    如果出现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方式引导。现在只需要记住这个信息,之后这两种引导类型的安装方式会略有不同(下文中涉及到不同的地方请仔细区别)。


更新:

部分同学反馈这种方式并不能100%确认你就是BIOS方式引导的,更加保险的方法是执行fdisk -l查看分区表,如果你的硬盘(而不是你的U盘)的Disklabel type属性为gpt并且有一个TypeEFI System的小分区(一般为256M左右,如下图),那么你应该是EFI引导的。



联网

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

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

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

  • ping www.baidu.com

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

    再次提示用快捷键Ctrl-C可以终止当前正在执行的命令

  • 如果你是无线网,请执行以下命令:

  • wifi-menu

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

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

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

注意:由于部分无线网卡驱动的支持并不完善,所以在这里可能会遇到问题,并且各机型的解决方法都不同,如果不幸遇到无线连不上的问题,可以插有线联网先把系统装好再去慢慢解决。解决问题可以参照:https://wiki.archlinux.org/index.php/Network_configuration

更新系统时间

执行如下命令:

timedatectl set-ntp true

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

分区与格式化

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

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

查看目前的分区情况

执行命令:

fdisk -l

以我的电脑为例:

可以看到我的一块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步

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

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

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

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

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

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

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

创建根分区

输入命令:

fdisk /dev/sdx (请将sdx替换成你要操作的磁盘如sdb sdc等)
  1. 如果你是一块全新的硬盘否则直接进行第2步):

    1. 如果你是BIOS/MBR引导方式:输入o来创建一个全新的MBR分区表。
    2. 如果你在上一步新建了分区表并创建了引导分区:直接进行步骤2。
    3. 如果你在另一块硬盘中已经有引导分区:输入g来创建一个全新的gpt分区表。
  2. 输入n创建一个新的分区,首先会让你选择起始扇区,一般直接回车使用默认数值即可,然后可以输入结束扇区或是分区大小,如果我们想要使创建的分区完全占满空闲的空间,可以直接回车使用默认结束扇区。

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

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

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

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

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

挂载分区

执行以下命令将根分区挂载到/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键补全

找到标有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

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

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

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

Chroot

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

执行如下命令:

arch-chroot /mnt

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


设置时区

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

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

提前安装必须软件包

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

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

执行如下命令:

pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager

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

图中只安装了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这四行,去掉行首的#号,保存并退出。如图:

然后执行:

locale-gen

打开(不存在时会创建)/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
::1 localhost
127.0.1.1 myhostname.localdomain myhostname

这里我设置的是viseator

保存并退出。

设置Root密码

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

执行如下命令:

passwd

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


或许有的人已经发现官方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

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

  1. 如果报warning failed to connect to lvmetad,falling back to device scanning.错误。参照wiki中搜索关键词use_lvmetad所在位置,简单的方法是编辑/etc/lvm/lvm.conf这个文件,找到use_lvmetad = 11修改为0,保存,重新配置grub。

  2. 有部分同学反馈后面安装grub包的时候报如下错误:

    是因为实际是UEFI引导的系统没有正确挂载boot分区。首先检查你是不是按照BIOS方式安装的系统,二是检查是否正确挂载/mnt/boot。正确配置好boot分区之后可以从“挂载分区”这步开始重做。


如果为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。

如果报grub-probe: error: cannot find a GRUB drive for /dev/sdb1, check your device.map类似错误,并且sdb1这个地方是你的u盘,这是u盘uefi分区造成的错误,对我们的正常安装没有影响,可以不用理会这条错误。


安装后检查

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

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

vim /boot/grub/grub.cfg

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

如果你没有看到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盘,启动顺序会自动以硬盘启动,如果一切顺利,那么你将会看到下面的界面:

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

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

安装后配置

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

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

特别感谢

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

leccesg通过邮件提供的宝贵建议。

最后

如果觉得这篇教程对你有帮助,可以移步我的知乎回答:

Arch Linux 怎么安装? - viseator的回答 - 知乎
https://www.zhihu.com/question/21427410/answer/171867330

下点个赞,让更多的人可以看到这篇教程,你的支持是我最大的动力。

如果安装过程中遇到问题,可以直接在下方评论区留言或邮件viseator@gmail.com(尽量附上错误信息),我会尽力回复解决。

 

posted @ 2019-01-28 15:01  YooLeonGai  阅读(826)  评论(0编辑  收藏  举报