使用vlmcsd作为服务端。
vlmcsd is
- a replacement for Microsoft’s KMS server
- It contains vlmcs, a KMS test client, mainly for debugging purposes, that also can “charge” a genuine KMS server
- designed to run on an always-on or often-on device, e.g. router, NAS Box, …
- intended to help people who lost activation of their legally-owned licenses, e.g. due to a change of hardware (motherboard, CPU, …)
软件地址:GitHub – Wind4/vlmcsd: KMS Emulator in C
1. 下载到本地
root@LucasFedoraV3 /lucas 0 % git clone https://github.com/Wind4/vlmcsd.git Cloning into 'vlmcsd'... remote: Enumerating objects: 1626, done. remote: Counting objects: 100% (12/12), done. remote: Compressing objects: 100% (10/10), done. remote: Total 1626 (delta 2), reused 12 (delta 2), pack-reused 1614 Receiving objects: 100% (1626/1626), 12.31 MiB | 737.00 KiB/s, done. Resolving deltas: 100% (847/847), done.
2. 编译
root@LucasFedoraV3 /lucas/vlmcsd 2 master % gmake gmake[1]: Entering directory '/lucas/vlmcsd/src' CC vlmcs.o <- vlmcs.c CC kmsdata-full.o <- kmsdata-full.c CC crypto.o <- crypto.c CC kms.o <- kms.c CC endian.o <- endian.c CC output.o <- output.c CC shared_globals.o <- shared_globals.c CC helpers.o <- helpers.c CC network.o <- network.c CC rpc.o <- rpc.c CC crypto_internal.o <- crypto_internal.c CC dns_srv.o <- dns_srv.c kms.c: In function ‘getEpid’: kms.c:502:9: warning: dangling pointer ‘pid’ to ‘ePid’ may be used [-Wdangling-pointer=] 502 | getEpidFromString(baseResponse, pid); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ kms.c:473:30: note: ‘ePid’ declared here 473 | char ePid[PID_BUFFER_SIZE]; | ^~~~ CC vlmcsd.o <- vlmcsd.c CC kmsdata.o <- kmsdata.c LD ../bin/vlmcs <- vlmcs.o kmsdata-full.o crypto.o kms.o endian.o output.o shared_globals.o helpers.o network.o rpc.o crypto_internal.o dns_srv.o LD ../bin/vlmcsd <- vlmcsd.o kmsdata.o crypto.o kms.o endian.o output.o shared_globals.o helpers.o network.o rpc.o crypto_internal.o gmake[1]: Leaving directory '/lucas/vlmcsd/src'
3. 将编译好的文件扔到应该到的位置
root@LucasFedoraV3 /lucas/vlmcsd/etc/ 0 master % cp .* /etc/ root@LucasFedoraV3 /lucas/vlmcsd/bin 0 master % cp * /usr/bin/
4. 把ini文件转为unix
root@LucasFedoraV3 /lucas/vlmcsd/bin 0 master % dos2unix /etc/vlmcsd.ini
5. 创建kms.pid文件
root@LucasFedoraV3 / 0 % touch /var/run/kms.pid
5. 配置服务文件
root@LucasFedoraV3 /etc 0 % vim /usr/lib/systemd/system/kms.service
[Unit] Description=KMS After=network.target [Service] Type=forking PIDFile=/var/run/kms.pid ExecStart=/usr/bin/vlmcsd -i /etc/vlmcsd.ini ExecStop=/bin/kill -HUP $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
6. 启动服务
root@LucasFedoraV3 / 0 % systemctl enable --now kms
7. 使用KMS服务器激活系统 (Windows端)
slmgr /skms [KMS IP地址] slmgr /ato