GPD-Pocket 4 初始化记录

背景

新年换新机,买了一台顶配 GPD-Pocket4 替换掉之前的 GPD-Pocket3 作为手边的备机(KVM模块真香), 正好把Windows/Ubuntu系统一起升级一下。看了一下屏幕原生还是祖传的竖屏(BIOS里是通过配置旋转来实现BIOS横屏的),和p3、壹号本3pro都一样,估计用了部分手机屏幕的芯片方案降低成本吧。

以下记录一下新电脑初始化的流水账。

Windows升级Win11专业版 & 基本配置

升级专业版

GPD预装系统是家庭版,RDP、BitLocker 之类的要啥啥没有。查了一下专业工作站版专业版多了弹性文件系统(ReFS)功能,用于检测镜像设备上的数据是否损坏并使用其他设备上的健康数据副本来修正和保护数据,感觉个人机用处不是很大,换个专业版够了。参考知乎的专业版key升级一下,或者用自建vlmcsd服务的方法定期认证一下也行。

查看原来的激活码/密钥的几种方法(有些key看起来不一样)。

  1. 管理员权限运行 wmic path softwarelicensingservice get OA3xOriginalProductKey,这个貌似是OEM的,会被下面注册表里的那个覆盖。(如果没装wmic需要在设置->系统->可选功能里添加wmic)。
  2. 如下注册表路径对应的键值,这个值貌似和AIDA64软件里查看的一样。
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform ,对应BackupProductKeyDefault键的值。

使用网上的key的升级步骤如下:

  1. 断网,设置-系统-激活-升级,输入激活码,电脑重启。
  2. 重启后,显示升级失败,联网,此时按下⊞ Win键-windows管理工具-右键powershell-以管理员身份打开-输入 irm massgrave.dev/get.ps1|iex ,弹出窗口输入1,激活成功。

系统初始配置修改

Windows 杂项:

资源管理器配置:

文件夹选项->查看,取消勾选“使用复选框以选择项”,取消勾选“隐藏已知文件类型的扩展名”,选择“显示隐藏的文件、文件夹和驱动器”。

桌面图标修改:

桌面右键->个性化->主题->桌面图标设定,勾选需要的图标。

电源选项修改:

设置->系统->电源和电池:

  • “电源模式”里,接通电源-最佳性能,使用电池-平衡
  • “屏幕、睡眠和休眠超时”里,把接通电源的睡眠关掉,其他随偏好
  • “节能模式”调个20%/30%之类的
  • “盖子、电源和睡眠 按钮控件”里,把“按电源按钮”都调到“不执行任何操作”以防误触,把接通电源的盖上盖子调成不执行任何操作,其他随偏好

如果要更精细化的配置可以在控制面板里的电源里改(旧版UI)。

远程桌面:

设置->系统->远程桌面(打开)->勾选“要求设备使用网络级别身份验证连接”,改默认端口为自己偏好的端口号,改电脑名称。如果端口改了没啥变化的话可以改注册表试试,路径:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
PortNumber (type:dword)改成偏好的十进制值。

随机mac地址:

设置->网络和Internet->WLAN->打开“随机硬件地址”,家庭网络等个别WiFi需要手动在对应的网络配置文件里关闭随机MAC,以防DHCP地址变化。

WSL2配置:

安装Windows Subsystem Linux,并设置默认版本为2(独立内核)wsl --set-default-version 2

管理员取得所有权选项:

保存以下内容为“管理员取得所有权.reg”,并双击导入注册表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\exefile\shell\runas2]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="管理员取得所有权"
"NoWorkingDirectory"=""
[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

Copilot配置:

有好的线路的话,更改地区到新加坡,保存以下内容为“copilot_enable.reg”,并双击导入注册表,开启copilot(方法可能过时)。

1
2
3
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Copilot\BingChat]
"IsUserEligible"=dword:00000001

磁盘分区调整:

