Arch安装记录

本文记录本人安装Arch的过程以及后续配置,不做为教程,只作为备忘使用,仅供参考

前期准备

  • 下载镜像
  • 下载Rufus
  • 由于我的电脑支持efi启动,制作efi/gpt格式的启动盘

系统安装

开机U盘启动

不同品牌型号的电脑,进入U盘启动的方式不一样,我这里的是F12选择U盘启动

启动安装环境

MBR:

UEFI:

当屏幕上出现命令行提示符及闪烁的光标时即启动完毕。

检查引导方式

ls /sys/firmware/efi/efivars

如果提示:

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

表明你是以BIOS方式引导,否则为以EFI方式引导

联网

我这里是插入网线了,所以执行命令:

dhcpcd

如果你是wifi,请执行:

wifi-menu

更新系统时间

timedatectl set-ntp true

分区与格式化

警告:请谨慎操作以防数据丢失

必要的分区如下:

  • Arch Linux 要求至少一个分区分配给根目录 /。

  • 在 UEFI 系统上,需要一个 UEFI 系统分区。

查看分区:

fdisk -l

输出:

DISK /dev/nvme0n1    xxxxxxxxxxxxx
/dev/nvme0n1p1   xxx
/dev/nvme0n1p2   xxx

输出像“Disk /dev/nvme0n1 xx GiB …”这种的,xx也就是该存储设备的总容量,然后你判断哪个设备是有多余空间的。假如该设备是/dev/sda,这时候你还可以通过如下命令查看该存储设备下已有的分区情况:

fdisk -l /dev/nvme0n1

格式化硬盘:(我硬盘没有重要数据所以格式化,如果你硬盘有数据,不要执行此命令!!!!!!!!!!!!)

输入:

fdisk /dev/nvme0n1

d    #这里省略输出,有几个分区执行几次,如果显示错误,提示硬盘已没有分区证明完成

y

w    #写入格式化结果,也可以不写入,下一步不执行fdisk /dev/nvme0n1就行,然后和新的分区结果一起写入

分区

如果你是MBR,只需要一个分区用于系统安装的分区:
  1. 创建根分区:
fdisk /dev/nvme0n1
  1. o #输入o来创建一个全新的MBR分区表。

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

    这里我的输入 p查看,我的引导分区名是:/dev/nvme0n1p1,所以我的引导分区是/dev/nvme0n1p1

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

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

    mkfs.ext4 /dev/nvme0n1p1     #请将的sdxY替换为刚创建的分区,例如我的是 mkfs.ext4 /dev/nvme0n1p1
    
如果你是EFI模式,需要分两个分区:
  • 第一个分区用于系统引导(512M)
  • 第二个分区用于系统安装(49G)

操作步骤:

创建引导分区

1.执行命令:

fdisk /dev/nvme0n1 #自己的磁盘根据情况变化,名称可能不一样

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

Command (? for help): n
Partition number (1-128, default 1):    ##直接回车

First sector (34-10485726, default = 2048) or {+-}size{KMGTP}:  #直接回车

Last sector (2048-10485726, default = 10485726) or {+-}size{KMGTP}: +512M

Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI System'

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

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

这里我的输入 p查看,我的引导分区名是:/dev/nvme0n1p1,所以我的引导分区是/dev/nvme0n1p1

创建根分区:
  1. 输入n

  2. 一路回车

这里我的输入 p查看,我的引导分区名是:/dev/nvme0n1p2,所以我的分区是/dev/nvme0n1p2

写入:

输入w写入,退出fdisk

格式化分区:
mkfs.fat -F32 /dev/nvme0n1p1 #请将nvme0n1p1替换为刚创建的引导分区 这里我的分区名是 /dev/nvme0n1p1

mkfs.ext4 /dev/nvme0n1p2     #请将的nvme0n1p2替换为刚创建的分区 这里我的分区名是`/dev/nvme0n1p2`

挂载分区

  • 如果你是MBR格式启动,只需挂在根分区即可:
mount /dev/nvme0n1p1 /mnt #这里是MBR的根分区,注意别搞混了,上面的efi中 /dev/nvme0n1p1是引导分区
  • 如果你是EFI启动,需要挂载启动分区和根分区
mount /dev/nvme0n1p2 /mnt #挂在根分区
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot #上面的efi中 /dev/nvme0n1p1是引导分区

选择镜像源

编辑 /etc/pacman.d/mirrorlist,变更为:

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

安装基本包

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

执行以下命令:

pacstrap /mnt base base-devel linux linux-firmware dhcpcd

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

