ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

openmediavault 开发测试环境一键搭建指南:基于 Vagrant(VirtualBox / libvirt)部署 Debian 版 OMV

openmediavault 开发测试环境一键搭建指南:基于 Vagrant(VirtualBox / libvirt)部署 Debian 版 OMV 存储后端前端【免费下载链接】openmediavaultopenmediavault is the next generation network attached storage (NAS) solution based on Debian Linux. Thanks to the modular design of the framework it can be enhanced via plugins. openmediavault is primarily designed to be used in home environments or small home offices.项目地址https://gitcode.com/gh_mirrors/op/openmediavault点击查看免费下载本文围绕仓库中 vagrant/debian/README.md 展开介绍如何用 Vagrant 快速拉起一个 Debian trixie 基座的 openmediavault 开发/测试虚拟机并完整解析配套的 Vagrantfile、patch.sh 与 install.sh 三个关键文件。读完本文你将掌握 VirtualBox 与 libvirt 两种 provider 下的环境准备步骤、Vagrant 配置中网络/磁盘/同步目录的含义以及开发过程中最常见的两个排障手段root 登录与 NFS 权限问题可直接复用到本地搭建 openmediavault 8代号 synchrony测试环境的场景。一、这套环境解决什么问题openmediavault 是基于 Debian 的下一代 NAS 操作系统通过插件实现模块化扩展。在开发过程中开发者需要反复在“干净”的 Debian 系统上安装、升级、调试 OMV 及其插件包如果每次都手动装虚拟机成本极高。仓库的vagrant/目录就是为了解决这一问题用代码声明式地描述一台 OMV 测试机随时vagrant up即可复现。其中 vagrant/debian/README.md 专门面向Linux 宿主机的 Debian 测试环境支持两种虚拟化后端后端适用场景关键包VirtualBox最常见的桌面虚拟化方案跨平台virtualbox、nfs-kernel-server、vagrant、vagrant-reloadlibvirtLinux 原生 KVM/QEMU 方案性能更好qemu-kvm、virt-manager、vagrant、vagrant-libvirt、vagrant-reload此外仓库还提供了一个 vagrant/windows/README.md 的 Windows 测试环境用于验证 SMB “以前的版本”等 Linux 上无法测试的功能需要winrm插件且 Vagrant ≥ 2.3.8与本文的 Debian 环境互补。二、基于 VirtualBox 的环境搭建按 vagrant/debian/README.md 的指引依次执行以下四步1. 安装 VirtualBox$ sudo apt-get install virtualboxVirtualBox 是虚拟机运行后端负责创建并运行 VM。2. 安装 NFS 内核服务器$ sudo apt-get install nfs-kernel-server这一步是必须的Vagrantfile 中通过 NFS 协议把宿主机上的deb/目录挂载进虚拟机详见下文第四节宿主机必须提供 NFS 服务否则同步目录无法挂载安装脚本拿不到源码。3. 安装 Vagrant$ sudo apt-get install vagrantREADME 同时提醒Vagrant 也可以从 HashiCorp 官网的 Vagrant 安装页面下载官方包。如果发行版的 apt 仓库中 Vagrant 版本过旧例如旧版 WinRM 相关功能受限见 vagrant/windows/README.md建议使用官方包。4. 安装 vagrant-reload 插件$ vagrant plugin install vagrant-reload这个插件提供config.vm.provision :reload能力用于在配置过程中重启虚拟机。为什么需要它因为 Vagrantfile 的 provision 流程是config.vm.provision :shell, :path patch.sh config.vm.provision :reload config.vm.provision :shell, :path install.sh即先运行patch.sh修改网络与 GRUB 配置需要重启才能生效紧接着执行:reload重启再运行install.sh正式安装 openmediavault。三、基于 libvirt 的环境搭建如果宿主是 Linux 且希望直接使用 KVM/QEMU 原生虚拟化按以下步骤1. 安装 KVM/QEMU 与图形管理工具$ sudo apt install qemu-kvm virt-managerqemu-kvm提供 KVM 加速的 QEMU 后端virt-manager是图形化管理界面可选但便于查看虚拟机状态。2. 安装 NFS 内核服务器$ sudo apt-get install nfs-kernel-server与 VirtualBox 方式相同NFS 服务用于同步目录挂载。3. 安装 Vagrant 与 libvirt 驱动$ sudo apt-get install vagrant vagrant-libvirt注意这里额外安装了vagrant-libvirt它让 Vagrant 能够使用 libvirt 作为 provider。4. 安装 vagrant-reload 插件$ vagrant plugin install vagrant-reload与 VirtualBox 方式完全相同原因也相同provision 流程需要在 patch 之后重启。两种方式准备完毕后在vagrant/debian/目录下执行vagrant up即可启动如需显式指定后端可分别使用vagrant up --providervirtualbox或vagrant up --providerlibvirt随后vagrant ssh进入虚拟机。四、Vagrantfile 深度解析这台测试机长什么样Vagrantfile 是整套环境的“蓝图”值得逐项拆解基础镜像与主机名hostname omv8box config.vm.box debian/trixie64 config.vm.define hostname config.vm.hostname hostname基础镜像为debian/trixie64Debian 13 “trixie” 64 位。之所以选 trixie是因为 openmediavault 8代号 synchrony官方只支持 Debian trixie——仓库根目录的 install.sh 中DEBIAN_VERSION_CODENAMEtrixie并会在安装时严格校验系统版本。主机名固定为omv8boxVirtualBox provider 下 VM 显示名也叫omv8box。双私有网络config.vm.network private_network, ip: 192.172.16.24, auto_config: false config.vm.network private_network, ip: 192.172.16.25虚拟机挂了两块私有网卡第一块 IP 为192.172.16.24且auto_config: false即 Vagrant 不做自动网络配置——这是刻意留给开发人员手动配置的网卡例如测试静态 IP、网卡绑定等 OMV 网络功能与 patch.sh 的网卡重命名相互配合。第二块 IP 为192.172.16.25由 Vagrant 自动配置用于常规 SSH 登录与访问 OMV 的 Web 管理界面openmediavault 默认以 HTTPS 提供 Web UI可从宿主机通过该 IP 访问。内存与附加磁盘config.vm.provider :virtualbox do |prov| prov.name hostname prov.memory 4096 # Add some disks. for i in 0..2 do filename ./disks/#{hostname}-disk#{i}.vmdk unless File.exist?(filename) prov.customize [createmedium, disk, --filename, filename, --size, 1000 * 1024] prov.customize [storageattach, :id, --storagectl, SATA Controller, --port, i 1, --device, 0, --type, hdd, --medium, filename] end end end config.vm.provider :libvirt do |prov| prov.memory 4096 # Add some disks. for i in 0..2 do prov.storage :file, :size 1G, :bus virtio end end两个 provider 均分配4096 MB 内存并各挂载3 块附加数据盘VirtualBox磁盘以./disks/omv8box-diskN.vmdk形式创建创建参数为--size 1000 * 1024VirtualBox 的--size单位是 MB即每块约 1000 GiB 的稀疏 vmdk只有当磁盘文件不存在时才创建并挂载到 SATA 控制器的 1、2、3 端口因此重跑vagrant up不会清空已有数据盘。libvirt通过prov.storage :file, :size 1G, :bus virtio添加 3 块 1G 的 virtio 总线磁盘。附加多块数据盘是为了模拟 NAS 的真实场景——在 Web 界面中创建 RAID、格式化文件系统、建立共享文件夹等操作都依赖额外磁盘避免在系统盘上做破坏性测试。同步目录与 NFSconfig.vm.synced_folder ., /vagrant, disabled: true config.vm.synced_folder ../../deb, /home/vagrant/openmediavault, type: nfs, nfs_version: 4默认的/vagrant同步目录被禁用disabled: true避免把 Vagrantfile 所在目录整个挂进去。仓库根目录下的 deb/ 目录内含openmediavault及各插件包的源码、Salt 状态、PHP 引擎代码等通过NFSv4挂载到虚拟机内的/home/vagrant/openmediavault。这样开发者可以直接在宿主机编辑代码在虚拟机内即时看到改动并执行dpkg-buildpackage、omv-salt等构建/部署命令——这正是宿主机必须安装nfs-kernel-server的原因。五、两个 provision 脚本从裸 Debian 到 OMVpatch.sh修复 Debian 云镜像的网络与 GRUBpatch.sh 在安装 OMV 之前先对 Debian 系统打补丁解决 Debian 云镜像Vagrant box 基于此的已知问题echo Patching network configuration ... sed --in-place --expressions/eth0/ens8/ --expressions/eth2/ens10/ /etc/network/interfaces echo Patching rebuilding grub configuration ... sed --in-place --expressions/net.ifnames0/net.ifnames1/ --expressions/biosdevname0/biosdevname1/ /etc/default/grub update-grub强制使用可预测的网络设备命名把接口配置中的eth0改为ens8、eth2改为ens10与 Vagrantfile 中两块私有网卡的预期命名对齐把 GRUB 参数从net.ifnames0 biosdevname0关闭可预测命名改为net.ifnames1 biosdevname1启用并执行update-grub重建引导配置脚本注释明确指出这些改动需要重启才能生效这正是 Vagrantfile 中紧随其后的config.vm.provision :reload存在的意义。install.sh在干净系统上安装 openmediavaultinstall.sh 是核心安装脚本做了三件事# Disable the Debian backport repositories. sed -i /-backports/s/^/#/ /etc/apt/sources.list # Append user vagrant to group ssh, otherwise the user is not allowed # to log in via SSH. usermod --groups _ssh --append vagrant # Set default password for the root user. yes openmediavault | passwd # Install openmediavault using the official installation script. wget --output-document- https://get.openmediavault.io | sh -禁用 backports 仓库把sources.list中所有-backports行注释掉避免软件版本漂移影响 OMV 依赖。把vagrant用户加入_ssh组新版 Debian OpenSSH 默认只允许_ssh组用户 SSH 登录不加组会导致vagrant ssh失败。把 root 密码设为openmediavault便于开发过程中通过 SSH 或 TTY 直接以 root 登录排障对应 README 的 Troubleshooting 说明。执行官方安装脚本wget -O - https://get.openmediavault.io | sh -拉取并运行 OMV 官方安装器其内容与仓库根目录的 install.sh 一致——校验必须由 root 执行、系统必须是 Debian trixie、架构只能是 amd64/arm64、不允许已安装桌面环境然后导入 GPG 密钥、写入 apt 源、以--no-install-recommends安装openmediavault软件包最后执行omv-confdbadm populate omv-salt deploy run hosts即初始化 OMV 配置数据库并部署/etc/hosts以保证主机名能被 IPv4/IPv6 正常解析否则构建 Salt grains 的core.fqdns会非常缓慢随后打印登录信息。六、完整启动流程完成 README 中的依赖安装后整体流程如下# 1. 进入环境目录 cd vagrant/debian # 2. 选择后端启动VirtualBox 或 libvirt vagrant up --providervirtualbox # vagrant up --providerlibvirt # 3. 登录虚拟机 vagrant ssh # 4. 日常操作guest 内 /home/vagrant/openmediavault 即宿主机 deb/ 目录 # 可在此执行 dpkg-buildpackage 构建 deb 包、omv-salt deploy run state 部署配置 # 5. 关机/销毁销毁会连 ./disks/ 下的 vmdk 一起处理注意备份数据盘 vagrant halt # vagrant destroy启动完成后从宿主机浏览器访问https://192.172.16.25即可进入 OMV Web 管理界面默认 HTTPS 443 端口初始登录凭据为 README 中说明的 root 用户与密码openmediavault。七、故障排查Troubleshootingvagrant/debian/README.md 给出了两个开发过程中最常见的坑1. 如何以 root 登录如果需要通过 SSH 或 TTY 以root用户登录密码为openmediavault。该密码由 install.sh 中的yes openmediavault | passwd设置。注意若在 OMV Web 界面勾选了 “Permit root login” 选项SSH 的 root 登录才会生效脚本注释也明确提醒了这一点。2. NFS 挂载报mount.nfs: access denied by server while mounting ...如果遇到mount.nfs: access denied by server while mounting ...错误请确保你的家目录/home/USER/对others可访问r-x。这是 NFS 的经典权限问题NFS 导出的目录即宿主机deb/所在路径需要宿主机对所有用户可遍历因此$HOME目录权限必须包含others的r-x。例如chmod orx /home/USER即可解决默认家目录权限755通常已满足。同时请确认宿主机已按前文安装nfs-kernel-server否则同步目录根本无法挂载。八、小结openmediavault 的 Debian Vagrant 环境是一条精心设计的开发流水线debian/trixie64基础镜像 双私有网络 三块附加磁盘 NFS 同步deb/源码目录配合patch.sh网络/GRUB 修复→reload重启→install.sh官方安装器的 provision 序列将“裸 Debian → 可用的 openmediavault 8 测试机”固化为可重复执行的一条命令。无论是验证插件、测试网络/存储配置还是排查安装问题这套环境都是官方推荐的起点。赞分享存储后端前端【免费下载链接】openmediavaultopenmediavault is the next generation network attached storage (NAS) solution based on Debian Linux. Thanks to the modular design of the framework it can be enhanced via plugins. openmediavault is primarily designed to be used in home environments or small home offices.项目地址https://gitcode.com/gh_mirrors/op/openmediavault点击查看免费下载相关推荐OpenReplay 本地开发环境搭建指南基于 Vagrant 与 VirtualBox 的一键式开发虚拟机方案OpenReplay 本地开发环境搭建指南基于 Vagrant 与 VirtualBox 的一键式开发虚拟机方案 本文基于 scripts/vagrant/R可观测性开发工具前端后端CodexBar网络代理设置在企业环境中使用的解决方案CodexBar网络代理设置在企业环境中使用的解决方案 在企业环境中使用CodexBar时网络代理设置是确保工具正常运行的关键环节。CodexBar作为一款AI 应用桌面应用开发工具gh_mirrors/api1/api 测试环境搭建Vagrant/Docker 快速部署开发环境gh_mirrors/api1/api 测试环境搭建Vagrant/Docker 快速部署开发环境 你还在为PHP API开发环境配置繁琐而头疼本地环境与生后端API网关上一篇JupyterHub 强制登录Forced Login示例深度解析基于一次性 Token 的外部应用免提示登录方案下一篇NVIDIA JetBot避障系统实战从零构建智能机器人视觉感知创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表