arch linux 安装

好长时间都没有更新自己的博客了,我简单翻阅了一下自己的更新记录,上一次更新好像还是在5月份左右,距今也有快半年,这半年也是遇到了很多事情,有不好的,也有好的。这半年我对在日常生活工作中使用Linux系统产生了一些兴趣,从零开始折腾这一系列的内容,主要从安装、配置、以及尝试各种软件来取代Windows的主导地位,也产生了一些心得,这里我想分几篇博客来聊聊我是如何慢慢使用arch Linux 来替代以前的Windows机器

为何选择arch Linux

我本身有一台6年前买的联想的笔记本,随着每次系统的更新,也变得越来越卡了,终于有一点我忍不了想着要不退回到windows 7吧,windows 10这台机器已经有点不行了。恰巧我最近在看一本关于计算机发展史的书,书中提到自由软件运动,那种运动有一种人人为我,我为人人的理想主义色彩,我想既然不能编写自由软件造福一方,至少应该享受自由软件带来的好处,而且国内经常爆出各种软件窃取用户隐私的新闻。何不趁此机会转移到自由软件阵营呢?说做就做,自由软件的基础自然是需要一个自由的操作系统,Linux是目前使用最为广泛的自由操作系统。在看了各种Linux发行版本之后我决定使用arch Linux,主要有以下几个原因:

  1. 更新方式比较激进,arch Linux采用滚动更新的方式,这意味着用户能享受最新的软件版本,当然过激的更新行为会导致一些问题,比如常见的滚挂。我自认为我不缺少动手能力,这个我有信心能自己解决
  2. arch Linux 丰富的软件源使它能够安装其他发行版Linux无法安装的软件
  3. 丰富的wiki文档,你能遇到的问题几乎都可以在里面找到答案
  4. 最小化安装,arch Linux自身是最精简的系统,几乎精简到不能再精简。因此比起其他发行版本的Linux来说,它提供更高自由度的可配置性。
  5. 安装困难,我一直觉得对于自己专业内的事情,要做就做最困难的,既然它的安装使用最为困难,那我就用它,当彻底征服了这一块内容,带来的成就感是无法比拟的。而且熟悉了它的安装过程,又例如提高对Linux的认识

基于上述几点理由,我开始了漫长的折腾之路

arch Linux 安装

安装主要参考 arch wiki 好在文档大部分都有中文版本,对于英语不好的人来说阅读起来也不会有过多的阻碍

制作U盘启动项

首先去官方指定的镜像站下载安装包,然后使用相应的工作制作U盘启动项,windows上我使用的是rufus、Linux或者mac上直接使用如下命令写入到U盘

sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync

上述命令的含义是制作一个镜像文件,源文件内容保存在if参数所指定的位置,输出到 of 所指定的位置, status=progress 表示现实制作进度, oflag=sync表示以同步的方式写入,即所有数据写入完成命令结束,而不是刚写入就结束

需要注意的是,sdx 是u盘在系统中的命名,一般插入U盘后,在shell上使用fdisk -l可以看到,另外有的U盘可能经过分区,显示出下面还有sdx1、sdx2等分区,要写到sdx,而不是sdx1或者sdx2

将U盘插入待装机的电脑上,进入bios调整启动顺序和安全设施,如果使用uefi方式启动的话,需要调整启动方式为uefi only 而不是 legacy/csm

接下来就可以启动电脑,进入arch Linux的安装界面了

arch linux 安装界面

联网设置

进入到安装界面的第一步需要连接上网络,这里使用 iwctl 进行网络连接配置

iwctl                       #进入交互式命令行
device list                 # 列出设备名,比如无线网卡一般叫做 wlan0
station wlan0 scan          #扫描Wi-Fi
station wlan0 get-networks  #列出扫描到的Wi-Fi名称,例如要连接到esi-0这个Wi-Fi
station wlan0 connect esi-0 #尝试连接,这个时候需要输入密码

成功后就连上互联网了,可以使用 ping archlinux.org 来试试网络是否成功连上

更新系统时间

后续在访问https之类的站点时会验证客户端和服务器的证书和时间的,有时候时间不统一,在访问时可能会报无效的证书之类的错误

使用命令

timedatectl set-ntp true

