前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在树莓派3(RaspberryPi 3B

在树莓派3(RaspberryPi 3B

作者头像
py3study
发布2020-01-06 15:15:13
1.2K0
发布2020-01-06 15:15:13
举报
文章被收录于专栏:python3python3

前置: 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 eth0
static ip_address=172.16.0.68/24
static routers=172.16.0.1
static 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:\putty
pscp 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 vlmcsdpi
sudo 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-setuptools
sudo easy_install supervisor 

写入配置文件

mv /etc/supervisord.conf /etc/supervisord.conf.bak
sudo nano /etc/supervisord.conf

内容为:

;/etc/supervisord.conf
[unix_http_server]
file = /var/run/supervisord.sock
chmod = 0777
chown= root:root

[inet_http_server]
port=*:9001
username = pi
password = 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.sock
sudo 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-kms
python 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.conf
sudo nano /etc/resolv.dnsmasq.conf

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

nameserver 114.114.114.114
nameserver 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.bak
sudo 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-dhcp
log-facility=/var/log/dnsmasq.log

重启dns服务:

sudo service dnsmasq restart

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

ipconfig  /renew
nslookup -type=srv _vlmcs._tcp
nslookup -q=srv _vlmcs._tcp.test.com

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

服务器:  test.com
Address:  172.16.0.68

_vlmcs._tcp.test.com  SRV service location:
          priority       = 0
          weight         = 100
          port           = 1688
          svr hostname   = test.com
test.com      internet address = 172.16.0.68
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档