发布于2024的文章

Dec 06

三角洲行动国际服上线,想来玩一把,没想到遇到一堆问题。由于国际服是强制锁区,所以 UU 加速开启国际服加速时,会一并加速 Steam 客户端,否则游戏会提示 “对此地区不可用”。由于不想多个虚拟网卡,所以之前我一直只用 进程加速 模式。启动 UU 加速器后再启动 Steam 客户端,发现商店就进不去,Proxifier 日志疯狂报错:

这个 127.100.163.1 从哪来的呢? 通过分析 UU 日志,发现 UU 修改了系统 hosts 文件,添加了如下内容:

然后通过邮件联系 Proxifier 支持,官方回复解决方法如下:

Add the following key to HKEY_CURRENT_USER\Software\Initex\Proxifier\Settings:
FakeSubnet(REG_DWORD)=100 (64 in hex)

Alternatively, you can use this command to create the key automatically:
reg add HKCU\Software\Initex\Proxifier\Settings /v FakeSubnet /t REG_DWORD /d 100

To activate the option, you need to restart Proxifier. It should output message like the following on start:
Fake IPv4 subnet = 100

1. 注册表编辑器找到 HKEY_CURRENT_USER\Software\Initex\Proxifier\Settings ,添加 REG_DWORD, 名称 FakeSubnet , 值为 100 (16进制的 64);
2. 或者直接用以下命令:

reg add HKCU\Software\Initex\Proxifier\Settings /v FakeSubnet /t REG_DWORD /d 100

然后重启 Proxifier 即可。修改成功的话启动日志会有:

Fake IPv4 subnet = 100

BTW: 后续发现,只有在使用 UU 加速器 进程模式 且选择特定的一些服务器上会出现这个冲突,路由模式是没有问题的,因为路由模式并不会修改 hosts 文件。进程模式有一些服务器也不会有问题,这时候打开 hosts 文件你会发现 UU 添加的项目 IP 不是 fake IP 而是真实的 IP 地址。冲突的根源就是当 UU 添加了类似 127.100.*.* 的项目到 hosts 文件中时,会与 Proxifier 的远程 DNS 解析使用的 fake IP 池冲突(127.8.*.*)


Jul 07

运行在 U 盘的系统随着时间推移越来越大已经不能备份在 N1 的 EMMC 里,突然损坏的话就要做很多重复工作来复原。直接做盘对盘克隆有个限制就是目标盘必须比源盘容量大,同样是标称 8G 的 U 盘,非常有可能实际可用容量是不一样的,之前就是因为这样把一个 8G 的系统盘一直备份成了 64G 的 U 盘.。。。将要介绍的备份方法则没有这个限制,只要主分区(一般是 ROOTFS)的实际数据使用量不大于备份盘容量即可。

首先用 DiskGenius 将 U 盘的两个主要分区备份为: BOOT.pmf 和 ROOTFS.pmf 文件。注意这里 BOOT 分区备份最好选择 “备份所有扇区” 模式,因为这个分区并不大;而 ROOTFS 分区则选择 “按文件备份” 模式,这样我们就可以把整个系统恢复到较小的 U 盘上。(只要实际数据不大于恢复盘的总容量)

然后在 Linux 桌面模式(可以是虚拟机)把原系统的初始镜像 (比如: Armbian_20.10_Arm-64_focal_current_5.9.0.img) 恢复到新的 U 盘。因为初始镜像最小,我们其实只需要恢复这个系统默认的分区表和文件结构。这里推荐使用 balenaEtcher。恢复完成后用 GParted 或者 KDE Partition Manager 无损调整 ROOTFS 分区至你需要的大小,还可以在这个阶段创建 SWAP 分区。这一步理论上也可以在 Windows 下完成,比如恢复用 USB Image Tool,balenaEtcher Windows 版本等工具,然后用 DiskGenius 调整分区大小,但经过数次测试,这些对于 EXT 分区的操作在 Windows 下非常容易出错不能完成,或者完成后的 U 盘不能启动,或者是文件结构/分区表有问题。

最后在 DiskGenius 中把之前备份的 BOOT 和 ROOTFS 文件恢复到 U 盘对应的分区。

保险起见可以把这个盘最后一次加载到 Liunx 下用 fsck 检查一下各个分区。


Jun 29

armv5 架构下用 Tomatoware 静态编译 Zerotier 会出现 atomic 原子操作错误,解决的办法就是增加 -latomic 和删除 -pie:

#atomic error, add -latomic and delete -pie

# Static builds, which are currently done for a number of Linux targets
ifeq ($(ZT_STATIC),1)
	override LDFLAGS+=-static
	LDLIBS+=-latomic
endif

LDFLAGS=-pie -Wl,-z,relro,-z,now  ----> LDFLAGS=-Wl,-z,relro,-z,now

VFP 相关错误则需要修改 make-linux.mk 文件:

# ARM32 hell -- use conservative CFLAGS
ifeq ($(ZT_ARCHITECTURE),3)
	ifeq ($(shell if [ -e /usr/bin/dpkg ]; then dpkg --print-architecture; fi),armel)
		override CFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
		override CXXFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
		ZT_USE_ARM32_NEON_ASM_CRYPTO=0
	else
		override CFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
		override CXXFLAGS+=-march=armv5t -mfloat-abi=soft -msoft-float -mno-unaligned-access -marm
		ZT_USE_ARM32_NEON_ASM_CRYPTO=0
	endif
endif

Phicomm N1 下 aarch64 编译应使用:

CC=aarch64-linux-gcc CXX=aarch64-linux-g++ make -j`nproc` ZT_STATIC=1 ZT_SSO_SUPPORTED=0 ZT_CONTROLLER=0

因为如果编译 ZT_CONTROLLER 就需要 Rust,耗时太长,没什么必要。