分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

在树莓派3(RaspberryPi 3B)上实现kms自动激活

发布时间:2023-09-06 01:47责任编辑:熊小新关键词:暂无标签
前置:
1.主机名请从默认的RaspberryPi 改为 test.com

sudo nano /etc/hostname

请将文件中的RaspberryPi改为 test.com

2.将树莓派的ip地址改为静态,此例中为172.16.0.68,网关出口为172.16.0.1

sudo nano /etc/dhcpcd.conf

在该文件的最末加上如下设定:

interface eth0static ip_address=172.16.0.68/24static routers=172.16.0.1static domain_name_servers=114.114.114.114 8.8.8.8

3.将主机本身解析到172.16.0.68

sudo nano /etc/hosts

注释掉关于RaspberryPi的记录,增加如下一行:

172.16.0.68 ????test.com

4.重启pi

5.本例中在windows系统中使用putty提供的pscp.exe上传相关文件。

一、建立kms服务器
在树莓派3上建立kms服务器有很多种做法,这里介绍一种比较简单的,一种复杂的。

请在(一)和(二)之中任择其一!

(一)使用已经编辑好的kms服务器文件。
该文件由Hotbird64大神编写。
下载地址为https://forums.mydigitallife.net/threads/emulated-kms-servers-on-non-windows-platforms.50234/
要下载需注册。
下载后的文件解包,我们需要的文件为:

\binaries\Linux\arm\little-endian\glibc\vlmcsd-armv6hf-Raspberry-glibc

将文件改名为:vlmcsdpi

1、新建KMS文件夹

mkdir /home/pi/kms

2、上传kms文件
在win下,启动cmd或者powershell,进入pscp.exe所在文件夹,我将pscp.exe和vlmcsdpi都放在e:\putty下面了。

cd e:\puttypscp e:\putty\vlmcsdpi pi@172.16.0.68:/home/pi/kms/

输入pi的密码后上传成功。

3、赋予执行权限

chmod 777 /home/pi/kms/vlmcsdpi

4、设定开机自启动

sudo nano /etc/rc.local

在exit 0之前加入:

/home/pi/kms/vlmcsdpi -l /var/log/vlmcsd.log > /dev/null 2>&1

5、启动服务:

/home/pi/kms/vlmcsdpi -l /var/log/vlmcsd.log

日志文件就是:/var/log/vlmcsd.log

6、停止服务:
查找进程号,杀掉就可以

sudo ps -ef | grep vlmcsdpisudo kill -s 9 进程号

这个方法是搭建快速,升级方便。如果Hotbird64大神出了新版,升级只要将新版文件替换进去就可以。

(二)使用py-kms搭建kms服务器
1.安装git

sudo apt-get install git

2.在pi的家目录中下载py-kms:

git clone https://github.com/myanaloglife/py-kms

因为pi中自带了python,所以下载完以后就可以进行初步测试:

cd py-kms ?python server.py

看到

TCP server listening at 0.0.0.0 on port 1688. 

的提示为成功。按Ctrl+c退出。

3.使用supervisor确保kms服务长期运行:

现将py-kms放入/usr/local/:

sudo cp -r py-kms /usr/local/

安装supervisor:

sudo apt-get install python-setuptoolssudo easy_install supervisor 

写入配置文件

mv /etc/supervisord.conf /etc/supervisord.conf.baksudo nano /etc/supervisord.conf

内容为:

;/etc/supervisord.conf[unix_http_server]file = /var/run/supervisord.sockchmod = 0777chown= root:root[inet_http_server]port=*:9001username = pipassword = yourpassword[supervisorctl]; 必须和‘unix_http_server‘里面的设定匹配serverurl = unix:///var/run/supervisord.sock[supervisord]logfile=/var/log/supervisord.log ??????????????????????????????; (main log file;default $CWD/supervisord.log)logfile_maxbytes=50MB ?????????????????????????????????????????; (max main logfile bytes b4 rotation;default 50MB)logfile_backups=10 ????????????????????????????????????????????; (num of main logfile rotation backups;default 10)loglevel=info ?????????????????????????????????????????????????; (log level;default info; others: debug,warn,trace)pidfile=/var/run/supervisord.pid ??????????????????????????????; (supervisord pidfile;default supervisord.pid)nodaemon=true ?????????????????????????????????????????????????; (start in foreground if true;default false)minfds=1024 ???????????????????????????????????????????????????; (min. avail startup file descriptors;default 1024)minprocs=200 ??????????????????????????????????????????????????; (min. avail process descriptors;default 200)user=root ?????????????????????????????????????????????????????; (default is current user, required if root)childlogdir=/var/log/ ?????????????????????????????????????????; (‘AUTO‘ child log dir, default $TEMP)[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[program:pykms] ?command=python /usr/local/py-kms/server.py ?autorestart=true ?user=root ?