安装分区助手或者类似的磁盘分区软件,调整一下分区,空出来1T左右或者其他大小的未分配空间给Ubuntu系统备用。

Ubuntu 24.10 安装

之前旧的gpd-pocket3参考了 这个方法 做了windows + ubuntu 双系统的全磁盘加密,这次装系统发现 参考博客有更新 ,最新版的Ubuntu 24.10 GUI安装流程支持了双系统加密了,以下为用新方法安装Ubuntu24.10。

安装Ubuntu并开启加密

  1. 找个U盘刷入Ventoy,然后从官网下载Ubuntu-24.10-desktop-amd64.iso系统镜像并放入U盘。
  2. 重启到BIOS,从Ventoy引导,选择Ubuntu的镜像,把Ubuntu也安装成UEFI方案引导(安全启动必须)。
  3. 开启LVM磁盘加密
    Ubuntu安装程序在加密双启动这块有一点误导性,需要一个小技巧来达成我们的目的:
  • 在GUI安装系统的流程中,选择语言、键盘、网络这些比较常规,选择交互式安装
  • 当要进行磁盘安装时,先选择“擦除磁盘并安装Ubuntu(Erase disk and install Ubuntu),点击高级功能(Advanced features)
  • 选择使用LVM并加密(Use LVM and encryption)并点击OK结束高级功能的配置
  • 在原来的界面上将选项调整为在Windows启动管理器之外安装Ubuntu(Install Ubuntu alongside Windows Boot Manager)
  • 注意此时虽然高级选项变成灰色不可选,但是“使用LVM并加密(Use LVM and encryption)”仍然保持开启状态
    用这个技巧就完成了使用LVM加密的高级功能,同时安装双系统启动(如下图)。继续点击下一步,检查一下磁盘配置,完成剩下的常规安装步骤。

上面2张图是从网上找的截图,pocket4的安装情况略有区别

系统配置

先在Ubuntu设置里面溜一圈,把一些有的没的按偏好调一调。

远程桌面:

系统->远程桌面里,打开远程登录。这里“桌面共享”类似于mac的屏幕共享或者老的vnc(与物理屏幕共用session),远程登录类似于有独立session的mstsc,试了一下远程登录更好一点(除了经常需要额外输密码授权)。另外,相比22.04,24.10版本的远程桌面使用的是兼容RDP的协议,终于不用额外安装VNC了,试了一下还是挺稳定的,不知道是不是也用的GDI重绘技术。另外在“远程桌面”的同级菜单里把“安全外壳(ssh)”打开,不用手动安装openssh-server了。

补充说明1:Ubuntu远程登录的默认端口也是3389,可以通过

1
2
sudo grdctl --system rdp set-port {YOUR_NEW_PORT}
sudo systemctl restart gnome-remote-desktop.service

修改为自己习惯的端口(十进制数字端口号替换命令中的YOUR_NEW_PORT)。

补充说明2:mac版RDP客户端“Windows App”在连接pocket ubuntu时总是没法显示桌面,参考 这个链接 ,先在Windows App中右键点击pocket3导出rdp文件,编辑rdp文件,修改对应参数 use redirection server name:i:1 并保存,然后Windows App标题栏点 连接->从rdp文件导入 导入刚才修改后的rdp文件,新的rdp可以正常访问Ubuntu桌面了。

隐藏Windows分区

当Windows的BitLocker初始化完成后,Ubuntu桌面Dock上默认会显示Windows BitLocker分区,可以通过在设置->Ubuntu桌面->Configure Dock Behavior,取消“包括已卸载的卷”之前的钩,从而在Dock上隐藏windows的BitLocker卷(参考链接)。

或者,在系统全局隐藏Windows卷(Ubuntu资源管理器里也看不到),按以下方法实现(参考链接):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 目前分区结构如下:
root@pocket:~# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1:1.82 TiB,2000398934016 字节,3907029168 个扇区
Disk model: WD Blue SN580 2TB
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:********-****-****-****-************

