summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2018-09-26 02:11:23 +0300
committerDevaev Maxim <[email protected]>2018-09-26 02:11:23 +0300
commit940989b6e9a3fe31bd236e4bed96e1d4778a403b (patch)
tree0ed5679b56b198db88b27390b92e29019cd4ab6f /os
parent6e9a3222ce566f6430caad541c2695255cb06d7c (diff)
v2 beta
Diffstat (limited to 'os')
-rw-r--r--os/Makefile21
-rw-r--r--os/platforms/common/Dockerfile.part51
-rw-r--r--os/platforms/common/customizepkg.nginx (renamed from os/platforms/v1/customizepkg.nginx)0
-rw-r--r--os/platforms/common/motd (renamed from os/platforms/v1/motd)0
-rw-r--r--os/platforms/common/sysctl.conf (renamed from os/platforms/v1/sysctl.conf)0
-rw-r--r--os/platforms/v1/Dockerfile.part48
-rw-r--r--os/platforms/v2/Dockerfile.part11
-rw-r--r--os/platforms/v2/config.txt5
-rw-r--r--os/platforms/v2/modules.load1
-rw-r--r--os/platforms/v2/udev.rules4
10 files changed, 90 insertions, 51 deletions
diff --git a/os/Makefile b/os/Makefile
index d3f8e9e6..68bbb935 100644
--- a/os/Makefile
+++ b/os/Makefile
@@ -9,7 +9,12 @@ WEBUI_ADMIN_PASSWD ?= admin
# =====
_BUILD_DIR = ./.build
-_KVMD_VERSION = $(shell bash -c 'source ../kvmd/PKGBUILD; echo $$pkgver')
+
+define fetch_version
+ curl --silent "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=$(1)" \
+ | grep "^pkgver=" \
+ | grep -Po "\d+\.\d+[^\"']*"
+endef
# =====
@@ -21,24 +26,30 @@ v1:
make _pikvm PIKVM_PLATFORM=v1 PI_BOARD=rpi-2
+v2:
+ make _pikvm PIKVM_PLATFORM=v2 PI_BOARD=rpi-2
+
+
shell:
cd $(_BUILD_DIR) && make shell
_pikvm: $(_BUILD_DIR)
- rm -rf $(_BUILD_DIR)/stages/pikvm
+ rm -rf $(_BUILD_DIR)/stages/pikvm-*
rm -rf $(_BUILD_DIR)/builder/scripts/pikvm
- cp -a platforms/$(PIKVM_PLATFORM) $(_BUILD_DIR)/stages/pikvm
+ cp -a platforms/common $(_BUILD_DIR)/stages/pikvm-common
+ cp -a platforms/$(PIKVM_PLATFORM) $(_BUILD_DIR)/stages/pikvm-$(PIKVM_PLATFORM)
cd $(_BUILD_DIR) && make binfmt && make _rpi \
BUILD_OPTS=" $(BUILD_OPTS) \
- --build-arg KVMD_VERSION=$(_KVMD_VERSION) \
+ --build-arg USTREAMER_VERSION=$(call fetch_version, ustreamer) \
+ --build-arg KVMD_VERSION=$(call fetch_version, kvmd) \
--build-arg NEW_SSH_KEYGEN=$(shell uuidgen) \
--build-arg WEBUI_ADMIN_PASSWD='$(WEBUI_ADMIN_PASSWD)' \
--build-arg NEW_HTTPS_CERT=$(shell uuidgen) \
" \
PROJECT=pikvm \
BOARD=$(PI_BOARD) \
- STAGES="__init__ os watchdog ro pikvm rootssh __cleanup__" \
+ STAGES="__init__ os watchdog ro pikvm-common pikvm-$(PIKVM_PLATFORM) rootssh __cleanup__" \
LOCALE=$(LOCALE) \
TIMEZONE=$(TIMEZONE)
diff --git a/os/platforms/common/Dockerfile.part b/os/platforms/common/Dockerfile.part
new file mode 100644
index 00000000..e4308647
--- /dev/null
+++ b/os/platforms/common/Dockerfile.part
@@ -0,0 +1,51 @@
+RUN pkg-install \
+ nginx-mainline \
+ apache-tools \
+ raspberrypi-firmware \
+ v4l-utils \
+ python \
+ python-raspberry-gpio \
+ customizepkg
+RUN systemctl enable nginx
+
+COPY stages/pikvm-common/customizepkg.nginx /etc/customizepkg.d/nginx-mainline-mod-ndk
+COPY stages/pikvm-common/customizepkg.nginx /etc/customizepkg.d/nginx-mainline-mod-lua
+RUN env MAKEPKGOPTS="--skipchecksums --skippgpcheck" pkg-install nginx-mainline-mod-lua
+
+ARG USTREAMER_VERSION
+ENV USTREAMER_VERSION $USTREAMER_VERSION
+RUN echo $USTREAMER_VERSION
+RUN pkg-install ustreamer
+
+ARG KVMD_VERSION
+ENV KVMD_VERSION $KVMD_VERSION
+RUN echo $KVMD_VERSION
+RUN pkg-install kvmd
+RUN systemctl enable kvmd
+
+COPY stages/pikvm-common/sysctl.conf /etc/sysctl.d/99-pikvm.conf
+COPY stages/pikvm-common/motd /etc/
+
+RUN sed -i -e "s/console=ttyAMA0\,115200//g" /boot/cmdline.txt \
+ && sed -i -e "s/kgdboc=ttyAMA0\,115200//g" /boot/cmdline.txt
+RUN systemctl mask [email protected]
+
+RUN rm -rf /etc/nginx/* \
+ && cp /usr/share/kvmd/configs/nginx/* /etc/nginx/ \
+ && sed -i -e "s/^#PROD//g" /etc/nginx/nginx.conf
+
+ARG WEBUI_ADMIN_PASSWD
+ENV WEBUI_ADMIN_PASSWD $WEBUI_ADMIN_PASSWD
+RUN echo "$WEBUI_ADMIN_PASSWD" | htpasswd -ci /etc/nginx/htpasswd admin
+
+ARG NEW_HTTPS_CERT
+ENV NEW_HTTPS_CERT $NEW_HTTPS_CERT
+RUN echo $NEW_HTTPS_CERT
+RUN mkdir /etc/nginx/ssl \
+ && cd /etc/nginx/ssl \
+ && openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 3650 \
+ -subj "/C=RU/ST=Moscow/L=Moscow/O=Pi-KVM/OU=Pi-KVM/CN=localhost" \
+ && chmod 400 server.key \
+ && chmod 444 server.crt \
+ && chmod 750 /etc/nginx/ssl \
+ && chown -R root:http /etc/nginx/ssl
diff --git a/os/platforms/v1/customizepkg.nginx b/os/platforms/common/customizepkg.nginx
index 5e7db5a4..5e7db5a4 100644
--- a/os/platforms/v1/customizepkg.nginx
+++ b/os/platforms/common/customizepkg.nginx
diff --git a/os/platforms/v1/motd b/os/platforms/common/motd
index 5b157c58..5b157c58 100644
--- a/os/platforms/v1/motd
+++ b/os/platforms/common/motd
diff --git a/os/platforms/v1/sysctl.conf b/os/platforms/common/sysctl.conf
index 71db0efc..71db0efc 100644
--- a/os/platforms/v1/sysctl.conf
+++ b/os/platforms/common/sysctl.conf
diff --git a/os/platforms/v1/Dockerfile.part b/os/platforms/v1/Dockerfile.part
index 2c6b1557..77be104f 100644
--- a/os/platforms/v1/Dockerfile.part
+++ b/os/platforms/v1/Dockerfile.part
@@ -1,48 +1,4 @@
-RUN pkg-install \
- nginx-mainline \
- apache-tools \
- mjpg-streamer \
- python \
- python-raspberry-gpio \
- customizepkg
-RUN systemctl enable nginx
+COPY stages/pikvm-v1/config.txt /boot/
+COPY stages/pikvm-v1/udev.rules /etc/udev/rules.d/pikvm.rules
-COPY stages/pikvm/customizepkg.nginx /etc/customizepkg.d/nginx-mainline-mod-ndk
-COPY stages/pikvm/customizepkg.nginx /etc/customizepkg.d/nginx-mainline-mod-lua
-RUN env MAKEPKGOPTS="--skipchecksums --skippgpcheck" pkg-install nginx-mainline-mod-lua
-
-ARG KVMD_VERSION
-ENV KVMD_VERSION $KVMD_VERSION
-RUN echo $KVMD_VERSION
-RUN pkg-install kvmd
-RUN systemctl enable kvmd
-
-COPY stages/pikvm/config.txt /boot/
-COPY stages/pikvm/sysctl.conf /etc/sysctl.d/99-pikvm.conf
-COPY stages/pikvm/udev.rules /etc/udev/rules.d/pikvm.rules
-COPY stages/pikvm/motd /etc/
-
-RUN sed -i -e "s/console=ttyAMA0\,115200//g" /boot/cmdline.txt \
- && sed -i -e "s/kgdboc=ttyAMA0\,115200//g" /boot/cmdline.txt
-RUN systemctl mask [email protected]
-
-RUN rm -rf /etc/nginx/* \
- && cp /usr/share/kvmd/configs/nginx/* /etc/nginx/ \
- && sed -i -e "s/^#PROD//g" /etc/nginx/nginx.conf
RUN cp /usr/share/kvmd/configs/kvmd/v1.yaml /etc/kvmd.yaml
-
-ARG WEBUI_ADMIN_PASSWD
-ENV WEBUI_ADMIN_PASSWD $WEBUI_ADMIN_PASSWD
-RUN echo "$WEBUI_ADMIN_PASSWD" | htpasswd -ci /etc/nginx/htpasswd admin
-
-ARG NEW_HTTPS_CERT
-ENV NEW_HTTPS_CERT $NEW_HTTPS_CERT
-RUN echo $NEW_HTTPS_CERT
-RUN mkdir /etc/nginx/ssl \
- && cd /etc/nginx/ssl \
- && openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 3650 \
- -subj "/C=RU/ST=Moscow/L=Moscow/O=Pi-KVM/OU=Pi-KVM/CN=localhost" \
- && chmod 400 server.key \
- && chmod 444 server.crt \
- && chmod 750 /etc/nginx/ssl \
- && chown -R root:http /etc/nginx/ssl
diff --git a/os/platforms/v2/Dockerfile.part b/os/platforms/v2/Dockerfile.part
new file mode 100644
index 00000000..2e689418
--- /dev/null
+++ b/os/platforms/v2/Dockerfile.part
@@ -0,0 +1,11 @@
+RUN pkg-install \
+ dkms \
+ tc358743-dkms
+
+RUN sed -i -e "s/rootwait/cma=128M rootwait/g" /boot/cmdline.txt
+
+COPY stages/pikvm-v2/config.txt /boot/
+COPY stages/pikvm-v2/udev.rules /etc/udev/rules.d/pikvm.rules
+COPY stages/pikvm-v2/modules.load /etc/modules-load.d/pikvm.conf
+
+RUN cp /usr/share/kvmd/configs/kvmd/v2.yaml /etc/kvmd.yaml
diff --git a/os/platforms/v2/config.txt b/os/platforms/v2/config.txt
new file mode 100644
index 00000000..f99b10b4
--- /dev/null
+++ b/os/platforms/v2/config.txt
@@ -0,0 +1,5 @@
+gpu_mem=16
+start_x=1
+enable_uart=1
+dtoverlay=tc358743,i2c_pins_28_29=1
+dtparam=act_led_gpio=27
diff --git a/os/platforms/v2/modules.load b/os/platforms/v2/modules.load
new file mode 100644
index 00000000..5be25408
--- /dev/null
+++ b/os/platforms/v2/modules.load
@@ -0,0 +1 @@
+tc358743
diff --git a/os/platforms/v2/udev.rules b/os/platforms/v2/udev.rules
new file mode 100644
index 00000000..b26a0ff8
--- /dev/null
+++ b/os/platforms/v2/udev.rules
@@ -0,0 +1,4 @@
+# https://unix.stackexchange.com/questions/66901/how-to-bind-usb-device-under-a-static-name
+# https://wiki.archlinux.org/index.php/Udev#Setting_static_device_names
+KERNEL=="video[0-9]*", SUBSYSTEM=="video4linux", KERNELS=="soc", SYMLINK+="kvmd-streamer"
+KERNEL=="sd[a-z]", SUBSYSTEM=="block", KERNELS=="1-1.4:1.0", SYMLINK+="kvmd-msd"