OpenWrt/LEDE 搭建 KMS 服务器

https://www.mivm.cn/openwrt-kms/

 

 

如果你经常重装系统,或者是经常安装 Windows 虚拟机,最头疼的可能就是每次安装后的系统激活。

一般激活 Windows 或者 Office 最多的就是激活工具,厉害一点的小伙伴会使用密钥激活。但是激活工具五花八门,而且一般找不到激活工具的官网或者是官方下载地址,下载来源没有保证,虽然一般不会中毒,但是有些流氓会恶意锁定浏览器主页或者是安装一些软件,这让小白很苦恼。

不过如果你有一台运行 OpenWrt 的路由器,就可以把它变成 KMS 服务器,只要连接至路由器,就可以轻轻松松激活 Windows 和 Office。

今天教大家在 OpenWrt 搭建 KMS 服务器,以及如何激活 Windows 和 Office。

搭建 KMS 服务器

OpenWrt 搭建 KMS 服务器非常简单,但是又稍微比较麻烦,因为 OpenWrt 官方源没有 vlmcsd,所以就需要编译。

如果你使用的是 PandoraBox (潘多拉)可以直接搜索并安装:luci-app-vlmcsd

编译的方法请看《OpenWrt SDK 编译软件包(基础篇)》的例子,不过我们在编译前需要改一点东西,这个 Luci 界面有点问题。

打开 package/luci-app-vlmcsd/Makefile,20 行DEPENDS:=+vlmcsd +PACKAGE_dnsmasq:dnsmasq +PACKAGE_dnsmasq-dhcpv6:dnsmasq-dhcpv6 +PACKAGE_dnsmasq-full:dnsmasq-full,改为 DEPENDS:=+vlmcsd,然后重新编译,编译完成后上传至路由器安装。

安装完成后,访问路由器管理界面,[服务] → [KMS服务器] → 勾选 [开始] 和 [使用配置文件] → [保存&应用],[自动激活] 我没试过,想尝试的小伙伴可以试一试。

至此,KMS 服务器就搭建完成了,下面就可以激活 Windows 和 Office 了。

激活 Windows 和 Office

注意:仅 Windows Vista 及以上系统可以使用 KMS 激活,且 Windows7 旗舰版 不支持 KMS 激活。

这里以 Windows 10 专业版和 Office 2016 为例演示如何激活。

KMS 激活也需要密钥,且每个系统版本的密钥不同,不过只有 1 个密钥,比如 Windows 10 专业版的密钥:W269N-WFGWX-YVC9B-4J6C9-T83GX

Windows KMS 密钥:https://technet.microsoft.com/en-us/library/jj612867(v=ws.11).aspx

Office KMS 密钥:https://technet.microsoft.com/en-us/library/dn385360(v=office.16).aspx

激活 Windows 10 专业版

右键开始菜单,点击 [命令提示符 (管理员)] 或 [Windows PowerShell (管理员)]

输入 slmgr /upk 卸载原有密钥,如果是刚装好的系统,这一步可以省略。

输入 slmgr /skms 192.168.1.1 设置 KMS 服务器地址,如果你的路由器 IP 不是 192.168.1.1,记得改一下。

输入 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 安装 KMS 密钥

输入 slmgr /ato 查看激活状态,如果显示 “成功地激活了产品”,表示激活成功,

每隔 180 天会自动续订,不需要担心激活过期。

激活 Office 2016

Office 激活稍微麻烦点

右键开始菜单,点击 [命令提示符 (管理员)] 或 [Windows PowerShell (管理员)]

输入 cd "C:\Program Files (x86)\Microsoft Office\Office16" 这个是 Office 激活脚本所在位置,不同的 Office 版本不一样,比如 Office 2013 是 cd "C:\Program Files (x86)\Microsoft Office\Office15"

PowerShell 输入 foreach ($x in Get-ChildItem ..\root\Licenses16\*_KMS*.xrm-ms -name) {cscript ospp.vbs /inslic:"..\root\Licenses16\$x"} 安装 KMS 许可证

命令提示符 输入 for /f %x in ('dir /b ..\root\Licenses16\*_KMS*.xrm-ms') do cscript ospp.vbs /inslic:"..\root\Licenses16\%x" 安装 KMS 许可证

