Arch Linux 安装

Arch Linux的配置和使用

好像是上研究生,开始学习Python就转投了Arch邪教,也是因为它比较简单把,感觉pacman还是要比apt更适合我这种小白一点,也是从一开是的WSL 1.0 一直用到现在,偶尔也会给笔记本装成Arch,这里就简单记录一些Arch的配置和使用习惯。

安装

本次安装记录,主要从一开始的iso安装,到后续惯用软件的安装等。参考了一些安装教程,由于是自己使用记录,不做过多的命令解释,把一些可以连续执行的命令放在一起,方便Copy&Paste (尤其是打开iso的sshd,直接在另一台电脑上Copy&Paste,别提有多快了)。

基础安装

这一节主要覆盖在archiso中安装tui系统,引导生成等:

systemctl stop reflector.service
iwctl
station wlan0 connecct wifi-name
exit
timedatectl set-ntp true
timedatectl status
lsblk # 确认系统盘
cfdisk /dev/nvme0n1
# 通过TUI划分分区的时候,boot分区的类型选择为efi(最好将eif分区搞大点,生成的initrams还是挺大的,600M仅能安装2给内核)
# swap分区,更偏好通过zram来配置

fdisk -l
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.ext4 /dev/nvme0n1p2

mount /dev/nvme0n1p2 /mnt
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
# 尽管安装指南上说不建议现在自定义内核,但是尝试后这里直接安装zen内核似乎也没影响
# 这里选择了安装headers,为了方便后面安装dkms内核和nvidia显卡驱动安装
pacstrap /mnt base base-devel linux-zen linux-zen-headers linux-firmware

pacstrap /mnt networkmanager vim sudo zsh zsh-completions

genfstab -U /mnt > /mnt/etc/fstab
cat /mnt/etc/fstab
arch-chroot /mnt
vim /etc/hostname

vim /etc/hosts
127.0.0.1   localhost
::1         localhost
127.0.1.1   myarch.localdomain myarch
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

vim /etc/locale.gen
# 取消en_US.UTF-8和zh_CN.UTF-8
locale-gen
echo 'LANG=en_US.UTF-8'  > /etc/locale.conf

passwd root

pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch
vim /etc/default/grub
# 可选,在GRUB_CMDLINE_LINUX_DEFAULT中去掉quiet,加入nowatchdog和loglevel=5
grub-mkconfig -o /boot/grub/grub.cfg
umount -R /mnt
reboot

桌面环境的安装

这一节主要覆盖GUI环境安装,这里选择了默认的KDE+PLASMA 6,以及WAYLAND协议(不得不说,NVIDIA虽然在进步,但是想正常使用WAYLAND还是有点困难的,也催生了这篇记录)

# 有线DHCP的话,已经能自动获取IP联网了
systemctl enable --now NetworkManager
# 要是用无线WIFI的话,更推荐使用nmtui进行交互式连接WIFI
nmtui
useradd -m -G wheel -s /bin/bash myusername
passwd myusername
# 给予sudo权限
EDITOR=vim visudo
# 去掉 #%wheel ALL=(ALL:ALL) ALL 行前的注释
vim /etc/pacman.conf
# 去掉[multilib]一节的注释,最好也去掉Color那一行注释,开始不同颜色,方便观察

# 添加ArchlinuxCN
# pacman.conf
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch 
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch 
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch 
Server = https://repo.huaweicloud.com/archlinuxcn/$arch 

pacman -S archlinuxcn-keyring
# pacman -S plasma
pacman -S plasma-meta konsole dolphin
# Wayland还需要以下
pacman -S plasma-workspace xdg-desktop-portal egl-wayland xdg-desktop-portal xdg-desktop-portal-kde

# 直接启动显示管理器
systemctl enable --now sddm
# 具体每个软件的功能作用,请参考安装教程
sudo pacman -Sy --needed sof-firmware alsa-firmware alsa-ucm-conf ntfs-3g adobe-source-han-serif-cn-fonts wqy-zenhei noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ark packagekit-qt6 packagekit appstream-qt appstream gwenview

# 常用的工具
sudo pacman -Sy --needed tree ncdu fastfetch bat neovim
sudo pacman -S --needed fcitx5-im fcitx5-chinese-addons

sudo pacman -Sy fcitx5-rime archlinuxcn/rime-ice-git

mkdir ~/.config/environment.d/
echo 'XMODIFIERS=@im=fcitx' > ~/.config/environment.d/im.conf
sudo systemctl enable --now bluetooth

软件配置

下面主要介绍一些常用软件的配置。

# 虽然想把所有图形放dGPU上,但是似乎还是需要安装iGPU驱动
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel
# 选择dkms的驱动,便于修改Linux内核
sudo pacman -S nvidia-dkms nvidia-settings lib32-nvidia-utils 
# 应该还要安装prime
sudo pacman -S nvidia-prime

# 下面应该是主要内容了
sudo vim /etc/environment

GBM_BACKEND=nvidia-drm  
__GLX_VENDOR_LIBRARY_NAME="nvidia"  
QT_QPA_PLATFORM="wayland;xcb"  
# 这个应该是核心,且注意/dev/dri下的card号,可能会变动。[[BUG] Nvidia mode not fully working in Wayland](https://github.com/bayasdev/envycontrol/issues/178#issuecomment-2297637467)
KWIN_DRM_DEVICES=/dev/dri/card1:/dev/dri/card2  
__VK_LAYER_NV_optimus="NVIDIA_only"  
__NV_PRIME_RENDER_OFFLOAD=1  
LIBVA_DRIVER_NAME=nvidia  
#MESA_LOADER_DRIVER_OVERRIDE=nvidia  

# for firefox hard acceleration  
MOZ_DISABLE_RDD_SANDBOX=1
git clone --bare git@github.com:valleyUp/dotfiles.git $HOME/.gavin
alias gavin="git --git-dir=$HOME/.gavin --work-tree=$HOME"
# 应该会有2个文件冲突,懒得merge,直接删除原始文件即可
gavin checkout
# 安装zsh
sudo pacman -Sy --needed zsh
# 安装一些pesudo依赖
sudo pacman -Sy autojump
paru -Sy env-modules miniforge
# not activate conda env
# conda create -n dev -c conda-forge python=3

# 安装Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 恢复zsh的插件
bash ~/.local/bin/zsh_configuration.sh
mv .zshrc.pre-oh-my-zsh .zshrc
sudo pacman -Sy --needed openssh ncdu less tree neovim rsync fastfetch bat kate bind curl wget dog htop nvtop strace the_silver_searcher jq pigz tmux fzf git-delta
sudo pacman -Sy --needed gtk4 tk 
sudo pacman -Sy --needed git-lfs
sudo pacman -Sy --needed base-devel cmake ninja rust clang llvm gcc-fortran
sudo pacman -Sy --needed gcc13 gcc13-fortran gcc13-libs qemu-full
sudo pacman -Sy --needed nodejs npm yarn
sudo pacman -Sy --needed plantuml-ascii-math plantuml gnuplot graphviz pandoc imagemagick 
sudo pacman -Sy --needed docker docker-buildx dive docker-compose
paru -Sy lazydocker
sudo pacman -Sy --needed ntfs-3g
sudo pacman -Sy --needed adobe-source-han-serif-cn-fonts wqy-zenhei
sudo pacman -Sy --needed noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
sudo pacman -Sy --needed texlive perl-tk biber
sudo pacman -Sy --needed unzip zip ark p7zip unrar unarchiver lzop lrzip 

XRDP的配置

Troubleshouting

F区失灵

迈从K99F区修复