更新之后可以使用 timedatectl status 检查服务状态

磁盘分区与格式化

根据arch wiki上的说法,采用uefi的启动方式时,至少需要一个boot或者efi 分区作为efi系统分区(大小不能小于280M)、一个根分区。

这里假设硬盘大小为100G,我采用如下的分区方案

  • efi 分区 /efi 1G
  • 根分区 / 40G
  • 用户主目录 /home 剩余全部空间,越大越好

windows 做类比的话,根分区相当于c 盘,主要用来装系统相关的内容,用户分区相当于D盘或者其他盘,用来放用户数据,后续如果系统挂了,重装系统的话,不会破坏用户目录的内容,甚至如果用户目录在其他物理盘上,后面换机器了直接将这块盘挂载到其他机器上,数据直接就能用了

首先将磁盘分区表转化为gpt类型

lsblk                       #显示分区状况
parted /dev/sdx             #执行parted命令, 进行磁盘类型变更
(parted)mktable             #输入mktable 修改磁盘分区表类型
new disk label type? gpt    #输入gpt,修改分区表为gpt类型
quit                        #最后退出parted交互式命令 

接下来使用cfdisk 命令对磁盘进行分区

cfdisk /dev/sdx #使用cfdisd对磁盘进行分区
cfdisk 界面

free space 表示未分区的部分,上下键用来选择区域,左右键用来选择操作

先选择new新建分区,然后输入大小,最后回车,重复几次这个操作,按照之前定义的大小来完成分区

fdisk 完成分区

记得完成之后,将选项调整到wirte 在退出前将分区写入到磁盘。完成之后使用

fdisk -l 

查看分区

分区

接下来格式化磁盘中的各个分区

  • efi 分区格式化为 vfat 格式
  • 根分区和用户分区格式化为 ext4格式
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkfs.vfat /dev/sda1

接下来将磁盘挂在到当前系统的文件目录下,使磁盘能正常被系统访问到

mount /dev/sda2 /mnt
mkdir /mnt/efi
mkdir /mnt/home
mount /dev/sda1 /mnt/efi
mount /dev/sda3 /mnt/home

系统安装

折腾了这么多东西,终于要开始正式安装系统了,arch linux提供了一个脚本用来自动安装系统内核

pacstrap /mnt base base-devel linux linux-firmware

这句命令可以帮助我们将系统所需要的包安装到/mnt 这个目录也就是磁盘上

等待一段时间,安装就完成了,先别着急重启,还有一些内容需要安装

pacstrap /mnt dhcpcd vim sudo networkmanager # dhcpcd networkmanager 是网络相关的软件包,后期缺少可以通过网络下载,联网软件没有的话只能白瞎 

系统自身配置

到这里基本已经完成了安装部分的工作了,接下来要进行的就是重启前的基本配置了

生成磁盘分区的记录文件

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

生成之后可以使用cat或者 vim 之类的命令复查一下生成的是否有误

fstab 文件

接下来切换到新安装的系统上

arch-chroot /mnt

在新系统中先在/etc/hostname中设置主机名,在文件中输入你想要的主机名,例如叫 arch

接下来在文件/etc/hosts中设置与其匹配的条目,可以加入以下内容

127.0.0.1   localhost
::1         localhost
127.0.1.1   arch.localdomain    arch

接着设置时区,在/usr/localtime 下用 /usr 中合适的时区创建符号连接

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

将系统时间同步到硬件时间

hwclock --systohc

接下来进行本地化操作,程序如果需要本地化文件,都需要依赖 locale,它规定了地域、货币、时区日期的格式、字符排列方式和本地化标准。需要在这两个文件中设置 locale.genlocale.conf

编辑 /etc/locale.gen 然后去掉 en_US.UTF-8 UTF-8 和其他需要的地区前的注释,例如作为中文用户可以去掉 zh_CN.UTF-8 UTF-8 以显示中文

编辑完成之后使用如下命令生成 locale

locale-gen

/etc/locale.conf 文件中指定系统使用的语言,这里推荐使用英文,否则在出错的时候可能会出现中文乱码,不便与排错

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

设置root 密码

passwd root

根据cpu的不同,安装对应的微码,以确保处理器能稳定运行

pacman -S intel-ucode   #intel
pacman -S amd-ucode     #amd