写入配置文件后,执行:

sudo chmod 777 /var/run ?sudo chmod 777 /var/log ?sudo touch /var/run/supervisor.socksudo chmod 777 /var/run/supervisor.sock

启动supervisor:

sudo supervisor

4.使supervisor开机启动:

sudo nano /etc/rc.local

在exit 0之前加入:

sudo supervisor 

重启pi后,查看进程是否正常启动:

supervisorctl 

正常的情况下,server.py应该是running。
使用quit退出。

5.对kms服务器进行测试:

cd ?/usr/local/py-kmspython client.py -v 172.16.0.68

测试结果为:

Connecting to 172.16.0.68 on port 1688... ?Connection successful! ?Sending RPC bind request... ?RPC bind acknowledged. 

则为成功。

二、使局域网中的机器可以自行激活
在开始此步之前,请确保:局域网中所有其他DHCP服务器均已经关闭!

1.建立/etc/resolv.dnsmasq.conf文件

sudo cp ?/etc/resolv.conf /etc/resolv.dnsmasq.confsudo nano /etc/resolv.dnsmasq.conf

删除文件中原有内容,新建内容如下:

nameserver 114.114.114.114nameserver 8.8.8.8

2.安装用于测试DNS的软件

sudo apt-get install dnsutils

3.安装轻型dns转发服务器、dhcp服务器

sudo apt-get install ?dnsmasq

4.配置dnsmasq:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.baksudo nano /etc/dnsmasq.conf

配置内容如下:

#指定上游服务器地址,由/etc/resolv.dnsmasq.conf文件内容决定resolv-file=/etc/resolv.dnsmasq.conf# 严格按照resolv.dnsmasq.conf中的顺序进行查找strict-order#监听地址listen-address=172.16.0.68,127.0.0.1#地址池设定dhcp-range=172.16.0.100,172.16.0.200,255.255.255.0,6h#设定局域网后缀名,重要,请务必设置domain=test.com#指定网关(路由出口)dhcp-option=3,172.16.0.1#dhcp-option=option:router,172.16.0.1#指定地址分发时分配给客户端的DNS,除了本地dns服务器地址,为保险起见,加了其他dns地址dhcp-option=option:dns-server,172.16.0.68,114.114.114.114#server=114.114.114.114#通常用于对于访问不存在的域名,禁止其跳转到运营商的广告站点。bogus-nxdomain=114.114.114.114#设定kms服务器响应srv-host=_vlmcs._tcp,test.com,1688,0,100#开启日志记录,指定日志文件路径及文件名log-dhcplog-facility=/var/log/dnsmasq.log

重启dns服务:

sudo service dnsmasq restart

5.测试命令如下:(请在windows系统中测试,请务必保证网络中其他dhcp服务器已经关闭,Windows系统开启了自动获得地址)
在win下,启动cmd或者powershell

ipconfig ?/renewnslookup -type=srv _vlmcs._tcpnslookup -q=srv _vlmcs._tcp.test.com

下面2个命令都必须反馈相同的结果:

服务器: ?test.comAddress: ?172.16.0.68_vlmcs._tcp.test.com ?SRV service location: ?????????priority ??????= 0 ?????????weight ????????= 100 ?????????port ??????????= 1688 ?????????svr hostname ??= test.comtest.com ?????internet address = 172.16.0.68

在树莓派3(RaspberryPi 3B)上实现kms自动激活

原文地址:http://blog.51cto.com/3258791/2092687

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved