From 40505e7e000d2a05eb7bf9efa5ba2968c337546b Mon Sep 17 00:00:00 2001 From: mofeng-git Date: Mon, 7 Oct 2024 08:57:25 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A7=81=E5=AE=B6=E4=BA=91?= =?UTF-8?q?=E4=BA=8C=E4=BB=A3=E6=95=B4=E5=90=88=E5=8C=85=E5=88=B6=E4=BD=9C?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/build_img.sh | 187 +++++++++++++++++++++++++++++++--------- build/platform/cumebox2 | 3 + 2 files changed, 149 insertions(+), 41 deletions(-) create mode 100644 build/platform/cumebox2 diff --git a/build/build_img.sh b/build/build_img.sh index 1bd803c2..f4138a8f 100644 --- a/build/build_img.sh +++ b/build/build_img.sh @@ -10,35 +10,79 @@ # ├── Armbian_by-SilentWind_24.5.0-trunk_Onecloud_bookworm_legacy_5.9.0-rc7_minimal.burn.img # └── rc.local -#预处理镜像文件 + SRCPATH=../src ROOTFS=/tmp/rootfs -$SRCPATH/image/onecloud/AmlImg_v0.3.1_linux_amd64 unpack $SRCPATH/image/onecloud/Armbian_by-SilentWind_24.5.0-trunk_Onecloud_bookworm_legacy_5.9.0-rc7_minimal.burn.img $SRCPATH/tmp -simg2img $SRCPATH/tmp/7.rootfs.PARTITION.sparse $SRCPATH/tmp/rootfs.img -dd if=/dev/zero of=/tmp/add.img bs=1M count=800 && cat /tmp/add.img >> $SRCPATH/tmp/rootfs.img && rm /tmp/add.img -e2fsck -f $SRCPATH/tmp/rootfs.img && resize2fs $SRCPATH/tmp/rootfs.img +LOOPDEV=/dev/loop10 +DATE=241004 +export LC_ALL=C -#挂载镜像文件 -mkdir $ROOTFS -sudo mount $SRCPATH/tmp/rootfs.img $ROOTFS || exit -1 -sudo mount -t proc proc $ROOTFS/proc || exit -1 -sudo mount -t sysfs sys $ROOTFS/sys || exit -1 -sudo mount -o bind /dev $ROOTFS/dev || exit -1 +mount_onecloud_rootfs() { + $SRCPATH/image/onecloud/AmlImg_v0.3.1_linux_amd64 unpack $SRCPATH/image/onecloud/Armbian_by-SilentWind_24.5.0-trunk_Onecloud_bookworm_legacy_5.9.0-rc7_minimal.burn.img $SRCPATH/tmp + simg2img $SRCPATH/tmp/7.rootfs.PARTITION.sparse $SRCPATH/tmp/rootfs.img + dd if=/dev/zero of=/tmp/add.img bs=1M count=1024 && cat /tmp/add.img >> $SRCPATH/tmp/rootfs.img && rm /tmp/add.img + e2fsck -f $SRCPATH/tmp/rootfs.img && resize2fs $SRCPATH/tmp/rootfs.img -#准备文件 -sudo mkdir -p $ROOTFS/etc/kvmd/override.d $ROOTFS/etc/kvmd/vnc $ROOTFS/var/lib/kvmd/msd $ROOTFS/opt/vc/bin $ROOTFS/usr/share/kvmd \ - $ROOTFS/usr/share/janus/javascript $ROOTFS/usr/lib/ustreamer/janus $ROOTFS/run/kvmd $ROOTFS/var/lib/kvmd/msd/images $ROOTFS/var/lib/kvmd/msd/meta -sudo cp -r ../One-KVM $ROOTFS/ -sudo cp $SRCPATH/image/onecloud/rc.local $ROOTFS/etc/ -sudo cp -r $ROOTFS/One-KVM/configs/kvmd/* $ROOTFS/One-KVM/configs/nginx $ROOTFS/One-KVM/configs/janus \ - $ROOTFS/etc/kvmd -sudo cp -r $ROOTFS/One-KVM/web $ROOTFS/One-KVM/extras $ROOTFS/One-KVM/contrib/keymaps $ROOTFS/usr/share/kvmd -sudo cp $ROOTFS/One-KVM/build/platform/onecloud $ROOTFS/usr/share/kvmd/platform -sudo cp $ROOTFS/One-KVM/testenv/fakes/vcgencmd $ROOTFS/usr/bin/ -sudo cp -r $ROOTFS/One-KVM/testenv/js/* $ROOTFS/usr/share/janus/javascript/ + mkdir $ROOTFS + sudo mount $SRCPATH/tmp/rootfs.img $ROOTFS || exit -1 + sudo mount -t proc proc $ROOTFS/proc || exit -1 + sudo mount -t sysfs sys $ROOTFS/sys || exit -1 + sudo mount -o bind /dev $ROOTFS/dev || exit -1 +} -#安装依赖 -sudo chroot --userspec "root:root" $ROOTFS bash -c " \ +mount_cumebox2_rootfs() { + cp $SRCPATH/image/cumebox2/Armbian_24.8.1_Khadas-vim1_bookworm_current_6.6.47_minimal.img $SRCPATH/tmp/rootfs.img + dd if=/dev/zero of=/tmp/add.img bs=1M count=1280 && cat /tmp/add.img >> $SRCPATH/tmp/rootfs.img && rm /tmp/add.img + sudo parted -s $SRCPATH/tmp/rootfs.img resizepart 1 100% || exit -1 + sudo losetup --offset 4194304 $LOOPDEV $SRCPATH/tmp/rootfs.img || exit -1 + #sudo mount -o loop,offset=$((8192*512)) $SRCPATH/tmp/rootfs.img $ROOTFS + sudo e2fsck -f $LOOPDEV && sudo resize2fs $LOOPDEV + + mkdir $ROOTFS + sudo mount $LOOPDEV $ROOTFS || exit -1 + sudo mount -t proc proc $ROOTFS/proc || exit -1 + sudo mount -t sysfs sys $ROOTFS/sys || exit -1 + sudo mount -o bind /dev $ROOTFS/dev || exit -1 +} + +umount_onecloud_rootfs() { + sudo umount $ROOTFS/sys + sudo umount $ROOTFS/dev + sudo umount $ROOTFS/proc + sudo umount $ROOTFS +} + +umount_cumebox2_rootfs() { + sudo umount $ROOTFS/sys + sudo umount $ROOTFS/dev + sudo umount $ROOTFS/proc + sudo umount $ROOTFS + sudo losetup -d $LOOPDEV +} + +config_file() { + sudo mkdir -p $ROOTFS/etc/kvmd/override.d $ROOTFS/etc/kvmd/vnc $ROOTFS/var/lib/kvmd/msd $ROOTFS/opt/vc/bin $ROOTFS/usr/share/kvmd \ + $ROOTFS/usr/share/janus/javascript $ROOTFS/usr/lib/ustreamer/janus $ROOTFS/run/kvmd $ROOTFS/var/lib/kvmd/msd/images $ROOTFS/var/lib/kvmd/msd/meta + sudo cp -r ../One-KVM $ROOTFS/ + sudo cp -r $ROOTFS/One-KVM/configs/kvmd/* $ROOTFS/One-KVM/configs/nginx $ROOTFS/One-KVM/configs/janus \ + $ROOTFS/etc/kvmd + sudo cp -r $ROOTFS/One-KVM/web $ROOTFS/One-KVM/extras $ROOTFS/One-KVM/contrib/keymaps $ROOTFS/usr/share/kvmd + sudo cp $ROOTFS/One-KVM/testenv/fakes/vcgencmd $ROOTFS/usr/bin/ + sudo cp -r $ROOTFS/One-KVM/testenv/js/* $ROOTFS/usr/share/janus/javascript/ +} + +config_onecloud_file() { + sudo cp $SRCPATH/image/onecloud/rc.local $ROOTFS/etc/ + sudo cp $ROOTFS/One-KVM/build/platform/onecloud $ROOTFS/usr/share/kvmd/platform +} + +config_cumebox2_file() { + sudo cp $ROOTFS/One-KVM/build/platform/cumebox2 $ROOTFS/usr/share/kvmd/platform +} + + +instal_one-kvm() { + sudo chroot --userspec "root:root" $ROOTFS bash -c " \ apt update \ && apt install -y python3-aiofiles python3-aiohttp python3-appdirs python3-asn1crypto python3-async-timeout \ python3-bottle python3-cffi python3-chardet python3-click python3-colorama python3-cryptography python3-dateutil \ @@ -78,13 +122,6 @@ sudo chroot --userspec "root:root" $ROOTFS bash -c " \ && kvmd-nginx-mkconf /etc/kvmd/nginx/nginx.conf.mako /etc/kvmd/nginx/nginx.conf \ && kvmd -m " -sudo chroot --userspec "root:root" $ROOTFS bash -c " \ - curl https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.armhf -L -o /usr/bin/ttyd \ - && chmod +x /usr/bin/ttyd \ - && systemd-sysusers /One-KVM/configs/os/kvmd-webterm.conf \ - && mkdir -p /home/kvmd-webterm \ - && chown kvmd-webterm /home/kvmd-webterm " - #服务自启 sudo chroot --userspec "root:root" $ROOTFS bash -c " \ @@ -98,6 +135,7 @@ sudo chroot --userspec "root:root" $ROOTFS bash -c " \ && echo 'kvmd ALL=(ALL) NOPASSWD: /etc/kvmd/custom_atx/gpio.sh' >> /etc/sudoers \ && echo 'kvmd ALL=(ALL) NOPASSWD: /etc/kvmd/custom_atx/usbrelay_hid.sh' >> /etc/sudoers \ && systemd-sysusers /One-KVM/configs/os/sysusers.conf \ + && systemd-sysusers /One-KVM/configs/os/kvmd-webterm.conf \ && ln -sf /usr/share/tesseract-ocr/*/tessdata /usr/share/tessdata \ && sed -i 's/ch9329/otg/g' /etc/kvmd/override.yaml \ && sed -i 's/device: \/dev\/ttyUSB0//g' /etc/kvmd/override.yaml \ @@ -110,20 +148,87 @@ sudo chroot --userspec "root:root" $ROOTFS bash -c " \ && systemctl disable nginx janus \ && rm -r /One-KVM " +} + + +instal_one-kvm_for_onecloud() { + +sudo chroot --userspec "root:root" $ROOTFS bash -c " \ + curl https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.armhf -L -o /usr/bin/ttyd \ + && chmod +x /usr/bin/ttyd \ + && mkdir -p /home/kvmd-webterm \ + && chown kvmd-webterm /home/kvmd-webterm " sudo chroot --userspec "root:root" $ROOTFS bash -c " \ sed -i '2c ATX=GPIO' /etc/kvmd/atx.sh \ && sed -i 's/SHUTDOWNPIN/gpiochip1 7/g' /etc/kvmd/custom_atx/gpio.sh \ && sed -i 's/REBOOTPIN/gpiochip0 11/g' /etc/kvmd/custom_atx/gpio.sh " -#卸载镜像 -sudo umount $ROOTFS/sys -sudo umount $ROOTFS/dev -sudo umount $ROOTFS/proc -sudo umount $ROOTFS +} + +instal_one-kvm_for_cumebox2() { + +sudo chroot --userspec "root:root" $ROOTFS bash -c " \ + curl https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.aarch64 -L -o /usr/bin/ttyd \ + && chmod +x /usr/bin/ttyd \ + && mkdir -p /home/kvmd-webterm \ + && chown kvmd-webterm /home/kvmd-webterm " + +sudo chroot --userspec "root:root" $ROOTFS bash -c " \ + sed -i '2c ATX=USBRELAY_HID' /etc/kvmd/atx.sh \ + && sed -i 's/\/dev\/video0/\/dev\/video1/g' /etc/kvmd/override.yaml " + +} + +pack_img_onecloud() { + sudo rm $SRCPATH/tmp/7.rootfs.PARTITION.sparse + sudo img2simg $SRCPATH/tmp/rootfs.img $SRCPATH/tmp/7.rootfs.PARTITION.sparse + sudo $SRCPATH/image/onecloud/AmlImg_v0.3.1_linux_amd64 pack $SRCPATH/output/One-KVM_by-SilentWind_Onecloud_$DATE.burn.img $SRCPATH/tmp/ + sudo rm $SRCPATH/tmp/* +} + +pack_img_cumebox2() { + sudo mv $SRCPATH/tmp/rootfs.img $SRCPATH/output/One-KVM_by-SilentWind_Cumebox2_$DATE.burn.img +} + + + +parpare_install_cumebox2() { + +sudo chroot --userspec "root:root" $ROOTFS bash -c " \ + mkdir -p /run/systemd/resolve/ \ + && touch /run/systemd/resolve/stub-resolv.conf \ + && printf '%s\n' 'nameserver 1.1.1.1' 'nameserver 1.0.0.1' > /etc/resolv.conf \ + && bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) \ + --source mirrors.tuna.tsinghua.edu.cn --updata-software false --web-protocol http " + +} + + + +case $1 in + onecloud) + mount_onecloud_rootfs + config_file + config_onecloud_file + instal_one-kvm + instal_one-kvm_for_onecloud + umount_onecloud_rootfs + pack_img_onecloud + ;; + cumebox2) + mount_cumebox2_rootfs + config_file + config_cumebox2_file + parpare_install_cumebox2 + instal_one-kvm + instal_one-kvm_for_cumebox2 + umount_cumebox2_rootfs + pack_img_cumebox2 + ;; + *) + echo "Do no thing." + ;; +esac + -#打包镜像 -sudo rm $SRCPATH/tmp/7.rootfs.PARTITION.sparse -sudo img2simg $SRCPATH/tmp/rootfs.img $SRCPATH/tmp/7.rootfs.PARTITION.sparse -sudo $SRCPATH/image/onecloud/AmlImg_v0.3.1_linux_amd64 pack $SRCPATH/output/One-KVM_by-SilentWind_Onecloud_241004.burn.img $SRCPATH/tmp/ -sudo rm $SRCPATH/tmp/* diff --git a/build/platform/cumebox2 b/build/platform/cumebox2 new file mode 100644 index 00000000..2dd3ad3f --- /dev/null +++ b/build/platform/cumebox2 @@ -0,0 +1,3 @@ +PIKVM_MODEL=v2_model +PIKVM_VIDEO=usb_video +PIKVM_BOARD=cumebox2 \ No newline at end of file