Merge pull request #178 from mofeng-git/dev

适配 Onecloud Pro 设备
This commit is contained in:
SilentWind 2025-09-19 15:53:13 +08:00 committed by GitHub
commit 201c615ce2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 65 additions and 11 deletions

View File

@ -9,6 +9,7 @@ on:
type: choice type: choice
options: options:
- onecloud - onecloud
- onecloud-pro
- cumebox2 - cumebox2
- chainedbox - chainedbox
- vm - vm

View File

@ -59,7 +59,7 @@ build_target() {
onecloud) onecloud)
onecloud_rootfs onecloud_rootfs
local arch="armhf" local arch="armhf"
local device_type="gpio" local device_type="gpio-onecloud"
local network_type="systemd-networkd" local network_type="systemd-networkd"
;; ;;
cumebox2) cumebox2)
@ -97,6 +97,13 @@ build_target() {
local network_type="" local network_type=""
NEED_PREPARE_DNS=true NEED_PREPARE_DNS=true
;; ;;
onecloud-pro)
onecloud_pro_rootfs
local arch="aarch64"
local device_type="gpio-onecloud-pro video1"
local network_type=""
NEED_PREPARE_DNS=true
;;
*) *)
echo "错误:未知或不支持的目标 '$target'" >&2 echo "错误:未知或不支持的目标 '$target'" >&2
exit 1 exit 1
@ -124,12 +131,15 @@ build_target() {
chainedbox) chainedbox)
pack_img "Chainedbox" pack_img "Chainedbox"
;; ;;
e900v22c) e900v22c)
pack_img "E900v22c" pack_img "E900v22c"
;; ;;
octopus-flanet) octopus-flanet)
pack_img "Octopus-Flanet" pack_img "Octopus-Flanet"
;; ;;
onecloud-pro)
pack_img "Onecloud-Pro"
;;
*) *)
echo "错误:未知的打包类型 for '$target'" >&2 echo "错误:未知的打包类型 for '$target'" >&2
;; ;;
@ -148,7 +158,7 @@ build_target() {
# 检查是否提供了目标参数 # 检查是否提供了目标参数
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "用法: $0 <target|all>" echo "用法: $0 <target|all>"
echo "可用目标: onecloud, cumebox2, chainedbox, vm, e900v22c, octopus-flanet" echo "可用目标: onecloud, cumebox2, chainedbox, vm, e900v22c, octopus-flanet, onecloud-pro"
exit 1 exit 1
fi fi
@ -167,6 +177,7 @@ if [ "$1" = "all" ]; then
build_target "vm" build_target "vm"
build_target "e900v22c" build_target "e900v22c"
build_target "octopus-flanet" build_target "octopus-flanet"
build_target "onecloud-pro"
echo "信息:所有目标构建完成。" echo "信息:所有目标构建完成。"
else else
build_target "$1" build_target "$1"

View File

@ -10,7 +10,7 @@ onecloud_rootfs() {
local bootfs_sparse="$TMPDIR/6.boot.PARTITION.sparse" local bootfs_sparse="$TMPDIR/6.boot.PARTITION.sparse"
local rootfs_sparse="$TMPDIR/7.rootfs.PARTITION.sparse" local rootfs_sparse="$TMPDIR/7.rootfs.PARTITION.sparse"
local bootfs_loopdev="" # 存储 bootfs 使用的 loop 设备 local bootfs_loopdev="" # 存储 bootfs 使用的 loop 设备
local add_size_mb=400 local add_size_mb=600
echo "信息:准备 Onecloud Rootfs..." echo "信息:准备 Onecloud Rootfs..."
ensure_dir "$TMPDIR" ensure_dir "$TMPDIR"
@ -159,7 +159,7 @@ e900v22c_rootfs() {
local source_image="$SRCPATH/image/e900v22c/Armbian_23.08.0_amlogic_s905l3a_bookworm_5.15.123_server_2023.08.01.img" local source_image="$SRCPATH/image/e900v22c/Armbian_23.08.0_amlogic_s905l3a_bookworm_5.15.123_server_2023.08.01.img"
local target_image="$TMPDIR/rootfs.img" local target_image="$TMPDIR/rootfs.img"
local offset=$((532480 * 512)) local offset=$((532480 * 512))
local add_size_mb=400 local add_size_mb=600
echo "信息:准备 E900V22C Rootfs..." echo "信息:准备 E900V22C Rootfs..."
ensure_dir "$TMPDIR" ensure_dir "$TMPDIR"
@ -192,7 +192,7 @@ octopus_flanet_rootfs() {
local target_image="$TMPDIR/rootfs.img" local target_image="$TMPDIR/rootfs.img"
local boot_offset=$((8192 * 512)) local boot_offset=$((8192 * 512))
local rootfs_offset=$((1056768 * 512)) local rootfs_offset=$((1056768 * 512))
local add_size_mb=400 local add_size_mb=600
local bootfs_loopdev="" local bootfs_loopdev=""
echo "信息:准备 Octopus-Planet Rootfs..." echo "信息:准备 Octopus-Planet Rootfs..."
@ -231,6 +231,37 @@ octopus_flanet_rootfs() {
echo "信息Octopus-Planet Rootfs 准备完成loop 设备 $LOOPDEV 已就绪。" echo "信息Octopus-Planet Rootfs 准备完成loop 设备 $LOOPDEV 已就绪。"
} }
onecloud_pro_rootfs() {
local source_image="$SRCPATH/image/onecloud-pro/Armbian-by-SilentWind_24.5.0_amlogic_Onecloud-Pro_jammy_6.6.28_server.img"
local target_image="$TMPDIR/rootfs.img"
local boot_offset=$((8192 * 512))
local rootfs_offset=$((1056768 * 512))
local add_size_mb=600
local bootfs_loopdev=""
echo "信息:准备 Octopus-Planet Rootfs..."
ensure_dir "$TMPDIR"; ensure_dir "$BOOTFS"
# 自动下载源镜像文件(如果不存在)
download_file_if_missing "$source_image" || { echo "错误:下载 Octopus-Planet 原始镜像失败" >&2; exit 1; }
cp "$source_image" "$target_image" || { echo "错误:复制 Octopus-Planet 原始镜像失败" >&2; exit 1; }
echo "信息:调整镜像分区大小 (分区 2)..."
sudo parted -s "$target_image" resizepart 2 100% || { echo "错误:使用 parted 调整分区 2 大小失败" >&2; exit 1; }
echo "信息:设置 rootfs 分区的 loop 设备..."
find_loop_device # 找 loop 给 rootfs
echo "信息:将 $target_image (偏移 $rootfs_offset) 关联到 $LOOPDEV..."
sudo losetup --offset "$rootfs_offset" "$LOOPDEV" "$target_image" || { echo "错误:设置 rootfs 分区 loop 设备 $LOOPDEV 失败" >&2; exit 1; }
echo "信息:检查并调整文件系统大小 (在 loop 设备上)..."
sudo e2fsck -f -y "$LOOPDEV" || { echo "警告e2fsck 检查 $LOOPDEV 失败" >&2; exit 1; }
sudo resize2fs "$LOOPDEV" || { echo "错误resize2fs 调整 $LOOPDEV 大小失败" >&2; exit 1; }
echo "信息Octopus-Planet Rootfs 准备完成loop 设备 $LOOPDEV 已就绪。"
}
# --- 特定设备的文件配置函数 --- # --- 特定设备的文件配置函数 ---
config_cumebox2_files() { config_cumebox2_files() {

View File

@ -10,7 +10,7 @@ prepare_dns_and_mirrors() {
&& printf '%s\\n' 'nameserver 1.1.1.1' 'nameserver 1.0.0.1' > /etc/resolv.conf \\ && printf '%s\\n' 'nameserver 1.1.1.1' 'nameserver 1.0.0.1' > /etc/resolv.conf \\
&& echo '信息:尝试更换镜像源...' \\ && echo '信息:尝试更换镜像源...' \\
&& bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) \\ && bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) \\
--source mirrors.tuna.tsinghua.edu.cn --upgrade-software false --web-protocol http || echo '警告:更换镜像源脚本执行失败,可能网络不通或脚本已更改' --source mirrors.ustc.edu.cn --upgrade-software false --web-protocol http || echo '警告:更换镜像源脚本执行失败,可能网络不通或脚本已更改'
" "
} }
@ -246,7 +246,15 @@ apply_kvmd_tweaks() {
# 根据 device_type 配置 ATX # 根据 device_type 配置 ATX
if [ "$device_type" = "gpio" ]; then if [[ "$device_type" == *"gpio-onecloud-pro"* ]]; then
echo "信息:电源控制设备类型为 gpio设置 ATX 为 GPIO 并配置引脚..."
atx_setting="GPIO"
run_in_chroot "
sed -i 's/^ATX=.*/ATX=GPIO/' /etc/kvmd/atx.sh && \\
sed -i 's/SHUTDOWNPIN/gpiochip0 7/g' /etc/kvmd/custom_atx/gpio.sh && \\
sed -i 's/REBOOTPIN/gpiochip0 11/g' /etc/kvmd/custom_atx/gpio.sh
"
elif [[ "$device_type" == *"gpio-onecloud"* ]]; then
echo "信息:电源控制设备类型为 gpio设置 ATX 为 GPIO 并配置引脚..." echo "信息:电源控制设备类型为 gpio设置 ATX 为 GPIO 并配置引脚..."
atx_setting="GPIO" atx_setting="GPIO"
run_in_chroot " run_in_chroot "
@ -261,10 +269,10 @@ apply_kvmd_tweaks() {
fi fi
# 配置视频设备 # 配置视频设备
if [ "$device_type" = "video1" ]; then if [[ "$device_type" == *"video1"* ]]; then
echo "信息:视频设备类型为 video1设置视频设备为 /dev/video1..." echo "信息:视频设备类型为 video1设置视频设备为 /dev/video1..."
run_in_chroot "sed -i 's|/dev/video0|/dev/video1|g' /etc/kvmd/override.yaml" run_in_chroot "sed -i 's|/dev/video0|/dev/video1|g' /etc/kvmd/override.yaml"
elif [ "$device_type" = "kvmd-video" ]; then elif [[ "$device_type" == *"video1"* ]]; then
echo "信息:视频设备类型为 kvmd-video设置视频设备为 /dev/kvmd-video..." echo "信息:视频设备类型为 kvmd-video设置视频设备为 /dev/kvmd-video..."
run_in_chroot "sed -i 's|/dev/video0|/dev/kvmd-video|g' /etc/kvmd/override.yaml" run_in_chroot "sed -i 's|/dev/video0|/dev/kvmd-video|g' /etc/kvmd/override.yaml"
else else

View File

@ -0,0 +1,3 @@
PIKVM_MODEL=v2_model
PIKVM_VIDEO=usb_video
PIKVM_BOARD=onecloud-pro