pikvm系统主要软件包解析备忘

news2024/11/27 6:35:37

PI-KVM让普通家用PC也有能够像数据中心机房里面的IP-KVM一样的功能。

详细信息参考官网:PiKVM HandbookOpen and cheap DIY IP-KVM on Raspberry Pihttps://docs.pikvm.org/

nullOpen and inexpensive DIY IP-KVM based on Raspberry Pi - GitHub - pikvm/pikvm: Open and inexpensive DIY IP-KVM based on Raspberry Pihttps://github.com/pikvm/pikvm除了买作者提供的套件外,也可以自己根据原理用树莓派DIY,可惜现在的树莓派已经炒成理财产品了,但各种其他派非常便宜,尤其是基于全志和rockchip的板子,有机会做做简单的移植。先学习下官网的系统资料。另外,查阅资料的时候发现B站也发文章有移植的,不过基本上还是跟着作者的系统做了重新打包,不具备通用性。

Pikvm系统

Flashing the OS image - PiKVM HandbookOpen and cheap DIY IP-KVM on Raspberry Pihttps://docs.pikvm.org/flashing_os/官网这里提供的下载其实有限,如果自己DIY的没有预编译好的系统,需要自己编译,作者非常良心

Building PiKVM OS - PiKVM HandbookOpen and cheap DIY IP-KVM on Raspberry Pihttps://docs.pikvm.org/building_os/基本框架是机遇docker的环境来从头编译一个系统,不过这不是要编译所有的二进制包,而是只用bootstrap环境上打包基于archlinux的系统就行,都是二进制的基本不用编译。

打包系统的2个仓库

GitHub - pikvm/os: OS for PiKVM based on Arch Linux ARMOS for PiKVM based on Arch Linux ARM. Contribute to pikvm/os development by creating an account on GitHub.https://github.com/pikvm/os这个里面包含了pikvm相关的配置和docker打包文件。通过查看仓库的Makefile文件,主要打包的部分如下:

os: $(_BUILDER_DIR)
        rm -rf $(_BUILDER_DIR)/stages/{pikvm,pikvm-otg-console}
        cp -a pikvm pikvm-otg-console $(_BUILDER_DIR)/stages
        cp -a disk-$(if $(findstring v2,$(PLATFORM))$(findstring v3,$(PLATFORM))$(findstring v4,$(PLATFORM)),v2,v0).conf $(_BUILDER_DIR)/disk.conf
        $(MAKE) -C $(_BUILDER_DIR) os \
                NC=$(NC) \
                BUILD_OPTS=' $(BUILD_OPTS) \
                        --build-arg PLATFORM=$(PLATFORM) \
                        --build-arg VERSIONS=$(call fv,ustreamer)/$(call fv,kvmd)/$(call fv,kvmd-webterm)/$(call fv,kvmd-oled)/$(call fv,kvmd-fan) \
                        --build-arg OLED=$(call optbool,$(OLED)) \
                        --build-arg FAN=$(call optbool,$(FAN)) \
                        --build-arg ROOT_PASSWD=$(ROOT_PASSWD) \
                        --build-arg WEBUI_ADMIN_PASSWD=$(WEBUI_ADMIN_PASSWD) \
                        --build-arg IPMI_ADMIN_PASSWD=$(IPMI_ADMIN_PASSWD) \
                ' \
                PROJECT=pikvm-os-$(PLATFORM)$(SUFFIX) \
                BOARD=$(BOARD) \
                STAGES='$(STAGES)' \
                HOSTNAME=$(HOSTNAME) \
                LOCALE=$(LOCALE) \
                TIMEZONE=$(TIMEZONE) \
                REPO_URL=$(REPO_URL)


$(_BUILDER_DIR):
        mkdir -p `dirname $(_BUILDER_DIR)`
        git clone --depth=1 https://github.com/mdevaev/pi-builder $(_BUILDER_DIR)

可以发现他其实是先下载了 

GitHub - pikvm/pi-builder: Extensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using DockerExtensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using Docker - GitHub - pikvm/pi-builder: Extensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using Dockerhttps://github.com/mdevaev/pi-builder

这个仓库,然后把github.com/pikvm/os里面的配置拷贝到这个仓库,最终其实是Make带了一些配置的参数,make的这个仓库的Makefile

GitHub - pikvm/pi-builder: Extensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using DockerExtensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using Docker - GitHub - pikvm/pi-builder: Extensible tool to build Arch Linux ARM for Raspberry Pi on x86_64 host using Dockerhttps://github.com/pikvm/pi-builder这个仓库也是Pikvm作者的仓库,用来打包基于archlinx的树莓派系统,主要的配置在stages目录(前面那个仓库的配置也是靠拷贝到stages里的)。看仓库地址和readme,作者是位毛子哥。

软件包

通过查看dockerfile.part文件,可以发现,除了基础操作系统以外,整个PIKVM主要靠

  • kvmd-platform-$PLATFORM-$BOARD 
  • kvmd-webterm 
  • kvmd-oled 
  • kvmd-fan 

