ArchLinux!冲!

正在用的笔记本是锐龙R5款的联想小新Pro16,GTX1050+16G内存+512G SSD,出厂预装了Windows11家庭版。
本着用什么系统都行的想法,我觉得Windows11就Windows11呗。经过实际的仨月的使用以后,我表示太草了,槽点我都不能简单分点列举,我只能简单挑几个重点:

  1. 预装家庭版不够用,得自己想法子搞成旗舰版
  2. 特效卡得很,可能只需要多开几个Chrome,正常最大最小化窗口的动画效果会变得不如不开,系统动画居然能掉帧
  3. 内存占用太高,我开机什么都没开,这个笔记本开箱的那个时候开机内存占用就49%,我开个IDEA再开个Chrome同时调个前后端,轻则85%起步,重则轻轻松松97%。想再开个postman啥的,想都不要想了
  4. Windows11神奇的系统更新偶尔能把自己更新崩,虽然能撤销更新,但是来个两三次这个问题,我心态多少有点炸
  5. 我个人觉得Windows开发体验确实没有Linux环境方便,比如配置个vim环境,我心态日常随着clang一起崩

所以我决定做个双系统,分出150G硬盘再搞个Linux用吧!
在同学的安利和自己的实验下,我决定这回不用我最常用的Ubuntu了,我试一波ArchLinux。

这里有这些前提:

  1. 我不打游戏,用显卡的活我切回Windows弄
  2. 我不常使用QQ,手机能定时收发消息就OK了
  3. 我主要拿这个本日常写代码用,没有娱乐需求,只有一定的开发需求

所以我直接把自带的GTX1050在BIOS里关了,只用核显,用独显的时候再开。

这篇文章记录一下我折腾的过程

安装ArchLinux

安装过程非常坎坷。我是没有想到2202年了,居然有系统安装的时候没有图形界面的。
我刚开始还在想,装个系统有啥难的,我闭着眼睛都能装,把U盘插进来然后打开的那一刻,我蒙圈了。

但是不得不说,ArchLinux自带的文档确实细致,安装过程虽然需要各种敲指令,但是你只需要跟着官方wiki做就行了,wiki说的非常清楚。
这里简述一下过程,主要是留给自己看。

准备工作

安装ArchLinux的时候,系统会外放发出很响的蜂鸣器效果的8bit声效响声,插着耳机也会外放响,这会在 刚进入安装 和 输错某些东西得到警告 的时候发出,在安装过程中这可能是无法关闭的(我不会关闭)。
如果室友正在睡觉,小心不要被打,注意安排操作的时间不要在室友午休和晚上的时间段,不要在公共场所影响他人。

安装过程需要联网。

首先进入BIOS界面。
进入Windows11/Windows10系统,在系统的设置里,找到更新和安全,在恢复里找到高级启动里面的立即重启按钮,重启后单机UEFI固件设置,就能进入主板BIOS界面了。

在BIOS界面里需要做的有

  1. 关闭安全启动
  2. 把显卡模式改成核显
  3. 修改启动顺序,把U盘调最前面
  4. 关闭快速启动

联想小新Pro16用的是图形BIOS界面,用鼠标直接点就行。启动顺序可以用键盘F5和F6调整上下顺序,注意看BIOS的提示。

然后注意自己的磁盘还剩150G作用的空间,在Windows里把空间留好。
如果有必要的话,还可以在Windows里把一些需要用到的软件下载好,这样在Linux里没有代理的话,可以不用烦恼需要代理首先得先有代理的问题。

进入安装

首先,用Rufus把ArchLinux的ISO文件写U盘里,修改启动顺序打开U盘
进入Grub选选择界面后,用上下键选择画面中第一项 Arch Linux Install Medium (x86_64,UEFI),按回车键。
待加载完成后,进入Live环境。屏幕出现终端提示。
如果出现 root@archiso~#,则成功进入。

下面的顺序基本按照官方wiki的顺序描述

检查是否为UEFI启动

官方这么写了就这样做吧。
实际情况是如果你不刻意去BIOS里动的话,那你应该就是UEFI。

输入

ls /sys/firmware/efi/efivars

如果输出了一堆信息,那就是UEFI。
如果提示这个路径不存在,那就不是UEFI,需要去BIOS里改一下。

联网 (以WIFI为例)

安装过程需要联网。
联想小新Pro16没有网口,所以我们连Wifi,这里写的是Wifi的连接过程。

输入iwctl进入iwd模式。此时终端前面显示[iwd]#

然后查看设备列表,看看我们的无线网卡名字叫啥,应该是wlan0。使用指令

device list

然后扫描wifi。使用指令

station 网卡名 scan

然后查看WiFi列表。使用指令

station 网卡名 get-networks

显示出来的列表是会自己动态刷新的。
在列表中找到你想连接的WiFi后,连接它,使用指令