设备 起点 末尾 扇区 大小 类型
/dev/nvme0n1p1 2048 206847 204800 100M EFI 系统
/dev/nvme0n1p2 206848 468991 262144 128M Microsoft 保留
/dev/nvme0n1p3 468992 629614591 629145600 300G Microsoft 基本数据
/dev/nvme0n1p4 629614592 1936989179 1307374588 623.4G Microsoft 基本数据
/dev/nvme0n1p5 3873474560 3907028991 33554432 16G Windows 恢复环境
/dev/nvme0n1p6 1936990208 1941184511 4194304 2G Linux 文件系统
/dev/nvme0n1p7 1941184512 3873474559 1932290048 921.4G Linux 文件系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 需要隐藏的分区为 /dev/nvme0n1p3 和 /dev/nvme0n1p4
cat << EOF > /etc/udev/rules.d/99-hide-windows-bitlocker-partitions.rules
## 如果使用PARTUUID方法,需要自行修改对应的UUID,use blkid to see UUIDs
## hide /dev/nvme0n1p2 "Microsoft reserved partition" PARTUUID="11111111-1111-1111-1111-111111111111" IdUUID="" from `udisksctl info -b /dev/nvme0n1p2` so use PARTUUID
#SUBSYSTEM=="block", ENV{ID_FS_UUID}=="11111111-1111-1111-1111-111111111111", ENV{UDISKS_IGNORE}="1"
### hide /dev/nvme0n1p3 "Windows BitLocker partition1" PARTUUID="22222222-2222-2222-2222-222222222222" IdUUID="33333333-3333-3333-3333-333333333333"
##SUBSYSTEM=="block", ENV{ID_FS_UUID}=="22222222-2222-2222-2222-222222222222", ENV{UDISKS_IGNORE}="1"
### hide /dev/nvme0n1p4 "Windows BitLocker partition2" PARTUUID="44444444-4444-4444-4444-444444444444" IdUUID="55555555-5555-5555-5555-555555555555"
##SUBSYSTEM=="block", ENV{ID_FS_UUID}=="44444444-4444-4444-4444-444444444444", ENV{UDISKS_IGNORE}="1"
## hide /dev/nvme0n1p5 "Windows Recovery partition" PARTUUID="66666666-6666-6666-6666-666666666666" IdUUID="7777777777777777"
#SUBSYSTEM=="block", ENV{ID_FS_UUID}=="7777777777777777", ENV{UDISKS_IGNORE}="1"
KERNEL=="nvme0n1p3", ENV{UDISKS_IGNORE}="1"
KERNEL=="nvme0n1p4", ENV{UDISKS_IGNORE}="1"
EOF

# 重新加载udev rules
udevadm control --reload
udevadm trigger --subsystem-match=block

# see if Ignored
for i in `seq 1 7`;do echo -n "nvme0n1p${i}:";udisksctl info -b /dev/nvme0n1p${i}|grep "HintIgnore";done

其他命令行杂项

shell命令汇总

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 环境变量及rc文件初始化略过
apt update && apt upgrade -y && apt install -y vim tmux locale fonts-unifont unifont fbterm ncdu lm-sensors iotop iftop htop autoconf g++ make dconf-editor mesa-utils rocm-smi libdrm-dev radeontop conntrack "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"

# 加入一些组,fbterm 需要在video组里
# "Can't open the framebuffer device" Error occured, /dev/fb0 is owned by root/video, add user to video group.
# ref:https://dingyichen.wordpress.com/2009/12/21/fbterm-cant-open-framebuffer-device/
usermod -aG plugdev,dialout,render,video king
setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm
cat << EOF > /root/.fbtermrc
font-names=Ubuntu Mono
#font-names=Terminus
#screen-rotate=3
font-size=64
EOF
# 以上.fbtermrc 记得给user也复制一份,用于tty终端显示中文