Office 2013 好像不需要安装许可证(VOL版)

输入 cscript ospp.vbs /sethst:192.168.1.1 设置 KMS 服务器地址,如果你的路由器 IP 不是 192.168.1.1,记得要改一下。

输入 cscript ospp.vbs /inpkey:XQNVK-8JYDB-WJ9W3-YJ8YR-WFG99 安装 KMS 密钥

输入cscript ospp.vbs /act 激活已安装的 Office 密钥

输入 slmgr /ato SKUID 查看激活状态,SKUID 在上面那个命令输出结果里面。

我测试的过程中发生了点小意外,所以截图我就不发了。(我才不会告诉你们是因为我懒)

如果你的路由器有公网 IP 或可以外网访问,可以把 KMS 服务器端口(1688)转发做远程 KMS 服务器给他人使用。


这下就不怕重装系统激活失效了,也不用担心激活工具附带病毒木马,有任何问题在下方给我留言。

 

OpenWrt SDK 编译软件包(基础篇)

https://www.mivm.cn/openwrt-sdk-package-foundation/

OpenWrt 是个非常好用且强大的 Linux 发行版,常用于路由器等嵌入式设备。之前我也写了不少关于 OpenWrt 的教程。

OpenWrt 和其他 Linux 发行版一样,都可以通过软件包源码编译适合自己设备运行的软件包,不过由于 OpenWrt 大部分运行于路由器,存储空间不充裕,并没有像其他 Linux 发行版那样附带 GCC 可以及时编译,不过 OpenWrt 提供了 SDK,可以使用其他 Linux 发行版来为 OpenWrt 编译软件包。

这篇教程就教大家如何使用 OpenWrt SDK 来为自己路由器的 OpenWrt 编译软件包,这样大家就可以自己编译一些开源项目或者是《OpenWrt 安装及配置 Aria2 教程》里面提到的完整版 Aria2 这种的。当然,同样适用于 LEDE 和 PandoraBox。

准备工作

首先需要一个 Linux 系统,不要使用 Windows10 的 Linux 子系统,要使用完整的 Linux 系统。

推荐使用 Deepin (深度 Linux),由国人团队开发,附带安装器,只需轻点几下鼠标,就可以完成双系统的安装。系统附带了 Chrome、QQ、网易云音乐等常用软件,不用担心不会使用 Linux 的尴尬。

系统安装后,打开终端 Ctrl + Alt + T ,依次输入:sudo apt-get update # 更新软件源sudo apt-get upgrade -y # 更新软件包sudo apt-get install subversion g++ zlib1g-dev build-essential git python rsync man-db libncurses5-dev gawk gettext unzip file libssl-dev wget -y # 安装所需软件包,然后重启系统。

如果你使用 PandoraBox SDK 进行编译,推荐使用 Ubuntu 14.04 系统,或者使用我写的脚本来安装所需依赖库。wget https:https://cdn.mivm.cn/www.mivm.cn/archives/openwrt-sdk-package-foundation/PandoraBoxSDK_lib.tar.gz && tar zxf PandoraBoxSDK_lib.tar.gz && cd PandoraBoxSDK_lib && sudo ./install.sh

然后下载适合你路由器的 OpenWrt SDK,根据 CPU 架构和系统版本,比如 K3,CPU 架构是 bcm53xx,系统是 LEDE Snapshots,下载 bcm53xx 的 LEDE Snapshots SDK。

将下载好的 SDK 解压,就可以开始编译软件包了。

编译软件包

打开 SDK 文件夹 → 右键空白处 → [在终端打开] → 依次输入 ./scripts/feeds update -a # 更新软件列表 、 ./scripts/feeds install -a # 安装软件列表make defconfig # 生成配置文件

PandoraBox SDK 默认没有软件列表配置文件,下载 https://cdn.mivm.cn/Hill-Blog/article/openwrt-sdk-package-foundation/feeds.conf.default 复制至 PandoraBox SDK 目录,执行更新和安装命令和 ./scripts/feeds uninstall base-files busybox freeswitch # 卸载不兼容的软件包

输入 make menuconfig 进入配置界面

界面操作

↑ ↓:目录选择

← →:功能选择

回车键:执行功能

Y: 选中

N:取消选中

Esc:返回

斜杠键:搜索

功能选项

