正在用的笔记本是锐龙R5款的联想小新Pro16,GTX1050+16G内存+512G SSD,出厂预装了Windows11家庭版。
本着用什么系统都行的想法,我觉得Windows11就Windows11呗。经过实际的仨月的使用以后,我表示太草了,槽点我都不能简单分点列举,我只能简单挑几个重点:
- 预装家庭版不够用,得自己想法子搞成旗舰版
- 特效卡得很,可能只需要多开几个Chrome,正常最大最小化窗口的动画效果会变得不如不开,系统动画居然能掉帧
- 内存占用太高,我开机什么都没开,这个笔记本开箱的那个时候开机内存占用就49%,我开个IDEA再开个Chrome同时调个前后端,轻则85%起步,重则轻轻松松97%。想再开个postman啥的,想都不要想了
- Windows11神奇的系统更新偶尔能把自己更新崩,虽然能撤销更新,但是来个两三次这个问题,我心态多少有点炸
- 我个人觉得Windows开发体验确实没有Linux环境方便,比如配置个vim环境,我心态日常随着clang一起崩
所以我决定做个双系统,分出150G硬盘再搞个Linux用吧!
在同学的安利和自己的实验下,我决定这回不用我最常用的Ubuntu了,我试一波ArchLinux。
这里有这些前提:
- 我不打游戏,用显卡的活我切回Windows弄
- 我不常使用QQ,手机能定时收发消息就OK了
- 我主要拿这个本日常写代码用,没有娱乐需求,只有一定的开发需求
所以我直接把自带的GTX1050在BIOS里关了,只用核显,用独显的时候再开。
这篇文章记录一下我折腾的过程
安装ArchLinux
安装过程非常坎坷。我是没有想到2202年了,居然有系统安装的时候没有图形界面的。
我刚开始还在想,装个系统有啥难的,我闭着眼睛都能装,把U盘插进来然后打开的那一刻,我蒙圈了。
但是不得不说,ArchLinux自带的文档确实细致,安装过程虽然需要各种敲指令,但是你只需要跟着官方wiki做就行了,wiki说的非常清楚。
这里简述一下过程,主要是留给自己看。
准备工作
安装ArchLinux的时候,系统会外放发出很响的蜂鸣器效果的8bit声效响声,插着耳机也会外放响,这会在 刚进入安装 和 输错某些东西得到警告 的时候发出,在安装过程中这可能是无法关闭的(我不会关闭)。
如果室友正在睡觉,小心不要被打,注意安排操作的时间不要在室友午休和晚上的时间段,不要在公共场所影响他人。
安装过程需要联网。
首先进入BIOS界面。
进入Windows11/Windows10系统,在系统的设置里,找到更新和安全,在恢复里找到高级启动里面的立即重启按钮,重启后单机UEFI固件设置,就能进入主板BIOS界面了。
在BIOS界面里需要做的有:
- 关闭安全启动
- 把显卡模式改成核显
- 修改启动顺序,把U盘调最前面
- 关闭快速启动
联想小新Pro16用的是图形BIOS界面,用鼠标直接点就行。启动顺序可以用键盘F5和F6调整上下顺序,注意看BIOS的提示。
然后注意自己的磁盘还剩150G作用的空间,在Windows里把空间留好。
如果有必要的话,还可以在Windows里把一些需要用到的软件下载好,这样在Linux里没有代理的话,可以不用烦恼需要代理首先得先有代理的问题。
进入安装
首先,用Rufus把ArchLinux的ISO文件写U盘里,修改启动顺序打开U盘。
进入Grub选选择界面后,用上下键选择画面中第一项 Arch Linux Install Medium (x86_64,UEFI)
,按回车键。
待加载完成后,进入Live环境。屏幕出现终端提示。
如果出现 [email protected]~#
,则成功进入。
下面的顺序基本按照官方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大小的分区出来先,接着去分下面我说的三个分区。
下面我假设你划分分区的顺序跟下面我列举的顺序一致。
- 32G,这是我未来的根目录,可以弄大点
- 16G,这个大小要跟内存大小一致,这是我未来的swap分区。这个分区创建好了以后,选中它,然后在下面的
Type
选项卡,把它改成swap
分区 - 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-8
和zh_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"
要保证resume
在filesystem
之前,在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
了,很好用。