这几个软件包运行,其余都是系统内自带的包。作者编译好的软件包仓库地址如下:

Index of /repos/arch/icon-default.png?t=N3I4https://files.pikvm.org/repos/arch/打包的PKGBUILD文件在下面这个仓库 

GitHub - pikvm/packages: PiKVM PackagesPiKVM Packages. Contribute to pikvm/packages development by creating an account on GitHub.https://github.com/pikvm/packages

其中最主要的就是kvmd-platform-$PLATFORM-$BOARD 这个包。

GitHub - pikvm/kvmd: The main PiKVM daemonThe main PiKVM daemon. Contribute to pikvm/kvmd development by creating an account on GitHub.https://github.com/pikvm/kvmd分析这个包的打包过程,可以发现,他主要依赖

  • ustreamer
  • janus-gateway-pikvm 其实就是janus-gateway特定版本加了个js文件

这两个包,其中ustreamer也是作者写的,是一个MJPEG-HTTP流服务器,然后janus是一个WEBRTC服务器。要正常运行,还得将ustreamer编译的时候加上janus插件参数,编译后拷贝so到janus的插件目录。

janus ustreamer的启动以及配置都在kvmd这个包内,janus ustreamer两个软件包只需要编译安装即可。

主要配置文件在/etc/kvmd/main.yaml,目前还没看源码以及找到参考的参数说明,不过部分参数可以参考官网的文档修改。其他的比如内核模块,系统服务,内核参数,sudo配置,都在kvmd仓库的configs/os下。

对非archlinux运行kvmd,需要三步:

  1. 直接修改kvmd仓库的PKGBUILD文件然后运行,基本上都是shell,这个部分主要是打包。
  2. kvmd仓库内的kvmd.install文件,这个主要是安装脚本。
  3. github.com/pikvm/os这个仓库pikvm内的Dockerfile,里面主要是安装后的服务开启等。

搞完这三步后,就可以用web浏览器访问IPKVM了。同时journalctl -f 查看kvmd相关的后台日志,大部分报错都是缺包导致,可以按照PKGBUILD Dockerfile内的软件包名进行补充。

kvmd的几个主要功能:

  • 视频传输,这个是主要功能,靠ustreamer和janus完成,kvmd提供了web前端页面访问入口以及nginx配置文件。
  • 鼠标键盘模拟,默认是软件合成的鼠标键盘,通过板子的USB OTG功能,虚拟出鼠标键盘,让远端服务器识别到鼠标键盘,对某些情况下如连了硬件kvm的情况下 ,可能需要atmega32u4这种芯片来提供鼠标键盘。(目前还没测试成功)。
  • 虚拟磁盘模拟,同样是usb otg功能,提供虚拟光驱和flash 。按照默认配置的话,注意tf卡分区的时候单独分个区mount,当然也可以nfs或者bind mount 本地某个目录(目前还没测试成功)。
  • GPIO,控制继电器对设备做reset和开关机的了。
  • oled fan webterm,还没测试过。

目前看,如果PIKVM 使用HDMI转USB结合HDMI以及USB切换芯片,可以DIY出简单的IP-KVM来,而不止控制单台机器。

未完待续~~~

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

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

相关文章

LeetCode - 34 在排序数组中查找元素的第一个和最后一个位置

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) 题目描述 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在…

【项目笔记】若干基本社团发现算法介绍

两个衡量指标:边介数 & 模块度 边介数计算: 以下用图来自:https://blog.csdn.net/weixin_44704845/article/details/102686597 选择S为源节点对图搜索,画出S到其他节点的最短路径树 2.给边标数字 1) 所有邻近叶…

【YOLO系列】--YOLOv4超详细解读/总结(网络结构)

YOLOv4(YOLOv4: Optimal Speed and Accuracy of Object Detection)(原文+解读/总结+翻译) 系列文章: YOLOv1论文解读/总结_yolo论文原文_耿鬼喝椰汁的博客-CSDN博客 YOLOv2论文解读/总结_耿鬼…

软件测试面试至今0 offer,问题到底出在哪儿?

转眼已是四月中旬,求职招聘季也快要结束啦,如果没点真技术 真本事,不了解点职场套路,在今年行情下,找工作可是难上加难。 现在点开微博或者脉脉,只要搜索“招聘”,用“惨不忍睹”来形容也不为过…

【数据结构】经典排序

【数据结构】八大排序 1. 排序的概念和运用1.1 概念1.2 运用 2. 常规的排序算法介绍一. 插入排序1.1 直接插入排序1.2 希尔排序 二. 选择排序2.1 选择排序2.2 堆排序 三. 交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoare法3.2.2 挖坑法3.2.3 前后指针/左右指针法3.2.4 分治法/递归…

windows11 安装 webassembly,遇到的各种错误

1.最开始是尝试在 虚拟机 centos 7 安装的(因为不想安装vs2015) 但是无奈 各种错误.最终无法解决. 2.尝试在windows安装,吐槽一下官方文档 的安装提示是错误的(太老了) 参考以下文章: https://blog.csdn.net/weixin_45482422/article/details/119459918 https://blog.csdn.…