station 网卡名 connect WIFI名

如果WIFI名有空格,用英文双引号括起来。
输入完后应该会提示需要输入密码,输入后回车即可。

连接完成后,即可退出,输入

exit

退出iwd模式。

可以试着ping一下,看看通不通

ping baidu.com

更新时间

连好网后,因为我们还有Windows,我们系统内的时间会变得不准,需要矫正好,否则后面装东西会有因为时间问题造成的错误。

输入指令更新系统时间,使用指令

timedatectl set-ntp true

然后修改好时区,使用指令

timedatectl set-timezone Asia/Shanghai

然后看看时间对不对

timedatectl status

如果对的话,可以继续。不对的话使用timedatectl --help查看帮助手动修改时间,把它改好。

磁盘分区

然后我们要分一下磁盘分区。

首先查看一下硬盘列表。

fdisk -l

联想小新Pro16应该只有一个硬盘位,所以不出意外硬盘名应该叫nvme0p1,为了以防万一,按照已经装好的Windows的名称找一找是不是这样的。

确认好以后,进入cfdisk工具分区

cfdisk /dev/硬盘名

例如我的硬盘应该是cfdisk /dev/nvme0n1

进入后,用键盘操作分区就可以了。使用New操作划出这些大小的区域。

由于这里我装了Windows11,本来就有一个EFI分区在 nvme0n1p1,这里我要弄双系统,所以我这里没有考虑EFI分区。
如果你打算把Windows删了,啥都不要了,那就把整个硬盘所有分区都删了,然后新创建一个1G大小的分区出来先,接着去分下面我说的三个分区。

下面我假设你划分分区的顺序跟下面我列举的顺序一致。

  1. 32G,这是我未来的根目录,可以弄大点
  2. 16G,这个大小要跟内存大小一致,这是我未来的swap分区。这个分区创建好了以后,选中它,然后在下面的Type选项卡,把它改成swap分区
  3. 100G,这是未来我的/home挂载点,存用户数据的地方

记住我创建的这几个分区的名字,这里我假设EFI分区叫/dev/nvme0n1p1,根目录叫/dev/nvme0n1p7,swap叫/dev/nvme0n1p8/home/dev/nvme0n1p9,write以后退出cfdisk。

接下来格式化并挂载它们。

如果你不打算要别的系统了,先创建了1G大小的EFI分区,那你先输入这个,不是的话不要输入这个

mkfs.fat -F32 /dev/nvme0n1p1

接着格式化其他三个分区:

mkfs.ext4 /dev/nvme0n1p7
mkswap /dev/nvme0n1p8
swapon /dev/nvme0n1p8
mkfs.ext4 /dev/nvme0n1p9

我这里喜欢ext4,所以格式化成了ext4,如果你喜欢btrfs可以按需更改。

然后挂载它们。

mount /dev/nvme0n1p7 /mnt
mkdir /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi
mkdir /mnt/home
mount /dev/nvme0n1p9 /mnt/home

下载必要的包

这里我是把这些文章揉起来结合wiki配的
https://zhuanlan.zhihu.com/p/433920079
https://zhuanlan.zhihu.com/p/113615452

ArchLinux默认是啥也没有的,啥都需要我们自己弄好先。

pacstrap /mnt base linux linux-firmware base-devel
genfstab -U /mnt >> /mnt/etc/fstab

进入到我们安装的系统

arch-chroot /mnt

然后安装必要的软件,这里我在网上把它们的教程综合了一下,不一定是最优解。

pacman -S sudo vim iwd networkmanager bluez

可以装个dejavu字体

pacman -S ttf-dejavu

基本配置的设置

调一下时间时区
刚才调的是Live环境的,不是我们装的系统

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

设置一下语言。
用vim修改/etc/locale.gen

vim /etc/locale.gen

i键,下方显示INSERT时即进入到了输入模式。
使用上下左右键移动光标到en_US.UTF-8zh_CN.UTF-8之前,把#删了。
修改完毕后,按Esc键,直接输入:wq,保存并退出。

然后应用一下配置。

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

然后设置一下root密码,后面要用到

passwd

然后设置一下主机名,给自己笔记本起个名,要纯英文。
需要记住,后面要用。

echo 名字 >> /etc/hostname

然后设置一下hosts

vim /etc/hosts

然后使用vim加入这些内容:

127.0.0.1 localhost
::1 localhost
127.0.1.1 主机名.localdomain 主机名

注意上面的内容第三行有两个空格,不要漏掉空格,第二行是两个冒号

安装与配置Grub引导

依次输入

pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=ArchLinux
grub-mkconfig -o /boot/grub/grub.cfg

完成后关机

shutdown -r now

我的笔记本ArchLinux的重启有一定概率会开机后死掉,我表示我自己尽可能避免重启,而是使用关机开机代替。

首次开机的配置

