在树莓派3(RaspberryPi 3B

发布时间:2019-09-16 07:33:19编辑:auto阅读(1676)

    前置:
    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

关键字