Implemented GUI, build OctoPrint

GUI has been implemented using NoDM
Some files have been shifted to more appropriate stages
Updated the name in NOOBS (although whats the point?)
OctoPrint is now built and installed
Removed LightDM as its a buggy mess
This commit is contained in:
Logan G 2020-08-11 01:04:29 -06:00
parent 0002aa3bb5
commit b94d01cea2
Signed by: logan
GPG key ID: E328528C921E7A7A
18 changed files with 201 additions and 13 deletions

View file

@ -159,7 +159,7 @@ export ZIP_FILENAME="${ZIP_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}"
export SCRIPT_DIR="${BASE_DIR}/scripts" export SCRIPT_DIR="${BASE_DIR}/scripts"
export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}" export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}"
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"} export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
export DEPLOY_ZIP="${DEPLOY_ZIP:-0}" export DEPLOY_ZIP="${DEPLOY_ZIP:-2}"
export LOG_FILE="${WORK_DIR}/build.log" export LOG_FILE="${WORK_DIR}/build.log"
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-octoprintkiosk} export TARGET_HOSTNAME=${TARGET_HOSTNAME:-octoprintkiosk}

View file

@ -95,7 +95,7 @@ if [ "${DEPLOY_ZIP}" == "1" ]; then
"$(basename "${IMG_FILE}")" "$(basename "${IMG_FILE}")"
popd > /dev/null popd > /dev/null
elif [ "${DEPLOY_ZIP}" == "2" ]; then elif [ "${DEPLOY_ZIP}" == "2" ]; then
xz -z -c "$IMG_FILE" > "${DEPLOY_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img.xz" xz -z -c -T$(nproc) "$IMG_FILE" > "${DEPLOY_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img.xz"
else else
cp "$IMG_FILE" "$DEPLOY_DIR" cp "$IMG_FILE" "$DEPLOY_DIR"
fi fi

View file

@ -7,7 +7,7 @@
# uncomment this if your display has a black border of unused pixels visible # uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan # and your display can output without overscan
#disable_overscan=1 disable_overscan=1
# uncomment the following to adjust overscan. Use positive numbers if console # uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border # goes off screen, and negative if there is too much border

View file

@ -3,6 +3,9 @@
install -d "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d" install -d "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d"
install -m 644 files/noclear.conf "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d/noclear.conf" install -m 644 files/noclear.conf "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d/noclear.conf"
install -v -m 644 files/fstab "${ROOTFS_DIR}/etc/fstab" install -v -m 644 files/fstab "${ROOTFS_DIR}/etc/fstab"
install -m 755 files/.xprofile "${ROOTFS_DIR}/etc/skel/.xprofile"
mkdir -p "${ROOTFS_DIR}/etc/skel/.config/openbox"
install -m 644 files/autostart "${ROOTFS_DIR}/etc/skel/.config/openbox/autostart"
on_chroot << EOF on_chroot << EOF
if ! id -u ${FIRST_USER_NAME} >/dev/null 2>&1; then if ! id -u ${FIRST_USER_NAME} >/dev/null 2>&1; then

View file

@ -0,0 +1 @@
exec openbox-session

View file

@ -0,0 +1 @@
surf -d -F -g -K -n -p google.com &

View file

@ -15,12 +15,6 @@ unzip
build-essential build-essential
manpages-dev manpages-dev
python python
python-pip
python-dev
python-setuptools
python-virtualenv
git
libyaml-dev
bash-completion bash-completion
gdb gdb
pkg-config pkg-config

View file

@ -40,7 +40,7 @@ on_chroot <<EOF
for GRP in input spi i2c gpio; do for GRP in input spi i2c gpio; do
groupadd -f -r "\$GRP" groupadd -f -r "\$GRP"
done done
for GRP in adm dialout cdrom audio users sudo video games plugdev input gpio spi i2c netdev; do for GRP in adm dialout tty cdrom audio users sudo video games plugdev input gpio spi i2c netdev; do
adduser $FIRST_USER_NAME \$GRP adduser $FIRST_USER_NAME \$GRP
done done
EOF EOF

View file

