如何把openwrt的ipk软件包安装到ubuntu上

news2025/1/20 10:51:58

前提:都是arm64的架构的软件包。

下载openwrt的ipk软件包

1. 从https://pkgs.org/ 查找下载软件包:

本文以swconfig软件包为例,下载swconfig和相关的依赖软件包:

swconfig_12_aarch64_cortex-a72.ipk

libuci20130104_2021-10-22-f84f49f0-6_aarch64_cortex-a72.ipk

libubox20220515_2022-05-15-d2223ef9-1_aarch64_cortex-a72.ipk

libnl-tiny1_2021-11-21-8e0555fb-1_aarch64_cortex-a72.ipk

uci_2021-10-22-f84f49f0-6_aarch64_cortex-a72.ipk (可选,用于测试)

2. 解压回档文件:

如上图所示把ipk的软件包解压,提出出data.tar, 然后把所有的data.tar解压到一个tmp_rootfs的目录夹,这个目录夹就是我们最后要复制到ubuntu系统中的文件结构。

运行问题处理

上传程序之后出现程序无法运行的情况,如上图所示。

  1. 修改libc.so格式问题:

目前大多是ubuntu的发行版用的是glibc, /lib/aarch64-linux-gnu/libc.so 为一个ASCII text的,里面包含了真正的库文件路径和名称:

使用strace分析ldd的装在过程:strace -f -s 1024 ldd itgw/bin/swconfig,可以看到如下查找libc.so的过程

再查看系统当前的libc的情况:

把ubuntu系统中的/lib/aarch64-linux-gnu/libc-2.31.so复制到sw-rootfs的安装包里,和执行程序放在一个位置,之后执行swconfgi时,只要在swconfgi坐在的目录去执行程序,自动的就会使用当前路径下的libc.so,而不会去使用根目录下的/lib/aarch64-linux-gnu/libc.so这个ASCII text。

添加运行时的环境变量脚本,指定对应的lib查找路径:

  1. 修改ld版本问题:

cp -rf /lib/ld-linux-aarch64.so.1 /lib/ld-musl-aarch64.so.1复制一个musl名称的文件名。

制作安装打包脚本

  1. 安装脚本:
    root@easyHome:/home/forlinx/test/sw-config# cat sw-install.sh
    #!/bin/bash
    
    
    basepath=$(cd `dirname $0`; pwd)
    
    if [ "$1" != "-f" ]; then
            echo "$basepath"
            old_md5=`md5sum /xxx/switch/swconfig | awk '{printf $1}'`
            new_md5=`md5sum "$basepath"/xxx/switch/swconfig | awk '{printf $1}'`
            if [ "$old_md5" == "$new_md5" ];then
                    echo "same file, skip the install..."
                    exit 1
            fi
    
    else
            echo "force to update"
    fi
    
    echo "start to install swconfig..."
    echo "$basepath...."
    cd $basepath
    cp -rf * /
    rm -r /sw-install.sh
    
    echo "create the openwrt's running EVN..."
    cp -rf /lib/ld-linux-aarch64.so.1 /lib/ld-musl-aarch64.so.1
    cp /lib/aarch64-linux-gnu/libc.so.6 /itgw/switch/usr/local/lib/libc.so
    ldconfig
    ldconfig
    echo "enable inspur-switch service..."
    systemctl enable inspur-switch

2. 打包文件结构:

root@easyHome:/home/forlinx/test/sw-config# tree
.
├── etc
│   ├── netplan
│   │   └── 00-netcfg.yaml
│   └── uci-defaults
├── xxx
│   └── switch
│       ├── sw-config.sh
│       ├── sw-env.sh
│       ├── swconfig
│       ├── uci
│       └── usr
│           └── local
│               └── lib
│                   ├── libc.so
│                   ├── libnl-tiny.so
│                   ├── libubox.so -> libubox.so.20220515
│                   ├── libubox.so.20220515
│                   └── libuci.so
├── sw-install.sh
└── usr
    └── lib
        ├── config
        │   └── uci.sh
        ├── network
        │   └── switch.sh
        └── systemd
            └── system
                └── inspur-switch.service

14 directories, 14 files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1416086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

认识与探索大模型时代的RPA应用及进化(上)

AI Agent当前仍然处于技术爬坡与实验阶段,特别是在企业领域,真正的成熟应用还处于广泛探索与原型验证阶段,离成熟还尚待时日。而同时另外一种在最近几年广受欢迎的自动化解决方案-RPA(机器人流程自动化)也在LLM时代不断…

python使用迭代生成器yield减少内存占用的方法

嗨喽,大家好呀~这里是爱看美女的茜茜呐 在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中。 其实这本没有必要,因为这些参量很有可能是一次性使用的, 甚至很多场景下这些参量是不需要同时存储在内存中的&…

IM-CNN

SHAP means ‘Shapley additive explanation’ 辅助信息 作者未提供代码

基于ncurse的floppy_bird小游戏

1. 需求分析 将运动分解为鸟的垂直运动和杆的左右运动。 2. 概要设计 2.1 鸟运动部分 2.2 杆的运动 3. 代码实现 #include <stdio.h> #include <ncurses.h>#include <stdlib.h> #include <time.h>int vx 0; int vy 1;int bird_r; int bird_c;int…

HTML5和CSS3的新特性

HTML5的新特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等 1&#xff0c;HTML5新增的语义化标签 <header> 头部标签 <nav> 导航标签 <article> …

1 月 28日算法练习-前缀和

小郑的蓝桥平衡串 思路&#xff1a;把 L 看成 1&#xff0c;Q 看成 -1&#xff0c;利用前缀和来得到输入串的前缀子串中LQ 的和&#xff0c;利用前缀和差的性质得到子串&#xff0c;通过枚举看它是否平衡。 将L看做1&#xff0c;Q看做&#xff0d;1&#xff0c;只有当某个区间…

