feat: 新增香橙派 Zero One 设备构建支持

- 在 build_img.sh 中新增 orangepi-zero 构建目标支持
This commit is contained in:
mofeng-git 2025-09-20 11:31:57 +08:00
parent 4d4f528178
commit 3f8a9e3b2c
4 changed files with 64 additions and 5 deletions

View File

@ -15,6 +15,7 @@ on:
- vm
- e900v22c
- octopus-flanet
- orangepi-zero
- all
create_release:
description: 'Create GitHub Release'

View File

@ -104,6 +104,13 @@ build_target() {
local network_type=""
NEED_PREPARE_DNS=true
;;
orangepi-zero)
orangepizero_rootfs
local arch="armhf"
local device_type=""
local network_type=""
NEED_PREPARE_DNS=true
;;
*)
echo "错误:未知或不支持的目标 '$target'" >&2
exit 1
@ -140,6 +147,9 @@ build_target() {
onecloud-pro)
pack_img "Onecloud-Pro"
;;
orangepi-zero)
pack_img "Orangepi-Zero"
;;
*)
echo "错误:未知的打包类型 for '$target'" >&2
;;
@ -158,7 +168,7 @@ build_target() {
# 检查是否提供了目标参数
if [ -z "$1" ]; then
echo "用法: $0 <target|all>"
echo "可用目标: onecloud, cumebox2, chainedbox, vm, e900v22c, octopus-flanet, onecloud-pro"
echo "可用目标: onecloud, cumebox2, chainedbox, vm, e900v22c, octopus-flanet, onecloud-pro, orangepi-zero"
exit 1
fi
@ -178,6 +188,7 @@ if [ "$1" = "all" ]; then
build_target "e900v22c"
build_target "octopus-flanet"
build_target "onecloud-pro"
build_target "orangepi-zero"
echo "信息:所有目标构建完成。"
else
build_target "$1"

View File

@ -266,6 +266,40 @@ onecloud_pro_rootfs() {
echo "信息Octopus-Planet Rootfs 准备完成loop 设备 $LOOPDEV 已就绪。"
}
orangepizero_rootfs() {
local source_image="$SRCPATH/image/orangepi-zero/Armbian_community_25.11.0-trunk.208_Orangepizero_bookworm_current_6.12.47_minimal.img"
local target_image="$TMPDIR/rootfs.img"
local offset=$((8192 * 512))
local add_size_mb=600
echo "信息:准备 Orange Pi Zero Rootfs..."
ensure_dir "$TMPDIR"
echo "信息:下载或使用本地 Orange Pi Zero 原始镜像..."
download_file_if_missing "$source_image" || { echo "错误:下载 Orange Pi Zero 原始镜像失败" >&2; exit 1; }
cp "$source_image" "$target_image" || { echo "错误:复制 Orange Pi Zero 原始镜像失败" >&2; exit 1; }
echo "信息:扩展镜像文件 (${add_size_mb}MB)..."
sudo dd if=/dev/zero bs=1M count="$add_size_mb" >> "$target_image" || { echo "错误:扩展镜像文件失败" >&2; exit 1; }
echo "信息:调整镜像分区大小..."
sudo parted -s "$target_image" resizepart 1 100% || { echo "错误:使用 parted 调整分区大小失败" >&2; exit 1; }
find_loop_device
sudo losetup -P "$LOOPDEV" "$target_image" || { echo "错误:设置 loop 设备失败" >&2; exit 1; }
echo "信息:检查并调整文件系统大小..."
sudo e2fsck -y -f "${LOOPDEV}p1" || { echo "错误:文件系统检查失败" >&2; exit 1; }
sudo resize2fs "${LOOPDEV}p1" || { echo "错误:调整文件系统大小失败" >&2; exit 1; }
# 重新设置 LOOPDEV 为分区
sudo losetup -d "$LOOPDEV"
sudo losetup "$LOOPDEV" "$target_image" -o "$offset" || { echo "错误:重新设置 loop 设备失败" >&2; exit 1; }
echo "信息Orange Pi Zero Rootfs 准备完成。"
}
# --- 特定设备的文件配置函数 ---
config_cumebox2_files() {
@ -290,11 +324,21 @@ config_cumebox2_files() {
config_octopus_flanet_files() {
echo "信息:为 Octopus-Planet 配置特定文件 (model_database.conf)..."
# 自动下载 Octopus-Planet 相关文件(如果不存在)
local config_file="$SRCPATH/image/octopus-flanet/model_database.conf"
download_file_if_missing "$config_file" || echo "警告:下载 Octopus-Planet 配置文件失败"
sudo cp "$config_file" "$ROOTFS/etc/model_database.conf" || echo "警告:复制 model_database.conf 失败"
}
}
config_orangepizero_files() {
echo "信息:配置 Orange Pi Zero 特定文件..."
# 清空 modules.conf 文件,避免加载不必要的模块
run_in_chroot "echo 'libcomposite' > /etc/modules-load.d/modules.conf"
run_in_chroot "echo 'libcomposite' > /etc/modules"
echo "信息Orange Pi Zero 特定配置完成。"
}

View File

@ -0,0 +1,3 @@
PIKVM_MODEL=v2_model
PIKVM_VIDEO=usb_video
PIKVM_BOARD=orangepi-zero