安装引导程序

为了能在机器加电之后正常找到Linux所在位置,需要安装引导程序,来引导操作系统的启动。

pacman -S grub efibootmgr # 使用grub做引导程序,efibootmgr 是uefi方式启动需要的
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=arch #将启动项取名为arch 启动类型为efi的64位系统 系统启动位置在 /efi

接下来可以稍微对启动配置做一些修改,编辑 `/etc/default/grub` 文件,去掉 `GRUB_CMDLINE_LINUX_DEFAULT` 一行中最后的 `quit` 参数,同时把`log level` 的数值从3改到5,这样是为了后续如果出现系统错误方便排查。同时加入 `nowatchdog` 参数,这样可以显著提升开关机速度

修改完成之后生成grub所需的配置文件

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

这样就完成了安装

exit
umount -R /mnt
reboot

一切顺利的话,重启之后应该就能进入系统了。

新系统基础配置

网络配置

之前我们下载了与网络相关的两个工具networkmanagerdhcpcd,用来管理网络和dhcp自动分配IP地址

systemctl enable --now NetworkManager # 启动networmmanager服务
nmcli device wifi list # 查看Wi-Fi列表
nmcli device wifi connect ssid password password #连接Wi-Fi,ssid表示Wi-Fi名,后面一个password表示连接wifi的真实密码

网络连接成功之后,使用pacman将系统更新到最新版本

pacman -Syyu

创建非root用户

为了系统安全防止自己某天抽风不小心输入类似 rm -rf / 之类的危险命令,平时最好使用非root登陆。 对于系统操作使用sudo来提升权限

useradd -m -G wheel -s /bin/bash arch

创建一个名为arch的用户,将用户组归属到wheel中,同时创建用户目录, 并且指定shell使用bash

接下来使用 passwd arch 来修改用户密码

由于系统中并没有安装vi,所以默认会使用vi命令的一些命令都会失效。所以需要将 vi 链接到 vim

ln -sf /usr/bin/vim /usr/bin/vi

使用visudo 将文件中 #%whell ALL=(ALL) ALL 这行的注释去掉

使用su arch 将当前用户切换到arch。可以使用命令sudo pacman -Syyu来更新系统,同时测试一下输入用户密码之后能否执行一些root命令

设置交换文件

在桌面环境中,交换分区或文件用来实现休眠(hibernate)的功能,即将当前环境保存在磁盘的交换文件或分区部分。除此之外,某些特定软件需要 swap 才可以正确运行。交换文件与分区性能相同,且交换文件更为灵活,可随时变更大小,增加与删除

dd if=/dev/zero of=swapfile bs=1M count=4096 status=progress #设置4G的交换分区,大小根据系统的实际内存来决定,一般最好略大于物理内存
chmod 600 /swapfile
mkswap /swapfile # 格式化swap文件
swapon /swapfile # 启用swap文件

最后往/etc/fstab中追加如下内容

/swapfile none swap defaults 0 0

开启32位软件库支持与ArchLinuxCN库的支持

为了系统的稳定,官方关闭了32位软件以及aur软件库,但是仅仅只依靠官方源中的软件时不够用的,这里我们要打开这两个库

vim /etc/pacman.conf

去掉[multilib]一节中两行的注释,来开启 32 位库支持。
在文档结尾处加入下面的文字,来开启 ArchLinuxCN 源。

[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
添加这两行

执行 sudo pacman -Syyu 更新pacman数据库

然后需要安装 archlinuxcn-keyring 包以导入 GPG key

sudo pacman -S arhclinuxcn-keyring

有时候因为密钥环的问题,导致这一步安装报错,可以依次执行下面的命令

sudo pacman -syyu
sudo pacman -S haveged
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

然后再重新安装,即可解决问题

最后安装 yay 用来下载archlinuxcn库中的软件

结尾

至此,已经完成了对系统的安装到基础配置,现在已经有了一个基本可用的操作系统了,但是目前系统仍然只有一个基本的黑框框,作为日常使用还远远不足,至少还需要一个桌面环境,后面的博文会陆续介绍我是如何安装并配置一个基本的桌面环境。最后到一个基本可用于日常生活和工作中的操作系统。


你可能感兴趣的:(arch linux 安装)