OpenWrt 二次开发 JavaScript 新手指南

OpenWrt 是一种针对嵌入式设备的 Linux 发行版,广泛用于路由器等网络设备。在这个指南中,我们将学习如何在 OpenWrt 上进行 JavaScript 二次开发。以下是整个流程的概览。

开发流程

我们将整个开发流程分为以下几个步骤:

| 步骤   | 描述                     | 所需工具                |
|--------|--------------------------|-------------------------|
| 步骤 1 | 安装 OpenWrt           | OpenWrt 固件            |
| 步骤 2 | 设置开发环境           | Git, Make, SDK          |
| 步骤 3 | 开发 JavaScript 模块    | Node.js, npm            |
| 步骤 4 | 编译固件                | Make 工具               |
| 步骤 5 | 测试和调试              | OpenWrt 设备, SSH       |
| 步骤 6 | 部署到设备              | SCP, SSH                |
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

接下来,我们将逐步详细介绍每一步需要做的事情及相关代码。

步骤 1: 安装 OpenWrt

首先,你需要一块支持 OpenWrt 的路由器。你可以从 OpenWrt 官网下载适用于你的设备的固件,并按照说明进行安装。

步骤 2: 设置开发环境

2.1 安装必备工具

确保可以访问网络,并安装必要的包管理工具。对于 Ubuntu/Debian 系统,可以使用以下命令:

sudo apt update
sudo apt install git build-essential linux-headers-$(uname -r) \
    libssl-dev zlib1g-dev libncurses5-dev unzip wget
  • 1.
  • 2.
  • 3.
2.2 下载 OpenWrt SDK

进入你的工作目录,下载 OpenWrt SDK(确保选择对应路由器型号的版本):

wget 
tar -xzvf sdk.tar.gz
cd sdk
  • 1.
  • 2.
  • 3.

通过以上步骤,你已经搭建了 OpenWrt 的开发环境。

步骤 3: 开发 JavaScript 模块

3.1 安装 Node.js 和 npm

如果你的 OpenWrt 固件支持 Node.js,你可以使用以下命令安装:

# 这一步通常是在系统中执行的
sudo apt install nodejs npm
  • 1.
  • 2.
3.2 创建 JavaScript 文件

在 SDK 目录下创建一个新的目录来存放你的 JavaScript 模块。例如,创建一个名为 my-module 的目录并进入:

mkdir my-module
cd my-module
  • 1.
  • 2.

在该目录下创建一个名为 index.js 的文件:

// index.js - 示例 JavaScript 模块
console.log("Hello, OpenWrt!");
  • 1.
  • 2.
3.3 使用 npm 初始化项目

my-module 目录下运行以下命令:

npm init -y
  • 1.

这将生成一个 package.json 文件,其中包含项目的基本信息。

3.4 添加依赖库(可选)

你可以根据需要添加任何 NPM 库。例如,安装 Express.js:

npm install express
  • 1.
3.5 完成的我的模块

更新 index.js 加入 express 示例:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

// 定义一个简单的路由
app.get('/', (req, res) => {
    res.send('Hello, OpenWrt with Express!');
});

// 启动服务器
app.listen(PORT, () => {
    console.log(`Server running at http://localhost:${PORT}`);
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

步骤 4: 编译固件

在 SDK 目录下,创建一个新的 Makefile 在 my-module 目录中。以下是一个简单的 Makefile 示例:

# Makefile - 用于编译项目

include $(TOPDIR)/rules.mk

PKG_NAME:=my-module
PKG_VERSION:=1.0
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define Package/my-module
    SECTION:=utils
    CATEGORY:=Utilities
    TITLE:=My JavaScript Module
endef

define Package/my-module/install
    $(INSTALL_DIR) $(1)/usr/bin
    $(INSTALL_BIN) ./my-module/index.js $(1)/usr/bin/my-module
endef

$(eval $(call BuildPackage,my-module))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

然后在 SDK 目录下运行:

make package/my-module/compile
  • 1.

步骤 5: 测试和调试

5.1 连接到 OpenWrt 设备

使用 SSH 连接到你的 OpenWrt 设备:

ssh root@<router-ip>
  • 1.
5.2 测试 JavaScript 模块

安装 Node.js(如果尚未安装),并运行你的 JavaScript 文件:

node /usr/bin/my-module
  • 1.
5.3 调试记录

你可以使用命令 logread 查看系统日志,确认你的模块正在正常运行。

步骤 6: 部署到设备

6.1 使用 SCP 上传文件

如果需要通过 SCP 上传其他文件,可以使用以下命令:

scp -r my-module/ root@<router-ip>:/usr/bin/
  • 1.
6.2 最终运行

确保一切部署成功,重新连接到设备,通过以下命令运行模块:

node /usr/bin/my-module/index.js
  • 1.

结论

通过以上步骤,我们已经完成了 OpenWrt 的 JavaScript 二次开发。无论你是添加新功能,还是创建新的服务,这里的步骤都给你提供了一个清晰的方向。请记住,实际开发中可能会遇到不同的问题和挑战,但只要不断尝试和学习,你一定能够成功。

如有需要,下面是一个简单的关系图展示了整个开发流程的要素:

OPENWRT string firmware string sdk DEV_ENV string tools string nodejs MODULE string javascript string makefile TEST string ssh string scp 使用 开发 测试

希望这个指南能帮助到你,祝你在 OpenWrt 的开发旅程中一帆风顺!