当前位置: 首页 > news >正文

Openwrt(IstoreOS)安装iventoy

背景

目前家里有两台不用的旧主机,平时没事在家里折腾这两台机器。经常换装各种系统。最早是将镜像刷入u盘作为启动盘,这样需要重复装系统就特别麻烦。后来用了ventoy以后一个U盘可以放多个系统镜像,还能做口袋系统(SystemToGo)。最近看到ventoy的作者发布了iventoy提供了一种简单易用的网络启动的方法,就想着在家里的网关上安装iventoy作为PEX服务器。以后重装系统,进PE都不需要U盘了。

尝试按官网方式安装(失败了)

  1. 下载官网tar包

  2. 解压

  3. 运行启动脚本

存在问题:

openwrt基于busybox,存在以下问题

  1. 其内部命令相比debian、RHL等发行版要精简很多,导致脚本(iventoy.sh)无法运行(可修改启动脚本解决)

  1. 缺少相关类库,导致二进制文件(lib/iventoy)也无法执行

错误:lib/iventoy not found,但是明明是有这个文件的,通过搜索引擎检索发现这种问题可以通过ldd命令去调试

如上图,通过ldd lib/iventoy可以发现报了很多错,通过各种搜索发现问题都指向没有类库glibc,而openwrt使用的是muslc,而安装glibc非常麻烦,并且也不建议这么做,因为openwrt本来就是为嵌入式设备设计的,加了会导致系统变大。

到这里就失败了,然后就想到了能否做成Docker镜像来运行,首先就是到hub.docker.com和github上去搜索是否有现成的镜像,结果来真有,详细步骤参考后文。

使用docker镜像安装(成功了)

推荐镜像:ziggyds/iventoy,该作者的镜像通过Github Actions自动更新

参考 docker-compose.yml

version: '3.9'
services:iventoy:image: ziggyds/iventoy:latestcontainer_name: iventoyrestart: alwaysprivileged: true #must be truenetwork_mode: hostvolumes:- /data/sda/packages/SystemImages:/app/iso- ./config:/app/data- ./logs:/app/logenvironment:- AUTO_START_PXE=true # optional, true by default

启动:docker compose up -d

这里直接启动会遇到问题,因为我们把data目录映射到了容器外面,如果不映射那么配置会随着容器的销毁而销毁,因此我们需要把单独下载的linux安装包对应文件拷贝到映射配置目录即可。

也可以通过docker命令来实现

# 先移除容器
docker compose down
# 复制容器data目录的文件到你映射的配置目录
docker cp iventoy:/app/data ./config
# 重新启动
docker compose up -d

使用外部dhcp-服务器(网关的DHCP)

我的openwrt系统是网关也是nas,本机已经存在一个hdcp服务器了,所以参考官方文档配置外部dhcp服务器即可。

  1. 登录iventoy控制台,在【参数配置】中设置【DHCP 服务器模式】为External

  2. 在openwrt中配置PXE启动选项

对比ventoy

根据我的实际使用经验来看,iventoy不能替代ventoy,原因主要有以下两点

  1. 不支持SystemToGo,无盘系统启动好像也不行(没有足够资料供我研究)

  2. 不是所有的镜像都支持网络启动。目前感觉是只有支持legacy模式的镜像才能通过iventoy启动,另外WIMBOOT也不支持

相关文章:

  • Hive Thrift Server
  • 小程序Taro框架 自定义底部Tabbar,处理自定义Tab栏切换卡顿、闪烁
  • 华为配置智能升级功能升级设备示例
  • 【C++ Primer Plus学习记录】break和continue语句
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • 通过vue ui创建项目
  • IntelliJ IDEA 下载安装及配置使用教程
  • C#中的线程以及[STAThread]、COM(Component Object Model)
  • 985硕的4家大厂实习与校招经历专题分享(part1)
  • ChatGPT提问技巧——控制温度和TOP-P样本
  • 2024年 Python面试热点
  • Python实现选择排序算法
  • Java方法重载
  • 基于Spring Boot + Vue的信息化在线教学平台
  • 爬虫学习笔记-requests爬取NBA得分榜
  • 【RocksDB】TransactionDB源码分析
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 78. Subsets
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Java|序列化异常StreamCorruptedException的解决方法
  • Next.js之基础概念(二)
  • pdf文件如何在线转换为jpg图片
  • Python实现BT种子转化为磁力链接【实战】
  • react 代码优化(一) ——事件处理
  • Ruby 2.x 源代码分析:扩展 概述
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Vue官网教程学习过程中值得记录的一些事情
  • 第十八天-企业应用架构模式-基本模式
  • 排序算法学习笔记
  • 前端知识点整理(待续)
  • 如何合理的规划jvm性能调优
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何在 Tornado 中实现 Middleware
  • 深度学习在携程攻略社区的应用
  • 使用common-codec进行md5加密
  • 我感觉这是史上最牛的防sql注入方法类
  • 物联网链路协议
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 容器镜像
  • ​MySQL主从复制一致性检测
  • !!Dom4j 学习笔记
  • #if 1...#endif
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (BFS)hdoj2377-Bus Pass
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (强烈推荐)移动端音视频从零到上手(下)
  • (算法)Travel Information Center
  • (转)scrum常见工具列表
  • ***利用Ms05002溢出找“肉鸡
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 反射 Reflect
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .project文件