@ -0,0 +1,6 @@
python-pip
python-dev
python-setuptools
python-virtualenv
git
libyaml-dev

11
stage2/04-octoprint/01.run.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash -e
if [ -d /home/${FIRST_USER_NAME} ];
cd /home/${FIRST_USER_NAME} || exit 1
mkdir OctoPrint || exit 1
cd OctoPrint || exit 1
virtualenv venv || exit 1
source venv/bin/activate || exit 1
pip install pip --upgrade || exit 1
pip install octoprint || exit 1
fi

View file

@ -1,2 +1,2 @@
NOOBS_NAME="Raspbian Lite" NOOBS_NAME="Octoprint"
NOOBS_DESCRIPTION="A port of Debian with no desktop environment" NOOBS_DESCRIPTION="A fork of Raspbian with Octoprint"

View file

@ -18,3 +18,4 @@ fonts-liberation2
obconf obconf
arandr arandr
openbox openbox
nodm

View file

@ -7,6 +7,5 @@ zenity
xdg-utils xdg-utils
gvfs-backends gvfs-backends
gvfs-fuse gvfs-fuse
lightdm
gnome-themes-standard-data gnome-themes-standard-data
gnome-icon-theme gnome-icon-theme

View file

@ -1,5 +1,7 @@
#!/bin/bash -e #!/bin/bash -e
install -m 644 files/nodm.conf /etc/nodm.conf
on_chroot << EOF on_chroot << EOF
update-alternatives --install /usr/bin/x-www-browser \ update-alternatives --install /usr/bin/x-www-browser \
x-www-browser /usr/bin/surf 86 x-www-browser /usr/bin/surf 86

View file

@ -0,0 +1,2 @@
NODM_USER=pi
NODM_XSESSION=/home/pi/.xprofile

View file

@ -1,3 +1,5 @@
#!/bin/bash -e #!/bin/bash -e
#rm -f "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/wait.conf" #rm -f "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/wait.conf"
install -m 644 files/lightdm.conf "${ROOTFS_DIR}/etc/lightdm/lightdm.conf"

View file