# 注意fbterm未启动前tty字体可能比较小,修改 /etc/default/console-setup 文件中的以下参数:
cat << EOF >> /etc/default/console-setup
FONTFACE="TerminusBold"
FONTSIZE="16x32"
EOF

# 开启rc.local自启动脚本
chmod +x /etc/rc.local && systemctl enable rc-local && systemctl start rc-local

# 关闭WiFi节能,以免待机的时候网掉了
iw dev wlan0 get power_save && iw dev wlan0 set power_save off
cat << EOF > /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
[connection]
wifi.powersave = 2
EOF

# 外接电源的情况下,盒盖不休眠
sed -i "s/^[#]HandleLidSwitchExternalPower=[a-z]\+/HandleLidSwitchExternalPower=ignore/" /etc/systemd/logind.conf ; systemctl restart systemd-logind

# 设置硬件时钟为本地时间,默认Ubuntu认为其为UTC时间,如果不在0时区的话,会和windows冲突
timedatectl set-local-rtc 1

安装beyondcompare的过程忽略,记得strings搜索并修改RSA密钥,改key,注释掉/etc/apt/sources.list.d/scootersoftware.list里的repo。
另外注意如果以root权限启动beyondcompare,需要导出QT_GRAPHICSSYSTEM环境变量,比如sudo QT_GRAPHICSSYSTEM=native bcompare

grub配置

修改默认配置,以下参数改成对应的值(rEFInd安装时会继承部分grub参数)

1
2
3
4
5
6
GRUB_DEFAULT=0
GRUB_TIMEOUT=2
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0 quiet splash" # 旧版网卡名(如eth0,wlan0)
GRUB_CMDLINE_LINUX="video=efifb:panel_orientation=right_side_up video=eDP-1:panel_orientation=right_side_up fbcon=rotate:1 fbcon=rotate_all:1" # 和屏幕旋转有关,磁盘解密后会自动旋转过来。
# GRUB_GFXMODE=1600x2560x32 # 先注释掉
# GRUB_GFXPAYLOAD_LINUX=keep # 先注释掉

改完记得update-grub2

rEFInd安装

命令行执行apt install -y refind,可以考虑更新 repo 到官方最新版(add-apt-repository ppa:rodsmith/refind && apt update)
配置和主题直接从pocket3复制过来,也可以参考这个链接
最后执行refind-install && refind-mkdefault。因为屏幕实际是竖屏不能改rEFInd方向,所以win和ubuntu的logo是竖着排列的,如下图。
开启安全启动功能后,refind安装时可能会提示说,密钥没有注册到TPM模块,执行apt install sbsigntool && refind-install --localkeys并按提示完成BIOS力的注册操作。

背景digital.png从网上找的,需要压缩一下图片

