折腾记录之ArchLinux
折腾记录之ArchLinux
我知道终有一天我会再也忍受不了Windows,那时linux就是我唯一的选择。调研了众多发行版后,我决定把Arch用作日常使用。但是相比于debian系,Arch的门槛高了非常多,尤其是它臭名昭著的滚挂现象。所以我不可能直接切换到Arch环境,而是要经历一段时间的适应。正好,上个月实验室给了我一台ThinkPad老爷机,现在它作为ubuntu服务器的使命已经结束,正好被我拿来当作过渡机适应Arch。
我将从安装系统开始逐一记录使用Arch时碰到的一切问题,以作完全切换系统后的参考。
前期准备
网络
Arch安装时可以用命令行连接wifi,而不必像ubuntu那样用网线供网。所以只要用电脑开个2.4G热点即可(前提是带无线网卡)。
安装设备
实验室发给我的电脑是一台带1T ssd和16g 内存,4代i3,甚至还带一个光驱的联想G50,生产日期是2014年4月14号,那时候我才小学四年级。它还有一张n卡,这正好让我用来练习配置n卡支持。
制作安装盘
ArchLinux是滚动更新的,所以不存在下载老版本这一说,在镜像站直接下最新的用rufus默认参数烧录即可。
安装系统
这部分全程只要参考官方教程即可,但是有些教程中没说明白或者会报错的地方我会在下面列出解决方式。
联网
Fn+F2进入bios,调整u盘为最高启动优先级,启动后进入安装环境。此时可以开始联网。官方教程给了如下命令:
iwctl # 进入交互式命令行
device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出所有 wifi 网络
station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可
exit # 连接成功后退出当执行device list后,无线网卡的power一栏有可能显示的是off,就是无线网卡被软件禁用了。先退出,然后输入一个rfkill unblock wifi即可解禁(参考这篇文章),然后就能正常联网了。
磁盘分区
当输入 lsblk 查看分区时,有概率会遇到某个sda分区已经被占用的情况,这是因为电脑里之前安装过系统并手动分配过分区(我这里是ubuntu server),此时如果按教程执行格式化操作,会遇到一个报错:
Partitions 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change这时候只要强制重启即可,不过之前的操作都要重来一遍了。重启之后在lsblk就会发现被占用的分区已经没了。
官方教程有点乱,其实打开cfdisk后,只需要创建三个分区:
- EFI,给512M,类型选择EFI System;
- swap分区,大小是内存的一半,这里我给8G,类型选Linux Swap;
- 主文件系统,剩余全分配,类型默认Linux filesystem。
格式化
格式化时,按lsblk显示的分区号为准,不要照抄教程,例如EFI分区在/dev/sda1,swap在2,主分区在/dev/sda3,那格式化时:
mkfs.vfat /dev/sda1
mkswap /dev/sda2
mkfs.btrfs -L myArch /dev/sda3挂载
挂载命令也以分区号为准,而且一定要按顺序:
mount -t btrfs -o subvol=/@,compress=zstd /dev/sda3 /mnt # 挂载 / 目录
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda3 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot # 创建 /boot 目录
mount /dev/sda1 /mnt/boot # 挂载 /boot 目录
swapon /dev/sda2 # 挂载交换分区每一步挂载后都要df -h查一下挂上去没有。
安装微码报错
这一步我遇到了:
error: file not found: /etc/vconsole.conf这是因为vconsole因为种种原因未能自动生成,手动创建一个即可:
echo "#KEYMAP=us" > /etc/vconsole.conf安装dwm窗管
按这个教程安装,后续又参考了很多别的帖子做了如下的自定义:
开机自启
这里无需额外配置。如果按教程一步步做下来,登录后输入startx就会进入桌面环境。我不建议用脚本自动进,因为很多时候我还是只希望使用黑框系统。
修改st字体
刚装上的时候终端模拟器里的字体都是粘连的,根本没法看,改成Source Code Pro:
安装字体库:
sudo pacman -S adobe-source-code-pro-fonts用 fc-list 可以查看所有字体。
找到st根目录,删除 config.h,在 config.def.h 里找到 static char *font ,把默认值Liberation Mono修改为Source Code Pro,字体大小pixelsize修改为13。删除config.h,重新编译安装:
sudo make clean install重启终端就会发现修改已经生效了。
补丁部分
st的补丁其实就是可以往里加额外功能或者修改东西的,可以理解为对自定义行为的封装文件,而无需手动修改源码。
半透明终端
在st官方补丁下载最新的补丁文件,可以直接curl:
curl -o st-alpha-patch.diff "https://st.suckless.org/patches/alpha/st-alpha-20240814-a0274bc.diff"然后在st根目录下使用
patch -p1 < path/to/patch.diff添加补丁。每次添加后都要重新编译。注意,使用透明终端模拟器,需要额外安装一个picom,并用picom &启动。这个命令必须添加到.xinitrc里,如果在图形界面手动启动,一旦关闭终端就失效了。
如果要撤销补丁:
patch -R < path/to/patch.diff添加时要加在 exec dwm 这一行之前。
屏幕滚动
st默认不能往回滚动,这就很难受。这个补丁的下载命令是:
curl -o st-scrollback-patch.diff "https://st.suckless.org/patches/scrollback/st-scrollback-0.9.2.diff"像上面一样操作。安装完后在st通过shift+PgUp和shift+PgDn来实现屏幕滚动。
占满屏幕
仔细看会注意到,st终端会在底下留一条边。我猜这是给副状态栏预留的位置,但是如果用不上就会很难看。通过这个补丁使st占满屏幕:
curl -o st-fullscreen-patch.diff "https://st.suckless.org/patches/anysize/st-anysize-20220718-baa9357.diff"换壁纸
前面的流程中已经安装了deh,壁纸这一块是由它管理的。在.xinitrc中,搜索deh,把后面图片的链接改成想要的就行。
顶栏设置
项目设置
顶栏默认显示的信息只有dwm版本,如果想自定义显示信息,可以用slstatus。选它是因为它也是suckless做的,编译安装比较简单。
git clone https://git.suckless.org/slstatus下载后编译安装。安装后根目录下会多出一个slstatus程序,需要添加到.xinitrc。注意,在添加时要加上&使其在后台运行,否则会阻塞dwm启动。
打开源码目录下的config.def.h,按注释添加自定义显示即可,里面注释写得很清楚。我的自定义配置是:
static const struct arg aegs[] = {
{ battery_perc, "Battery %s%|", "BAT0" },
{ ipv4, "%s|", "wlp2s0" },
{ ram_perc, "RAM %s%|", NULL},
{ cpu_perc, "CPU %s%|", NULL},
{ datetime, "%s", "%F %T"}
};在最新版本中分隔符函数被删除了,如果想做分隔效果直接在字符串里加个竖线就行。
顶栏颜色
默认情况下,顶栏是蓝+深灰,这显然不好看。dwm源码目录下的config.dev.h中有地方可以改颜色,这里我参考这篇文章自定义nord色系。
dwm常用快捷键
| 默认按键 | 我的按键 | 实现功能 |
|---|---|---|
| [Shift]+[Mod]+[Enter] | [Mod]+[Enter] | 打开终端 |
| [Mod]+[b] | [Mod]+[b] | 打开/关闭状态栏 |
| [Mod]+[p] | [Mod]+[r] | 启动运行对话框 |
| [Mod]+[Enter] | [Mod]+[Space] | 使窗口在主窗口和栈窗口间切换 |
| [Mod] + [j / k] | [Mod] + [j / k] | 选择上一下或下一个窗口 |
| [Mod] + [h / l] | [Mod] + [h / l] | 加大或缩小当前窗口显示范围 |
| [Mod]+[2] | [Mod]+[2] | 切换到2号标签 |
| [Shift]+[Mod]+[2] | [Shift]+[Mod]+[2] | 将当前窗口放到2号标签 |
| [Mod] + [i / d] | [Mod] + [i / d] | 增加或减少主窗口的窗口个数 |
| [Mod] + [, / .] | [Mod] + [, / .] | 多屏幕间切换 |
| [Shift]+[Mod]+[, / .] | [Shift]+[Mod]+[, / .] | 将当前窗口放到另一个屏幕上 |
| [Mod]+[0] | [Mod]+[0] | 在当前屏幕上显示所有窗口 |
| [Shift]+[Mod]+[0] | [Shift]+[Mod]+[0] | 将当前窗口放到所有标签 |
| [Shift]+[Mod]+[c] | [Mod]+[q] | 关闭当前窗口 |
| [Shift]+[Mod]+[q] | [Shift]+[Mod]+[q] | 退出桌面环境 |
| [Mod]+[t] | [Mod]+[t] | 使用默认的平铺模式 |
| [Mod]+[f] | [Mod]+[f] | 使用浮动模式 |
| [Mod]+[m] | [Shift]+[Mod]+[Space] | 使当前窗口全屏 |
| 下面是有关浮动模式的快捷键 | 我不用浮动模式,所以都没有自定义设置,甚至是覆盖了它们的按键 | |
| 调整浮动窗口大小 | ||
| [Mod]+[L M B] | 移动浮动窗口 | |
| [Mod]+[Space] | 切换布局模式 | |
| [Mod]+[R M B] | 让窗口浮动 | |
| [Mod]+[M M B] | 让窗口不要浮动了 |
建议的系统配置
打开22端口
安装ssh服务:
pacman -S openssh设置开机自启和立即启动:
systemctl enable sshd.service
systemctl start sshd.service修改/etc/ssh/sshd_config中的PermitRootLogin yes 可配置允许root登录。
从内核禁用蜂鸣器
默认状态下如果你做了无法达成的操作,系统会调蜂鸣器哔巨大的一声,非常吓人且讨厌。将 /etc/inputrc 中解除注释\# set bell-style none并把none改成off,重启即可。以后在启动时就不会编译这部分代码。
浏览器
安装火狐浏览器:
sudo pacman -S firefox安装好后按Alt+P,输入firefox,Enter,用dmenu启动。如果有乱码,使用以下命令安装所有字体:
sudo pacman -S ttf-dejavu ttf-droid ttf-hack ttf-font-awesome otf-font-awesome ttf-lato ttf-liberation ttf-linux-libertine ttf-opensans ttf-roboto ttf-ubuntu-font-family
sudo pacman -S ttf-hannom noto-fonts noto-fonts-extra noto-fonts-emoji noto-fonts-cjk
sudo pacman -S adobe-source-code-pro-fonts adobe-source-sans-fonts adobe-source-serif-fonts adobe-source-han-sans-cn-fonts adobe-source-han-sans-hk-fonts adobe-source-han-sans-tw-fonts adobe-source-han-serif-cn-fonts
sudo pacman -S wqy-zenhei wqy-microhei就算不使用浏览器,也建议把这些字体装上,以免关键时刻出乱码。
vscode
在这个系统下是否还有必要使用vsc尚存疑,对一个熟练使用vim且追求极致低功耗、便携性的使用者(不是我),完全可以直接在st中用vim编辑并调试代码。不过,我想日后把它当作主力机来用,还是需要一个编辑器的。要安装vscode,要先装yay。yay是一个aur包管理器,
git clone https://aur.archlinux.org/yay.git
sd yay
makepkg -si
yay --version编译时需要从github拉东西,这一步之前要先export一个代理。
使用yay安装vsc官方版本:
yay -S visual-studio-code-bin注意,尽量不要直接用 pacman -S code 安装oss版,非官方版不能使用插件市场,需要单独安装。而安装插件市场又需要yay,所以不如一开始就装yay然后用官版。
安装完成后终端打code或者用dmenu启动。
防滚挂的好习惯
============ 开机必滚 ============
sudo pacman -Syu系统备份
待更新
关于软件包和系统
待更新