C++中this指针的特性,存放位置,能否为空?

文章目录 一、this指针的特性二、this指针存在哪里?三、this指针可以为空吗? 一、this指针的特性 我们学习过C知道,成员函数没有直接存放在类而是放在了公共代码区,这样当多个对象调用同一个函数就不需要再创建一个函数成员了。 …

libevent高并发网络编程 - 02_libevent缓冲IO之bufferevent

文章目录 1. 为什么需要缓冲区?2. 水位3. bufferevent常用API3.1 evconnlistener_new_bind()3.2 evconnlistener_free()3.3 bufferevent_socket_new()3.4 bufferevent_enable()3.5 bufferevent_set_timeouts()3.6 bufferevent_setcb()3.7 bufferevent_setwatermark(…

全面解析Linux指令和权限管理

目录 一.指令再讲解1.时间相关的指令2.find等搜索指令与grep指令3.打包和压缩相关的指令4.一些其他指令与热键二.Linux权限1.Linux的权限管理2.文件类型与权限设置3.目录的权限与粘滞位 一.指令再讲解 1.时间相关的指令 date指令: date 用法:date [OPTION]… [FOR…

缓冲区的flip

流和缓冲区都是用来描述数据的。计算机中,数据往往会被抽象成流,然后传输。比如读取一个文件,数据会被抽象成文件流;播放一个视频,视频被抽象成视频流。处理节点为了防止过载,又会使用缓冲区削峰&#xff0…

巴西大神开发的 ARPL 黑群晖DSM系统引导在线编译工具

ARPL 是一款黑群晖系统引导在线编译工具,目前支持最新群晖系统DSM 7.1.1,今天为了折腾升级这个群晖系统DSM 7.1.1浪费了一天的时间,ARPL是巴西人一位大神开发的黑群晖系统引导在线编译工具,使用下来非常的不错,可惜没有…

3网络互联-3.4【实验】【计算机网络】

3网络互联-3.4【实验】【计算机网络】 前言推荐3网络互联3.4 IP分组转发与静态路由实验目的实验内容及实验环境实验原理1.路由器2.路由(Routing)3.IP分组的转发4.路由的构建5.静态路由设计原则 实验过程1.搭建一个仅包含直连路由的网络拓扑,观察路由器的…

时间序列分析

一、移动平均法 1.一次移动平均法 公式: 预测标准误差: 本质:用前N次数据预测t1期的数据 规律:如果实际数据波动较大,N值越大,预测到的数据波动越小 注意:一般不适用于波动较大的数据。用一次移动平均法…

Kafka原理之消费者

一、消费模式 1、pull(拉)模式(kafka采用这种方式) consumer采用从broker中主动拉取数据。 存在问题:如果kafka中没有数据,消费者可能会陷入循环中,一直返回空数据 2、push(推)模式 由broker决定消息发送频率,很难适应所有消费者…

【MySQL】 InnoDB

学习笔记,来源黑马程序员MySQL教程 文章目录 逻辑存储结构架构内存架构磁盘结构后台线程 事务原理概述redo logundo log MVCC基本概念实现原理1、隐藏字段2、undo log3、readview 总结 逻辑存储结构 一个表空间对应一张表一 页 对应B树上一个 节点Trx id&#xff1a…

Git cat命令的用法

cat (全称 concatenate) 命令是 Linux/类 Unix 操作系统中最常用的命令之一。cat 命令允许我们创建单个或多个文件、查看文件内容、连接文件和重定向终端或文件中的输出。 语法: cat [OPTION] [FILE]...1.终端查看一个文件内容 cat file01.txt2.终端查看多个文件…

熵、信息量、条件熵、联合熵、互信息简单介绍

熵、信息量、条件熵、联合熵、互信息简单介绍 近期在看对比学习论文,发现有不少方法使用了互信息这种方式进行约束,故在此整理一下网上查阅到的关于互信息的相关内容。 一、熵、信息量 关于熵的讨论,这个知乎专栏写的挺不错的。 熵在信息论…

【更新日志】填鸭表单TduckPro v5.1 更新

hi,各位Tducker小伙伴。 填鸭表单pro迎来了v5.1版本;本次我们进行了许多的功能新增和优化,能够让我们在日常使用中获得更好的体验。 让我们一起来康康新功能吧。 01 新增Pro功能 新增登录后才能填写表单。 新增表单卡片一键发布。 新增矩…

【C++学习】CC++内存管理

目录 一、C&C内存管理 二、C语言中动态内存管理方式:malloc/calloc/realloc/free 三、C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作符自定义类型 四、operator new与operator delete函数 4.1 operator new与operator delete函数&#x…

【云原生】使用外网Rancher2.5.12在阿里云自建内网K8s 1.20集群

目录 一、目标二、解决方案三、草图四、版本信息五、资源规划六、必要条件七、开始部署1、安装Docker2、安装Rancher3、解析Rancher Server URL域名4、创建K8s集群5、注册K8s集群节点 八、验证 一、目标 在云平台搭建一套高可用的K8s集群 二、解决方案 第一种:使…