news 2025/12/24 9:59:15

Ubuntu编译自定义immortalwrt固件与软件编译

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu编译自定义immortalwrt固件与软件编译

1 前言

istoreos中有许多可安装的软件,但如果自己需要制作一个特定的固件或者编译开源的源码时就需要编译来生成所需软件

2 所需工具

  • 1.Ubuntu系统
  • 2.VMware虚拟机
  • 3.相应版本的sdk开发包
  • 4.ssh连接工具
  • 5.git(可选)

3 软件编译

3.1 openwrt与immortalwrt

首先我们需要在VMware中安装Ubuntu
下载链接

可自行选择服务器或桌面版下载
安装好并启动后通过ssh连接

然后下载对应sdk包

注:固件编译istoreos,openwrt与immortalwrt方法相同

中科大镜像

搜索openwrt或immortalwrt来获取相应版本sdk(以immortalwrt为例)

然后选择对应的处理器型号(这里以mediatek为例)



在此页中找到immortalwrt-sdk-24.10.4-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst下载并上传到Ubuntu上解压

使用如下代码解压

tar-xvf immortalwrt-sdk-24.10.4-mediatek-filogic_gcc-13.3.0_musl.Linux-x86_64.tar.zstcdimmortalwrt-sdk-24.10.4-mediatek-filogic_gcc-13.3.0_musl.Linux-x86_64/

我们需要安装如下软件

sudoaptupdatesudoaptinstall-ymakepython3-pip aria2 genisoimage build-essentialgawkgcc-multilib g++-multilib flex bison gettext\unzipzlib1g-dev libncurses-dev libssl-devrsynccurlwget\python3 python3-venv python3-setuptoolsfiletargitpatch\libelf-dev libtool autoconf automake subversion xsltproc

其次需要更新包内容,如果是编译软件就执行

./scripts/feeds update luci ./scripts/feedsinstallluci

如果因为网络问题无法更新,需要修改feeds.conf.default的下载链接

我们做完这些之后需要将自己写的软件或者git下的源码放入当前目录的package文件夹下(以luci-app-parentcontrol为例)

然后返回上一级目录编译相应软件包

cd..makepackage/luci-app-parentcontrol/compileV=s


显示如图情况后可以去bin/packages/aarch64_cortex-a53/base/目录查看打包软件包

将打包好的软件包在浏览器登陆相应设备管理页面后在软件包内上传并安装即可

3.2 istoreos

需要将仓库git到本地,或直接在网页下载
点此访问

gitclone https://github.com/istoreos/istoreos.gitcdistoreos ./scripts/feeds update luci ./scripts/feedsinstallluci

其余部分与3.1的方法相同

补充:如果是第一次运行打包编译软件会遇到
只需要save保存.config即可退出该页面,后期编译就不会弹出这个页面了

4 固件编译

在固件编译上来说,我们需要下载全部内容

./scripts/feeds update -a ./scripts/feedsinstall-a

执行后需要自行配置相应功能

makemenuconfig

配置好后保存并编译(期间会下载各种编译包,编译时间长并且占用空间大)

最好保留60GB空间来进行编译

maketools/installV=s

编译后固件也会存放在bin/packages/aarch64_cortex-a53/base/

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/23 19:55:15

Object.defineProperty和Proxy实现拦截的区别

1.Object.definedProperty的实现拦截必须得声明一个额外的变量,例如下面这样 const obj {}; let _data "这是一些数据"; Object.defineProperty(obj, "data", {get() {console.log("读取data的操作被拦截了");return _data;}, }); …

作者头像 李华
网站建设 2025/12/22 18:40:24

若依物联网

物联网平台 - Thinglinks-iot ## 🌟 项目简介 一个功能完备、高可扩展的物联网平台,提供完整的设备接入、管理和数据处理解决方案。支持多种网络协议,具备强大的消息解析和实时告警能力,帮助企业快速构建物联网应用。 该项目现已纳…

作者头像 李华
网站建设 2025/12/19 4:55:31

PSEN1抗体:如何揭示阿尔茨海默病致病机制与治疗新靶点?

一、PSEN1基因为何成为神经退行性疾病研究的关键靶点? PSEN1(早老素1)基因位于人类14号染色体q24.2区域,全长87kb,包含14个外显子,编码由467个氨基酸组成的跨膜蛋白,分子量约为53kD。该基因在进…

作者头像 李华
网站建设 2025/12/21 19:52:11

Docker Engine 升级指南:保障容器安全的关键步骤

无论是为了获得新功能、性能优化,还是更关键的——为了修复重大的安全漏洞(如 runc 漏洞 CVE-2024-21626),定期升级 Docker Engine 都是容器基础设施运维中的一项重要任务。 本篇文章将为您提供一个通用的升级流程,确保…

作者头像 李华
网站建设 2025/12/24 6:53:35

7、Python高级语法:描述器、属性与元编程实战

Python高级语法:描述器、属性与元编程实战 1. Python中的私有属性与名称修饰 许多C++和Java程序员初涉Python时,会惊讶于Python没有 private 关键字。Python中最接近的概念是“名称修饰”(name mangling)。每当属性以 __ 为前缀时,解释器会动态重命名该属性。示例如…

作者头像 李华