配置Fstab

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

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

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

cat /mnt/etc/fstab

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  networkmanager

设置Locale

设置我们使用的语言选项,编辑/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,我这里输入的是Arch

编辑/etc/hosts文件:

vim /etc/hosts

在文件末添加如下内容(将Arch替换成你自己设定的主机名):

127.0.0.1    localhost
::1        localhost
127.0.1.1    Arch.localdomain    Arch

设置Root密码

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

执行如下命令:

passwd

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

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

pacman -S intel-ucode

安装Bootloader

systemd bootctl方式(仅efi引导方式可用):
  1. 安装bootctl:
 bootctl install
  1. 编辑/boot/loader/loader.conf(没有则新建):
default 
archtimeout 4
  1. vim编辑/boot/loader/entries/arch.conf(没有则新建):
title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=

棘手的一步来了,最优解来自新加坡程序员Kai Hendry:

esc键退出insert模式,打 :r !blkid

将blkid读取到 你文件里,找到/dev/nvmen01p2(就是你根分区)里面的PARTUUID, 然后将其拼凑出如下的格式。:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options root=PARTUUID=12345-67890-1234-123456-7890 rw
grub方式
如果为BIOS/MBR引导方式:
  • 安装grub包:
pacman -S grub
  • 部署grub
grub-install --target=i386-pc /dev/nvme0n1 (将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。

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

重启

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

exit

如果挂载了/mnt/boot,先umount /mnt/boot,再umount /mnt,否则直接umount /mnt

umount /mnt/bootumount /mntreboot

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

安装后基本配置

连接网络

现在我们是在新安装的系统上进行操作,所以我们要重新联网,我们在之前安装系统时已经提前装好了相关的包。所以现在只要跟之前一样:

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

创建交换文件

交换文件可以在物理内存不足的时候将部分内存暂存到交换文件中,避免系统由于内存不足而完全停止工作。

之前我们通常采用单独一个分区的方式作为交换分区,现在更推荐采用交换文件的方式,更便于我们的管理。

分配一块空间用于交换文件,执行:

fallocate -l 512M /swapfile (请将512M换成需要的大小,只能以M或G为单位)

交换文件的大小可以自己决定,推荐4G以下的物理内存,交换文件与物理内存一致,4G以上的物理内存,交换文件4-8G。

更改权限,执行:

chmod 600 /swapfile

设置交换文件,执行:

mkswap /swapfile

启用交换文件,执行:

swapon /swapfile

最后我们需要编辑/etc/fstab为交换文件设置一个入口,使用vim打开文件:

vim /etc/fstab

注意编辑fstab文件的时候要格外注意不要修改之前的内容,直接在最后新起一行加入以下内容

/swapfile none swap defaults 0 0

新建用户

在这之前所有操作都是以root用户的身份进行的,由于root的权限过高,日常使用root用户是不安全的。Linux为我们提供了强大的用户与组的权限管理,提高了整个系统的安全性。这里我们就来新建一个用户。

执行以下命令来创建一个名为username的用户(请自行替换username为你的用户名):

useradd -m -G wheel username (请自行替换username为你的用户名)

在这里稍微解释一下各参数的含义:

-m:在创建时同时在/home目录下创建一个与用户名同名的文件夹,这个目录就是你的家目录啦!家目录有一个别名是~,你可以在任何地方使用~来代替家目录路径。这个神奇的目录将会用于存放你所有的个人资料、配置文件等所有跟系统本身无关的资料。这种设定带来了诸多优点:

  • 只要家目录不变,你重装系统后只需要重新安装一下软件包(它们一般不存放在家目录),然后所有的配置都会从家目录中读取,完全不用重新设置软件着。
  • 你可以在家目录不变的情况下更换你的发行版而不用重新配置你的环境。
  • 切换用户后所有的设置会从新的用户的家目录中读取,将不同用户的资料与软件设置等完全隔离。
  • 有些著名的配置文件比如vim的配置文件~/.vimrc,只要根据自己的使用习惯配置一次, 在另一个Linux系统下(例如你的服务器)把这个文件复制到家目录下,就可以完全恢复你的配置。

-G wheel-G代表把用户加入一个组,对用户与组的概念感兴趣的同学可以自行查找有关资料学习。后面跟着的wheel就是加入的组名,至于为什么要加入这个组,后面会提到。

当然记得为新用户设置一个密码,执行如下命令:

passwd username (请自行替换username为你的用户名)  

根据提示输入两次密码就可以了,注意,这是你的用户密码,推荐与之前设置的root用户的密码不同。

配置sudo

我们已经创建好了一个新的用户,以后我们将会使用这个用户来登录,那么如果我们需要执行一些只有root用户才能执行的命令(例如修改系统文件、安装软件包)怎么办?当然我们可以通过:

su

命令来切换到root用户执行命令后再通过:

exit

返回普通用户。

但是sudo为我们提供了一个更快捷的办法,使用sudo,我们只要在需要root权权限执行的命令之前加上sudo就可以了,例如安装软件包:

sudo pacman -S something

下面我们就来安装并配置sudo

sudo本身也是一个软件包,所以我们需要通过pacman来安装:

pacman -S sudo

接下来我们需要用专门的visudo命令来编辑sudo的配置文件:

visudo

实际上就是vim的操作,使用它是为了对编辑后的文件进行检查防止格式的错误。

找到:

# %wheel ALL=(ALL)ALL

这行,去掉之前的#注释符,保存并退出就可以了。

这里的%wheel就是代表wheel组,意味着wheel组中的所有用户都可以使用sudo命令。

当然为了安全使用sudo命令还是需要输入当前用户的密码的。

配置好sudo以后,我们进行一次重启,执行:

reboot

来重启你的电脑。

重启以后输入你刚创建的用户名与密码来登录。注意登录后要重新进行联网操作(sudo dhcpcd)。

图形界面的安装

安装集显与桌面环境以及启动器:

sudo pacman -S xf86-video-intel xorg palsma sddm kconsole

设置开机启动服务和网络

sudo systemctl enable sddm #设置开机启动sddm

sudo systemctl disable netctl #配置网络

sudo systemctl enable NetworkManager #注意大小写

sudo pacman -S network-manager-applet #安装工具栏工具来显示网络设置图标

重启后即可进入桌面环境

设置中国源(如果不需要可以不设置)

升级系统到最新

sudo pacman -Syyu

编辑/etc/pacman.conf配置源:

[multilib]

Include = /etc/pacman.d/mirrorlist

[archlinuxcn]

Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch


#或者:

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

安装 archlinuxcn-keyring 导入 GPG key:

sudo pacman -S archlinuxcn-keyring 直接这样会出错
sudo pacman -Syu haveged
sudo systemctl start haveged
sudo systemctl enable haveged
sudo rm -fr /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman-key --populate archlinuxcn
sudo pacman -S archlinuxcn-keyring
sudo pacman -Syu

安装中文字体

sudo pacman -S adobe-source-han-sans-cn-fonts (思源黑体)

sudo pacman -S ttf-dejavu

sudo pacman -S wqy-zenhei

sudo pacman -S wqy-microhei

编辑 ~/.xprofile~/.xinitrc/etc/profile(如果不需要系统语言是中文可以不设置):

export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:en_US

安装输入法

安装fcitx
sudo pacman -S fcitx fcitx-configtool fcitx-libpinyin
配置环境变量

编辑/etc/profile(也可以设置~/.pam_enviroment,但是只设置~/.pam_enviroment会导致emacs不能使用输入法):

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx

安装git并设置代理

sudo pacman -S git 

设置代理

git config --global https.proxy http://127.0.0.1:1080 # 如果你的代理是http

git config --global http.proxy http://127.0.0.1:1080


git config --global https.proxy socks5://127.0.0.1:1080

git config --global http.proxy socks5://127.0.0.1:1080 #如果你的代理是socks5

取消代理

git config --global --unset http.proxy

git config --global --unset https.proxy

安装yay

安装gitbase-develgo
sudo pacman -S git base-devel go

由于yay需要go的module,由于我大清国情,需要设置下go的proxy
go env -w GO111MODULE=on
go env -w GOPROXY="https://goproxy.io,direct" 
下载快照并安装
mkdir -P temp/yay

cd temp/yay

git clone https://aur/archlinux.org/yay.git

makepkg si

设置清华源:

yay --aururl "https://aur.tuna.tsinghua.edu.cn" --save

yay -P -g     #查看配置

安装wps

yay  -S wps-office ttf-wps-fonts

安装oh-my-zsh

sudo pacman -S zsh

安装oh-my-zsh:

sudo pacman -S sh 

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"  #如果不行,把install.sh下载下来手动执行sh -c

重启即可

参考连接:

Archlinux从安装到基本配置

以官方Wiki的方式安装ArchLinux

ArchLinux安装后的必须配置与图形界面安装教程

Arch Linux 安装指南 2019.12.01

女生程序员教你15分钟安装Arch Linux