Django实战

一、开发登录表单 def login_form(request):html <html><body><form method"post">用户名:<input name "username" type"text"></input></br>密码&#xff1a;<input name "password" type…

ARM常用汇编指令

文章目录 前言一、处理器内部数据传输指令MOV&#xff1a; 将数据从一个寄存器复制到另一个寄存器。MRS&#xff1a; 将特殊寄存器(CPSR,SPSR)中的数据传给通用寄存器。MSR&#xff1a; 将通用寄存器中的数据传给特殊寄存器(CPSR,SPSR)。 二、存储器访问指令LDR:用于从内存中加…

5G赋能智慧文旅:科技与文化的完美结合,打造无缝旅游体验,重塑旅游业的未来

一、5G技术&#xff1a;智慧文旅的强大引擎 5G技术的起源可以追溯到2010年&#xff0c;当时世界各国开始意识到4G技术已经达到了瓶颈&#xff0c;无法满足日益增长的移动通信需求。2013年&#xff0c;国际电信联盟&#xff08;ITU&#xff09;成立了5G技术研究组&#xff0c;开…

力扣LCR 180. 文件组合(双指针)

Problem: LCR 180. 文件组合 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 本题目可以利用滑动窗口的技巧&#xff08;滑动窗口就是双指针的运用&#xff09;解决&#xff0c;具体实现如下 1.逻辑上生成窗口&#xff1a;让两个指针i&#xff0c;j分别初始化为1…

IPv6报文格式(全网最详细)

IPv6报文格式 报文格式 图1 IPv6报文头格式 表1 IP头字段解释 字段长度含义Version4比特 4&#xff1a;表示为IPV4&#xff1b;6&#xff1a;表示为IPV6。Traffic class8比特流量类别。该字段及其功能类似于IPv4的业务类型字段。该字段以区分业务编码点&#xff08;DSCP&…

203.移除链表元素(力扣LeetCode)

文章目录 203.移除链表元素题目描述原链表删除元素虚拟头节点 203.移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head …

基于Micropython利用ESP32-C3驱动墨水屏显示图片

从咸鱼上淘了两块2.9寸的墨水屏价签&#xff0c;可以结合ESP32-C3做个低功耗的时钟温湿度计。 1、所需硬件 合宙的ESP32-C3&#xff1a; 电子价签拆出来的2.9寸墨水屏&#xff1a; ——电子价签型号为&#xff1a;Stellar-L&#xff0c;墨水屏型号为&#xff1a;E029A01。电子…

Less-1(sqlmap自动注入攻击)--sqli

环境准备 打开火狐浏览器&#xff0c;进入sqli第一关的页面 工具准备 sqlmap 参数解释 -u URL 指定目标URL进行注入测试。--dataDATA指定POST请求的数据进行注入测试--cookieCOOKIE指定用于身份验证的cookie进行注入测试-p PARAMETER指定要测试的参数--levelLEVEL设置测试的深…

[260. 只出现一次的数字 III](C语言题解)(位运算)(力扣)

> Problem: [260. 只出现一次的数字 III](260. 只出现一次的数字 III - 力扣&#xff08;LeetCode&#xff09;) # 思路 > 想到数组中只有一个数只出现了一次的解法&#xff1a;**所有数异或&#xff0c;最后答案就是那个只出现一次的数**&#xff0c;该题只需将两个不…

Java技术栈 —— Hadoop入门(二)

Java技术栈 —— Hadoop入门&#xff08;二&#xff09; 一、用MapReduce对统计单词个数1.1 项目流程1.2 可能遇到的问题1.3 代码勘误1.4 总结 一、用MapReduce对统计单词个数 1.1 项目流程 (1) 上传jar包。 (2) 上传words.txt文件。 (3) 用hadoop执行jar包的代码&#xff0c;…

HarmonyOS 鸿蒙应用开发 (七、HTTP网络组件 axios 介绍及封装使用)

在HarmonyOS应用开发中&#xff0c;通过HTTP访问网络&#xff0c;可以使用官方提供的ohos.net.http模块。但是官方提供的直接使用不太好使用&#xff0c;需要封装下才好。推荐使用前端开发中流行的axios网络客户端库&#xff0c;如果是前端开发者&#xff0c;用 axios也会更加顺…

FOC系列(五)----STM32F405RGT6控制板焊接与初步编写代码

声明&#xff1a;本人水平有限&#xff0c;博客可能存在部分错误的地方&#xff0c;请广大读者谅解并向本人反馈错误。    首先祝大家新年快乐&#xff0c;因为我也快放假了&#xff0c;驱动板只能是开学之后再去测试了&#xff0c;本篇博客应该是本专栏年前的最后一篇了 一…

QT 范例阅读:Vector Deformation

效果图&#xff1a; 主要代码&#xff1a; 实现放大镜效果QPainter painter;//两种方式if (1) {m_lens_image QImage(bounds.size(), QImage::Format_ARGB32_Premultiplied);m_lens_image.fill(0);painter.begin(&m_lens_image);} else {m_lens_pixmap QPixmap(bounds.si…

GEE数据集——2024 年日本海地震的紧急观测数据

2024 年日本海地震的紧急观测数据 2024 年日本海地震发生在 2024 年 1 月 1 日下午 4:00 后&#xff08;日本时间&#xff09;&#xff0c;造成了重大损失&#xff0c;包括多处建筑物倒塌、山体滑坡和火灾。应日本国内防灾机构的请求&#xff0c;JAXA 利用 ALOS-2 对灾害发生当…