下载OMV源码:
git clone --depth=1 https://github.com/openmediavault/openmediavault.git
安装编译环境:
cd openmediavault/
./buildenvadm.sh -h
./buildenvadm.sh install
这里会安装一堆编译OMV需要的工具。
如果编译过程中报dh命令找不到的错误,需要安装debhelper:
sudo apt install debhelper
编译OMV各种软件包:
cd deb/
make -j binary
make目标可以在输入make之后,按tab键列出来。
顺利的话,就会编译出一堆deb软件包,保存在deb目录下。
alpha@mascot.x ~/workspace/openmediavault/openmediavault/deb $ ll *.deb
-rw-r--r-- 1 alpha alpha 3028108 Jun 5 02:07 openmediavault_7.2.1-1_all.deb
-rw-r--r-- 1 alpha alpha 49432 Jun 5 02:04 openmediavault-clamav_7.0-7_all.deb
-rw-r--r-- 1 alpha alpha 10444 Jun 5 02:04 openmediavault-diskstats_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 17376 Jun 5 02:04 openmediavault-filebrowser_7.0-4_all.deb
-rw-r--r-- 1 alpha alpha 19668 Jun 5 02:04 openmediavault-forkeddaapd_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 67332 Jun 5 02:04 openmediavault-ftp_7.0-5_all.deb
-rw-r--r-- 1 alpha alpha 8908 Jun 5 02:07 openmediavault-hosts_7.0-3_all.deb
-rw-r--r-- 1 alpha alpha 133152 Jun 5 02:07 openmediavault-k8s_7.1.1-1_all.deb
-rw-r--r-- 1 alpha alpha 6032 Jun 5 02:07 openmediavault-keyring_1.0.2-2_all.deb
-rw-r--r-- 1 alpha alpha 25288 Jun 5 02:07 openmediavault-lvm2_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 17352 Jun 5 02:04 openmediavault-md_7.0-7_all.deb
-rw-r--r-- 1 alpha alpha 33312 Jun 5 02:07 openmediavault-nut_7.0.3-2_all.deb
-rw-r--r-- 1 alpha alpha 22840 Jun 5 02:04 openmediavault-onedrive_7.0-3_all.deb
-rw-r--r-- 1 alpha alpha 21952 Jun 5 02:07 openmediavault-owntone_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 22900 Jun 5 02:04 openmediavault-photoprism_7.0-4_all.deb
-rw-r--r-- 1 alpha alpha 14664 Jun 5 02:07 openmediavault-podman_7.0-3_all.deb
-rw-r--r-- 1 alpha alpha 16852 Jun 5 02:07 openmediavault-s3_7.0-3_all.deb
-rw-r--r-- 1 alpha alpha 15500 Jun 5 02:07 openmediavault-shairport_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 3308 Jun 5 02:07 openmediavault-sharerootfs_7.0-1_all.deb
-rw-r--r-- 1 alpha alpha 17760 Jun 5 02:04 openmediavault-snmp_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 18140 Jun 5 02:07 openmediavault-tftp_7.0-2_all.deb
-rw-r--r-- 1 alpha alpha 38240 Jun 5 02:04 openmediavault-usbbackup_7.0.2-1_all.deb
-rw-r--r-- 1 alpha alpha 12872 Jun 5 02:04 openmediavault-wetty_7.0-2_all.deb
参考编译和运行qemu-uboot-arm64单板的Armbian系统-优快云博客这篇文章编译和启动qemu-uboot-arm64 Armbian系统。
注:qemu使用桥接网络启动自己编译的qemu-uboot-arm64 Armbian系统启动后不会自动获取IP,需要手动配置IP。这个除了跟系统配置有关,可能跟网桥的配置,连接的路由器等也有关系。
注2:自己编译的qemu-uboot-arm64 Armbian系统镜像编译过程已经做了扩容50GB(可以通过编译log看到扩容操作)。
less -SR output/logs/log-build-dba7ecf5-9329-41d5-b552-22bf9b8db800.log.ans
...
--> (4279) INFO: Resizing qcow2 image by '+50G' [ image-output-qcow2 ]
...
通过file命令也能看到大小:
file Armbian-unofficial_24.8.0-trunk_Qemu-uboot-arm64_bookworm_current_6.6.32.img.qcow2
Armbian-unofficial_24.8.0-trunk_Qemu-uboot-arm64_bookworm_current_6.6.32.img.qcow2: QEMU QCOW Image (v3), 57923338240 bytes (v3), 57923338240 bytes
启动qemu-uboot-arm64 Armbian系统:
sudo qemu-system-aarch64 -smp 8 -m 8G -machine virt -nographic -cpu cortex-a72 -bios Qemu-uboot-arm64/Armbian-unofficial_24.8.0-trunk_Qemu-uboot-arm64_bookworm_current_6.6.32.u-boot.bin -drive if=none,media=disk,id=drive0,file=Qemu-uboot-arm64/Armbian-unofficial_24.8.0-trunk_Qemu-uboot-arm64_bookworm_current_6.6.32.img.qcow2,discard=unmap,detect-zeroes=unmap -device virtio-blk-pci,drive=drive0,bootindex=0 -drive file=omvdata.qcow2,if=virtio -net nic -net tap,ifname=tap0
查看硬盘:
root@qemu-uboot-arm64:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
zram0 251:0 0 3.9G 0 disk [SWAP]
zram1 251:1 0 50M 0 disk /var/log
zram2 251:2 0 0B 0 disk
vda 252:0 0 53.9G 0 disk
└─vda1 252:1 0 53.4G 0 part /var/log.hdd
/
vdb 252:16 0 64G 0 disk
先安装vim和net-tools,然后配置IP(虽然现在没有IPv4的IP,并不影响apt访问外网下载和安装软件,是否走IPv6访问的?):
apt install vim net-tools
ifconfig enp0s1 192.168.2.90/24
配置完IP之后,就可以把自己编译的OMV软件包复制到虚拟机里了。
这里有个遗留问题,为什么自己编译的这个qemu-uboot-arm64系统没有自动获取IP,但官方下载uefi-arm64版本可以自动获取IP?
参考ARM虚拟机安装OMV这篇文章安装官方的OMV。
安装自己编译的OMV,稍微有点不同。
1、首先把上面编译的OMV deb包都复制到Armbian系统上:
scp -r omv-packages/ root@192.168.2.90:~/
2、Armbian系统缺少OMV的依赖包,直接使用dpkg -i命令安装会因为缺少依赖无法安装,缺少的依赖可以使用aptitude命令安装,可以根据提示自动安装依赖的包:
dpkg -i openmediavault-keyring_1.0.2-2_all.deb
dpkg -i openmediavault_7.2.1-1_all.deb
openmediavault-keyring包可以正常安装,openmediavault主包缺少依赖无法安装:
root@qemu-uboot-arm64:~/omv-packages# dpkg -i openmediavault-keyring_1.0.2-2_all.deb
Selecting previously unselected package openmediavault-keyring.
(Reading database ... 59667 files and directories currently installed.)
Preparing to unpack openmediavault-keyring_1.0.2-2_all.deb ...
Unpacking openmediavault-keyring (1.0.2-2) ...
Setting up openmediavault-keyring (1.0.2-2) ...
root@qemu-uboot-arm64:~/omv-packages# dpkg -i openmediavault_7.2.1-1_all.deb
Selecting previously unselected package openmediavault.
(Reading database ... 59674 files and directories currently installed.)
Preparing to unpack openmediavault_7.2.1-1_all.deb ...
Unpacking openmediavault (7.2.1-1) ...
dpkg: dependency problems prevent configuration of openmediavault:
openmediavault depends on php-fpm; however:
Package php-fpm is not installed.
openmediavault depends on php-json; however:
Package php-json is not installed.
openmediavault depends on php-cgi; however:
Package php-cgi is not installed.
openmediavault depends on php-cli; however:
Package php-cli is not installed.
openmediavault depends on php-mbstring; however:
Package php-mbstring is not installed.
openmediavault depends on php-pam; however:
Package php-pam is not installed.
openmediavault depends on python3-dialog; however:
Package python3-dialog is not installed.
openmediavault depends on acl; however:
Package acl is not installed.
openmediavault depends on xfsprogs; however:
Package xfsprogs is not installed.
openmediavault depends on jfsutils; however:
Package jfsutils is not installed.
openmediavault depends on wsdd (>= 0.7.0); however:
Package wsdd is not installed.
openmediavault depends on sdparm; however:
Package sdparm is not installed.
openmediavault depends on mdadm; however:
Package mdadm is not installed.
openmediavault depends on postfix; however:
Package postfix is not installed.
openmediavault depends on libsasl2-modules; however:
Package libsasl2-modules is not installed.
openmediavault depends on bsd-mailx; however:
Package bsd-mailx is not installed.
openmediavault depends on cpufrequtils; however:
Package cpufrequtils is not installed.
openmediavault depends on uuid; however:
Package uuid is not installed.
openmediavault depends on nfs-kernel-server; however:
Package nfs-kernel-server is not installed.
openmediavault depends on sshpass; however:
Package sshpass is not installed.
openmediavault depends on zstd; however:
Pa