mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-30 01:21:54 +08:00
一些更新
玩客云首次启动生成随机 mac 地址 #113 自签 SSL 证书修改为首次启动时生成,增强安全性 优化整合包镜像构建脚本和 Dockerfile 修复 docker 启动脚本错误
This commit is contained in:
65
build/functions/packaging.sh
Executable file
65
build/functions/packaging.sh
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- 打包函数 ---
|
||||
|
||||
pack_img() {
|
||||
local device_name_friendly="$1" # e.g., "Vm", "Cumebox2"
|
||||
local target_img_name="One-KVM_by-SilentWind_${device_name_friendly}_${DATE}.img"
|
||||
local source_img="$TMPDIR/rootfs.img"
|
||||
|
||||
echo "信息:开始打包镜像 ($device_name_friendly)..."
|
||||
ensure_dir "$OUTPUTDIR"
|
||||
|
||||
# 确保在打包前已经正确卸载了所有挂载点和loop设备
|
||||
if [[ "$ROOTFS_MOUNTED" -eq 1 || "$DEV_MOUNTED" -eq 1 || "$SYS_MOUNTED" -eq 1 || "$PROC_MOUNTED" -eq 1 || -n "$LOOPDEV" && -b "$LOOPDEV" ]]; then
|
||||
echo "警告:发现未卸载的挂载点或loop设备,尝试再次卸载..."
|
||||
unmount_all
|
||||
fi
|
||||
|
||||
echo "信息:移动镜像文件 $source_img 到 $OUTPUTDIR/$target_img_name ..."
|
||||
sudo mv "$source_img" "$OUTPUTDIR/$target_img_name" || { echo "错误:移动镜像文件失败" >&2; exit 1; }
|
||||
|
||||
if [ "$device_name_friendly" = "Vm" ]; then
|
||||
echo "信息:为 Vm 目标转换镜像格式 (vmdk, vdi)..."
|
||||
local raw_img="$OUTPUTDIR/$target_img_name"
|
||||
local vmdk_img="$OUTPUTDIR/One-KVM_by-SilentWind_Vmare-uefi_${DATE}.vmdk"
|
||||
local vdi_img="$OUTPUTDIR/One-KVM_by-SilentWind_Virtualbox-uefi_${DATE}.vdi"
|
||||
|
||||
echo "信息:转换为 VMDK..."
|
||||
sudo qemu-img convert -f raw -O vmdk "$raw_img" "$vmdk_img" || echo "警告:转换为 VMDK 失败"
|
||||
echo "信息:转换为 VDI..."
|
||||
sudo qemu-img convert -f raw -O vdi "$raw_img" "$vdi_img" || echo "警告:转换为 VDI 失败"
|
||||
fi
|
||||
echo "信息:镜像打包完成: $OUTPUTDIR/$target_img_name"
|
||||
}
|
||||
|
||||
pack_img_onecloud() {
|
||||
local target_img_name="One-KVM_by-SilentWind_Onecloud_${DATE}.burn.img"
|
||||
local rootfs_raw_img="$TMPDIR/rootfs.img"
|
||||
local rootfs_sparse_img="$TMPDIR/7.rootfs.PARTITION.sparse"
|
||||
local aml_packer="$SRCPATH/image/onecloud/AmlImg_v0.3.1_linux_amd64"
|
||||
|
||||
echo "信息:开始为 Onecloud 打包 burn 镜像..."
|
||||
ensure_dir "$OUTPUTDIR"
|
||||
|
||||
# 确保在打包前已经正确卸载了所有挂载点和loop设备
|
||||
if [[ "$ROOTFS_MOUNTED" -eq 1 || "$DEV_MOUNTED" -eq 1 || "$SYS_MOUNTED" -eq 1 || "$PROC_MOUNTED" -eq 1 || -n "$LOOPDEV" && -b "$LOOPDEV" ]]; then
|
||||
echo "警告:发现未卸载的挂载点或loop设备,尝试再次卸载..."
|
||||
unmount_all
|
||||
fi
|
||||
|
||||
echo "信息:将 raw rootfs 转换为 sparse image..."
|
||||
# 先删除可能存在的旧 sparse 文件
|
||||
sudo rm -f "$rootfs_sparse_img"
|
||||
sudo img2simg "$rootfs_raw_img" "$rootfs_sparse_img" || { echo "错误:img2simg 转换失败" >&2; exit 1; }
|
||||
sudo rm "$rootfs_raw_img" # 删除 raw 文件,因为它已被转换
|
||||
|
||||
echo "信息:使用 AmlImg 工具打包..."
|
||||
sudo chmod +x "$aml_packer"
|
||||
sudo "$aml_packer" pack "$OUTPUTDIR/$target_img_name" "$TMPDIR/" || { echo "错误:AmlImg 打包失败" >&2; exit 1; }
|
||||
|
||||
echo "信息:清理 Onecloud 临时文件..."
|
||||
sudo rm -f "$TMPDIR/6.boot.PARTITION.sparse" "$TMPDIR/7.rootfs.PARTITION.sparse" "$TMPDIR/dts.img"
|
||||
|
||||
echo "信息:Onecloud burn 镜像打包完成: $OUTPUTDIR/$target_img_name"
|
||||
}
|
||||
Reference in New Issue
Block a user