这里我是按这篇文章的顺序配的
https://zhuanlan.zhihu.com/p/478075538

拔掉U盘开机,又回到了终端里。登录用root账号,密码上面已经配置。

先配置网络服务

systemctl start iwd.service
systemctl enable iwd.service
systemctl start systemd-resolved.service
systemctl enable systemd-resolved.service
systemctl enable NetworkManager

开启蓝牙服务

systemctl enable bluetooth.service

然后用vim编辑/etc/iwd/main.conf,加入这些内容:

[General]
EnableNetworkConfiguration=true
NameResolvingService=systemd

用vim编辑/etc/NetworkManager/NetWorkManager.conf,加入这些内容:

[device]
wifi.backend=iwd

关机重开机,按照上面提到的连wifi的方法联网。

安装xorg

pacman -S xorg

然后装显卡驱动,我用了GTX1050,所以装的是NVIDIA的。

pacman -S mesa nvidia nvidia-settings

然后安装CPU解码,我是锐龙的CPU,所以装了amd的。

pacman -S amd-ucode

然后安装桌面,我这里跟网上大多数教程一样,装plasma,终端我最爱的konsole。

pacman -S plasma
pacman -S konsole
pacman -S libdbusmenu-glib
systemctl enable sddm

配置声音

pacman -S alsa-utils pulseaudio pulseaudio-alsa pulseaudio-bluetooth

然后vim编辑vim /etc/modprobe.d/disable_dmic.conf,加入这些:

options snd_hda_intel dmic_detect=0

创建用户并赋予权限

useradd -m -G wheel -s /bin/bash 用户名
passwd 用户名

设置好密码后,用vim编辑/etc/sudoers,在

root ALL=(ALL:ALL) ALL

的下面按照这个格式写一行

你的用户名 ALL=(ALL:ALL) ALL

保存。

此时安装配置完毕,关机重开机即可进入系统图形界面。

进一步的配置

我根据我的实际需要做了这些配置。

Ctrl+Alt+T能打开终端。

装yay

装yay能使用aur源

sudo pacman -S yay

安装Dophin

默认没有文件管理器这种东西,我们可以用Dophin来当文件管理器
也不能说没有,但是自带的Konqueror我觉得算是个不太好用的浏览器,只不过它确实能直接管理文件,我觉得不太好用

sudo pacman -S dophin

挂载NTFS

在开始准备的时候,我先在Windows的盘里准备了一些东西,比如代理软件。
但是很显然,那个磁盘是NTFS的,所以需要挂载一个NTFS的磁盘。

终端安装

sudo pacman -S pmount ntfs-3g

然后就可以在Dophin里直接挂载NTFS磁盘了。

配置休眠(Hibernate)

休眠(Hibernate)时,系统内存的数据会写入硬盘,然后断电。
如果使用这个功能,必须要手动配置,否则他会自己把自己睡死,醒不过来了就。

用vim编辑/etc/default/grub,找到GRUB_CMDLINE_LINX_DEFAULT,把resume添加进去

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=enable resume=/dev/nvme0n1p8"

这里的nvme0n1p8根据实际情况填写,具体看上面分的swap区叫什么。
忘了的话用fdisk -l查一下。

然后更新一下grub

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

配置一下initramfs的钩子。用vim编辑/etc/mkinitcpio.conf,添加resume,就像这样:

HOOKS="base udev resume autodetect modconf block filesystems keyboard fsck"

要保证resumefilesystem之前,在base之后。如果有lvm,要在lvm之后。

重生成initramfs镜像

mkinitcpio -p linux

然后用vim在/etc/systemd/logind.conf里修改一些电源配置。比如

HandleLidSwitch=hibernate

表示合上笔记本盖子就休眠,我个人觉得suspend比较合适,要不然恢复太慢了。其他设置酌情配置,建议都检查一下。

然后试试看,看看笔记本各种情况下会不会睡死无法唤醒。

截图

我用的是Flameshot。

sudo pacman -S flameshot

连接iPhone上网

安卓手机不需要做这个,开热点就能上网了,这里指的是ios设备。
我使用蓝牙上网,手机是iPhone12,系统是ios15。

首先需要配置手机的APN,百度iphone APN配置了解配置方法。
然后安装libimobiledevice

sudo pacman -S libimobiledevice

然后安装blueman-manager

sudo pacman -S blueman-manager

然后用蓝牙连接手机,笔记本蓝牙和手机配对,手机开启个人热点。
通过左下角菜单搜索可以找到Bluetooth Manager,打开就能看到Bluetooth Devices窗口,电脑连接手机,这个窗口里右击手机,点击Network Access Point

这个过程需要多次试验,因为有点难弄。

配置vim

配置的过程网上太多了,略。

我用的是neovim,配置完了以后我把vim卸了,直接设置了alias把vim指令绑给了nvim,敲vim就是nvim了,很好用。

上一篇
下一篇