修改Windows默认引导方式,关于rEFInd & BitLocker 自动解密,除了在Windows组策略里配置禁用PCR7以外(后续再说明),可以使用如下firmware_bootnum为对应的值(本机环境00)来设置windows启动(参考链接

1
2
3
4
5
6
7
# cat /boot/efi/EFI/refind/refind.conf
...
menuentry "Windows" {
icon /EFI/refind/themes/refind-ambience-black/icons/os_win8.png
firmware_bootnum 00
}
...

这样配置后,Windows引导时refind会先设置BootNext为efibootmgr中对应的UEFI引导(本机00号引导为Windows自己的引导),再重启,重启后会临时使用Windows安装的UEFI引导来进入系统(启动链是微软自己的,不破坏各种证书签名)。
用BootNext的方式,Windows 组策略可以不配置“为本地UEFI固件配置配置TPM平台验证配置文件”选项(后续再细说)。
另外,引导界面Windows系统右上角的小Logo,可以通过将/boot/efi/EFI/refind/icons图标目录下的transparent.png覆盖vol_efi.png实现关闭。
有时候Windows更新后会调整BootManager,如果rEFInd进不了Windows,需要在Ubuntu下efibootmgr看看Windows具体的BootNum再修改firmware_bootnum号。

当前环境的rEFInd完整的有效配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@pocket:~# cat /boot/efi/EFI/refind/refind.conf | grep -Ev "^(#|\s*$)"
timeout 5
use_nvram false
hideui singleuser,hints,arrows,label,badges
banner digital.png
banner_scale fillscreen
small_icon_size 96
resolution 1600 2560
use_graphics_for linux,windows,osx
scanfor manual,internal
dont_scan_dirs + EFI/Boot,EFI/ubuntu,EFI/Microsoft,EFI/Microsoft/Boot
scan_all_linux_kernels true
fold_linux_kernels true
write_systemd_vars false
default_selection 1
menuentry "Windows" {
icon /EFI/refind/themes/refind-ambience-black/icons/os_win8.png
firmware_bootnum 00
#disabled
}
include themes/refind-ambience-black/theme.conf

另外补充一下rEFInd继承自grub的启动配置参数:

1
2
3
4
5
6

# 这里是rEFInd初始化时继承自grub的参数,也可以在这直接改
root@pocket:~# cat /boot/refind_linux.conf
"Boot with standard options" "root=/dev/mapper/ubuntu--vg-ubuntu--lv ro net.ifnames=0 biosdevname=0 video=efifb:panel_orientation=right_side_up video=eDP-1:panel_orientation=right_side_up fbcon=rotate:1 fbcon=rotate_all:1 quiet splash crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M vt.handoff=7"
"Boot to single-user mode" "root=/dev/mapper/ubuntu--vg-ubuntu--lv ro net.ifnames=0 biosdevname=0 video=efifb:panel_orientation=right_side_up video=eDP-1:panel_orientation=right_side_up fbcon=rotate:1 fbcon=rotate_all:1 quiet splash crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M vt.handoff=7 single"
"Boot with minimal options" "ro root=/dev/mapper/ubuntu--vg-ubuntu--lv"

关闭内存交换

p4这个机器内存比较大,暂时用不着swap,把/etc/fstab里的swap注释掉:

1
2
## disable default swap
##/swap.img none swap sw 0 0

重启后删除 /swap.img

TPM 启动时自动解密磁盘配置

设置基于TPM的磁盘自动解密,实现不用每次进Ubuntu都输入磁盘密码(参考链接),目前磁盘的分区结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@pocket:~# fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1:1.82 TiB,2000398934016 字节,3907029168 个扇区
Disk model: WD Blue SN580 2TB
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:********-****-****-****-************

设备 起点 末尾 扇区 大小 类型
/dev/nvme0n1p1 2048 206847 204800 100M EFI 系统
/dev/nvme0n1p2 206848 468991 262144 128M Microsoft 保留
/dev/nvme0n1p3 468992 629614591 629145600 300G Microsoft 基本数据
/dev/nvme0n1p4 629614592 1936989179 1307374588 623.4G Microsoft 基本数据
/dev/nvme0n1p5 3873474560 3907028991 33554432 16G Windows 恢复环境
/dev/nvme0n1p6 1936990208 1941184511 4194304 2G Linux 文件系统
/dev/nvme0n1p7 1941184512 3873474559 1932290048 921.4G Linux 文件系统

参考这个分区信息配置Ubuntu磁盘解密:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# TPM自动解密磁盘,注意使用前修改并核对 /dev/nvme 分区号
mkdir -p /root/installers
cat << EOF > /root/installers/ubuntu_auto_unlock_decrypt_encrypted_disk.sh
#!/bin/bash
# ref: https://askubuntu.com/questions/1470391/luks-tpm2-auto-unlock-at-boot-systemd-cryptenroll
# This is what I'm using to allow LUKS decryption using TPM2 in the same Ubuntu 22.
# Not using systemd-cryptenroll, but clevis.
# The only 'downside' is that it shows the password prompt at boot, but disappears after getting the key from tpm.
#
# No need to modify anything else(not even crypttab file).
# Update: also tested and working with Ubuntu 24.04 LTS; change device nvme0n1p3 to whatever suits your system.
# Update 2: Tested and works on Debian 12 as well.

export TARGET_DISK="/dev/nvme0n1p7" # pocket4 in 2025/01/24,注意使用前修改并核对 /dev/nvme 分区号
#install needed packages
apt-get -y install clevis clevis-tpm2 clevis-luks clevis-initramfs initramfs-tools tss2
#proceed
# 这里需要输入磁盘的解密密码,以便绑上TPM
echo -n Enter LUKS password:
read -s LUKSKEY
echo ""
clevis luks bind -d \$TARGET_DISK tpm2 '{"pcr_bank":"sha256"}' <<< "\$LUKSKEY"
update-initramfs -u -k all
# check
clevis luks list -d \$TARGET_DISK # pocket4 in 20250124,注意使用前修改并核对 /dev/nvme 分区号
#delete example; -s is one of the slots reported by the previous command
#clevis luks unbind -d \$TARGET_DISK -s 1 tpm2
EOF

sudo /root/installers/ubuntu_auto_unlock_decrypt_encrypted_disk.sh

磁盘解密阶段屏幕旋转(有延迟)

在磁盘解密界面,开始的时候屏幕的方向不对,找了好几种方法试了试,也不知道哪种最后生效的,都记录一下:
部分参考了这个项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
cat << EOF > /usr/share/X11/xorg.conf.d/40-gpd-pocket4-monitor.conf
# custom add and modified from old pocket3
# GPD Pocket 4 (modesetting)
Section "Monitor"
Identifier "eDP-1" # name changed from p3 DSI-1
Option "Rotate" "right"
EndSection

# GPD Pocket 4 (xorg-video)
Section "Monitor"
Identifier "eDP1" # name changed from p3 DSI1
Option "Rotate" "right"
EndSection
EOF

cat << EOF > /var/lib/gdm3/.config/monitors.xml
<monitors version="2">
<configuration>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>2</scale>
<primary>yes</primary>
<transform>
<rotation>right</rotation>
<flipped>no</flipped>
</transform>
<monitor>
<monitorspec>
<connector>eDP-1</connector>
<vendor>unknown</vendor>
<product>unknown</product>
<serial>unknown</serial>
</monitorspec>
<mode>
<width>1600</width>
<height>2560</height>
<rate>143.999</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
</monitors>
EOF

cat << EOF > /home/$USERNAME/.config/monitors.xml
<monitors version="2">
<configuration>
<layoutmode>physical</layoutmode>
<logicalmonitor>
<x>0</x>
<y>0</y>
<scale>2</scale>
<primary>yes</primary>
<monitor>
<monitorspec>
<connector>eDP-1</connector>
<vendor>HSX</vendor>
<product>YHB03P24</product>
<serial>0x00888888</serial>
</monitorspec>
<mode>
<width>2560</width>
<height>1600</height>
<rate>143.999</rate>
</mode>
</monitor>
</logicalmonitor>
</configuration>
</monitors>
EOF

udevadm control --reload-rules
udevadm trigger

其中显示器设备名从gpd-pocket3原来的DSI-1变成了eDP-1了(和壹号本3pro好像一样),在本地图形界面打开的用户权限终端里,可以用 xrandr --query 查看屏幕的详细信息。

Ubuntu下指纹识别配置

本来以为一如既往的指纹模块不兼容Linux,不过从官网BIOS驱动包链接的引用找到这里看,貌似22.04版已经支持了Ubuntu指纹,这里试了下24.10,最终也可以刷指纹登录了,方法如下。

软件安装

  • 下载第三方libfprint程序(找最新版)。
  • 下载文件对应目录,执行 dpkg -c libfprint-2-2_1.94.4+tod1-0ubuntu1~22.04.2_amd64_20250219.deb 可以先看一下将会安装哪些文件。
  • 执行sudo dpkg -i ./libfprint-2-2_1.94.4+tod1-0ubuntu1~22.04.2_amd64_20250219.deb进行安装。
  • 执行sudo apt install -yfprintd libfprint-2-2 libpam-fprintd安装其他配套程序。
  • 执行sudo pam-auth-update开启pam认证配置程序,勾选Fingerprint authentication,确定。

命令行方式添加指纹

  • 执行sudo fprintd-enroll [USERNAME]为对应USERNAME的用户设置指纹,按照提示在指纹传感器上多次刷对应的手指。

图形界面方式添加指纹

  • 复制/usr/share/polkit-1/rules.d/50-default.rules/etc/polkit-1/rules.d/,检查一下当前用户在sudo组,重启电脑。
  • “设置”->“系统”->“用户”->“指纹登录”,进行指纹添加。

补充说明(踩坑记录):
装完软件不改polkit配置时,图形界面“设置”->“系统”->“用户”->“指纹登录”中添加指纹会没有响应,命令行下用户权限enroll的时候也会报未认证错误:

1
2
3
ubuntu@pocket:~$ fprintd-enroll
Using device /net/reactivated/Fprint/Device/0
failed to claim device: GDBus.Error:net.reactivated.Fprint.Error.PermissionDenied: Not Authorized: net.reactivated.fprint.device.enroll

参考这个bugzilla记录,怀疑是权限安全考虑,按照描述查了一下polkitd服务貌似正常运行着,参考这个链接查看/usr/share/polkit-1/actions/net.reactivated.fprint.device.policy配置文件,内容貌似也正常。
此时可以在root权限执行fprintd-enroll USERNAME以高权限注册用户的指纹,不影响认证(如上“命令行方式添加指纹”)。
参考这里,为polkit添加配置策略后解决问题(如上“图形界面方式添加指纹”)。

安装amdgpu_top

amdgpu_top 有点像l4t上的jtop,可以查看按摩店gpu的占用,后面跑大模型可以看是不是在gpu上跑的,以及负载情况。

1
2
3
4
5
mkdir -p ~/installers
cd ~/installers
git clone https://github.com/Umio-Yasuno/amdgpu_top
cd amdgpu_top && git checkout v0.10.1
sudo apt install cargo && cargo install --locked amdgpu_top && sudo cp ~/.cargo/bin/amdgpu_top /usr/local/bin/amdgpu_top

Windows BitLocker 磁盘加密,配置安全启动

打开BitLocker设置

回到Windows系统,设置->隐私和安全性->设备加密,系统盘打开BitLocker,数据盘也打开BitLocker,找个U盘或者NAS备份一下解密用的key,然后也配置一下自动解密。

rEFInder引导兼容设置(可选):

由于rEFInd引导每次切系统会写引导区(参考1 2),如果rEFInd没有使用firmware_bootnum的方式,而是按rEFInd默认配置的方式引导windows,BitLocker会认为引导区改变已不可信任,存在安全风险,需要重新输入UUID解锁BitLocker。有两种方法可以让BitLocker保持SecureBoot自动解密磁盘(第二种firmware_bootnum方法再提一下):

(1). 在组策略里修改BitLocker的UEFI安全启动配置,运行(win+R)->gpedit.msc->计算机配置->管理模板->Windows组件->BitLocker驱动器加密->操作系统驱动器->为本地UEFI固件配置配置TPM平台验证配置文件,启用配置,左下选项勾选 PCR0、2、11,注意取消PCR7,应用/确定(参考链接)。

(2). 在Ubuntu下rEFInd.conf里将Windows配置为firmware_bootnum方式启动(参考链接1 2 3),这种方法已经在安装Ubuntu部分详细说明。

检查硬件安全配置

设置->隐私和安全性->Windows安全中心->设备安全性,把可以配置的一些安全选项都配置一下。Secured-core PC的安全细节里好像有bug,固件保护实际是打开的,但显示的是未打开。

系统盘还原点打开

设置->系统->系统信息->系统保护(设备规格栏),在系统驱动器上启用保护,配置里分配合适的大小即可(我这里最大使用量分配了30G,占系统盘总空间的10%)。

Windows各种程序安装

控制面板里把onedrive卸载了,BitLocker设置好之后可以装各种应用了(这样的顺序会让BitLocker初始化的速度快一点),目前安装的一些应用(仅列出部分):

控制面板:

  • 3DMark
  • 7-Zip
  • AMD Chipset Software
  • AMD Software
  • API Monitor v2
  • Beyond Compare
  • DbGate
  • Everything
  • Google Chrome
  • GPDKeyboardAssistantTool
  • HashTab
  • HDMI IN
  • Microsoft Visual Studio Code
  • MiniLPA
  • MotionAssistant
  • Nmap
  • NVIDIA PhysX System Software
  • OBS Studio
  • Picasa 3
  • PotPlayer-64 bit
  • Recuva
  • RivaTuner Statistics Server
  • Sandboxie-Plus
  • SideQuest
  • Steam
  • SumatraPDF
  • Typora
  • USBPcap
  • Vim
  • WinRAR
  • Wireshark
  • 分区助手
  • 火绒安全软件
  • 微信
  • 远程桌面连接

Microsoft Store

  • English (United States) Local Experience Pack
  • HEIF Image Extension
  • HEVC Video Extensions from Device Manufacturer
  • Microsoft 365 Copilot
  • Microsoft Bing
  • Microsoft Clipchamp
  • Microsoft Copilot
  • Microsoft Xiaoxiao (Natural) - Chinese (Simplified, China)
  • MPEG-2 Video Extension
  • Phone Link
  • Raw Image Extension
  • Speech Pack - Chinese (Simplified)
  • Speech Pack - English (United States)
  • Ubuntu
  • Windows Camera
  • Windows Subsystem for Linux
  • Windows Terminal

番外:未曾设想的道路之UMPC跑大模型(Deepseek-R1-qwen32b-distill)

Ubuntu下docker部署:

参考 open-webuicompose.yml 文件,添加环境变量 HSA_OVERRIDE_GFX_VERSION=11.0.2 后成功使用GPU进行推理,具体命令如下:

1
2
3
4
5
6
7
8
9
10
# refer1 https://github.com/open-webui/open-webui/blob/main/docker-compose.amdgpu.yaml
# refer2 https://github.com/ollama/ollama/blob/main/docs/gpu.md#overrides-on-linux
docker run -dit --name ollama \
--device /dev/kfd --device /dev/dri \
-e HSA_OVERRIDE_GFX_VERSION=11.0.2 \
-p 11434:11434 \
-v /PATH_TO_YOUR_MODEL_DIR:/root/.ollama \
ollama/ollama:0.5.11-rocm
## Now you can run a model:
docker exec -it ollama ollama run deepseek-r1:32b-qwen-distill-q4_K_M

内存显存分配设置

默认的48G/16G的内存/显存分配方案可以在Windows下更改,不过修改后Ubuntu下ollama container申请ROCm0设备内存时会失败,怀疑其是先加载到内存再加载到缓存的方案,没有AGX Orin那么灵活,所以还是保持默认方案分配吧。
这里记录一下具体修改显存分配的方法:

打开AMD Software: Adrenalin,在Performance->Tuning下,将Variable Graphics Memory改成High/Custom自由调节,UMPC能给到48GB的VRAM也是夸张👀。

附p4靓照一张(败家之眼皮肤)

本文标题:GPD-Pocket 4 初始化记录

文章作者:

发布时间:2025年02月16日 - 13:02

最后更新:2025年02月19日 - 19:02

原始链接:https://badb100d.com/2025/02/16/2025-02-16/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

谢谢老板打赏 Or2