Select (选择):这个选项下按回车才可以进入目录。

Exit (退出):和 ESC 键作用相同,返回上一级或退出。

Help (帮助):显示帮助信息。

Save (保存):保存当前配置信息变更,每次退出前记得保存一下。

Load (加载):加载其他配置文件,一般用不到。

目录后面有箭头都可以进入,前面有方括号的都可以选中。

接下来编译个自带软件列表的软件包,以完整版 Aria2 为例。

打开配置界面

依次进入 [Network] → [File Transfer]

按 Y 选中 Aira2

进入 [Aria2 Configuration]

有几个没有被启用的选项(功能),依次按 Y 选中启用

保存 → 退出

输入 make package/aria2/compile V=s 开始编译,耐心等待编译完成。如需编译其他软件包,把 aria2 改为对应的软件包名即可,前提是软件列表有对应软件包。

注:V=s的作用是输出详细信息

推荐使用代理加速软件包源码下载

如果你的 CPU 有多个线程,可以加上 -j线程数 来使用多线程编译,例如:make package/aria2/compile V=s -j4 # 启用4个线程

编译好的 ipk 文件可以在 bin/packages/arm_cortex-a9/packages 找到。当然,不同的软件包和 CPU 架构路径不一样,不过都在 bin/packages

有时候我们需要编译第三方软件包怎么办?接下来以 vlmcsd (KMS服务器) 为例,教大家编译第三方软件包。

输入 cd package # 进入 package 目录

git clone https://github.com/openwrt-develop/openwrt-vlmcsd.git # 获取 vlmcsd 源码 和 git clone https://github.com/openwrt-develop/luci-app-vlmcsd.git # 获取 vlmcsd Luci 界面源码

cd .. # 返回上级(SDK)目录

make menuconfig

不知道软件包在那个分类怎么办?可以使用搜索功能,按斜杠键后输入关键字,然后找到我们需要的软件包,Location 就是软件包所在位置。

vlmcsd 在 Network → 找到软件包并选中

保存 → 退出

输入 make package/openwrt-vlmcsd/compile V=s # 编译 vlmcsd 和 make package/luci-app-vlmcsd/compile V=s # 编译 Luci 界面。有小伙伴可能要问了,软件包名不是 vlmcsd 吗,为什么命令是 openwrt-vlmcsd ?

那个是源码文件夹名称,源码文件夹名称是 openwrt-vlmcsd,也可以把文件夹名称改下。

第三方软件包编译的 ipk 一般是在 bin/packages/arm_cortex-a9/base

适用于 OpenWrt SDK 编译第三方软件包可以在 GitHub 找到,你可以在搜索软件名称后面加上 openwrt,比如:”vlmcsd openwrt”。

常见问题

问:为什么我make menuconfig之后没有软件包?

答:需要更新 feed 列表源,./scripts/feeds update -a # 更新软件源 、 ./scripts/feeds install -a # 安装软件源

问:为什么我编译会报错?

答:详细查看输出信息,找出错误信息部分,并尝试解决,你也可以将错误信息截图至QQ群并@小山。

问:软件源没我需要的软件包怎么办?

答:可以参考上面编译 KMS 服务器的方法,去 GitHub 寻找对应的软件包,也可以点击网站底部的 GitHub 图标到小山的仓库里寻找。注意!我重点说一下,并不是随便一个程序的源码复制/克隆到 SDK 目录就可以进行编译的。首先,确保你准备编译的源码支持configuremake,然后,这份源码不是直接放在 SDK 目录的,而是要再写一个 Makefile 用于 SDK,告诉 SDK,你这个源码的下载地址、软件包名称、版本号、依赖项等等,然后软件包才可以显示在软件包列表里,才可以用上面的方法编译。关于怎么写这个 Makefile,可以参考http://wiki.openwrt.org/doc/devel/packages,相信稍微有点编程基础的人都看得懂。当然,也有不用写 Makefile 的方法,直接用工具链编译,不过这个也有点麻烦,暂且不讨论。

问:PandoraBox SDK 编译某些软件包报错怎么办?

答:PandoraBox SDK 编译某些软件包确实会报错,至于报错的原因,我还没搞懂,有搞懂的小伙伴欢迎留言给我。

如果你还有什么不懂的地方,欢迎在下方留言。