在小米路由器3G的OpenWRT环境安装node.js

(一)node.js 安装要求

在路由器的 OpenWRT 环境安装 node.js 环境需要有以下几个条件:

  • Flash 和内存要相对较大。我编译的 Node.js 和 npm 分别为6兆字节和4.5兆字节,因此需要选择硬件资源比较富裕的一些硬件。比如:小米路由器3G,带 USB 接口的 V1 版本,内存和 Flash 有256MB/128MB。
ning@bdcloud:node$ ll
total 10304
drwxr-xr-x 2 ning ning    4096 Jan  5 16:02 ./
drwxr-xr-x 8 ning ning    4096 Jan  5 15:49 ../
-rw-r--r-- 1 ning ning 6028619 Jan  5 15:50 node-npm_v8.17.0-1_mipsel_24kc.ipk
-rw-r--r-- 1 ning ning 4493900 Jan  5 15:49 node_v8.17.0-1_mipsel_24kc.ipk

(二)node.js 的 OpenWRT版本的编译过程

Hirokazu MORIKAWA的github项目 https://github.com/nxhack/openwrt-node-packages 是支持arm/mips/x86架构的,能够满足大多数的嵌入式设备。下面是我的编译过程:

  • 使用 OpenWRT的 V18.06.5分支编译
git clone https://github.com/openwrt/openwrt
git checkout v18.06.5
  • 将 openwrt-node-packages 项目添加到 openwrt 项目中
    在 feeds.conf.default 文件中最后一行添加,并指定使用该项目的 openwrt-18.06 分支
src-git node https://github.com/nxhack/openwrt-node-packages.git;openwrt-18.06
  • 运行如下命令:
./scripts/feeds update node
rm ./package/feeds/packages/node
rm ./package/feeds/packages/node-*
./scripts/feeds install -a -p node
  • 编译配置:
make menuconfig
  • 选择小米路由器3G,带 USB 接口的 V1 版本
   Target System (MediaTek Ralink MIPS)  ---> 
   Subtarget (MT7621 based boards)  --->       
   Target Profile (Xiaomi Mi Router 3G)  ---> 
  • 选择 FPU 模拟器
Global build settings  ---> Kernel build options  ---> [*] Compile the kernel with MIPS FPU Emulator
  • 选择v8 版本的 node.js 和 npm
Languages  ---> Node.js  ---> -*- node.......... Node.js is a platform built on Chrome's JavaScript runtime 
                                                                Configuration  ---> Version Selection (8.x Maintenance LTS)

Languages  ---> Node.js  ---> <*> node-npm............................. NPM stands for Node Package Manager
  • 编译
make V=99
  • 编译后的OpenWRT固件位置在
openwrt/bin/targets/ramips/mt7621/openwrt-ramips-mt7621-mir3g-squashfs-sysupgrade.tar
  • node.js 和 npm 安装文件在
openwrt/bin/packages/mipsel_24kc/node/node_v8.17.0-1_mipsel_24kc.ipk
openwrt/bin/packages/mipsel_24kc/node/node-npm_v8.17.0-1_mipsel_24kc.ipk

(三)node.js 和 npm 的安装

  • 将 node_v8.17.0-1_mipsel_24kc.ipk 和 node-npm_v8.17.0-1_mipsel_24kc.ipk 通过 sftp 上传到单板上。通过 opkg 命令进行安装
opkg install node_v8.17.0-1_mipsel_24kc.ipk
opkg install node-npm_v8.17.0-1_mipsel_24kc.ipk

至此,任务达成。如果觉得编译太麻烦,可以直接使用我编译的版本。(注意:只能在小米路由器3G上使用)。
https://chou-o-ning.github.io/blog/assets/node_v8.17.0-1_mipsel_24kc.ipk
https://chou-o-ning.github.io/blog/assets/node-npm_v8.17.0-1_mipsel_24kc.ipk
https://chou-o-ning.github.io/blog/assets/openwrt-ramips-mt7621-mir3g-squashfs-sysupgrade.tar

(四)安装中出现的一些情况

  • 在使用 npm install 命令时会出现下面的一些错误,但不影响使用,可以忽略之。
npm ERR! code ENOENT
npm ERR! syscall scandir
npm ERR! path /tmp/npm-5228-90177edd
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, scandir '/tmp/npm-5228-90177edd'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 
npm ERR! code ENOENT
npm ERR! syscall scandir
npm ERR! path /tmp/npm-5228-90177edd
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, scandir '/tmp/npm-5228-90177edd'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent 
  • node是单独编译的,因此 opkg update 的时候会出现错误,可以不用理会。
opkg update

Downloading http://downloads.openwrt.org/releases/18.06.5/packages/mipsel_24kc/node/Packages.gz
*** Failed to download the package list from http://downloads.openwrt.org/releases/18.06.5/packages/mipsel_24kc/node/Packages.gz
  • 由于使用的是编译的内核,因此在安装一些模块时会出现下面的错误:
root@OpenWrt:~# opkg install luci-app-shadowsocksR-GFW_1.2.1_all.ipk 
Installing luci-app-shadowsocksR-GFW (1.2.1) to root...
Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-app-shadowsocksR-GFW:
 *  kernel (= 4.14.151-1-16b77c6fbb9d9192d39ab642ba67d11a)
 * opkg_install_cmd: Cannot install package luci-app-shadowsocksR-GFW.

可以使用下面的命令,看到相关的依赖模块。

root@OpenWrt:~# rm -fr /var/opkg-lists/
root@OpenWrt:~# opkg install luci-app-shadowsocksR-GFW_1.2.1_all.ipk 
Installing luci-app-shadowsocksR-GFW (1.2.1) to root...
Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-app-shadowsocksR-GFW:
 *  ipset
 *  ip
 *  iptables-mod-tproxy
 *  libpcre
 *  dnsmasq-full
 *  coreutils
 *  coreutils-base64
 * opkg_install_cmd: Cannot install package luci-app-shadowsocksR-GFW.

依赖模块中,有些模块是用户态程序,比如 coreutils,不依赖于内核,可以通过 opkg update 和 opkg install 命令一个一个安装。

opkg update
opkg install coreutils

有些模块是内核模块,比如 ipset,这时就必须要使用自己编译出来的模块了。使用下面的命令找到相关的模块:

ning@bdcloud:openwrt$ find . -name ipset*.ipk
./bin/packages/mipsel_24kc/base/ipset_6.38-1_mipsel_24kc.ipk
./staging_dir/packages/ramips/ipset_6.38-1_mipsel_24kc.ipk

然后上传到单板上,单独安装指定文件。

root@OpenWrt:~# opkg install ipset_6.38-1_mipsel_24kc.ipk

如果还继续出现依赖性错误,则继续下面的操作:

rm -fr /var/opkg-lists/
root@OpenWrt:~# opkg install ipset_6.38-1_mipsel_24kc.ipk

打印出依赖关系后,继续递归处理每个安装文件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,408评论 4 371
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,690评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,036评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,726评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,123评论 3 296
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,037评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,178评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,964评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,703评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,863评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,333评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,658评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,374评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,195评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,988评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,167评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,970评论 2 279

推荐阅读更多精彩内容