[debian-edu-commits] [Git][debian-edu/debian-edu-config][master] 5 commits: Add LTSP related tools and manual pages
Wolfgang Schweer (@schweer-guest)
gitlab at salsa.debian.org
Wed Sep 29 21:24:51 BST 2021
Wolfgang Schweer pushed to branch master at Debian Edu / debian-edu-config
Commits:
ae94b67b by Wolfgang Schweer at 2021-09-29T21:29:49+02:00
Add LTSP related tools and manual pages
sbin/debian-edu-ltsp-chroot: Used for chroot maintenance.
debian-edu-ltsp-ipxe: Wrapper for 'ltsp ipxe' command.
sbin/share/man/man8/debian-edu-ltsp-chroot.8
share/man/man8/debian-edu-ltsp-ipxe.8
Signed-off-by: Wolfgang Schweer <wschweer at arcor.de>
- - - - -
aa5348ea by Wolfgang Schweer at 2021-09-29T22:04:03+02:00
Improve sbin/debian-edu-ltsp-install concerning chroots
Relocate and keep X2Go thin client chroots.
Unset temporary directory variables instead of manually creating directories and
mounting tmpfs.
Add/adjust iPXE menu item names.
Care for complete sources list in chroots.
Use 'no' as default for the --diskless_workstation option.
Adjust to match above changes
share/debian-edu-config/tools/run-at-firstboot
share/man/man8/debian-edu-ltsp-install.8
share/debian-edu-config/tools/copy-host-keytab
Signed-off-by: Wolfgang Schweer <wschweer at arcor.de>
- - - - -
335ebc8d by Wolfgang Schweer at 2021-09-29T22:18:26+02:00
Improve share/debian-edu-config/tools/{improve-desktop-l10n,install-task-pkgs}
Check if package is already installed. Avoids useless noise if cf-agent is
also run after system installation, e.g. upgrades.
Whitespace cleanup.
Signed-off-by: Wolfgang Schweer <wschweer at arcor.de>
- - - - -
64213e84 by Wolfgang Schweer at 2021-09-29T22:21:28+02:00
Remove cruft from debian/debian-edu-config.postrm
Signed-off-by: Wolfgang Schweer <wschweer at arcor.de>
- - - - -
82a8cdac by Wolfgang Schweer at 2021-09-29T22:23:39+02:00
Cleanup debian/debian-edu-config.lintian-overrides
Signed-off-by: Wolfgang Schweer <wschweer at arcor.de>
- - - - -
14 changed files:
- Makefile
- debian/changelog
- debian/debian-edu-config.lintian-overrides
- debian/debian-edu-config.postrm
- + sbin/debian-edu-ltsp-chroot
- sbin/debian-edu-ltsp-install
- + sbin/debian-edu-ltsp-ipxe
- share/debian-edu-config/tools/copy-host-keytab
- share/debian-edu-config/tools/improve-desktop-l10n
- share/debian-edu-config/tools/install-task-pkgs
- share/debian-edu-config/tools/run-at-firstboot
- + share/man/man8/debian-edu-ltsp-chroot.8
- share/man/man8/debian-edu-ltsp-install.8
- + share/man/man8/debian-edu-ltsp-ipxe.8
Changes:
=====================================
Makefile
=====================================
@@ -6,7 +6,9 @@ PROGS = \
debian-edu-copy-pki
SPROGS = debian-edu-fsautoresize \
+ debian-edu-ltsp-chroot \
debian-edu-ltsp-install \
+ debian-edu-ltsp-ipxe \
debian-edu-pxeinstall \
debian-edu-restart-services \
debian-edu-test-install \
=====================================
debian/changelog
=====================================
@@ -1,3 +1,30 @@
+debian-edu-config (2.12.4) UNRELEASED; urgency=medium
+
+ * Add LTSP related tools and manual pages:
+ - sbin/debian-edu-ltsp-chroot: Used for chroot maintenance.
+ - sbin/debian-edu-ltsp-ipxe: Wrapper for 'ltsp ipxe' command.
+ - share/man/man8/debian-edu-ltsp-chroot.8
+ - share/man/man8/debian-edu-ltsp-ipxe.8
+ * Improve sbin/debian-edu-ltsp-install concerning chroots:
+ - Relocate and keep X2Go thin client chroots.
+ - Unset temporary directory variables instead of manually creating
+ directories and mounting tmpfs.
+ - Add/adjust iPXE menu item names.
+ - Care for complete sources list in chroots.
+ - Use 'no' as default for the --diskless_workstation option.
+ * Adjust to match above changes:
+ - share/debian-edu-config/tools/run-at-firstboot
+ - share/man/man8/debian-edu-ltsp-install.8
+ - share/debian-edu-config/tools/copy-host-keytab
+ * share/debian-edu-config/tools/{improve-desktop-l10n,install-task-pkgs}:
+ - Check if package is already installed. Avoids useless noise if cf-agent is
+ also run after system installation, e.g. upgrades.
+ - Whitespace cleanup.
+ * debian/debian-edu-config.postrm: Remove cruft.
+ * debian/debian-edu-config.lintian-overrides: Cleanup, thanks lintian.
+
+ -- Wolfgang Schweer <wschweer at arcor.de> Tue, 28 Sep 2021 12:45:57 +0200
+
debian-edu-config (2.12.3) unstable; urgency=medium
[ Wolfgang Schweer ]
=====================================
debian/debian-edu-config.lintian-overrides
=====================================
@@ -8,8 +8,6 @@ debian-edu-config binary: debconf-is-not-a-registry usr/share/debian-edu-config/
debian-edu-config binary: debconf-is-not-a-registry usr/share/debian-edu-config/d-i/pre-pkgsel
debian-edu-config binary: debconf-is-not-a-registry usr/share/debian-edu-config/tools/kerberos-kdc-init
debian-edu-config binary: debconf-is-not-a-registry usr/share/debian-edu-config/tools/edu-icinga-setup
-debian-edu-config binary: remove-of-unknown-diversion usr/bin/gtick postrm:18
-debian-edu-config binary: uses-dpkg-database-directly usr/sbin/debian-edu-ltsp-install
debian-edu-config binary: debconf-is-not-a-registry usr/share/debian-edu-config/tools/run-at-firstboot
debian-edu-config binary: missing-systemd-service-for-init.d-script chromium-ldapconf
debian-edu-config binary: missing-systemd-service-for-init.d-script enable-nat
=====================================
debian/debian-edu-config.postrm
=====================================
@@ -12,12 +12,6 @@ case "$1" in
/etc/init.d/enable-nat stop || exit $?
fi
fi
- # cleanup from debian-edu-ltsp-audiodivert
- if dpkg --compare-versions "$2" le "1.931~" && [ -f /usr/bin/gtick.ltsp ] ; then
- rm /usr/bin/gtick
- dpkg-divert --package debian-edu-config --rename --remove /usr/bin/gtick
- rm /usr/bin/gtick.ltsp
- fi
if [ -e /var/lib/cfengine3/inputs/debian-edu ] ; then
rm -rf /var/lib/cfengine3/inputs/debian-edu
rm -rf /var/lib/cfengine3/inputs/
=====================================
sbin/debian-edu-ltsp-chroot
=====================================
@@ -0,0 +1,190 @@
+#!/bin/sh
+
+# Based upon the 'ltsp-chroot' script and 'ltsp-server-functions', both shipped
+# with package 'ltsp-server 5.18.12-3' (Debian Buster).
+
+# Original information about authors and copyright:
+# copyright 2009 Vagrant Cascadian <vagrant at freegeek.org>,
+# 2010 Alkis Georgopoulos <alkisg at gmail.com>,
+# 2011 Wim Muskee <wimmuskee at gmail.com>, distributed under the
+# terms of the GNU General Public License v2 or any later version.
+
+# Reduced to the bare minimum and adjusted to be useful for Debian Edu Bullseye.
+# Also, integrated everything into one tool to be usable standalone.
+# 2021 Wolfgang Schweer <wschweer at arcor.de>, distributed under the
+# terms of the GNU General Public License v2 or any later version.
+
+
+# generic functions
+
+usage() {
+cat <<EOF
+Usage: $0 [OPTION] command
+
+Chroots into a specified LTSP chroot. Optional arguments can be provided to customize
+the chroot location as well as extra mounts.
+
+Options:
+ -b, --base[=PATH] Sets base of target chroot. Defaults to /srv/ltsp/dlw if unspecified.
+ -d, --mount-dev If set, mounts the server dev and devpts directories to the chroot
+ previous to chrooting.
+ -h, --help Displays the debian-edu-ltsp-chroot help message.
+ -p, --mount-proc If set, mounts the server /proc to the chroot previous to chrooting.
+ -m, --mount-all If set, does both --mount-dev and --mount-proc previous to chrooting.
+ --version Output version information and exit.
+EOF
+}
+
+debian_edu_version() {
+ . /etc/debian-edu/config
+ echo $VERSION
+}
+
+default_options() {
+ BASE=${BASE:-/srv/ltsp/dlw}
+ # If $BASE contains a terminating /, remove it
+ BASE=${BASE%/}
+}
+
+pre_chroot() {
+ test -d "$BASE" || die "ERROR: ltsp chroot not found: $BASE"
+
+ if boolean_is_true "$MOUNT_ALL"; then
+ MOUNT_DEV=true
+ MOUNT_PROC=true
+ fi
+ if boolean_is_true "$MOUNT_DEV"; then
+ mark_mount --bind "/dev" "$BASE/dev"
+ mark_mount -t devpts -o rw,noexec,nosuid,gid=5,mode=620 devpts "$BASE/dev/pts"
+ fi
+ if boolean_is_true "$MOUNT_PROC"; then
+ mark_mount -t proc proc "$BASE/proc"
+ fi
+}
+
+post_chroot() {
+ # Stop trapping
+ trap - 0 HUP INT QUIT KILL SEGV PIPE TERM
+ umount_marked
+}
+
+# Next functions are taken from ltsp-server-functions).
+
+warn()
+{
+ printf "%s\n" "$*" >&2
+}
+
+die() {
+ warn "$@"
+ exit 1
+}
+
+boolean_is_true(){
+ case $1 in
+ # match all cases of true|y|yes
+ [Tt][Rr][Uu][Ee]|[Yy]|[Yy][Ee][Ss]) return 0 ;;
+ *) return 1 ;;
+ esac
+}
+
+require_root()
+{
+ if [ ${UID:-$(id -u)} -ne 0 ]; then
+ die "Superuser privileges are needed."
+ fi
+}
+
+# Remember mounted dirs so that it's easier to unmount them with a single call
+# to umount_marked. They'll be unmounted in reverse order.
+# Use the normal mount syntax, e.g.
+# mark_mount -t proc proc "$ROOT/proc"
+mark_mount() {
+ local dir old_marked_mounts
+
+ # The last parameter is the dir we need to remember to unmount
+ dir=$(eval "echo \$$#")
+ # If the user presses Ctrl+C while mount is still running, there's
+ # a possibility that it will succeed but it won't go inside the if.
+ # So mark the dir before mount.
+ # Use newlines to separate dirs, in case they contain spaces
+ old_marked_mounts="$MARKED_MOUNTS"
+ if [ -z "$MARKED_MOUNTS" ]; then
+ MARKED_MOUNTS="$dir"
+ else
+ MARKED_MOUNTS="$dir
+$MARKED_MOUNTS"
+ fi
+ if ! mount "$@"; then
+ MARKED_MOUNTS="$old_marked_mounts"
+ die "Could not mount $dir."
+ fi
+}
+
+umount_marked() {
+ [ -z "$MARKED_MOUNTS" ] && return 0
+
+ # Wait until all buffers are flushed, otherwise umount might fail
+ sync
+ echo "$MARKED_MOUNTS" | while read dir; do
+ if ! umount "$dir"; then
+ warn "Couldn't unmount $dir."
+ fi
+ done
+ unset MARKED_MOUNTS
+}
+
+umount_marked() {
+ [ -z "$MARKED_MOUNTS" ] && return
+
+ # Wait until all buffers are flushed, otherwise umount might fail
+ sync
+ echo "$MARKED_MOUNTS" | while read dir; do
+ # binfmt_misc might need to be unmounted manually, see LP #534211
+ if [ "$dir%/proc}" != "$dir" ] &&
+ [ -d "$dir/sys/fs/binfmt_misc" ] && [ -f "$dir/mounts" ] &&
+ grep -q "^binfmt_misc $dir/sys/fs/binfmt_misc" "$dir/mounts"; then
+ if ! umount "$dir/sys/fs/binfmt_misc"; then
+ echo "Couldn't unmount $dir/sys/fs/binfmt_misc." >&2
+ fi
+ fi
+ if ! umount "$dir"; then
+ echo "Couldn't unmount $dir." >&2
+ fi
+ done
+ unset MARKED_MOUNTS
+}
+
+# The command line parameters override the configuration file settings
+if ! args=$(getopt -n "$0" -o +a:b:dhmp -l \
+ 'base:,mount-dev,help,mount-all,mount-proc,version' -- "$@"); then
+ exit 1
+fi
+eval "set -- $args"
+while true; do
+ case "$1" in
+ -b|--base) shift; BASE=$1 ;;
+ -d|--mount-dev) MOUNT_DEV=true ;;
+ -h|--help) usage; exit 0 ;;
+ -m|--mount-all) MOUNT_ALL=true ;;
+ -p|--mount-proc) MOUNT_PROC=true ;;
+ --version) debian_edu_version; exit 0 ;;
+ --) shift; break ;;
+ *) die "$0: Internal error!" ;;
+ esac
+ shift
+done
+
+# Finally, fall back to using default values for any unset options
+default_options
+
+require_root
+
+trap "post_chroot" 0 HUP INT QUIT KILL SEGV PIPE TERM
+pre_chroot
+
+# Unset temporary directory variables to avoid problems when directory
+# is missing inside the chroot. https://bugs.debian.org/765443
+unset TMPDIR TEMP TEMPDIR TMP
+
+chroot "$BASE" "$@"
=====================================
sbin/debian-edu-ltsp-install
=====================================
@@ -17,7 +17,7 @@
# Author/Copyright: Wolfgang Schweer <wschweer at arcor.de>
# Licence: GPL2+
# first edited: 2019-11-21
-# last edited: 2021-09-19
+#version=2021-09-28
set -e
@@ -43,13 +43,13 @@ workstations and thin clients.
--dns_server defaults to 10.0.2.2 if omitted.
---diskless_workstation defaults to yes if omitted.
+--diskless_workstation defaults to no if omitted.
--dlw used to create a diskless workstation LTSP chroot (root fs via NFS), default is no.
---img takes effect for LTSP diskless workstation chroot setup, default is no.
+--img takes effect for LTSP diskless workstation and X2Go thin client chroot setup, default is no.
---desktop takes effect for a LTSP diskless workstation chroot setup, default is xfce.
+--desktop takes effect for LTSP diskless workstation chroot setup, default is xfce.
Other values: cinnamon, gnome, kde, lxde, lxqt, mate.
(And 'none' for modular installations - also useful for testing).
@@ -59,22 +59,21 @@ workstations and thin clients.
display: x2gothinclient running in display mode.
desktop: x2gothinclient running in minidesktop mode.
-Example 1: 'debian-edu-ltsp-install --arch amd64' creates diskless workstation support.
+Example 1: 'debian-edu-ltsp-install --diskless_workstation yes' creates diskless workstation support (SquashFS image).
-Example 2: 'debian-edu-ltsp-install --arch amd64 --dist bullseye --thin_type bare' creates diskless workstation
+Example 2: 'debian-edu-ltsp-install --arch amd64 --diskless_workstation yes --thin_type bare' creates diskless workstation
and 64-bit thin client support. LTSP client boot defaults to diskless workstation.
-Example 3: 'debian-edu-ltsp-install --arch i386 --diskless_workstation no --thin_type bare' creates
- additional 32-bit thin client support.
+Example 3: 'debian-edu-ltsp-install --arch i386 --thin_type bare' creates additional 32-bit thin client support.
Example 4: 'debian-edu-ltsp-install --diskless_workstation yes' updates the diskless workstation SquashFS image.
-Example 5: 'debian-edu-ltsp-install --dlw yes --diskless_workstation no' creates a diskless workstation LTSP chroot.
+Example 5: 'debian-edu-ltsp-install --dlw yes' creates a diskless workstation LTSP chroot.
Please note that about 15 GiB of additional disk space is needed. In the default case, run the commands
'lvresize -L+15G /dev/vg_system/srv+ltsp' and 'resize2fs /dev/vg_system/srv+ltsp'.
-Example 6: 'debian-edu-ltsp-install --dlw yes --diskless_workstation no --img yes' creates diskless workstation
- LTSP chroot and the related SquashFS image. About 5 GiB more additional disk space is needed.
+Example 6: 'debian-edu-ltsp-install --dlw yes --img yes' creates diskless workstation LTSP chroot and
+ the related SquashFS image. Another 5 GiB more additional disk space is needed.
This script applies to a system with two NICs on the internal backbone network.
@@ -95,11 +94,12 @@ fi
# Set default values.
arch="$(dpkg --print-architecture)"
dns_server="10.0.2.2"
-diskless_workstation="yes"
+diskless_workstation="no"
thin_type=""
dlw="no"
img="no"
desktop="xfce"
+#version="$version"
while [ $# -gt 0 ] ; do
case "$1" in
@@ -147,41 +147,58 @@ if [ ! -d /etc/ltsp/client ] ; then
# Documentation=man:ltsp.conf(5)
[server]
-# Provide a full menu name for thin/bare-amd64.img
-IPXE_BARE_AMD64_IMG="Plain X2Go Thin Client (64-Bit)"
-# Provide a full menu name for thin/bare-i386.img
-IPXE_BARE_I386_IMG="Plain X2Go Thin Client (very old machines, 32-Bit)"
-
-# Provide a full menu name for thin/display-amd64.img
-IPXE_DISPLAY_AMD64_IMG="Display Mode X2Go Thin Client (64-Bit)"
-# Provide a full menu name for thin/display-i386.img
-IPXE_DISPLAY_I386_IMG="Display Mode X2Go Thin Client (very old machines, 32-Bit)"
-
-# Provide a full menu name for thin/desktop-amd64.img
-IPXE_DESKTOP_AMD64_IMG="Desktop Mode X2Go Thin Client (64-Bit)"
+# Provide a full menu name for x2go-bare-amd64.img
+IPXE_X2GO_BARE_AMD64_IMG="Plain X2Go Thin Client (64-Bit)"
+# Provide a full menu name for x2go-bare-i386.img
+IPXE_X2GO_BARE_I386_IMG="Plain X2Go Thin Client (32-Bit)"
+
+# Provide a full menu name for x2go-bare-amd64
+IPXE_X2GO_BARE_AMD64="Plain X2Go Thin Client (64-Bit, NFS rootfs)"
+# Provide a full menu name for x2go-bare-i386
+IPXE_X2GO_BARE_I386="Plain X2Go Thin Client (32-Bit, NFS rootfs)"
+
+# Provide a full menu name for x2go-display-amd64.img
+IPXE_X2GO_DISPLAY_AMD64_IMG="Display Mode X2Go Thin Client (64-Bit)"
+# Provide a full menu name for x2go-display-i386.img
+IPXE_X2GO_DISPLAY_I386_IMG="Display Mode X2Go Thin Client (32-Bit)"
+
+# Provide a full menu name for x2go-display-amd64
+IPXE_X2GO_DISPLAY_AMD64="Display Mode X2Go Thin Client (64-Bit, NFS rootfs)"
+# Provide a full menu name for x2go-display-i386
+IPXE_X2GO_DISPLAY_I386="Display Mode X2Go Thin Client (32-Bit, NFS rootfs)"
+
+# Provide a full menu name for x2go-desktop-amd64.img
+IPXE_X2GO_DESKTOP_AMD64_IMG="Desktop Mode X2Go Thin Client (64-Bit)"
# Provide a full menu name for thin/desktop-i386.img
-IPXE_DESKTOP_I386_IMG="Desktop Mode X2Go Thin Client (very old machines, 32-Bit)"
+IPXE_X2GO_DESKTOP_I386_IMG="Desktop Mode X2Go Thin Client (32-Bit)"
+
+# Provide a full menu name for x2go-desktop-amd64
+IPXE_X2GO_DESKTOP_AMD64="Desktop Mode X2Go Thin Client (64-Bit, NFS rootfs)"
+# Provide a full menu name for thin/desktop-i386
+IPXE_X2GO_DESKTOP_I386="Desktop Mode X2Go Thin Client (32-Bit, NFS rootfs)"
# Provide a full menu name for x86_64.img
-IPXE_X86_64_IMG="Diskless Workstation (64-Bit)"
+IPXE_X86_64_IMG="Diskless Workstation (server's SquashFS image)"
# Provide a full menu name for x86_32.img
-IPXE_X86_32_IMG="Diskless Workstation (32-Bit)"
+IPXE_X86_32_IMG="Diskless Workstation (32-Bit, server's SquashFS image)"
# Provide a full menu name for dlw.img
-IPXE_DLW_IMG="Diskless Workstation (chroot SquashFS image)"
+IPXE_DLW_IMG="Diskless Workstation (SquashFS image from chroot)"
# Provide a full menu name for dlw
-IPXE_DLW="Diskless Workstation (chroot NFS rootfs)"
+IPXE_DLW="Diskless Workstation (Chroot as NFS rootfs)"
##### Set default boot value ######
# Default value is x86_64 or x86_32 (arch specific, Diskless Workstation)
# Plain X2Go Thin Client (64-Bit)
-#DEFAULT_IMAGE="bare-amd64"
+#DEFAULT_IMAGE="x2go-bare-amd64"
# Plain X2Go Thin Client (32-Bit)
-#DEFAULT_IMAGE="bare-i386"
+#DEFAULT_IMAGE="x2go-bare-i386"
# Display Mode X2Go Thin Client (64-Bit)
-#DEFAULT_IMAGE="display-amd64"
+#DEFAULT_IMAGE="x2go-display-amd64"
# Desktop Mode X2Go Thin Client (64-Bit)
-#DEFAULT_IMAGE="desktop-amd64"
+#DEFAULT_IMAGE="x2go-desktop-amd64"
+# Diskless Workstation (Chroot as NFS rootfs)
+#DEFAULT_IMAGE="dlw"
# Install Debian Edu/amd64 (64-Bit)
#DEFAULT_IMAGE="amd64"
# Install Debian Edu/i386 (32-Bit)
@@ -410,62 +427,62 @@ fi
# Create thin client chroot and generate image.
export DEBIAN_FRONTEND=noninteractive
-if ! [ "" == "$thin_type" ] && [ ! -d /srv/ltsp/thin/"$thin_type"-"$arch"/etc/ltsp ] ; then
- mkdir -p /srv/ltsp/thin/"$thin_type"-"$arch"
+if ! [ "" == "$thin_type" ] && [ ! -d /srv/tftp/ltsp/x2go-"$thin_type"-"$arch"/etc/ltsp ] ; then
+ mkdir -p /srv/tftp/ltsp/x2go-"$thin_type"-"$arch"
# Install common thin client packages.
debootstrap --arch="$arch" --no-check-gpg --variant=minbase --include=linux-image-"$kernel_arch" \
- "$dist" /srv/ltsp/thin/"$thin_type"-"$arch" "$mirror"
- chroot /srv/ltsp/thin/"$thin_type"-"$arch"/ apt clean
- mount /dev/pts -t devpts /srv/ltsp/thin/"$thin_type"-"$arch"/dev/pts
- mount proc -t proc /srv/ltsp/thin/"$thin_type"-"$arch"/proc
- mount tmpfs -t tmpfs /srv/ltsp/thin/"$thin_type"-"$arch"/tmp
- mkdir -p /srv/ltsp/thin/"$thin_type"-"$arch"/tmp/user/0
+ "$dist" /srv/ltsp/x2go-"$thin_type"-"$arch" "$mirror"
+ # Unset temporary directory variables to avoid problems when directory
+ # is missing inside the chroot. https://bugs.debian.org/765443
+ unset TMPDIR TEMP TEMPDIR TMP
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch"/ apt clean
+ # Care for complete sources list (security, also nonfree for possible needed firmware).
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch"/ sh -c "cp /usr/share/doc/apt/examples/sources.list > /etc/apt/sources.list.d/full.list"
+ mount /dev/pts -t devpts /srv/ltsp/x2go-"$thin_type"-"$arch"/dev/pts
+ mount proc -t proc /srv/ltsp/x2go-"$thin_type"-"$arch"/proc
if [ "true" == "$BD_ISO" ] ; then
- mkdir -p /srv/ltsp/thin/"$thin_type"-"$arch"/media/cdrom
- mount $device /srv/ltsp/thin/"$thin_type"-"$arch"/media/cdrom
- echo "deb [trusted=yes] $mirror $dist main" > /srv/ltsp/thin/"$thin_type"-"$arch"/etc/apt/sources.list
+ mkdir -p /srv/ltsp/x2go-"$thin_type"-"$arch"/media/cdrom
+ mount $device /srv/ltsp/x2go-"$thin_type"-"$arch"/media/cdrom
+ echo "deb [trusted=yes] $mirror $dist main" > /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/apt/sources.list
fi
- chroot /srv/ltsp/thin/"$thin_type"-"$arch"/ apt -y -qq install education-thin-client p910nd
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch"/ apt -y -qq install education-thin-client p910nd
# Install case specific additional packages.
if [ "display" == "$thin_type" ] ; then
- chroot /srv/ltsp/thin/"$thin_type"-"$arch"/ apt -y -qq install x2gothinclient-displaymanager
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch"/ apt -y -qq install x2gothinclient-displaymanager
fi
if [ "desktop" == "$thin_type" ] ; then
- chroot /srv/ltsp/thin/"$thin_type"-"$arch"/ apt -y -qq install x2gothinclient-minidesktop \
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch"/ apt -y -qq install x2gothinclient-minidesktop \
x2gothinclient-cdmanager x2gothinclient-usbmount \
firefox-esr-l10n-"$LANGCODE"
fi
if [ "true" == "$BD_ISO" ] ; then
- umount /srv/ltsp/thin/"$thin_type"-"$arch"/media/cdrom
+ umount /srv/ltsp/x2go-"$thin_type"-"$arch"/media/cdrom
fi
- umount /srv/ltsp/thin/"$thin_type"-"$arch"/dev/pts
- umount /srv/ltsp/thin/"$thin_type"-"$arch"/proc
- umount /srv/ltsp/thin/"$thin_type"-"$arch"/tmp
- rm -rf /srv/ltsp/thin/"$thin_type"-"$arch"/tmp/user
+ umount /srv/ltsp/x2go-"$thin_type"-"$arch"/dev/pts
+ umount /srv/ltsp/x2go-"$thin_type"-"$arch"/proc
if [ "bare" == "$thin_type" ] ; then
- rm -rf /srv/ltsp/thin/"$thin_type"-"$arch"/var/cache/apt
- rm -rf /srv/ltsp/thin/"$thin_type"-"$arch"/var/cache/debconf
- rm -rf /srv/ltsp/thin/"$thin_type"-"$arch"/var/cache/man
- rm -rf /srv/ltsp/thin/"$thin_type"-"$arch"/var/lib/dpkg
+ rm -rf /srv/ltsp/x2go-"$thin_type"-"$arch"/var/cache/apt
+ rm -rf /srv/ltsp/x2go-"$thin_type"-"$arch"/var/cache/debconf
+ rm -rf /srv/ltsp/x2go-"$thin_type"-"$arch"/var/cache/man
fi
- cp /etc/locale.gen /srv/ltsp/thin/"$thin_type"-"$arch"/etc/
- cp /etc/default/locale /srv/ltsp/thin/"$thin_type"-"$arch"/etc/default
- chroot /srv/ltsp/thin/"$thin_type"-"$arch" locale-gen
- cp /etc/default/keyboard /srv/ltsp/thin/"$thin_type"-"$arch"/etc/default
- cp /etc/default/console-setup /srv/ltsp/thin/"$thin_type"-"$arch"/etc/default
- chroot /srv/ltsp/thin/"$thin_type"-"$arch" setupcon -k
+ cp /etc/locale.gen /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/
+ cp /etc/default/locale /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/default
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch" locale-gen
+ cp /etc/default/keyboard /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/default
+ cp /etc/default/console-setup /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/default
+ chroot /srv/ltsp/x2go-"$thin_type"-"$arch" setupcon -k
# Customize X2Go client for Debian Edu use.
if [ "display" == "$thin_type" ] || [ "desktop" == "$thin_type" ] ; then
- cp /etc/ltsp/skel/.x2goclient/sessions /srv/ltsp/thin/"$thin_type"-"$arch"/etc/x2go/x2gothinclient_sessions
+ cp /etc/ltsp/skel/.x2goclient/sessions /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/x2go/x2gothinclient_sessions
fi
# Firefox-ESR customization for Debian Edu.
if [ "desktop" == "$thin_type" ] ; then
- cp /etc/environment /srv/ltsp/thin/"$thin_type"-"$arch"/etc
- cp /etc/firefox-esr/debian-edu.js /srv/ltsp/thin/"$thin_type"-"$arch"/etc/firefox-esr
- cp /etc/firefox-esr/debian-edu-homepage-ldap.js /srv/ltsp/thin/"$thin_type"-"$arch"/etc/firefox-esr
- cp /etc/ssl/certs/Debian-Edu_rootCA.crt /srv/ltsp/thin/"$thin_type"-"$arch"/etc/ssl/certs
- cat <<EOF > /srv/ltsp/thin/"$thin_type"-"$arch"/usr/share/firefox-esr/distribution/policies.json
+ cp /etc/environment /srv/ltsp/x2go-"$thin_type"-"$arch"/etc
+ cp /etc/firefox-esr/debian-edu.js /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/firefox-esr
+ cp /etc/firefox-esr/debian-edu-homepage-ldap.js /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/firefox-esr
+ cp /etc/ssl/certs/Debian-Edu_rootCA.crt /srv/ltsp/x2go-"$thin_type"-"$arch"/etc/ssl/certs
+ cat <<EOF > /srv/ltsp/x2go-"$thin_type"-"$arch"/usr/share/firefox-esr/distribution/policies.json
{
"policies": {
"Certificates": {
@@ -493,10 +510,9 @@ debootstrap --arch="$arch" --no-check-gpg --variant=minbase --include=linux-imag
EOF
fi
- ltsp image /srv/ltsp/thin/"$thin_type"-"$arch"
-
- # Remove chroot now that the image has been built (to save space)
- rm -rf /srv/ltsp/thin/"$thin_type"-"$arch"
+ if [ "img" == "yes" ] ; then
+ ltsp image /srv/ltsp/x2go-"$thin_type"-"$arch"
+ fi
# Create a runtime user for x2go login terminal; configure autofs (USB storage support).
if [ "bare" == "$thin_type" ] ; then
@@ -511,9 +527,10 @@ cp /etc/ltsp/autofs/auto.* /etc'
EOF
fi
+ ALL_IMAGES=1 ltsp kernel
# Create the ltsp.img file and move it to where it belongs.
ltsp initrd
- mv /srv/tftp/ltsp/ltsp.img /srv/tftp/ltsp/"$thin_type"-"$arch"/ltsp.img
+ mv /srv/tftp/ltsp/ltsp.img /srv/tftp/ltsp/x2go-"$thin_type"-"$arch"/ltsp.img
# Clean up ltsp.conf from image specific items.
sed -i '/POST_INIT/d' /etc/ltsp/ltsp.conf
@@ -583,6 +600,9 @@ EOF
# Install base system
debootstrap --arch="$arch" --no-check-gpg --variant=minbase --include=locales,console-setup,linux-image-"$arch" "$dist" /srv/ltsp/dlw "$mirror"
+ # Care for complete sources list (security, also nonfree for possible needed firmware).
+ chroot /srv/ltsp/dlw sh -c "cp /usr/share/doc/apt/examples/sources.list > /etc/apt/sources.list.d/full.list"
+
# Care for same locale and keyboard settings in the chroot, also useful to quiet down Perl.
cp /etc/locale.gen /srv/ltsp/dlw/etc/
cp /etc/default/locale /srv/ltsp/dlw/etc/default
@@ -592,9 +612,11 @@ EOF
chroot /srv/ltsp/dlw setupcon -k
# Care for special files.
+ # Unset temporary directory variables to avoid problems when directory
+ # is missing inside the chroot. https://bugs.debian.org/765443
+ unset TMPDIR TEMP TEMPDIR TMP
mount /dev/pts -t devpts /srv/ltsp/dlw/dev/pts
mount proc -t proc /srv/ltsp/dlw/proc
- mount tmpfs -t tmpfs /srv/ltsp/dlw/tmp
if mountpoint -q /media/cdrom ; then
echo "deb [trusted=yes] "$mirror" "$dist" main" > /srv/ltsp/dlw/etc/apt/sources.list
fi
@@ -619,7 +641,6 @@ EOF
# Care for temporary mounts.
umount /srv/ltsp/dlw/dev/pts
umount /srv/ltsp/dlw/proc
- umount /srv/ltsp/dlw/tmp
if [ -f /media/cdrom/.disk/info ] ; then
umount /srv/ltsp/dlw/media/cdrom
umount /media/cdrom
=====================================
sbin/debian-edu-ltsp-ipxe
=====================================
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -e
+
+ltsp ipxe 2> /dev/null
+# Make sure /srv/tftp/ltsp/ltsp.ipxe is Debian Edu specific.
+sed -i 's#ltsp/ltsp.img#ltsp/${img}/ltsp.img#' /srv/tftp/ltsp/ltsp.ipxe
+echo ""
+echo "/srv/tftp/ltsp/ltsp.ipxe has been modified."
\ No newline at end of file
=====================================
share/debian-edu-config/tools/copy-host-keytab
=====================================
@@ -2,3 +2,8 @@
set -e
kinit
scp tjener:/etc/debian-edu/host-keytabs/$(hostname -s).intern.keytab /etc/krb5.keytab
+
+# Special case separate LTSP server.
+if [ -f /srv/ltsp/dlw/etc/ltsp/ltsp.conf ] ; then
+ cp /etc/krb5.keytab /srv/ltsp/dlw/etc/krb5.keytab
+fi
=====================================
share/debian-edu-config/tools/improve-desktop-l10n
=====================================
@@ -6,31 +6,35 @@
# schweer, 2018-12-15.
set -e
+
+. /usr/share/debian-edu-config/testsuite-lib.sh
+
langsfull="$(locale -a|grep utf8|cut -d'.' -f1)"
-for lang in $(echo $langsfull) ; do
+for lang in $langsfull ; do
baselang="${lang%_*}"
langcountry="$(echo ${lang%.*}|cut -d'_' -f2 | tr '[:upper:]' '[:lower:]')"
for i in debian-edu-doc debian-edu-doc-legacy gimp-help thunderbird-l10n; do
- if ! [ -z "$(apt-cache search $i-$baselang-$langcountry)" ]; then
+ if ! [ -z "$(apt-cache search $i-$baselang-$langcountry)" ] && ! deb_installed $i-$baselang-$langcountry ; then
apt-get -yq install $i-$baselang-$langcountry
else
if ! [ -z "$(apt-cache search $i-$baselang)" ] && \
- ! [ "thunderbird-l10n-en" = "$i-$baselang" ] ; then
- apt-get -y install $i-$baselang
+ ! [ "thunderbird-l10n-en" = "$i-$baselang" ] && ! deb_installed $i-$baselang ; then
+ # caveat: $i-$baselang might be missing, e.g. es_PE: only $i-es-ar and $i-es-es exist.
+ apt-get -y install $i-$baselang || true
fi
fi
done
# special cases nn_NO and nb_NO (debian-edu-doc and gimp-help).
if [ "nn" = "$baselang" ] && [ "no" = "$langcountry" ] && \
- ! [ -z "$(apt-cache search debian-edu-doc-nb-no)" ] ; then
+ ! [ -z "$(apt-cache search debian-edu-doc-nb-no)" ] && ! deb_installed debian-edu-doc-nb-no ; then
apt-get -yq install debian-edu-doc-nb-no
fi
if [ "nn" = "$baselang" ] && [ "no" = "$langcountry" ] && \
- ! [ -z "$(apt-cache search debian-edu-doc-legacy-nb-no)" ] ; then
+ ! [ -z "$(apt-cache search debian-edu-doc-legacy-nb-no)" ] && ! deb_installed debian-edu-doc-legacy-nb-no; then
apt-get -yq install debian-edu-doc-legacy-nb-no
fi
if [ "nb" = "$baselang" ] && [ "no" = "$langcountry" ] && \
- ! [ -z "$(apt-cache search gimp-help-nn)" ] ; then
+ ! [ -z "$(apt-cache search gimp-help-nn)" ] && ! deb_installed install gimp-help-nn ; then
apt-get -yq install gimp-help-nn
fi
done
=====================================
share/debian-edu-config/tools/install-task-pkgs
=====================================
@@ -5,208 +5,247 @@
# schweer, 2018-12-21
set -e
+
+. /usr/share/debian-edu-config/testsuite-lib.sh
+
+install_pkg1() {
+ if ! deb_installed "$pkg1" ; then
+ apt-get install -yq "$pkg1"
+ fi
+}
+install_pkg2() {
+ if ! deb_installed "$pkg2" ; then
+ apt-get install -yq "$pkg2"
+ fi
+}
+install_pkg3() {
+ if ! deb_installed "$pkg3" ; then
+ apt-get install -yq "$pkg3"
+ fi
+}
+install_pkg123() {
+ install_pkg1
+ install_pkg2
+ if dpkg -l education-desktop-kde 1>/dev/null ; then
+ install_pkg3
+ fi
+}
+
langsfull="$(locale -a | grep utf8 | cut -d'.' -f1)"
-for lang in $(echo $langsfull) ; do
- baselang="${lang%_*}"
- # <lang>, <lang>-desktop, <lang>-kde-desktop and <lang>-gnome-desktop tasks; rather weird
- # due to a lot of cases. The code might be smarter.
- # FIXME: Data and cases were taken from the /usr/share/tasksel/debian-tasks.desc file and
- # should be kept in sync.
- case "$lang" in
- en_GB) # only desktop task (kde not always).
- apt-get install -y task-british-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-british-kde-desktop
- fi
- ;;
- en_ZA)
- apt-get install -y task-south-african-english-desktop
- ;;
- pt_BR) # lang and desktop tasks
- apt-get install -y task-brazilian-portuguese task-brazilian-portuguese-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-brazilian-portuguese-kde-desktop
- fi
- ;;
- ca_ES)
- apt-get install -y task-catalan task-catalan-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-catalan-kde-desktop
- fi
- ;;
- zh_CN|zh_SG)
- apt-get install -y task-chinese-s task-chinese-s-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-chinese-s-kde-desktop
- fi
- ;;
- zh_TW|zh_HK)
- apt-get install -y task-chinese-t task-chinese-t-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-chinese-t-kde-desktop
- fi
- ;;
- pt_PT|pt_AO|pt_CV|pt_TL|pt_GW|pt_MZ|pt_ST)
- apt-get install -y task-portuguese task-portuguese-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-portuguese-kde-desktop
- fi
- ;;
- esac
- case "$baselang" in
- en) # only lang task (en); all other ones: only desktop task (kde not always available).
- apt-get install -y task-english
- ;;
- sq)
- apt-get install -y task-albanian-desktop
- ;;
- ka)
- apt-get install -y task-georgian-desktop
- ;;
- dz)
+for lang in $langsfull ; do
+ baselang="${lang%_*}"
+ # <lang>, <lang>-desktop, <lang>-kde-desktop and <lang>-gnome-desktop tasks; rather weird
+ # due to a lot of cases. The code might be smarter.
+ # FIXME: Data and cases were taken from the /usr/share/tasksel/debian-tasks.desc file and
+ # should be kept in sync.
+ case "$lang" in
+ en_GB) # only desktop task (kde not always).
+ pkg1=task-british-desktop
+ pkg2=task-british-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ en_ZA)
+ pkg1=task-south-african-english-desktop
+ install_pkg1
+ ;;
+ pt_BR) # lang and desktop tasks
+ pkg1=task-brazilian-portuguese
+ pkg2=task-brazilian-portuguese-desktop
+ pkg3=task-brazilian-portuguese-kde-desktop
+ install_pkg123
+ ;;
+ ca_ES)
+ pkg1=task-catalan
+ pkg2=task-catalan-desktop
+ pkg3=task-catalan-kde-desktop
+ install_pkg123
+ ;;
+ zh_CN|zh_SG)
+ pkg1=task-chinese-s
+ pkg2=task-chinese-s-desktop
+ pkg3=task-chinese-s-kde-desktop
+ install_pkg123
+ ;;
+ zh_TW|zh_HK)
+ pkg1=task-chinese-t
+ pkg2=task-chinese-t-desktop
+ pkg3=task-chinese-t-kde-desktop
+ install_pkg123
+ ;;
+ pt_PT|pt_AO|pt_CV|pt_TL|pt_GW|pt_MZ|pt_ST)
+ pkg1=task-portuguese
+ pkg2=task-portuguese-desktop
+ pkg3=task-portuguese-kde-desktop
+ install_pkg123
+ ;;
+ esac
+ case "$baselang" in
+ en) # only lang task (en); all other ones: only desktop task (kde not always available).
+ pkg1=task-english
+ install_pkg1
+ ;;
+ sq)
+ pkg1=task-albanian-desktop
+ install_pkg1
+ ;;
+ ka)
+ pkg1=task-georgian-desktop
+ install_pkg1
+ ;;
+ dz)
+ pkg1=
+ pkg2=
+ install_pkg1
+ install_pkg2
apt-get install -y task-dzongkha-desktop
if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-dzongkha-kde-desktop
- fi
- ;;
- id)
- apt-get install -y task-indonesian-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-indonesian-kde-desktop
- fi
- ;;
- ne)
- apt-get install -y task-nepali-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-nepali-kde-desktop
- fi
- ;;
- si)
- apt-get install -y task-sinhala-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-sinhala-kde-desktop
- fi
- ;;
- kn)
- apt-get install -y task-kannada-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-kannada-kde-desktop
- fi
- ;;
- vi)
- apt-get install -y task-vietnamese-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-vietnamese-kde-desktop
- fi
- ;;
- ug)
- apt-get install -y task-uyghur-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-uyghur-kde-desktop
+ apt-get -yq install task-dzongkha-kde-desktop
fi
;;
- xh)
- apt-get install -y task-xhosa-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- apt-get -yq install task-xhosa-kde-desktop
+ id)
+ pkg1=task-indonesian-desktop
+ pkg2=task-indonesian-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ ne)
+ pkg1=task-nepali-desktop
+ pkg2=task-nepali-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ si)
+ pkg1=task-sinhala-desktop
+ pkg2=task-sinhala-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ kn)
+ pkg1=task-kannada-desktop
+ pkg2=task-kannada-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ vi)
+ pkg1=task-vietnamese-desktop
+ pkg2=task-vietnamese-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ ug)
+ pkg1=task-uyghur-desktop
+ pkg2=task-uyghur-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ xh)
+ pkg1=task-xhosa-desktop
+ pkg2=task-xhosa-kde-desktop
+ install_pkg1
+ install_pkg2
+ ;;
+ esac
+ # all other cases (lang and desktop tasks; kde not always, gnome sometimes available).
+ duo="
+ am:amharic
+ ar:arabic
+ ast:asturian
+ eu:basque
+ be:belarusian
+ bn:bengali
+ bs:bosnian
+ bg:bulgarian
+ hr:croatian
+ be:cyrillic
+ bg:cyrillic
+ kz:cyrillic
+ mk:cyrillic
+ mn:cyrillic
+ ru:cyrillic
+ sr:cyrillic
+ cs:czech
+ da:danish
+ nl:dutch
+ eo:esperanto
+ et:estonian
+ fi:finnish
+ fr:french
+ gl:galician
+ de:german
+ el:greek
+ gu:gujarati
+ he:hebrew
+ hi:hindi
+ hu:hungarian
+ is:icelandic
+ ga:irish
+ it:italian
+ ja:japanese
+ kk:kazakh
+ km:khmer
+ ko:korean
+ ku:kurdish
+ lv:latvian
+ lt:lithuanian
+ mk:macedonian
+ ml:malayalam
+ mr:marathi
+ se:northern-sami
+ no:norwegian
+ nb:norwegian
+ nn:norwegian
+ fa:persian
+ pl:polish
+ pa:punjabi
+ ro:romanian
+ ru:russian
+ sr:serbian
+ sk:slovak
+ sl:slovenian
+ es:spanish
+ sv:swedish
+ tl:tagalog
+ ta:tamil
+ te:telugu
+ th:thai
+ tr:turkish
+ uk:ukrainian
+ cy:welsh"
+ for l in $duo ; do
+ lbase="$(echo "$l" | cut -d':' -f1)"
+ lname="$(echo "$l" | cut -d':' -f2)"
+ if [ "$baselang" = "$lbase" ] ; then
+ pkg1=task-$lname
+ pkg2=task-$lname-desktop
+ install_pkg1
+ install_pkg2
+ if dpkg -l education-desktop-kde 1>/dev/null ; then
+ case "$baselang" in
+ ast|mr|se|ti|ta|cy) # kde desktop task not available
+ ;;
+ *)
+ pkg1=task-$lname-kde-desktop
+ install_pkg1
+ ;;
+ esac
+ fi
+ if dpkg -l education-desktop-gnome 1>/dev/null ; then
+ case "$baselang" in
+ he|ja|ko|ml|ta|te|th)
+ pkg1=task-$lname-gnome-desktop
+ install_pkg1
+ ;;
+ *) # gnome desktop task not available
+ ;;
+ esac
+ fi
fi
- ;;
- esac
- # all other cases (lang and desktop tasks; kde not always, gnome sometimes available).
- duo="
- am:amharic
- ar:arabic
- ast:asturian
- eu:basque
- be:belarusian
- bn:bengali
- bs:bosnian
- bg:bulgarian
- hr:croatian
- be:cyrillic
- bg:cyrillic
- kz:cyrillic
- mk:cyrillic
- mn:cyrillic
- ru:cyrillic
- sr:cyrillic
- cs:czech
- da:danish
- nl:dutch
- eo:esperanto
- et:estonian
- fi:finnish
- fr:french
- gl:galician
- de:german
- el:greek
- gu:gujarati
- he:hebrew
- hi:hindi
- hu:hungarian
- is:icelandic
- ga:irish
- it:italian
- ja:japanese
- kk:kazakh
- km:khmer
- ko:korean
- ku:kurdish
- lv:latvian
- lt:lithuanian
- mk:macedonian
- ml:malayalam
- mr:marathi
- se:northern-sami
- no:norwegian
- nb:norwegian
- nn:norwegian
- fa:persian
- pl:polish
- pa:punjabi
- ro:romanian
- ru:russian
- sr:serbian
- sk:slovak
- sl:slovenian
- es:spanish
- sv:swedish
- tl:tagalog
- ta:tamil
- te:telugu
- th:thai
- tr:turkish
- uk:ukrainian
- cy:welsh"
- for l in $(echo $duo) ; do
- lbase="$(echo $l | cut -d':' -f1)"
- lname="$(echo $l | cut -d':' -f2)"
- if [ "$baselang" = "$lbase" ] ; then
- apt-get install -y task-$lname task-$lname-desktop
- if dpkg -l education-desktop-kde 1>/dev/null ; then
- case "$baselang" in
- ast|mr|se|ti|ta|cy) # kde desktop task not available
- ;;
- *)
- apt-get -yq install task-$lname-kde-desktop
- ;;
- esac
- fi
- if dpkg -l education-desktop-gnome 1>/dev/null ; then
- case "$baselang" in
- he|ja|ko|ml|ta|te|th)
- apt-get -yq install task-$lname-gnome-desktop
- ;;
- *) # gnome desktop task not available
- ;;
- esac
- fi
- fi
- done
+ done
done
# finally the stock desktop tasks
for d in cinnamon gnome kde mate lxde lxqt xfce ; do
if dpkg -l education-desktop-$d 1>/dev/null ; then
- apt-get -yq install task-$d-desktop
+ apt-get -yq install task-$d-desktop
fi
done
=====================================
share/debian-edu-config/tools/run-at-firstboot
=====================================
@@ -64,7 +64,7 @@ fi
# needs to include the krb5.keytab file which isn't available at this time.
if echo "$PROFILE" | grep -Eq 'Main-Server.*LTSP-Server' && \
[ ! -f /srv/ltsp/images/$ltspimg ] ; then
- /usr/sbin/debian-edu-ltsp-install --dist $dist
+ /usr/sbin/debian-edu-ltsp-install --diskless_workstation yes
fi
# Update PXE setup on LTSP servers with proxy values set in environment
=====================================
share/man/man8/debian-edu-ltsp-chroot.8
=====================================
@@ -0,0 +1,36 @@
+.TH DEBIAN-EDU-LTSP-CHROOT "8" "September 2021" "Debian Edu" "Debian Edu Admin Tools"
+.SH NAME
+debian-edu-ltsp-chroot - execute commands in a specified LTSP Chroot
+.SH SYNOPSIS
+.B debian-edu-ltsp-chroot
+[\fI\,OPTION\/\fR] \fI\,command\/\fR
+.SH DESCRIPTION
+Tool to execute commands in a specified LTSP Chroot (like e.g. install, upgrade and remove packages).
+
+.SH OPTIONS
+.TP
+\fB\-b\fR, \fB\-\-base\fR[=\fI\,PATH\/\fR]
+Sets base of target chroot. Defaults to \fI\,/srv/ltsp/dlw\/\fP if unspecified.
+.TP
+\fB\-d\fR, \fB\-\-mount\-dev\fR
+If set, mounts the server dev and devpts directories to the chroot
+previous to chrooting.
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Displays the debian\-edu\-ltsp\-chroot help message.
+.TP
+\fB\-p\fR, \fB\-\-mount\-proc\fR
+If set, mounts the server \fI\,/proc\/\fP to the chroot previous to chrooting.
+.TP
+\fB\-m\fR, \fB\-\-mount\-all\fR
+If set, does both \fB\-\-mount\-dev\fR and \fB\-\-mount\-proc\fR previous to chrooting.
+.TP
+\fB\-\-version\fR
+Output version information and exit.
+.SH EXAMPLE
+.TP
+.B debian-edu-ltsp-chroot -m -b /srv/ltsp/dlw apt update
+.TQ
+updates the package cache inside /srv/ltsp/dlw (diskless workstation chroot).
+.SH AUTHORS
+Debian Edu Team, https://blends.debian.org/edu
=====================================
share/man/man8/debian-edu-ltsp-install.8
=====================================
@@ -4,7 +4,8 @@
debian-edu-ltsp-install - setup, configure and manage LTSP chroot and SquashFS image
.SH SYNOPSIS
-.B debian-edu-ltsp-install --arch <amd64|i386> --dist <stable|testing|sid> --dns_server <10.0.2.2|dns server ip> --diskless_workstation <yes|no> --thin_type <bare|display|desktop>
+.B debian-edu-ltsp-install
+[\fI\,OPTIONS\/\fR] \fI\
.SH DESCRIPTION
.TP
@@ -25,13 +26,13 @@ takes effect for a LTSP/X2Go client chroot setup, default value is the one the L
--dns_server defaults to 10.0.2.2 if omitted
.TP
\fB\--diskless_workstation\ <yes|no>\fR
-defaults to yes if option is omitted
+defaults to no if the option is omitted
.TP
\fB\--dlw\ <yes|no>\fR
used to create a diskless workstation LTSP chroot (root fs via NFS), default is no
.TP
\fB\--img\ <yes|no>\fR
-takes effect for LTSP diskless workstation chroot setup, default is no
+takes effect for LTSP diskless workstation and X2Go thin client chroot setup, default is no
.TP
\fB\--desktop\<xfce|cinnamon|gnome|kde|lxde|lxqt|mate|none> \fR
takes effect for LTSP diskless workstation chroot setup, default is xfce
@@ -50,34 +51,34 @@ takes effect for LTSP diskless workstation chroot setup, default is xfce
.SH EXAMPLE
.TP
-.B debian-edu-ltsp-install --arch amd64
+.B debian-edu-ltsp-install --diskless_workstation yes
.TQ
-creates 64-bit diskless workstation support.
+creates diskless workstation support (SquashFS image).
.TP
-.B debian-edu-ltsp-install --arch amd64 --dist bullseye --thin_type bare
-.TQ
-creates diskless workstation and 64-bit thin client support, the LTSP client
+.B debian-edu-ltsp-install --arch amd64 --diskless_workstation yes --thin_type bare
.TQ
-boot defaults to diskless workstation.
+creates diskless workstation and 64-bit thin client support. LTSP client boot defaults to diskless workstation.
.TP
-.B debian-edu-ltsp-install --arch i386 --diskless_workstation no --thin_type bare
+.B debian-edu-ltsp-install --arch i386 --thin_type bare
.TQ
-creates additional 32-bit thin client support
+creates additional 32-bit thin client support.
.TP
.B debian-edu-ltsp-install --diskless_workstation yes
.TQ
-updates the diskless workstation SquashFS image
+updates the diskless workstation SquashFS image.
.TP
-.B debian-edu-ltsp-install --dlw yes --diskless_workstation no
+.B debian-edu-ltsp-install --dlw yes
+.TQ
+creates a diskless workstation LTSP chroot. About 15 GiB additional disk space is needed.
.TQ
-creates a diskless workstation LTSP chroot. About 15 GiB additional disk space is needed. In the default case, run the commands
-.B lvresize -L+15G /dev/vg_system/srv+ltsp
+In the default case, run the commands
+.B lvresize --L+15G /dev/vg_system/srv+ltsp
and
.B resize2fs /dev/vg_system/srv+ltsp
.TP
-.B debian-edu-ltsp-install --dlw yes --img yes --diskless_workstation no
+.B debian-edu-ltsp-install --dlw yes --img yes
.TQ
-creates a diskless workstation LTSP chroot and the related SquashFS image. About even 5 GiB more additional diskspace is needed.
+creates a diskless workstation LTSP chroot and the related SquashFS image. Another 5 GiB more additional disk space is needed.
.SH AUTHORS
Debian Edu Team, https://blends.debian.org/edu
=====================================
share/man/man8/debian-edu-ltsp-ipxe.8
=====================================
@@ -0,0 +1,13 @@
+.TH DEBIAN-EDU-LTSP-IPXE 8 "September 2021" "Debian Edu" "Debian Edu User Tools"
+
+.SH NAME
+debian-edu-ltsp-ipxe - generate or update the iPXE menu file on a Debian Edu LTSP server
+
+.SH SYNOPSIS
+.B debian-edu-ltsp-ipxe
+
+.SH DESCRIPTION
+This is a wrapper script for the 'ltsp ipxe' command. It makes sure that the /srv/tftp/ltsp/ltsp.ipxe file is Debian Edu specific.
+
+.SH AUTHORS
+Debian Edu Team, https://blends.debian.org/edu
View it on GitLab: https://salsa.debian.org/debian-edu/debian-edu-config/-/compare/f41c65e9da74433369e960d89abaca92ad1fede2...82a8cdacafbc97098a6b72f71b9bee9e093053c9
--
View it on GitLab: https://salsa.debian.org/debian-edu/debian-edu-config/-/compare/f41c65e9da74433369e960d89abaca92ad1fede2...82a8cdacafbc97098a6b72f71b9bee9e093053c9
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-edu-commits/attachments/20210929/5a112f1d/attachment-0001.htm>
More information about the debian-edu-commits
mailing list