Arch Linux 安装过程

于十分想回到pacman包管理器的天堂,于是就想在主力机上安装Arch作为primary system 。本篇文章简单介绍一下在我的机器上安装arch的过程。

安装前需要做的

### 安装环境

  • Lenovo R7000 AMD R7-4800H + Nvidia 1650
  • UEFI启动

准备安装镜像

首先要下载arch linux的最新镜像,给出以下推荐:

下载完成后可以验证下载文件的签名以确保所下载的镜像文件是没有问题的。

准备安装空间

需要在硬盘里腾出一部分空闲空间来安装arch linux。基于此前硬盘内系统,有以下选择:

  • 原先硬盘中有windows系统

下载Diskgenius,打开后在你希望删除的分区上右键单击,选择删除当前分区,随后在左上角保存更改即可。

  • 原先硬盘中为LinuxMacOS系统

依这篇博客操作

  • 空闲的硬盘

不需要任何操作

开始安装

启动到LIVE环境

设定U盘为第一boot,如果你在开机后依然进入原先系统,请检查引导设置或者使用临时引导菜单来引导你的U盘。

进入系统后,你会默认以root用户登录。

验证启动模式

1
# ls /sys/firmware/efi/efivars

执行上面命令后,如果目录不存在,则应该是通过bios方式引导启动;反之,则为uefi模式。

连接网络

提供有线连接和无线连接两种方式

  • 有线连接

    插上网线后执行以下命令来自动配置ip地址:

1
# dhcpcd

​ 然后ping一下google来验证网络是否连接正常:

1
# ping www.baidu.com
  • 无线连接

    执行iwctl命令,之后执行device list命令,你会看到你当前可用的无线网卡设备,记住你所使用的设备名称,并执行下面命令(wlan0替换成自己的网卡名称):

1
# station wlan0 scan

​ 之后执行下面命令扫描无线网络:

1
# station wlan0 get-networks

​ 最后输入下面命令来连接无线网络,如果网络有加密,输入密码即可:

1
# station wlan0 connect CatAndPomelo

特殊情况详解:

  • R7000 wifi模块默认被锁🔒,需要执行rfkill unblock wifi后才可连接无线网络
  • 需认证类型网络可以选择使用手机热点

### 更新系统时间

1
timedatectl set-ntp true

分区、格式化和挂载

这个部分推荐看以下viseator博客arch linux wiki

建议使用cfdisk分区,操作比较简单。

选择镜像源

推荐先学习下vim操作:http://coolshell.cn/articles/5426.html

执行下面命令:

1
vim /etc/pacman.d/mirrorlist

删除所有内容,加入下面内容:

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

安装基本包

执行以下命令:

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

配置Fstab

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

之后输出生成文件检查是否正确:

1
cat /mnt/etc/fstab

Chroot

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

1
arch-chroot /mnt

设置时区

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

设置Locale

编辑文件:

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这四行,去掉行首的#号,保存并退出。

之后执行:

1
locale-gen

编辑文件:

1
vim /etc/locale.conf

加入下面内容:

1
LANG=en_US.UTF-8

设置主机名

编辑/etc/hostname文件并加入你自己设定的myhostname,即主机名。

编辑/etc/hosts文件添加下面内容:

1
2
3
127.0.0.1	localhost
::1		localhost
127.0.1.1	myhostname.localdomain	myhostname

设置Root密码

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

执行如下命令:

passwd

安装必备软件包

pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager netctl

安装Ucode

  • Intel : pacman -S intel-ucode

  • amd : pacman -S amd-ucode

安装Bootloader

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

    pacman -S os-prober ntfs-3g
    

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

如果为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分区造成的错误,对我们的正常安装没有影响,可以不用理会这条错误。

重启

现在推出chroot环境并重启!

1
2
3
4
5
exit
umount /mnt/boot
* umount /mnt/home
umount /mnt
reboot
updatedupdated2021-07-172021-07-17