如果是全新安装双系统,个人建议还是先安装linux部分再安装windows,因为这样可以直接调整efi分区大小,如果先安装windows系统就会出现efi分区只有100M的情况,对于动辄几十兆的linux内核来说属实是不够的,还需要进PE系统使用diskgeniues之类的工具重建efi,有可能会导致无法启动。
Archlinux安装
首先是使用rufus刻录到U盘,直接使用默认的配置dd写入即可,如果使用ventoy的方式安装的话可能会出现找不到init导致安装无法进行。
连接网络并同步时间
输入iwctl进入 iwd 的控制台, 然后依次键入如下命令:
device list # 列出可用无线网卡, 我这里输出的是 wlan0
station wlan0 scan # 扫描附近的无线网络
station wlan0 get-networks # 列出扫描到的网络
station wlan0 connect {SSID} # 连接指定网络, 这里我连的是手机热点
exit # 退出 iwd 控制台
然后, 输入 ping www.baidu.com 测试是否成功联网.
联网后, 输入如下命令设置时间为 UTC 并完成 NTP 时间同步:
hwclock --systohc --utc # 设置时间为 UTC
timedatectl set-ntp true # 完成 NTP 时间同步
使用SSH执行安装
ip -brief address # 查询IP地址
passwd # 修改密码
之后就在其他电脑上用ssh客户端连接root@ip:22,密码就是passwd的密码。因为gpd win mini的键盘实在太小了,避免误操作~~(其实是方便ctrl+c和ctrl+v)~~。
分区
我仅保证基础的系统运行需求,只配置了:
EFI 600M
SWAP 8G
ROOT Linux root (x86-64)
如果有把home单独分开的习惯另行建立一个linuxfilesystem的分区就行了,但我不需要。
fdisk -l # 查看硬盘和分区目录,机器上配置单块nvme,显示为nvme0n1
cfdisk /dev/nvme0n1 # 使用cfdisk进行分区操作,操作简单
fdisk -l # 查看硬盘和分区目录是否配置生效
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1230847 1228800 600M EFI System
/dev/nvme0n1p2 1230848 18008063 16777216 8G Linux swap
/dev/nvme0n1p3 18008064 353552383 335544320 160G Linux root (x86-64)
mkfs.vfat -F32 /dev/nvme0n1p1 # 格式化efi分区为fat32
mkswap /dev/nvme0n1p2 # 配置swap分区
mkfs.ext4 /dev/nvme0n1p3 # 格式化root为ext4,如果使用其他格式另说
mount /dev/nvme0n1p3 /mnt # 挂载root分区到/mnt
mkdir -p /mnt/boot # 在root分区下新建boot文件夹用于挂载efi分区
mount /dev/nvme0n1p1 /mnt/boot # 挂载efi分区到/boot目录
swapon /dev/nvme0n1p2 # 启用swap分区
安装基本系统
安装基础软件并配置fstab挂载
curl -L -o /etc/pacman.d/mirrorlist "https://archlinux.org/mirrorlist/?country=CN" # 抓取archlinux.org上的mirrorlist文件保存本地
nano /etc/pacman.d/mirrorlist # 该文件包含基本上国内所有活跃的源,删掉前面的#即可,一般留个三四个https开头的就行了
pacman -Syy # 更新索引
export LANG=C #避免乱码
pacstrap /mnt base linux linux-firmware bash-completion e2fsprogs nano networkmanager pacman-contrib sudo amd-ucode intel-ucode sof-firmware #安装基础软件,实体机器安装时根据cpu安装 amd-ucode或intel-ucode,一起安装也没事就是了
genfstab -U /mnt >> /mnt/etc/fstab # 生成fstab文件
arch-chroot /mnt # 切换到新系统
系统初始化设置
主要是一些时区、hostname、语言、新建用户等基础设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 修改时区为上海
hwclock --systohc # 系统时间同步到硬件时钟
echo miniarch > /etc/hostname # 修改hostname,这里和下一步相关联
nano /etc/hosts #编 辑host解析
127.0.0.1 localhost
::1 localhost
127.0.0.1 miniarch # 添加ipv4解析到hostname
::1 miniarch # 添加ipv6解析到hostname
nano /etc/locale.gen # 修改多语言设置,建议使用en_US.UTF-8和zh_CN.UTF-8
locale-gen # 使多语言设置文件生效
echo LANG=en_US.UTF-8 > /etc/locale.conf # 设置默认语言,使用en_US.UTF-8是避免显示乱码
SUDO_EDITOR=nano visudo # 修改sudo设置,把%wheel ALL=(ALL) ALL前面的#删掉
useradd -m -G wheel -s /bin/bash admin # 增加新用户并添加到wheel组
passwd admin # 修改新用户密码
pacman -S grub # 安装grub
pacman -S grub efibootmgr os-prober # 安装用于多系统的配套软件
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck # 在grub增加一个efi分区指向boot目录的启动项
echo "GRUB_DISABLE_OS_PROBER=false" >> /etc/default/grub # 启用os-prober
grub-mkconfig -o /boot/grub/grub.cfg # 生成grub配置
配置基础功能
图形化界面和字体、基础软件的安装和配套设置
pacman -S --noconfirm plasma sddm konsole noto-fonts noto-fonts-cjk noto-fonts-emoji openssh dhcpcd # 安装kde+plasma+基础字体+openssh+dhcp
pacman -S --asdeps gst-plugins-good power-profiles-daemon # 补齐配套软件,power-profiles-daemon用于管理电源配置
systemctl enable NetworkManager # 启用NetworkManager
systemctl enable sddm # 启用sddm
systemctl enable sshd # 启用ssh
systemctl disable NetworkManager-wait-online # 服务用于确保网络连接在启动过程中达到“在线”状态后,才允许依赖网络的其他服务启动,没必要使用。
timedatectl set-ntp true # 启用ntp
systemctl enable systemd-resolved # 启用本地解析
systemctl enable dhcpcd # 启用dhcp
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf # 可能会提示已经做过链接了
exit # 退出当前环境
umount -R /mnt # 卸载/mnt和/mnt/boot
reboot # 重启系统
重启后就可以使用图形界面登录了。
进入系统后一些设置
安装完系统后依旧可以使用ssh远程操作,如果需要修改ssh配置就修改/etc/ssh/sshd_config。
安装输入法
sudo pacman -S fcitx5-im fcitx5-chinese-addons # 安装输入法
sudo nano /etc/environment #配置使用输入法,把下面>>>之间的内容添加到这个文件
>>>
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
>>>
修改启动界面语言
sudo SYSTEMD_EDITOR=nano systemctl edit sddm # 修改启动界面语言,把>>>之间的内容添加到第三行起的空行中。
>>>
[Service]
Environment=LANG=zh_CN.UTF-8
>>>
安装rust并换源
sudo pacman -S rustup #使用rustup安装rust
nano ~/.cargo/config.toml # 修改默认索引源为中科大的,速度快很多,编辑这个文件把>>>之间的内容添加进去,.cargo目录默认也是没有的,要自己新建
>>>
[source.crates-io]
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
[net]
git-fetch-with-cli = true
>>>
nano ~/.bashrc # 添加环境变量,>>之间的内容添加到最后即可
>>>
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
>>>
source ~/.bashrc # 使环境变量生效
rustup default stable # 安装rust
安装paru
yay还是paru都可以,个人更习惯paru,上面安装rust主要也是因为paru是用rust写的,不换源安装会非常的久。
sudo pacman -S --needed base-devel git # 安装编译所需套件
git clone https://aur.archlinux.org/paru.git # 拉取源码到本地
cd paru # 进入源码目录
makepkg -si # 开始编译安装
安装golang并配置代理
sudo pacman -S go # 安装go
go env -w GO111MODULE=on # 启用 Go Modules 功能
go env -w GOPROXY=https://goproxy.cn,direct #切换使用七牛云做代理源
安装steam
sudo nano /etc/pacman.conf #启用multilib支持,删除掉[multilib]部分前面的#
>>>
...
[multilib]
Include = /etc/pacman.d/mirrorlist
...
>>>
sudo pacman -S steam # 安装steam
steam #安装完执行一次steam来拉取安装包,安装过程中使用ssh还是本地终端都行,但是使用ssh安装完会提示找不到x环境,不影响
至此,基本的archlinux环境已经安装完成。
安装Windows 11 LTSC
其实安装啥版本都行,使用ltsc是因为没有那些杂七杂八的功能,更新也少一些,使用rufus或者ventoy安装都可以,这里主要讲安装完成后的一些必要操作。正常安装进入系统后先不要急着联网,首先进设备管理器可以看到一堆感叹号,但是千万不要把驱动全部安装,不然大概率会在后续重启后死循环!
注意AMD DRTM Boot Driver驱动问题
未安装驱动中有一项(一般是最后一项)显示是未知设备的,详细信息中设备实例路径是ACPI\DRTM00001\0,实际是叫AMD DRTM Boot Driver的东西,如果使用AMD Chipset Drivers安装驱动会默认把这一项一起安装,千万要记得到设备管理器里面卸载这一项的驱动并且停用这个设备。
这个驱动貌似和安全启动相关,但是无论我开启安全启动还是关闭安全启动,只要安装这个就会在下次重启无法进入系统,具体症状就是开机后使用Windows Boot Manager不能进入系统加载(就是转圈圈),然后黑屏自动重启,多次之后掉到自动修复但是修复提示失败;如果使用refind或者grub的启动项进去会提示0xc0000001启动失败,具体原因目前我也找不到资料,所以建议是千万不要去动这个东西。一开始我还以为是系统问题,但是无论是官方的固件还是最新WIN11、LTSC都有复现,所以从更新的角度去考虑,我进PE用dism++把安装的驱动一项项排除发现只要把系统设备下的amddrtm.inf删掉问题就解决了,所以很明显就是这个AMD DRTM Boot Driver的问题。
所以在安装好系统后,一是停用设备,二是避免安装这个驱动。最好就是针对性的屏蔽这个设备的驱动安装,先在设备管理器里右键这个设备找到详细信息>类Guid,这是一个用{}包括起来的值,右键复制,然后到组策略的计算机配置>管理模版>系统>设备安装>设备安装限制,找到阻止使用与下列设备安装程序类相匹配的驱动程序安装设备,切换到已启用,并在下方的显示中把上面的类Guid复制进去并应用,之后应用即可,之后再安装这个设备驱动就会报错提示系统策略禁止安装。目前这么操作几天之后没有发现其他问题。
