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

2024-01-25 10:28

本文主要是介绍如何把openwrt的ipk软件包安装到ubuntu上,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前提:都是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/bashbasepath=$(cd `dirname $0`; pwd)if [ "$1" != "-f" ]; thenecho "$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" ];thenecho "same file, skip the install..."exit 1fielseecho "force to update"
    fiecho "start to install swconfig..."
    echo "$basepath...."
    cd $basepath
    cp -rf * /
    rm -r /sw-install.shecho "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.service14 directories, 14 files

这篇关于如何把openwrt的ipk软件包安装到ubuntu上的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642978

相关文章

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

Linux下安装Anaconda3全过程

《Linux下安装Anaconda3全过程》:本文主要介绍Linux下安装Anaconda3全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录简介环境下载安装一、找到下载好的文件名为Anaconda3-2018.12-linux-x86_64的安装包二、或者通

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1