@ -0,0 +1,164 @@
#
# General configuration
#
# start-default-seat = True to always start one seat if none are defined in the configuration
# greeter-user = User to run greeter as
# minimum-display-number = Minimum display number to use for X servers
# minimum-vt = First VT to run displays on
# lock-memory = True to prevent memory from being paged to disk
# user-authority-in-system-dir = True if session authority should be in the system location
# guest-account-script = Script to be run to setup guest account
# logind-check-graphical = True to on start seats that are marked as graphical by logind
# log-directory = Directory to log information to
# run-directory = Directory to put running state in
# cache-directory = Directory to cache to
# sessions-directory = Directory to find sessions
# remote-sessions-directory = Directory to find remote sessions
# greeters-directory = Directory to find greeters
# backup-logs = True to move add a .old suffix to old log files when opening new ones
# dbus-service = True if LightDM provides a D-Bus service to control it
#
[LightDM]
#start-default-seat=true
#greeter-user=lightdm
#minimum-display-number=0
#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799
#lock-memory=true
#user-authority-in-system-dir=false
#guest-account-script=guest-account
#logind-check-graphical=false
#log-directory=/var/log/lightdm
run-directory=/run/lightdm
#cache-directory=/var/cache/lightdm
#sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions
#remote-sessions-directory=/usr/share/lightdm/remote-sessions
#greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
#backup-logs=true
#dbus-service=true
#
# Seat configuration
#
# Seat configuration is matched against the seat name glob in the section, for example:
# [Seat:*] matches all seats and is applied first.
# [Seat:seat0] matches the seat named "seat0".
# [Seat:seat-thin-client*] matches all seats that have names that start with "seat-thin-client".
#
# type = Seat type (local, xremote)
# pam-service = PAM service to use for login
# pam-autologin-service = PAM service to use for autologin
# pam-greeter-service = PAM service to use for greeters
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xmir-command = Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
# xserver-config = Config file to pass to X server
# xserver-layout = Layout to pass to X server
# xserver-allow-tcp = True if TCP/IP connections are allowed to this X server
# xserver-share = True if the X server is shared for both greeter and session
# xserver-hostname = Hostname of X server (only for type=xremote)
# xserver-display-number = Display number of X server (only for type=xremote)
# xdmcp-manager = XDMCP manager to connect to (implies xserver-allow-tcp=true)
# xdmcp-port = XDMCP UDP/IP port to communicate on
# xdmcp-key = Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# greeter-session = Session to load for greeter
# greeter-hide-users = True to hide the user list
# greeter-allow-guest = True if the greeter should show a guest login option
# greeter-show-manual-login = True if the greeter should offer a manual login option
# greeter-show-remote-login = True if the greeter should offer a remote login option
# user-session = Session to load for users
# allow-user-switching = True if allowed to switch users
# allow-guest = True if guest login is allowed
# guest-session = Session to load for guests (overrides user-session)
# session-wrapper = Wrapper script to run session with
# greeter-wrapper = Wrapper script to run greeter with
# guest-wrapper = Wrapper script to run guest sessions with
# display-setup-script = Script to run when starting a greeter session (runs as root)
# display-stopped-script = Script to run after stopping the display server (runs as root)
# greeter-setup-script = Script to run when starting a greeter (runs as root)
# session-setup-script = Script to run when starting a user session (runs as root)
# session-cleanup-script = Script to run when quitting a user session (runs as root)
# autologin-guest = True to log in as guest by default
# autologin-user = User to log in with by default (overrides autologin-guest)
# autologin-user-timeout = Number of seconds to wait before loading default user
# autologin-session = Session to load for automatic login (overrides user-session)
# autologin-in-background = True if autologin session should not be immediately activated
# exit-on-failure = True if the daemon should exit if this seat fails
#
[Seat:*]
#type=local
#pam-service=lightdm
#pam-autologin-service=lightdm-autologin
#pam-greeter-service=lightdm-greeter
#xserver-command=X
#xmir-command=Xmir
#xserver-config=
#xserver-layout=
#xserver-allow-tcp=false
#xserver-share=true
#xserver-hostname=
#xserver-display-number=
#xdmcp-manager=
#xdmcp-port=177
#xdmcp-key=
#greeter-session=example-gtk-gnome
#greeter-hide-users=false
#greeter-allow-guest=true
#greeter-show-manual-login=false
#greeter-show-remote-login=true
#user-session=default
#allow-user-switching=true
#allow-guest=true
#guest-session=
session-wrapper=/etc/lightdm/Xsession
#greeter-wrapper=
#guest-wrapper=
#display-setup-script=
#display-stopped-script=
#greeter-setup-script=
#session-setup-script=
#session-cleanup-script=
#autologin-guest=false
autologin-user=pi
autologin-user-timeout=0
#autologin-in-background=false
#autologin-session=openbox
#exit-on-failure=false
#
# XDMCP Server configuration
#
# enabled = True if XDMCP connections should be allowed
# port = UDP/IP port to listen for connections on
# listen-address = Host/address to listen for XDMCP connections (use all addresses if not present)
# key = Authentication key to use for XDM-AUTHENTICATION-1 or blank to not use authentication (stored in keys.conf)
# hostname = Hostname to report to XDMCP clients (defaults to system hostname if unset)
#
# The authentication key is a 56 bit DES key specified in hex as 0xnnnnnnnnnnnnnn. Alternatively
# it can be a word and the first 7 characters are used as the key.
#
[XDMCPServer]
#enabled=false
#port=177
#listen-address=
#key=
#hostname=
#
# VNC Server configuration
#
# enabled = True if VNC connections should be allowed
# command = Command to run Xvnc server with
# port = TCP/IP port to listen for connections on
# listen-address = Host/address to listen for VNC connections (use all addresses if not present)
# width = Width of display to use
# height = Height of display to use
# depth = Color depth of display to use
#
[VNCServer]
#enabled=false
#command=Xvnc
#port=5900
#listen-address=
#width=1024
#height=768
#depth=8

2
stage3/EXPORT_NOOBS Normal file
View file

@ -0,0 +1,2 @@
NOOBS_NAME="Octoprint Kiosk"
NOOBS_DESCRIPTION="A fork of Raspbian that includes OctoPrint and a nice frontend"