OpenWrt-Oui的安装

Ubuntu22
OpenWrt 22.03
MT7620A

背景

如果在LuCI环境下开发比较艰难,可以考虑使用一个更新的框架叫Oui,由于它的依赖都很新,我们不得不使用Ubuntu22来帮我们。接下来,我先短暂介绍一下在Ubuntu22下编译OpenWrt的注意事项。

Ubuntu22下编译OpenWrt的注意事项

完整安装编译依赖

bash 复制代码
sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev \
libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev \
libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 \
python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo \
uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev

feeds 安装和更新需反复执行

bash 复制代码
./scripts/feeds update -a
./scripts/feeds install -a

这两行命令需要反复执行,直至确保没有未安装的内容。

make之前先下载

Ubuntu22必须先下载再make,否则就会出现文件找不到的Error 2现象。也就是说,先反复执行:

bash 复制代码
make download V=s

make 确保单线程

在首次编译打包固件时,必须严格遵守单线程编译:

bash 复制代码
make V=s -j1

安装nodejs

由于Oui推荐装一个18以上的NodeJS,但是在Ubuntu22环境下,默认是12。手动搞不太简单,推荐借助nvm来管理,我们先安装nvm

安装nvm

nvm官方的脚本如下:

bash 复制代码
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

安装NodeJS 20

这一步非常简单,就是执行nvm命令即可

nvm install 20

这里插一句为什么选择20,因为你如果装19在编译过程中会出现一个依赖要求 required :{node : '^18.0.0 || >= 20.0.0'}

安装Lua-eco

由于Oui依赖于Lua-eco,所以我们需要先安装它。

好,我们首先需要移动到目录 feeds/packages/lang/ 下,执行克隆项目的命令:

bash 复制代码
git clone --recursive https://github.com/zhaojh329/lua-eco.git

然后,我们安装编译需要的软件:

bash 复制代码
sudo apt install -y liblua5.3-dev libev-dev libssl-dev libmosquitto-dev

接下来,我们开始本机的编译:

bash 复制代码
cd lua-eco && mkdir build && cd build
cmake .. && sudo make install

仅仅做到这个还不够,官网的教程还有一句

你可以直接使用 github.com/zhaojh329/l... 替换 feeds/packages/lang/lua-eco/Makefile

巧了,我们还没这个Makefile呢,所以我们新建一个Makefile文件,并写入 GitHub上的内容

由于它在packages目录下,我们移动回OpenWrt的根目录,并执行:

bash 复制代码
./scripts/feeds update packages
./scripts/feeds install -a -p packages

安装成功后,你将在 make menuconfig 中看到这样的效果:

编译 Oui

添加feed

在OpenWrt的根目录下,我们执行:

php 复制代码
echo "src-git oui https://github.com/zhaojh329/oui.git" >> feeds.conf.default

更新feed

接着,我们更新并安装oui。

css 复制代码
./scripts/feeds update -a
./scripts/feeds install -a -p oui

开始编译

bash 复制代码
make V=s

如果一切顺利,你将在 bin 目录下找到类似于 openwrt-ramips-mt7620-ralink_mt7620a-evb-squashfs-sysupgrade.bin 的文件,更新固件后,你会看到下面这样的界面:

好了,到了这一步,你已经安装成功了,至于说如何开发,只要你对Vue比较熟,官方文档也足够了。

致谢

又到了我最喜爱的致谢环节了,首先感谢Oui的作者Jianhui Zhao,其次感谢Oui的赞助方们,他们也为这个项目做了一些贡献。

最后,感谢在 Build error: "make: [toplevel.mk:218: world] Error 2"? 回复的 loophole ,他点醒了我,极有可能 Ubuntu22 环境下会出现一些下载失败的情况,耐心调整网络后,我编译成功了!

相关推荐
Freak嵌入式9 小时前
开源一款I2C电机驱动扩展板-FreakStudio多米诺系列
嵌入式硬件·嵌入式·智能硬件·开源硬件·micropython·电机驱动·电子模块
楼台的春风1 天前
【详细讲解在STM32的UART通信中使用DMA机制】
stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式·信息与通信
忧虑的乌龟蛋1 天前
嵌入式 Linux:使用设备树驱动GPIO全流程
linux·服务器·嵌入式·imx6ull·gpio·点灯·pinctrl
FreakStudio2 天前
开源一款串口舵机驱动扩展板-FreakStudio多米诺系列
单片机·嵌入式·大学生·电子diy
楼台的春风2 天前
PWM(脉宽调制)技术详解:从基础到应用实践示例
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式
苏慕TRYACE3 天前
RT-Thread+STM32L475VET6实现呼吸灯
c++·嵌入式·rt-thread
___波子 Pro Max.3 天前
嵌入式0xDEADBEEF
嵌入式
楼台的春风5 天前
【GPIO详解及实践示例】
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式
_阿疯_5 天前
嵌入式 lwip http server makefsdata
网络协议·http·嵌入式·lwip·makefsdata
肥仔哥哥19306 天前
嵌入式软件、系统、RTOS(高软23)
嵌入式·嵌入式系统·嵌入式软件·嵌入式系统分类·高软嵌入式