mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-03-15 23:46:51 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7116da2511 | ||
|
|
a59fe84e26 | ||
|
|
48fe790897 | ||
|
|
e375e41fb6 |
@@ -62,6 +62,7 @@ RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.lis
|
|||||||
/run/kvmd \
|
/run/kvmd \
|
||||||
/tmp/kvmd-nginx \
|
/tmp/kvmd-nginx \
|
||||||
&& touch /run/kvmd/ustreamer.sock \
|
&& touch /run/kvmd/ustreamer.sock \
|
||||||
|
&& apt clean \
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& rm -rf /tmp/lib /tmp/wheel
|
&& rm -rf /tmp/lib /tmp/wheel
|
||||||
|
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.lis
|
|||||||
libspeex-dev \
|
libspeex-dev \
|
||||||
libspeexdsp-dev \
|
libspeexdsp-dev \
|
||||||
libusb-1.0-0-dev \
|
libusb-1.0-0-dev \
|
||||||
|
&& apt clean \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY build/cargo_config /tmp/config
|
COPY build/cargo_config /tmp/config
|
||||||
@@ -69,7 +70,7 @@ RUN --security=insecure pip config set global.index-url https://pypi.tuna.tsingh
|
|||||||
more-itertools multidict netifaces packaging passlib pillow ply psutil \
|
more-itertools multidict netifaces packaging passlib pillow ply psutil \
|
||||||
pycparser pyelftools pyghmi pygments pyparsing pyotp qrcode requests \
|
pycparser pyelftools pyghmi pygments pyparsing pyotp qrcode requests \
|
||||||
semantic-version setproctitle six spidev tabulate urllib3 wrapt xlib \
|
semantic-version setproctitle six spidev tabulate urllib3 wrapt xlib \
|
||||||
yarl pyserial pyyaml zstandard supervisor
|
yarl pyserial pyyaml zstandard supervisor pyfatfs
|
||||||
|
|
||||||
# 编译安装 libnice、libsrtp、libwebsockets 和 janus-gateway
|
# 编译安装 libnice、libsrtp、libwebsockets 和 janus-gateway
|
||||||
RUN git clone --depth=1 https://gitlab.freedesktop.org/libnice/libnice /tmp/libnice \
|
RUN git clone --depth=1 https://gitlab.freedesktop.org/libnice/libnice /tmp/libnice \
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ BOOTFS=/tmp/bootfs
|
|||||||
ROOTFS=/tmp/rootfs
|
ROOTFS=/tmp/rootfs
|
||||||
OUTPUTDIR=/mnt/nas/src/output
|
OUTPUTDIR=/mnt/nas/src/output
|
||||||
LOOPDEV=/dev/loop10
|
LOOPDEV=/dev/loop10
|
||||||
DATE=241204
|
DATE=240303
|
||||||
export LC_ALL=C
|
export LC_ALL=C
|
||||||
|
|
||||||
write_meta() {
|
write_meta() {
|
||||||
@@ -33,7 +33,7 @@ write_meta() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mount_rootfs() {
|
mount_rootfs() {
|
||||||
mkdir $ROOTFS
|
mkdir $ROOTFS $SRCPATH/tmp/rootfs
|
||||||
sudo mount $LOOPDEV $ROOTFS || exit -1
|
sudo mount $LOOPDEV $ROOTFS || exit -1
|
||||||
sudo mount -t proc proc $ROOTFS/proc || exit -1
|
sudo mount -t proc proc $ROOTFS/proc || exit -1
|
||||||
sudo mount -t sysfs sys $ROOTFS/sys || exit -1
|
sudo mount -t sysfs sys $ROOTFS/sys || exit -1
|
||||||
@@ -45,7 +45,10 @@ umount_rootfs() {
|
|||||||
sudo umount $ROOTFS/dev
|
sudo umount $ROOTFS/dev
|
||||||
sudo umount $ROOTFS/proc
|
sudo umount $ROOTFS/proc
|
||||||
sudo umount $ROOTFS
|
sudo umount $ROOTFS
|
||||||
sudo losetup -d $LOOPDEV
|
sudo zerofree $LOOPDEV
|
||||||
|
sudo losetup -d $LOOPDEV
|
||||||
|
sudo docker rm to_build_rootfs
|
||||||
|
sudo rm -rf $SRCPATH/tmp/rootfs/*
|
||||||
}
|
}
|
||||||
|
|
||||||
parpare_dns() {
|
parpare_dns() {
|
||||||
@@ -62,8 +65,10 @@ delete_armbain_verify(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
config_file() {
|
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/One-KVM \
|
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/One-KVM \
|
||||||
$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
|
$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 \
|
||||||
|
$ROOTFS/tmp/wheel/ $ROOTFS/usr/lib/janus/transports/ $ROOTFS/usr/lib/janus/loggers
|
||||||
sudo rsync -a --exclude={src,.github} . $ROOTFS/One-KVM
|
sudo rsync -a --exclude={src,.github} . $ROOTFS/One-KVM
|
||||||
sudo cp -r configs/kvmd/* configs/nginx configs/janus $ROOTFS/etc/kvmd
|
sudo cp -r configs/kvmd/* configs/nginx configs/janus $ROOTFS/etc/kvmd
|
||||||
sudo cp -r web extras contrib/keymaps $ROOTFS/usr/share/kvmd
|
sudo cp -r web extras contrib/keymaps $ROOTFS/usr/share/kvmd
|
||||||
@@ -73,6 +78,17 @@ config_file() {
|
|||||||
if [ -f "$SRCPATH/image/$1/rc.local" ]; then
|
if [ -f "$SRCPATH/image/$1/rc.local" ]; then
|
||||||
sudo cp $SRCPATH/image/$1/rc.local $ROOTFS/etc/
|
sudo cp $SRCPATH/image/$1/rc.local $ROOTFS/etc/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sudo docker pull --platform linux/$2 registry.cn-hangzhou.aliyuncs.com/silentwind/kvmd-stage-0
|
||||||
|
sudo docker create --name to_build_rootfs registry.cn-hangzhou.aliyuncs.com/silentwind/kvmd-stage-0
|
||||||
|
sudo docker export to_build_rootfs | sudo tar -xvf - -C $SRCPATH/tmp/rootfs
|
||||||
|
sudo cp $SRCPATH/tmp/rootfs/tmp/lib/* $ROOTFS/lib/*-linux-*/
|
||||||
|
sudo cp $SRCPATH/tmp/rootfs/tmp/ustreamer/ustreamer $SRCPATH/tmp/rootfs/tmp/ustreamer/ustreamer-dump $SRCPATH/tmp/rootfs/usr/bin/janus $ROOTFS/usr/bin/
|
||||||
|
sudo cp $SRCPATH/tmp/rootfs/tmp/ustreamer/janus/libjanus_ustreamer.so $ROOTFS/usr/lib/ustreamer/janus/
|
||||||
|
sudo cp $SRCPATH/tmp/rootfs/tmp/wheel/*.whl $ROOTFS/tmp/wheel/
|
||||||
|
sudo cp $SRCPATH/tmp/rootfs/usr/lib/janus/transports/* $ROOTFS/usr/lib/janus/transports/
|
||||||
|
|
||||||
|
sudo mv $ROOTFS/etc/apt/apt.conf.d/50apt-file.conf{,.disabled}
|
||||||
}
|
}
|
||||||
|
|
||||||
pack_img() {
|
pack_img() {
|
||||||
@@ -93,7 +109,7 @@ onecloud_rootfs() {
|
|||||||
sudo cp $SRCPATH/image/onecloud/meson8b-onecloud-fix.dtb $BOOTFS/dtb/meson8b-onecloud.dtb
|
sudo cp $SRCPATH/image/onecloud/meson8b-onecloud-fix.dtb $BOOTFS/dtb/meson8b-onecloud.dtb
|
||||||
sudo umount $BOOTFS
|
sudo umount $BOOTFS
|
||||||
sudo losetup -d $LOOPDEV
|
sudo losetup -d $LOOPDEV
|
||||||
dd if=/dev/zero of=/tmp/add.img bs=1M count=1024 && cat /tmp/add.img >> $SRCPATH/tmp/rootfs.img && rm /tmp/add.img
|
dd if=/dev/zero of=/tmp/add.img bs=1M count=256 && cat /tmp/add.img >> $SRCPATH/tmp/rootfs.img && rm /tmp/add.img
|
||||||
e2fsck -f $SRCPATH/tmp/rootfs.img && resize2fs $SRCPATH/tmp/rootfs.img
|
e2fsck -f $SRCPATH/tmp/rootfs.img && resize2fs $SRCPATH/tmp/rootfs.img
|
||||||
sudo losetup $LOOPDEV $SRCPATH/tmp/rootfs.img
|
sudo losetup $LOOPDEV $SRCPATH/tmp/rootfs.img
|
||||||
}
|
}
|
||||||
@@ -162,29 +178,10 @@ instal_one-kvm() {
|
|||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
||||||
df -h \
|
df -h \
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get install -y python3-aiofiles python3-aiohttp python3-appdirs python3-asn1crypto python3-async-timeout \
|
&& apt install -y --no-install-recommends libxkbcommon-x11-0 nginx tesseract-ocr tesseract-ocr-eng tesseract-ocr-chi-sim iptables \
|
||||||
python3-bottle python3-cffi python3-chardet python3-click python3-colorama python3-cryptography python3-dateutil \
|
curl kmod libmicrohttpd12 libjansson4 libssl3 libsofia-sip-ua0 libglib2.0-0 libopus0 libogg0 libcurl4 libconfig9 python3-pip \
|
||||||
python3-dbus python3-dev python3-hidapi python3-hid python3-idna python3-libgpiod python3-mako python3-marshmallow python3-more-itertools \
|
&& apt clean \
|
||||||
python3-multidict python3-netifaces python3-packaging python3-passlib python3-pillow python3-ply python3-psutil \
|
&& rm -rf /var/lib/apt/lists/* "
|
||||||
python3-pycparser python3-pyelftools python3-pyghmi python3-pygments python3-pyparsing python3-requests \
|
|
||||||
python3-semantic-version python3-setproctitle python3-setuptools python3-six python3-spidev python3-systemd \
|
|
||||||
python3-tabulate python3-urllib3 python3-wrapt python3-xlib python3-yaml python3-yarl python3-pyotp python3-qrcode \
|
|
||||||
python3-serial python3-zstandard python3-dbus-next python3-pip python3-dev python3-build python3-wheel \
|
|
||||||
nginx net-tools tesseract-ocr tesseract-ocr-eng tesseract-ocr-chi-sim cpufrequtils iptables network-manager \
|
|
||||||
git gpiod libxkbcommon0 build-essential janus-dev libssl-dev libffi-dev libevent-dev libjpeg-dev libbsd-dev libudev-dev \
|
|
||||||
pkg-config libx264-dev libyuv-dev libasound2-dev libsndfile-dev libspeexdsp-dev \
|
|
||||||
&& rm -rf /var/lib/apt/lists/* "
|
|
||||||
|
|
||||||
sudo chroot --userspec "root:root" $ROOTFS sed --in-place --expression 's|^#include "refcount.h"$|#include "../refcount.h"|g' /usr/include/janus/plugins/plugin.h
|
|
||||||
|
|
||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
|
||||||
git clone --depth=1 https://github.com/mofeng-git/ustreamer /tmp/ustreamer \
|
|
||||||
&& make -j WITH_PYTHON=1 WITH_JANUS=1 WITH_LIBX264=1 -C /tmp/ustreamer \
|
|
||||||
&& cp /tmp/ustreamer/src/ustreamer.bin /usr/bin/ustreamer \
|
|
||||||
&& cp /tmp/ustreamer/src/ustreamer-dump.bin /usr/bin/ustreamer-dump \
|
|
||||||
&& chmod +x /usr/bin/ustreamer /usr/bin/ustreamer-dump \
|
|
||||||
&& cp /tmp/ustreamer/janus/libjanus_ustreamer.so /usr/lib/ustreamer/janus \
|
|
||||||
&& pip3 install --target=/usr/lib/python3/dist-packages --break-system-packages /tmp/ustreamer/python/dist/*.whl "
|
|
||||||
|
|
||||||
if [ "$3" = "systemd-networkd" ]; then
|
if [ "$3" = "systemd-networkd" ]; then
|
||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
||||||
@@ -194,9 +191,11 @@ instal_one-kvm() {
|
|||||||
&& systemctl enable systemd-networkd systemd-resolved "
|
&& systemctl enable systemd-networkd systemd-resolved "
|
||||||
fi
|
fi
|
||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
||||||
pip3 config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple \
|
pip3 install --no-cache-dir --break-system-packages /tmp/wheel/*.whl \
|
||||||
&& pip3 install --target=/usr/lib/python3/dist-packages --break-system-packages async-lru gpiod pyfatfs \
|
&& pip3 cache purge \
|
||||||
&& pip3 cache purge "
|
&& rm -r /tmp/wheel "
|
||||||
|
|
||||||
|
#pip3 install --target=/usr/lib/python3/dist-packages --break-system-packages pyfatfs -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
|
||||||
|
|
||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
||||||
cd /One-KVM \
|
cd /One-KVM \
|
||||||
@@ -208,11 +207,12 @@ instal_one-kvm() {
|
|||||||
|
|
||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
||||||
cat /One-KVM/configs/os/sudoers/v2-hdmiusb >> /etc/sudoers \
|
cat /One-KVM/configs/os/sudoers/v2-hdmiusb >> /etc/sudoers \
|
||||||
&& cat /One-KVM/configs/os/udev/v2-hdmiusb-generic.rules > /etc/udev/rules.d/99-kvmd.rules \
|
&& cat /One-KVM/configs/os/udev/v2-hdmiusb-rpi4.rules > /etc/udev/rules.d/99-kvmd.rules \
|
||||||
&& echo 'libcomposite' >> /etc/modules \
|
&& echo 'libcomposite' >> /etc/modules \
|
||||||
&& mv /usr/local/bin/kvmd* /usr/bin \
|
&& mv /usr/local/bin/kvmd* /usr/bin \
|
||||||
&& cp /One-KVM/configs/os/services/* /etc/systemd/system/ \
|
&& cp /One-KVM/configs/os/services/* /etc/systemd/system/ \
|
||||||
&& cp /One-KVM/configs/os/tmpfiles.conf /usr/lib/tmpfiles.d/ \
|
&& cp /One-KVM/configs/os/tmpfiles.conf /usr/lib/tmpfiles.d/ \
|
||||||
|
&& mv /etc/kvmd/supervisord.conf /etc/supervisord.conf \
|
||||||
&& chmod +x /etc/update-motd.d/* \
|
&& chmod +x /etc/update-motd.d/* \
|
||||||
&& echo 'kvmd ALL=(ALL) NOPASSWD: /etc/kvmd/custom_atx/gpio.sh' >> /etc/sudoers \
|
&& 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 \
|
&& echo 'kvmd ALL=(ALL) NOPASSWD: /etc/kvmd/custom_atx/usbrelay_hid.sh' >> /etc/sudoers \
|
||||||
@@ -222,12 +222,12 @@ instal_one-kvm() {
|
|||||||
&& sed -i 's/8080/80/g' /etc/kvmd/override.yaml \
|
&& sed -i 's/8080/80/g' /etc/kvmd/override.yaml \
|
||||||
&& sed -i 's/4430/443/g' /etc/kvmd/override.yaml \
|
&& sed -i 's/4430/443/g' /etc/kvmd/override.yaml \
|
||||||
&& chown kvmd -R /var/lib/kvmd/msd/ \
|
&& chown kvmd -R /var/lib/kvmd/msd/ \
|
||||||
&& systemctl enable kvmd kvmd-otg kvmd-nginx kvmd-vnc kvmd-ipmi kvmd-webterm kvmd-janus \
|
&& systemctl enable kvmd kvmd-otg kvmd-nginx kvmd-vnc kvmd-ipmi kvmd-webterm kvmd-janus kvmd-media \
|
||||||
&& systemctl disable nginx janus \
|
&& systemctl disable nginx \
|
||||||
&& rm -r /One-KVM "
|
&& rm -r /One-KVM "
|
||||||
|
|
||||||
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
sudo chroot --userspec "root:root" $ROOTFS bash -c " \
|
||||||
curl https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.$1 -L -o /usr/bin/ttyd \
|
curl https://gh.llkk.cc/https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.$1 -L -o /usr/bin/ttyd \
|
||||||
&& chmod +x /usr/bin/ttyd \
|
&& chmod +x /usr/bin/ttyd \
|
||||||
&& mkdir -p /home/kvmd-webterm \
|
&& mkdir -p /home/kvmd-webterm \
|
||||||
&& chown kvmd-webterm /home/kvmd-webterm "
|
&& chown kvmd-webterm /home/kvmd-webterm "
|
||||||
@@ -255,6 +255,8 @@ instal_one-kvm() {
|
|||||||
&& sed -i 's/device: \/dev\/ttyUSB0//g' /etc/kvmd/override.yaml \
|
&& sed -i 's/device: \/dev\/ttyUSB0//g' /etc/kvmd/override.yaml \
|
||||||
&& sed -i 's/#type: otg/type: otg/g' /etc/kvmd/override.yaml "
|
&& sed -i 's/#type: otg/type: otg/g' /etc/kvmd/override.yaml "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sudo chroot --userspec "root:root" $ROOTFS bash -c "df -h"
|
||||||
}
|
}
|
||||||
|
|
||||||
pack_img_onecloud() {
|
pack_img_onecloud() {
|
||||||
@@ -264,68 +266,103 @@ pack_img_onecloud() {
|
|||||||
sudo rm $SRCPATH/tmp/*
|
sudo rm $SRCPATH/tmp/*
|
||||||
}
|
}
|
||||||
|
|
||||||
case $1 in
|
#build function
|
||||||
onecloud)
|
|
||||||
onecloud_rootfs
|
onecloud() {
|
||||||
mount_rootfs
|
onecloud_rootfs
|
||||||
config_file $1
|
mount_rootfs
|
||||||
instal_one-kvm armhf gpio systemd-networkd
|
config_file "onecloud" "arm"
|
||||||
write_meta $1
|
instal_one-kvm armhf gpio systemd-networkd
|
||||||
umount_rootfs
|
write_meta "onecloud"
|
||||||
pack_img_onecloud
|
umount_rootfs
|
||||||
;;
|
pack_img_onecloud
|
||||||
cumebox2)
|
}
|
||||||
cumebox2_rootfs
|
|
||||||
mount_rootfs
|
cumebox2() {
|
||||||
config_file $1
|
cumebox2_rootfs
|
||||||
config_cumebox2_file
|
mount_rootfs
|
||||||
parpare_dns
|
config_file "cumebox2" "aarch64"
|
||||||
instal_one-kvm aarch64 video1
|
config_cumebox2_file
|
||||||
write_meta $1
|
parpare_dns
|
||||||
umount_rootfs
|
instal_one-kvm aarch64 video1
|
||||||
pack_img Cumebox2
|
write_meta "cumebox2"
|
||||||
;;
|
umount_rootfs
|
||||||
chainedbox)
|
pack_img "Cumebox2"
|
||||||
chainedbox_rootfs_and_fix_dtb
|
}
|
||||||
mount_rootfs
|
|
||||||
config_file $1
|
chainedbox() {
|
||||||
parpare_dns
|
chainedbox_rootfs_and_fix_dtb
|
||||||
instal_one-kvm aarch64 video1
|
mount_rootfs
|
||||||
write_meta $1
|
config_file "chainedbox" "aarch64"
|
||||||
umount_rootfs
|
parpare_dns
|
||||||
pack_img Chainedbox
|
instal_one-kvm aarch64 video1
|
||||||
;;
|
write_meta "chainedbox"
|
||||||
vm)
|
umount_rootfs
|
||||||
vm_rootfs
|
pack_img "Chainedbox"
|
||||||
mount_rootfs
|
}
|
||||||
config_file $1
|
|
||||||
parpare_dns
|
vm() {
|
||||||
instal_one-kvm x86_64
|
vm_rootfs
|
||||||
write_meta $1
|
mount_rootfs
|
||||||
umount_rootfs
|
config_file "vm" "amd64"
|
||||||
pack_img Vm
|
parpare_dns
|
||||||
;;
|
instal_one-kvm x86_64
|
||||||
e900v22c)
|
write_meta "vm"
|
||||||
e900v22c_rootfs
|
umount_rootfs
|
||||||
mount_rootfs
|
pack_img "Vm"
|
||||||
config_file $1
|
}
|
||||||
instal_one-kvm aarch64 video1
|
|
||||||
write_meta $1
|
e900v22c() {
|
||||||
umount_rootfs
|
e900v22c_rootfs
|
||||||
pack_img E900v22c
|
mount_rootfs
|
||||||
;;
|
config_file "e900v22c" "aarch64"
|
||||||
octopus-flanet)
|
instal_one-kvm aarch64 video1
|
||||||
octopus-flanet_rootfs
|
write_meta "e900v22c"
|
||||||
mount_rootfs
|
umount_rootfs
|
||||||
config_file $1
|
pack_img "E900v22c"
|
||||||
config_octopus-flanet_file
|
}
|
||||||
parpare_dns
|
|
||||||
instal_one-kvm aarch64 video1
|
octopus_flanet() {
|
||||||
write_meta $1
|
octopus-flanet_rootfs
|
||||||
umount_rootfs
|
mount_rootfs
|
||||||
pack_img Octopus-Flanet
|
config_file "octopus-flanet" "aarch64"
|
||||||
;;
|
config_octopus-flanet_file
|
||||||
*)
|
parpare_dns
|
||||||
echo "Do no thing."
|
instal_one-kvm aarch64 video1
|
||||||
;;
|
write_meta "octopus-flanet"
|
||||||
esac
|
umount_rootfs
|
||||||
|
pack_img "Octopus-Flanet"
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$1" = "all" ]; then
|
||||||
|
onecloud
|
||||||
|
cumebox2
|
||||||
|
chainedbox
|
||||||
|
vm
|
||||||
|
e900v22c
|
||||||
|
octopus_flanet
|
||||||
|
else
|
||||||
|
case $1 in
|
||||||
|
onecloud)
|
||||||
|
onecloud
|
||||||
|
;;
|
||||||
|
cumebox2)
|
||||||
|
cumebox2
|
||||||
|
;;
|
||||||
|
chainedbox)
|
||||||
|
chainedbox
|
||||||
|
;;
|
||||||
|
vm)
|
||||||
|
vm
|
||||||
|
;;
|
||||||
|
e900v22c)
|
||||||
|
e900v22c
|
||||||
|
;;
|
||||||
|
octopus-flanet)
|
||||||
|
octopus_flanet
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Do no thing."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
@@ -109,7 +109,7 @@ if [ ! -f /etc/kvmd/.init_flag ]; then
|
|||||||
log_info "已禁用 WebTerm 功能"
|
log_info "已禁用 WebTerm 功能"
|
||||||
rm -r /usr/share/kvmd/extras/webterm
|
rm -r /usr/share/kvmd/extras/webterm
|
||||||
else
|
else
|
||||||
cat >> /etc/kvmd/supervisord.conf << EOF
|
cat >> /etc/supervisord.conf << EOF
|
||||||
|
|
||||||
[program:kvmd-webterm]
|
[program:kvmd-webterm]
|
||||||
command=/usr/local/bin/ttyd --interface=/run/kvmd/ttyd.sock --port=0 --writable /bin/bash -c '/etc/kvmd/armbain-motd; bash'
|
command=/usr/local/bin/ttyd --interface=/run/kvmd/ttyd.sock --port=0 --writable /bin/bash -c '/etc/kvmd/armbain-motd; bash'
|
||||||
@@ -125,14 +125,14 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$NOWEBTERMWRITE" == "1" ]; then
|
if [ "$NOWEBTERMWRITE" == "1" ]; then
|
||||||
sed -i "s/--writable//g" /etc/kvmd/supervisord.conf
|
sed -i "s/--writable//g" /etc/supervisord.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$NOVNC" == "1" ]; then
|
if [ "$NOVNC" == "1" ]; then
|
||||||
log_info "已禁用 VNC 功能"
|
log_info "已禁用 VNC 功能"
|
||||||
rm -r /usr/share/kvmd/extras/vnc
|
rm -r /usr/share/kvmd/extras/vnc
|
||||||
else
|
else
|
||||||
cat >> /etc/kvmd/supervisord.conf << EOF
|
cat >> /etc/supervisord.conf << EOF
|
||||||
|
|
||||||
[program:kvmd-vnc]
|
[program:kvmd-vnc]
|
||||||
command=python -m kvmd.apps.vnc --run
|
command=python -m kvmd.apps.vnc --run
|
||||||
@@ -151,7 +151,7 @@ EOF
|
|||||||
log_info "已禁用IPMI功能"
|
log_info "已禁用IPMI功能"
|
||||||
rm -r /usr/share/kvmd/extras/ipmi
|
rm -r /usr/share/kvmd/extras/ipmi
|
||||||
else
|
else
|
||||||
cat >> /etc/kvmd/supervisord.conf << EOF
|
cat >> /etc/supervisord.conf << EOF
|
||||||
|
|
||||||
[program:kvmd-ipmi]
|
[program:kvmd-ipmi]
|
||||||
command=python -m kvmd.apps.ipmi --run
|
command=python -m kvmd.apps.ipmi --run
|
||||||
@@ -241,4 +241,4 @@ if [ "$OTG" == "1" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log_info "One-KVM 配置文件准备完成,正在启动服务..."
|
log_info "One-KVM 配置文件准备完成,正在启动服务..."
|
||||||
exec supervisord -c /etc/kvmd/supervisord.conf
|
exec supervisord -c /etc/supervisord.conf
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
general: {
|
general: {
|
||||||
debug_level = 0
|
debug_level = 2
|
||||||
}
|
}
|
||||||
nat: {
|
nat: {
|
||||||
nice_debug = false
|
nice_debug = false
|
||||||
|
|||||||
@@ -48,7 +48,8 @@ from .hid.mouse import make_mouse_hid
|
|||||||
# =====
|
# =====
|
||||||
def _mkdir(path: str) -> None:
|
def _mkdir(path: str) -> None:
|
||||||
get_logger().info("MKDIR --- %s", path)
|
get_logger().info("MKDIR --- %s", path)
|
||||||
os.mkdir(path)
|
if not os.path.isdir(path):
|
||||||
|
os.makedirs(path, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
def _chown(path: str, user: str, optional: bool=False) -> None:
|
def _chown(path: str, user: str, optional: bool=False) -> None:
|
||||||
|
|||||||
82
setup.py
82
setup.py
@@ -21,43 +21,38 @@
|
|||||||
# #
|
# #
|
||||||
# ========================================================================== #
|
# ========================================================================== #
|
||||||
|
|
||||||
|
|
||||||
import textwrap
|
|
||||||
|
|
||||||
import setuptools.command.easy_install
|
|
||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
|
|
||||||
# =====
|
|
||||||
class _Template(str):
|
|
||||||
def __init__(self, text: str) -> None:
|
|
||||||
self.__text = textwrap.dedent(text).strip()
|
|
||||||
|
|
||||||
def __mod__(self, kv: dict) -> str:
|
|
||||||
kv = {"module_name": kv["ep"].module_name, **kv}
|
|
||||||
return (self.__text % (kv))
|
|
||||||
|
|
||||||
|
|
||||||
class _ScriptWriter(setuptools.command.easy_install.ScriptWriter):
|
|
||||||
template = _Template("""
|
|
||||||
# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
|
|
||||||
|
|
||||||
__requires__ = %(spec)r
|
|
||||||
|
|
||||||
from %(module_name)s import main
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
""")
|
|
||||||
|
|
||||||
|
|
||||||
# =====
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
setuptools.command.easy_install.ScriptWriter = _ScriptWriter
|
# Define entry points manually with specific import paths
|
||||||
|
entry_points = {
|
||||||
|
"console_scripts": [
|
||||||
|
"kvmd = kvmd.apps.kvmd:main",
|
||||||
|
"kvmd-media = kvmd.apps.media:main",
|
||||||
|
"kvmd-pst = kvmd.apps.pst:main",
|
||||||
|
"kvmd-pstrun = kvmd.apps.pstrun:main",
|
||||||
|
"kvmd-otg = kvmd.apps.otg:main",
|
||||||
|
"kvmd-otgnet = kvmd.apps.otgnet:main",
|
||||||
|
"kvmd-otgmsd = kvmd.apps.otgmsd:main",
|
||||||
|
"kvmd-otgconf = kvmd.apps.otgconf:main",
|
||||||
|
"kvmd-htpasswd = kvmd.apps.htpasswd:main",
|
||||||
|
"kvmd-totp = kvmd.apps.totp:main",
|
||||||
|
"kvmd-edidconf = kvmd.apps.edidconf:main",
|
||||||
|
"kvmd-ipmi = kvmd.apps.ipmi:main",
|
||||||
|
"kvmd-vnc = kvmd.apps.vnc:main",
|
||||||
|
"kvmd-nginx-mkconf = kvmd.apps.ngxmkconf:main",
|
||||||
|
"kvmd-janus = kvmd.apps.janus:main",
|
||||||
|
"kvmd-watchdog = kvmd.apps.watchdog:main",
|
||||||
|
"kvmd-oled = kvmd.apps.oled:main",
|
||||||
|
"kvmd-helper-pst-remount = kvmd.helpers.remount:main",
|
||||||
|
"kvmd-helper-otgmsd-remount = kvmd.helpers.remount:main",
|
||||||
|
"kvmd-helper-swapfiles = kvmd.helpers.swapfiles:main",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="kvmd",
|
name="kvmd",
|
||||||
version="4.49",
|
version="4.20",
|
||||||
url="https://github.com/pikvm/kvmd",
|
url="https://github.com/pikvm/kvmd",
|
||||||
license="GPLv3",
|
license="GPLv3",
|
||||||
author="Maxim Devaev",
|
author="Maxim Devaev",
|
||||||
@@ -117,30 +112,7 @@ def main() -> None:
|
|||||||
"kvmd": ["i18n/zh/LC_MESSAGES/*.mo"],
|
"kvmd": ["i18n/zh/LC_MESSAGES/*.mo"],
|
||||||
},
|
},
|
||||||
|
|
||||||
entry_points={
|
entry_points=entry_points,
|
||||||
"console_scripts": [
|
|
||||||
"kvmd = kvmd.apps.kvmd:main",
|
|
||||||
"kvmd-media = kvmd.apps.media:main",
|
|
||||||
"kvmd-pst = kvmd.apps.pst:main",
|
|
||||||
"kvmd-pstrun = kvmd.apps.pstrun:main",
|
|
||||||
"kvmd-otg = kvmd.apps.otg:main",
|
|
||||||
"kvmd-otgnet = kvmd.apps.otgnet:main",
|
|
||||||
"kvmd-otgmsd = kvmd.apps.otgmsd:main",
|
|
||||||
"kvmd-otgconf = kvmd.apps.otgconf:main",
|
|
||||||
"kvmd-htpasswd = kvmd.apps.htpasswd:main",
|
|
||||||
"kvmd-totp = kvmd.apps.totp:main",
|
|
||||||
"kvmd-edidconf = kvmd.apps.edidconf:main",
|
|
||||||
"kvmd-ipmi = kvmd.apps.ipmi:main",
|
|
||||||
"kvmd-vnc = kvmd.apps.vnc:main",
|
|
||||||
"kvmd-nginx-mkconf = kvmd.apps.ngxmkconf:main",
|
|
||||||
"kvmd-janus = kvmd.apps.janus:main",
|
|
||||||
"kvmd-watchdog = kvmd.apps.watchdog:main",
|
|
||||||
"kvmd-oled = kvmd.apps.oled:main",
|
|
||||||
"kvmd-helper-pst-remount = kvmd.helpers.remount:main",
|
|
||||||
"kvmd-helper-otgmsd-remount = kvmd.helpers.remount:main",
|
|
||||||
"kvmd-helper-swapfiles = kvmd.helpers.swapfiles:main",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
|
|
||||||
classifiers=[
|
classifiers=[
|
||||||
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
|
||||||
|
|||||||
Reference in New Issue
Block a user