summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.txt11
-rwxr-xr-xSeTuacct.tpl92
-rw-r--r--SeTudiskpart.tpl61
-rwxr-xr-xSeTupass.tpl42
-rw-r--r--contrib/scripts/makemod_nvidia45
-rw-r--r--grub.tpl2
-rw-r--r--iso2usb.sh95
-rw-r--r--liveinit.tpl23
-rw-r--r--make_slackware_live.conf3
-rwxr-xr-xmake_slackware_live.sh467
-rw-r--r--menu.tpl2
-rw-r--r--pkglists/alien.lst11
-rw-r--r--pkglists/cinnamon.lst10
-rw-r--r--pkglists/kde4add.lst116
-rw-r--r--pkglists/kde4base.lst284
-rw-r--r--pkglists/kde4plasma5.lst8
-rw-r--r--pkglists/mate.lst2
-rw-r--r--pkglists/min.lst18
-rw-r--r--pkglists/multilib.lst20
-rw-r--r--pkglists/noxbase.lst2
-rw-r--r--pkglists/plasma5.lst24
-rw-r--r--pkglists/plasma5alien.conf (renamed from pkglists/daw.conf)0
-rw-r--r--pkglists/plasma5alien.lst6
-rw-r--r--pkglists/x_base.lst8
-rw-r--r--pkglists/xapbase.lst21
-rw-r--r--pkglists/xfcebase.lst1
-rw-r--r--pkglists/z00_slk4daw.lst50
-rw-r--r--pkglists/z01_plasma5base.conf15
-rw-r--r--pkglists/z01_plasma5base.lst452
-rw-r--r--pkglists/z02_alien4daw.conf12
-rw-r--r--pkglists/z02_alien4daw.lst5
-rw-r--r--pkglists/z03_daw.conf12
-rw-r--r--pkglists/z03_daw.lst (renamed from pkglists/daw.lst)21
-rwxr-xr-xsetup2hd.tpl176
-rw-r--r--upslak.sh44
35 files changed, 1481 insertions, 680 deletions
diff --git a/README.txt b/README.txt
index 9c5fff1..cf5fd11 100644
--- a/README.txt
+++ b/README.txt
@@ -147,6 +147,13 @@ Examples:
You might have noticed that the "-P" parameter does not accept a size parameter. This is because the unencrypted container file is created as a 'sparse' file that starts at zero size and is allowed to grow dynmically to a maximum of 90% of the initial free space on the Linux partition of the USB stick.
+==== Using the Live OS to install Slackware to hard disk ====
+
+
+All variants of Slackware Live Edition with the exception of the XFCE variant contain a script "setup2hd", a tweaked version of the regular Slackware setup program.
+The "setup2hd" script allows you to install the Slackware release on which the Live OS is based, to the computer's local hard disk. You must boot the Live OS first, and then start "setup2hd" either in an X Terminal in your graphical Desktop Environment (aka Runlevel 4), or from the console in Runlevel 3. The fact that you can start "setup2hd" from a graphical terminal means that during installation, you can continue browsing, listening to music, watching video, reading an e-book or whatever else makes you pass the time.
+
+
==== Updating the kernel (and more) on a USB stick ====
@@ -540,7 +547,7 @@ You can copy the module you just created (minding the filename conventions for a
The fourth script:
-The "setup2hd" script enables you to install the running Live OS to the computer's local hard disk. The "setup2hd" is a modified Slackware installer, so you will be comfortable with the process. There is no 'SOURCE' selection because the script knows where to find the squashfs modules. After you select the target partition(s), every active module of the Live OS variant (SLACKWARE, PLASMA5, MATE, ...) is extracted to the hard drive. After extraction has completed, the script summarizes how many modules have been extracted. It will also show an example command to extract any remaining inactive or disabled modules manually. The final step in the installation is again the stock Slackware installer which kicks off the Slackware configuration scripts.
+The "setup2hd" script is a modified Slackware installer, so you will be comfortable with the process. There is no 'SOURCE' selection because the script knows where to find the squashfs modules. After you select the target partition(s), every active module of the Live OS variant (SLACKWARE, PLASMA5, MATE, ...) is extracted to the hard drive. After extraction has completed, the script summarizes how many modules have been extracted. It will also show an example command to extract any remaining inactive or disabled modules manually. The final step in the installation is again the stock Slackware installer which kicks off the Slackware configuration scripts.
=== pxeserver ===
@@ -891,5 +898,5 @@ Slackware Live Edition is created by the 'liveslak' scripts developed and mainta
* Git repository: %%git://slackware.nl/liveslak.git%%
* Git repository (browsable): http://git.slackware.nl/liveslak/
* Download mirror: http://www.slackware.com/~alien/liveslak/
-
+ * Project landing page: https://alien.slackbook.org/blog/slackware-live-edition/
diff --git a/SeTuacct.tpl b/SeTuacct.tpl
new file mode 100755
index 0000000..5024f5d
--- /dev/null
+++ b/SeTuacct.tpl
@@ -0,0 +1,92 @@
+#!/bin/sh
+#TMP=/var/log/setup/tmp
+TMP=/tmp
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+
+freeuid() {
+ # Get the first free UIDNumber after 999:
+ local UIDS=$( cat ${T_PX}/etc/passwd | cut -d: -f3 | sort -n )
+ local UID=999
+ while true; do
+ UID=$(( $UID + 1))
+ if ! echo $UIDS | grep -F -q -w "$UID"; then
+ break;
+ fi
+ done
+ echo $UID
+}
+FREEUID="$(freeuid)"
+
+UFULLNAME=""
+UACCOUNT=""
+UACCTNR="$FREEUID"
+USHELL="/bin/bash"
+UFORM="Fill out your user details:"
+while [ 0 ]; do
+ dialog --stdout --ok-label "Submit" --no-cancel \
+ --title "@UDISTRO@ (@LIVEDE@) USER CREATION" \
+ --form "$UFORM" \
+ 11 64 0 \
+ "Full Name:" 1 1 "$UFULLNAME" 1 14 40 0 \
+ "Logonname:" 2 1 "$UACCOUNT" 2 14 32 0 \
+ "UIDNumber:" 3 1 "$UACCTNR" 3 14 12 0 \
+ "Login Shell:" 4 1 "$USHELL" 4 14 12 0 \
+ 2>&1 1> $TMP/tempresult
+ iii=0
+ declare -a USERATTR
+ while read LINE ; do
+ USERATTR[$iii]="$LINE"
+ iii=$(expr $iii + 1)
+ done < $TMP/tempresult
+ rm -f $TMP/tempresult
+ UFULLNAME="${USERATTR[0]}"
+ UACCOUNT="${USERATTR[1]}"
+ UACCTNR="${USERATTR[2]}"
+ USHELL="${USERATTR[3]}"
+ unset USERATTR
+ UINPUT=0
+ # Validate the input:
+ UACC_INVALID1="$(echo ${UACCOUNT:0:1} |tr -d 'a-z_')"
+ UACC_INVALID="$(echo ${UACCOUNT:1} |tr -d 'a-z0-9_-')"
+ if [ -n "$UACC_INVALID1" -o -n "$UACC_INVALID" ]; then
+ # User account contains invalid characters, let's remove them all:
+ UINPUT=1
+ UACCOUNT="$(echo ${UACCOUNT} |tr -cd 'a-z_')"
+ fi
+ if [ -z "$UACCOUNT" -o -z "$UFULLNAME" ]; then
+ # User account or fullname is empty, let's try again:
+ UINPUT=$(expr $UINPUT + 2)
+ fi
+ if chroot ${T_PX} /usr/bin/id -u ${UACCTNR} 1>/dev/null 2>/dev/null ; then
+ # UidNumber is already in use, fall back to sane default:
+ UINPUT=$(expr $UINPUT + 4)
+ UACCTNR=$FREEUID
+ fi
+ if ! grep -q ${USHELL} ${T_PX}/etc/shells ; then
+ # Login shell is invalid, suggest the bash shell again:
+ UINPUT=$(expr $UINPUT + 8)
+ USHELL=/bin/bash
+ fi
+ if [ $UINPUT -eq 0 ]; then
+ break
+ elif [ $UINPUT -eq 1 ]; then
+ UFORM="Please only use valid characters for logonname"
+ elif [ $UINPUT -eq 2 ]; then
+ UFORM="Please enter your logon and full name"
+ elif [ $UINPUT -eq 3 ]; then
+ UFORM="Use valid characters for logonname, and enter full name"
+ elif [ $UINPUT -eq 4 ]; then
+ UFORM="Enter unused number for your account, $FREEUID is a good default"
+ elif [ $UINPUT -eq 8 ]; then
+ UFORM="Please enter a valid shell"
+ else
+ UFORM="Fill all fields, using valid logonname/uidnumber values"
+ fi
+done
+
+echo "UACCOUNT=$UACCOUNT"
+echo "UFULLNAME='$UFULLNAME'"
+echo "UACCTNR=$UACCTNR"
+echo "USHELL=$USHELL"
diff --git a/SeTudiskpart.tpl b/SeTudiskpart.tpl
new file mode 100644
index 0000000..5a244a8
--- /dev/null
+++ b/SeTudiskpart.tpl
@@ -0,0 +1,61 @@
+#!/bin/sh
+TMP=/var/log/setup/tmp
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+
+ # If we do not find any useful disks at all, we must bail:
+ if [ -z "$(lsblk -a -o NAME,SIZE,RM,RO,TYPE,MODEL |tr -s '[:blank:]' ' ' |grep '0 *0 *disk' | grep -v '^ram')" ]; then
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "NO HARD DRIVE DETECTED" \
+ --msgbox "This machine appears not to have any hard drives installed.\
+This setup will not work. Please add a hard drive to the computer first." 10 64
+ exit
+ fi
+
+ # Generate a list of local hard drives we can write to:
+ rm -f $TMP/tempscript
+ cat <<EOT > $TMP/tempscript
+dialog --stdout \\
+ --title "SELECT DISK DRIVES" \\
+ --backtitle "Creating Linux, swap and EFI partitions" \\
+ --checklist "Select from available drives.\nA disk partitioning utility \\
+will be presented for any drive you select here:" \\
+ 19 0 9 \\
+EOT
+ lsblk -a -o NAME,SIZE,RM,RO,TYPE,MODEL | \
+ tr -s '[:blank:]' ' ' | grep '0 *0 *disk' | grep -v '^ram' | \
+ while read LINE ; do
+ DISKATTR=($LINE)
+ DISKVENDOR="${DISKATTR[@]:5}"
+ if [ -z "${DISKVENDOR}" ]; then
+ DISKVENDOR="UnknownVendor"
+ fi
+ echo "\"/dev/${DISKATTR[0]}\" \"${DISKATTR[1]}: ${DISKVENDOR}\" off \\" >> $TMP/tempscript
+ done
+ echo '2>&1 1>$TMP/availdisks' >> $TMP/tempscript
+
+ # Loop until the user makes a choice:
+ while [ 0 ]; do
+ source $TMP/tempscript
+ if [ ! $? = 0 ] || [ ! -s $TMP/availdisks ]; then
+ # Canceled the dialog, or did not select anything:
+ rm -f $TMP/availdisks
+ else
+ # We got an answer:
+ for DISKDRIVE in $(cat $TMP/availdisks) ; do
+ # Determine which disk partitioning tool to use:
+ if gdisk -l $DISKDRIVE |tr -s '[:blank:]' ' ' |grep -q "MBR: MBR only" ; then
+ PARTTOOL=cfdisk
+ else
+ PARTTOOL=cgdisk
+ fi
+ # Now let the user create her partitions:
+ $PARTTOOL $DISKDRIVE
+ done
+ break
+ fi
+ done
+ # We should have partitions now, so re-run probe and collect that list:
+ probe -l 2> /dev/null | grep -E 'Linux$' | sort 1> $TMP/SeTplist 2> /dev/null
+
diff --git a/SeTupass.tpl b/SeTupass.tpl
new file mode 100755
index 0000000..ff662ab
--- /dev/null
+++ b/SeTupass.tpl
@@ -0,0 +1,42 @@
+#!/bin/sh
+TMP=/var/log/setup/tmp
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+
+UACCOUNT="$1"
+
+ UPASS1=""
+ UPASS2=""
+ UFORM="Define a new password for user '$UACCOUNT'"
+ while [ 0 ]; do
+ dialog --stdout --insecure --ok-label "Submit" --no-cancel \
+ --title "@UDISTRO@ (@LIVEDE@) USER CREATION" \
+ --passwordform "$UFORM" \
+ 9 64 0 \
+ "Password:" 1 1 "$UPASS1" 1 18 40 0 \
+ "Repeat password:" 2 1 "$UPASS2" 2 18 40 0 \
+ 2>&1 1> $TMP/tempresult
+ iii=0
+ declare -a USERATTR
+ while read LINE ; do
+ USERATTR[$iii]="$LINE"
+ iii=$(expr $iii + 1)
+ done < $TMP/tempresult
+ rm -f $TMP/tempresult
+ UPASS1="${USERATTR[0]}"
+ UPASS2="${USERATTR[1]}"
+ unset USERATTR
+ if [ -z "$UPASS1" ]; then
+ UFORM="Password must not be empty, try again for user '$UACCOUNT'"
+ elif [ "$UPASS1" == "$UPASS2" ]; then
+ break
+ else
+ UFORM="Passwords do not match, try again for user '$UACCOUNT'"
+ fi
+ done
+ echo "${UPASS1}"
+ unset UPASS1
+ unset UPASS2
+ unset USERATTR
+
diff --git a/contrib/scripts/makemod_nvidia b/contrib/scripts/makemod_nvidia
new file mode 100644
index 0000000..508b299
--- /dev/null
+++ b/contrib/scripts/makemod_nvidia
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+MAKEMOD=${MAKEMOD:-"/usr/local/sbin/makemod"}
+SLACKARCH=${SLACKARCH:-"x86_64"}
+SLACKVER=${SLACKVER:-"current"}
+
+TEMPDIR=$(mktemp -d -t alienmod.XXXXXX)
+if [ ! -d ${TEMPDIR} ]; then
+ echo "**Failed to create temporary directory for installation of packages!"
+ exit 1
+fi
+
+# Install the nvidia-kernel and nvidia driver packages which were passed
+# as arguments to the commandline:
+for PKG in $* ; do
+ /sbin/installpkg -root ${TEMPDIR} ${PKG}
+done
+
+# Prevent loading of the kernel's 'nouveau' driver:
+mkdir -p ${TEMPDIR}/etc/modprobe.d
+cat <<EOT > ${TEMPDIR}/etc/modprobe.d/BLACKLIST-nouveau.conf
+# Do not load the kernel nouveau dri module, since it interferes with both
+# the nv and binary nvidia drivers.
+blacklist nouveau
+EOT
+
+STAMP=$(ls ${TEMPDIR}/var/log/packages/nvidia-kernel-* |rev |cut -d- -f3 |rev)
+PKGVER=$(echo $STAMP |cut -d_ -f1)
+PKGMAJ=$(echo $PKGVER |cut -d. -f1)
+KVER=$(echo $STAMP |cut -d_ -f2)
+
+# Generate the squashfs module:
+${MAKEMOD} ${TEMPDIR} /tmp/0060-nvidia-${STAMP}-${SLACKVER}-${SLACKARCH}.sxz
+
+# Generate list of PCI IDS for supported GPUs, sed magic taken from
+# https://anonscm.debian.org/viewvc/pkg-nvidia/packages/nvidia-graphics-drivers/trunk/debian/rules?view=markup :
+sed \
+ -e '0,/A. Supported\|APPENDIX A: SUPPORTED/d' \
+ -e '0,/Appendix A. Supported\|APPENDIX A: SUPPORTED/d' \
+ -e '0,/^Below\|APPENDIX B/{/ 0x/s/.* 0x\([0-9a-fA-F]\{4\}\).*/10de\1/p; /^.\{41\} [0-9a-fA-F]\{4\} /s/^.\{41\} \([0-9a-fA-F]\{4\}\) .*/10de\1/p};d' \
+ ${TEMPDIR}/usr/doc/nvidia-driver-*/README.txt \
+ | tr 'a-f' 'A-F' | sort -u \
+ > /tmp/nvidia-${PKGMAJ}xx.ids
+
+rm -r ${TEMPDIR}
diff --git a/grub.tpl b/grub.tpl
index 6b28e0f..09bc7cb 100644
--- a/grub.tpl
+++ b/grub.tpl
@@ -40,7 +40,7 @@ if loadfont $prefix/theme/dejavusansmono12.pf2 ; then
export theme
fi
-menuentry "Start @CDISTRO@@DIRSUFFIX@ @SL_VERSION@ @LIVEDE@ Live @VERSION@ ($sl_lang)" --hotkey b {
+menuentry "Start @CDISTRO@@DIRSUFFIX@ @SL_VERSION@ @LIVEDE@ liveslak-@VERSION@ ($sl_lang)" --hotkey b {
linux ($root)/boot/generic @KAPPEND@ load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 kbd=$sl_kbd tz=$sl_tz locale=$sl_locale xkb=$sl_xkb
initrd ($root)/boot/initrd.img
}
diff --git a/iso2usb.sh b/iso2usb.sh
index e8c7014..23ecd32 100644
--- a/iso2usb.sh
+++ b/iso2usb.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Copyright 2015, 2016, 2017, 2019 Eric Hameleers, Eindhoven, NL
+# Copyright 2015, 2016, 2017, 2019, 2020 Eric Hameleers, Eindhoven, NL
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -29,6 +29,14 @@ export PATH="/usr/sbin:/sbin:/usr/bin:/bin"
# Set to '1' if you want to ignore all warnings:
FORCE=0
+# The default layout of the USB stick is:
+# partition 1 (1MB),
+# partition 2 (100 MB)
+# partition 3 (claim all free space - specified as 0 MB).
+# The script allows for an amount of free space to be left at the end
+# (partition 4, unused by liveslak) in case you need this:
+DEF_LAYOUT="1,100,-1,"
+
# By default, we use 'slhome.img' as the name of the LUKS home containerfile.
DEF_SLHOME="slhome"
SLHOME="${DEF_SLHOME}"
@@ -77,12 +85,15 @@ REQTOOLS="blkid cpio extlinux fdisk gdisk isoinfo lsblk mkdosfs sgdisk syslinux"
# Path to syslinux files:
if [ -d /usr/share/syslinux ]; then
SYSLXLOC="/usr/share/syslinux"
+ GPTMBRBIN=$(find $SYSLXLOC -name gptmbr.bin)
elif [ -d /usr/lib/syslinux ]; then
SYSLXLOC="/usr/lib/syslinux"
+ GPTMBRBIN=$(find $SYSLXLOC -name gptmbr.bin)
else
# Should not happen... in this case we use what we have on the ISO
# and hope for the best:
- SYSLXLOC=""
+ SYSLXLOC="/"
+ GPTMBRBIN="gptmbr.bin"
fi
# Initialize more variables:
@@ -162,7 +173,13 @@ cat <<EOT
# providing a devicename (using option '-o').
# -u|--unattended Do not ask any questions.
# -v|--verbose Show verbose messages.
-# -w|--wait<number> Add <number> seconds wait time to initialize USB.
+# -w|--wait <number> Add <number> seconds wait time to initialize USB.
+# -y|--layout <x,x,x,x> Specify partition layout and sizes (in MB).
+# Default values: '$DEF_LAYOUT' for 3 partitions,
+# the '-1' value for partition 3 meaning
+# 'use all remaining space',
+# and an empty 4th value means 'do not reserve
+# free space for a custom 4th partition'.
# -C|--cryptpersistfile size|perc
# Use a LUKS-encrypted 'persistence' file instead
# of a directory (for use on FAT filesystem).
@@ -173,6 +190,7 @@ cat <<EOT
#
# $(basename $0) -i ~/download/slackware64-live-14.2.iso -o /dev/sdX
# $(basename $0) -i slackware64-live-xfce-current.iso -o /dev/mmcblkX -c 750M -w 15
+# $(basename $0) -i slackware-live-current.iso -o /dev/sdX -y 1,200,-1,4096
#
EOT
}
@@ -244,7 +262,7 @@ update_initrd() {
echo "--- Extracting Slackware initrd and adding rootdelay for USB..."
cd ${IMGDIR}
uncompressfs ${IMGFILE} \
- | cpio -i -d -H newc --no-absolute-filenames
+ | cpio -i -d -m -H newc
if [ $REFRESH -eq 1 ]; then
echo "--- Refreshing Slackware initrd..."
@@ -471,6 +489,10 @@ while [ ! -z "$1" ]; do
WAIT="$2"
shift 2
;;
+ -y|--layout)
+ LAYOUT="$2"
+ shift 2
+ ;;
-C|--cryptpersistfile)
DOLUKS=1
PLUKSSIZE="$2"
@@ -615,12 +637,51 @@ if [ $REFRESH -eq 0 ]; then
# - Make the Linux partition "legacy BIOS bootable"
# Make sure that there is no MBR nor a partition table anymore:
dd if=/dev/zero of=$TARGET bs=512 count=1 conv=notrunc
- # The first sgdisk command is allowed to have non-zero exit code:
+
+ # The sgdisk wipe command is allowed to have non-zero exit code:
sgdisk -og $TARGET || true
+
+ # After the wipe, get the value of the last usable sector:
+ ENDSECT=$(sgdisk -E $TARGET)
+
+ # Calculate partition layout in MB.
+ # User may specify custom non-zero sizes, also for keeping some free space:
+ if [ -z "$LAYOUT" ]; then LAYOUT=${DEF_LAYOUT}; fi
+
+ # Let's first determine whether the user wanted space for a 4th partition:
+ LP4=$(echo $LAYOUT |cut -d, -f4)
+ if [ -z "$LP4" ]; then LP4=$(echo $DEF_LAYOUT |cut -d, -f4) ; fi
+
+ LP1=$(echo $LAYOUT |cut -d, -f1)
+ if [ -z "$LP1" ]; then LP1=$(echo $DEF_LAYOUT |cut -d, -f1) ; fi
+ LP1_START=2048
+ LP1_END=$(( ${LP1_START} + ( ${LP1} *2048 ) - 1 ))
+
+ LP2=$(echo $LAYOUT |cut -d, -f2)
+ if [ -z "$LP2" ]; then LP2=$(echo $DEF_LAYOUT |cut -d, -f2) ; fi
+ LP2_START=$(( ${LP1_END} + 1 ))
+ LP2_END=$(( ${LP2_START} + ( $LP2 *2048 ) - 1 ))
+
+ LP3=$(echo $LAYOUT |cut -d, -f3)
+ if [ -z "$LP3" ]; then LP3=$(echo $DEF_LAYOUT |cut -d, -f3) ; fi
+ LP3_START=$(( ${LP2_END} + 1 ))
+ # The end of partition 3 depends on both values of LP3 and LP4:
+ if [ -n "${LP4}" -a ${LP4} -gt 0 ]; then
+ LP3_END=$(( $ENDSECT - ( $LP4 * 2048 ) -1 ))
+ elif [ -n "${LP3}" -a ${LP3} -gt 0 ]; then
+ LP3_END=$(( ${LP3_START} + ( $LP3 *2048 ) - 1 ))
+ else
+ # Give all remaining space to partition 3:
+ LP3_END=0
+ fi
+
+ # END calculating partition layout in MB.
+
+ # Setup the disk partitions:
sgdisk \
- -n 1:2048:4095 -c 1:"BIOS Boot Partition" -t 1:ef02 \
- -n 2:4096:208895 -c 2:"EFI System Partition" -t 2:ef00 \
- -n 3:208896:0 -c 3:"Slackware Linux" -t 3:8300 \
+ -n 1:${LP1_START}:${LP1_END} -c 1:"BIOS Boot Partition" -t 1:ef02 \
+ -n 2:${LP2_START}:${LP2_END} -c 2:"EFI System Partition" -t 2:ef00 \
+ -n 3:${LP3_START}:${LP3_END} -c 3:"Slackware Linux" -t 3:8300 \
$TARGET
sgdisk -A 3:set:2 $TARGET
# Show what we did to the USB stick:
@@ -845,23 +906,25 @@ if [ $EFIBOOT -eq 1 ]; then
sync
fi
-# No longer needed:
+# No longer needed; umount the USB partitions so we can write a new MBR:
if mount |grep -qw ${USBMNT} ; then umount ${USBMNT} ; fi
if mount |grep -qw ${US2MNT} ; then umount ${US2MNT} ; fi
-# Unmount/remove stuff:
-cleanup
-
# Install a GPT compatible MBR record:
-if [ -f ${SYSLXLOC}/gptmbr.bin ]; then
- cat ${SYSLXLOC}/gptmbr.bin > ${TARGET}
-elif [ -f ${USBMNT}/boot/extlinux/gptmbr.bin ]; then
- cat ${USBMNT}/boot/extlinux/gptmbr.bin > ${TARGET}
+if [ -n "${GPTMBRBIN}" ]; then
+ if [ -f ${GPTMBRBIN} ]; then
+ cat ${GPTMBRBIN} > ${TARGET}
+ fi
+elif [ -f ${ISOMNT}/boot/syslinux/gptmbr.bin ]; then
+ cat ${ISOMNT}/boot/syslinux/gptmbr.bin > ${TARGET}
else
echo "*** Failed to make USB device bootable - 'gptmbr.bin' not found!"
cleanup
exit 1
fi
+# Unmount/remove stuff:
+cleanup
+
# THE END
diff --git a/liveinit.tpl b/liveinit.tpl
index 6fd9620..b8d40c3 100644
--- a/liveinit.tpl
+++ b/liveinit.tpl
@@ -292,7 +292,7 @@ if [ -x /sbin/udevd -a -x /sbin/udevadm ]; then
if [ -n "$NFSHOST" ]; then
# We also need network devices if NFS root is requested:
if [ -z "$(/sbin/udevadm trigger --subsystem-match=net --action=add -v -n |rev |cut -d/ -f1 |rev |grep -v lo)" ]; then
- /sbin/udevadm trigger $DEBUGV
+ /sbin/udevadm trigger --action=add $DEBUGV
else
/sbin/udevadm trigger --subsystem-match=net --action=add $DEBUGV
fi
@@ -308,14 +308,6 @@ if [ ! -d /lib/modules/$(uname -r) ]; then
elif [ -x ./load_kernel_modules ]; then # use load_kernel_modules script:
echo "${MARKER}: Loading kernel modules from initrd image:"
. ./load_kernel_modules 1>/dev/null 2>/dev/null
-else # load modules (if any) in order:
- if ls /lib/modules/$(uname -r)/*.*o 1> /dev/null 2> /dev/null ; then
- echo "${MARKER}: Loading kernel modules from initrd image:"
- for module in /lib/modules/$(uname -r)/*.*o ; do
- /sbin/modprobe $module 1>/dev/null 2>/dev/null
- done
- unset module
- fi
fi
# Sometimes the devices need extra time to be available.
@@ -767,8 +759,8 @@ if [ "$RESCUE" = "" ]; then
BLACKLIST KEYMAP LIVE_HOSTNAME LOAD LOCALE LUKSVOL \
NOLOAD RUNLEVEL TWEAKS TZ XKB ;
do
- if [ -n "${LIVEPARM}" ]; then
- eval $(grep -w ${LIVEPARM} /mnt/media/${LIVEMAIN}/${DISTROCFG})
+ if [ -n "$(eval echo \$${LIVEPARM})" ]; then
+ eval $(grep -w ^${LIVEPARM} /mnt/media/${LIVEMAIN}/${DISTROCFG})
fi
done
fi
@@ -833,6 +825,14 @@ if [ "$RESCUE" = "" ]; then
load_modules addons
# And finally any explicitly requested optionals (like nvidia drivers):
+ ## TODO:
+ ## Automatically load the nvidia driver if we find a supported GPU:
+ # NVPCIID=$(lspci -nn|grep NVIDIA|grep VGA|rev|cut -d'[' -f1|rev|cut -d']' -f1|tr -d ':'|tr [a-z] [A-Z])
+ # if cat /mnt/media/${LIVEMAIN}/optional/nvidia-*xx.ids |grep -wq $NVPCIID ;
+ # then
+ # LOAD="nvidia,${LOAD}"
+ # fi
+ ## END TODO:
# Remember, module name must adhere to convention: "NNNN-modname-*.sxz"
# where 'N' is a digit and 'modname' must not contain a dash '-'.
load_modules optional
@@ -1274,6 +1274,7 @@ Xft.lcdfilter: lcddefault
Xft.rgba: rgb
Xft.autohint: 0
EOT
+ chown --reference=/mnt/overlay/home/${LIVEUID} /mnt/overlay/home/${LIVEUID}/.Xresources
elif [ -f /mnt/overlay/etc/profile.d/freetype.sh ]; then
# Explicitly configure the non-default old v35 interpreter in freetype:
cat <<EOT >> /mnt/overlay/etc/profile.d/freetype.sh
diff --git a/make_slackware_live.conf b/make_slackware_live.conf
index beb0480..69f7e1a 100644
--- a/make_slackware_live.conf
+++ b/make_slackware_live.conf
@@ -25,6 +25,9 @@
# What runlevel to use if adding a DE like: XFCE, KDE4, PLASMA5 etc...
#RUNLEVEL=4
+# Number of the 'live' user account in the Live image:
+#LIVEUIDNR="1000"
+
# Name of the 'live' user account in the Live image:
#LIVEUID="live"
diff --git a/make_slackware_live.sh b/make_slackware_live.sh
index 4bd0559..0d5b364 100755
--- a/make_slackware_live.sh
+++ b/make_slackware_live.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# Copyright 2014, 2015, 2016, 2017, 2018, 2019 Eric Hameleers, Eindhoven, NL
+# Copyright 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Hameleers, Eindhoven, NL
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for
@@ -35,7 +35,7 @@
# -----------------------------------------------------------------------------
# Version of the Live OS generator:
-VERSION="1.3.2.3"
+VERSION="1.3.5.2"
# Directory where our live tools are stored:
LIVE_TOOLDIR=${LIVE_TOOLDIR:-"$(cd $(dirname $0); pwd)"}
@@ -83,10 +83,19 @@ THEDATE=$(date +%Y%m%d)
# The live username of the image:
LIVEUID=${LIVEUID:-"live"}
+# The number of the live account in the image:
+LIVEUIDNR=${LIVEUIDNR:-"1000"}
+
# The root and live user passwords of the image:
ROOTPW=${ROOTPW:-"root"}
LIVEPW=${LIVEPW:-"live"}
+# The nvidia persistence account:
+NVUID=${NVUID:-"nvidia"}
+NVUIDNR=${NVUIDNR:-"365"}
+NVGRP=${NVFRP:-"nvidia"}
+NVGRPNR=${NVUIDNR:-"365"}
+
# Distribution name:
DISTRO=${DISTRO:-"slackware"}
@@ -94,10 +103,10 @@ DISTRO=${DISTRO:-"slackware"}
LIVE_HOSTNAME=${LIVE_HOSTNAME:-"darkstar"}
# What type of Live image?
-# Choices are: SLACKWARE, XFCE, KDE4, PLASMA5, MATE, CINNAMON, DLACK, STUDIOWARE
+# Choices are: SLACKWARE, XFCE, DAW, PLASMA5, MATE, CINNAMON, DLACK, STUDIOWARE
LIVEDE=${LIVEDE:-"SLACKWARE"}
-# What runlevel to use if adding a DE like: XFCE, KDE4, PLASMA5 etc...
+# What runlevel to use if adding a DE like: XFCE, DAW, PLASMA5 etc...
RUNLEVEL=${RUNLEVEL:-4}
# Use the graphical syslinux menu (YES or NO)?
@@ -170,13 +179,14 @@ SEQ_SLACKWARE="tagfile:a,ap,d,e,f,k,kde,kdei,l,n,t,tcl,x,xap,xfce,y pkglist:slac
# - each series will become a squashfs module:
SEQ_XFCEBASE="${MINLIST},noxbase,x_base,xapbase,xfcebase"
-# Stripped-down Slackware with KDE4 as the Desktop Environment:
-# - each series will become a squashfs module:
-SEQ_KDE4BASE="pkglist:${MINLIST},noxbase,x_base,xapbase,kde4base"
+# Stripped-down Slackware with Plasma5 as the Desktop Environment:
+# - each series will become a squashfs module.
+# Note that loading the modules needs a specific order, which we force:
+SEQ_DAW="pkglist:${MINLIST},noxbase,x_base,xapbase,slackextra,slackpkgplus,z00_slk4daw,z01_plasma5base,z02_alien4daw,z03_daw"
# List of Slackware package series with Plasma5 instead of KDE 4 (full install):
# - each will become a squashfs module:
-SEQ_PLASMA5="tagfile:a,ap,d,e,f,k,l,n,t,tcl,x,xap,xfce,y pkglist:alien,alienrest,plasma5,slackextra,slackpkgplus"
+SEQ_PLASMA5="tagfile:a,ap,d,e,f,k,l,n,t,tcl,x,xap,xfce,y pkglist:plasma5,plasma5alien,slackextra,slackpkgplus"
# List of Slackware package series with MSB instead of KDE 4 (full install):
# - each will become a squashfs module:
@@ -200,7 +210,7 @@ SEQ_STUDW="tagfile:a,ap,d,e,f,k,kde,l,n,t,tcl,x,xap,xfce,y pkglist:slackextra,sl
KMODS=${KMODS:-"squashfs:overlay:loop:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:mmc-core:mmc-block:sdhci:sdhci-pci:sdhci-acpi:usb-storage:hid:usbhid:i2c-hid:hid-generic:hid-apple:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd:mbcache:ext3:ext4:isofs:fat:nls_cp437:nls_iso8859-1:msdos:vfat:ntfs"}
# Network kernel modules to include for NFS root support:
-NETMODS="kernel/drivers/net"
+NETMODS="kernel/drivers/net kernel/drivers/virtio"
# Network kernel modules to exclude from above list:
NETEXCL="appletalk arcnet bonding can dummy.ko hamradio hippi ifb.ko irda macvlan.ko macvtap.ko pcmcia sb1000.ko team tokenring tun.ko usb veth.ko wan wimax wireless xen-netback.ko"
@@ -213,10 +223,11 @@ NETFIRMWARE="3com acenic adaptec bnx tigon e100 sun kaweth tr_smctr cxgb3"
# either using a variable name 'KAPPEND_<LIVEDE>', or by defining 'KAPPEND' in the .conf file:
KAPPEND_SLACKWARE=""
KAPPEND_PLASMA5="threadirqs"
+KAPPEND_DAW="threadirqs"
KAPPEND_STUDIOWARE="threadirqs"
# Add CACert root certificates yes/no?
-ADD_CACERT=${ADD_CACERT:-"YES"}
+ADD_CACERT=${ADD_CACERT:-"NO"}
# Default language selection for the Live OS; this can be changed with the
# coomandline switch "-l":
@@ -320,18 +331,22 @@ uncompressfs () {
#
full_pkgname() {
PACK=$1
- TOPDIR=$2
- # Perhaps I will use this more readable code in future:
- #for FL in $(find ${TOPDIR} -name "${PACK}-*.t?z" 2>/dev/null) ; do
- # # Weed out package names starting with "$PACK"; we want exactly "$PACK":
- # if [ "$(echo $FL |rev |cut -d- -f4- |cut -d/ -f1 |rev)" != "$PACK" ]; then
- # continue
- # else
- # break
- # fi
- #done
- #echo "$FL"
- echo "$(find ${TOPDIR} -name "${PACK}-*.t?z" 2>/dev/null |grep -E "\<${PACK//+/\\+}-[^-]+-[^-]+-[^-]+.t?z" |head -1)"
+ if [ -e $2 ]; then
+ TOPDIR=$2
+ # Perhaps I will use this more readable code in future:
+ #for FL in $(find ${TOPDIR} -name "${PACK}-*.t?z" 2>/dev/null) ; do
+ # # Weed out package names starting with "$PACK"; we want exactly "$PACK":
+ # if [ "$(echo $FL |rev|cut -d- -f4-|cut -d/ -f1|rev)" != "$PACK" ]; then
+ # continue
+ # else
+ # break
+ # fi
+ #done
+ #echo "$FL"
+ echo "$(find ${TOPDIR}/ -name "${PACK}-*.t?z" 2>/dev/null |grep -E "\<${PACK//+/\\+}-[^-]+-[^-]+-[^-]+.t?z" |head -1)"
+ else
+ echo ""
+ fi
}
#
@@ -385,7 +400,7 @@ function install_pkgs() {
else
SELECTION=""
fi
- if [ ! -d ${SL_REPO} -o -z "$(find ${SL_PKGROOT} -type f 2>/dev/null)" ]; then
+ if [ ! -d ${SL_REPO} -o -z "$(find ${SL_PKGROOT}/ -type f 2>/dev/null)" ]; then
# Oops... empty local repository. Let's see if we can rsync from remote:
echo "** Slackware package repository root '${SL_REPO}' does not exist or is empty!"
RRES=1
@@ -489,17 +504,25 @@ function install_pkgs() {
# Also remove man pages:
rm -rf "$2"/usr/man
fi
- if [ "$LIVEDE" = "XFCE" ]; then
+ if [ "$LIVEDE" = "XFCE" ]; then
# By pruning stuff that no one likely needs anyway,
# we make room for packages we would otherwise not be able to add.
# MySQL embedded is only used by Amarok:
rm -f "$2"/usr/bin/mysql*embedded*
- # I am against torture:
- rm -f "$2"/usr/bin/smbtorture
# Also remove the big unused/esoteric static libraries:
rm -f "$2"/usr/lib${DIRSUFFIX}/*.a
# This was inadvertantly left in the gcc package:
rm -f "$2"/usr/libexec/gcc/*/*/cc1objplus
+ # From samba we mostly want the shared runtime libraries:
+ rm -rf "$2"/usr/share/samba
+ rm -rf "$2"/usr/lib${DIRSUFFIX}/python*/site-packages/samba
+ # Guile library is all we need to satisfy make:
+ rm -f "$2"/usr/bin/guil*
+ rm -rf "$2"/usr/include/guile
+ rm -rf "$2"/usr/lib64/guile
+ rm -rf "$2"/usr/share/guile
+ # I am against torture:
+ rm -f "$2"/usr/bin/smbtorture
# From llvm we only want the shared runtime libraries so wipe the rest:
rm -f "$2"/usr/lib${DIRSUFFIX}/lib{LLVM,lldb}*.a
rm -rf "$2"/usr/lib${DIRSUFFIX}/libclang*
@@ -526,10 +549,12 @@ function install_pkgs() {
rm -rf "$2"/lib/modules/*/kernel/drivers/net/wireless/marvell
# Mediatek ARM firmware:
rm -rf "$2"/lib/firmware/vpu*.bin
+ # Firmware for Data Path Acceleration Architecture NICs:
+ rm -rf "$2"/lib/firmware/dpaa2
# Not needed:
rm -rf "$2"/boot/System.map*
# Depends on Qt:
- rm -f /usr/bin/wpa_gui /usr/share/applications/wpa_gui.desktop
+ rm -f "$2"/usr/bin/wpa_gui "$2"/usr/share/applications/wpa_gui.desktop
# Replace 3.2 MB splash with a symlink to a 33 kB file:
if [ -e "$2"/usr/share/gimp/2.0/images/gimp-splash.png -a ! -L "$2"/usr/share/gimp/2.0/images/gimp-splash.png ]; then
rm -rf "$2"/usr/share/gimp/2.0/images/gimp-splash.png
@@ -639,6 +664,8 @@ EOL
cat ${LIVE_TOOLDIR}/menu.tpl | sed \
-e "s/@KBD@/$KBD/g" \
-e "s/@LANG@/$LANCOD/g" \
+ -e "s/@ULANG@/${DEF_LANG^^}/g" \
+ -e "s,@LOCALE@,${DEF_LOCALE},g" \
-e "s/@CONSFONT@/$CONSFONT/g" \
-e "s/@DIRSUFFIX@/$DIRSUFFIX/g" \
-e "s/@DISTRO@/$DISTRO/g" \
@@ -913,7 +940,7 @@ do
echo " Use i586 for a 32bit ISO, x86_64 for 64bit."
echo " -c comp Squashfs compression (default: ${SQ_COMP})."
echo " Can be any of '${SQ_COMP_AVAIL}'."
- echo " -d desktoptype SLACKWARE (full Slack), KDE4 basic,"
+ echo " -d desktoptype SLACKWARE (full Slack), DAW,"
echo " XFCE basic, PLASMA5, MATE, CINNAMON, DLACK."
echo " -e Use ISO boot-load-size of 32 for computers."
echo " where the ISO won't boot otherwise."
@@ -1161,7 +1188,7 @@ echo "${THEDATE} (${BUILDER})" > ${LIVE_BOOT}/${MARKER}
case "$LIVEDE" in
SLACKWARE) MSEQ="${SEQ_SLACKWARE}" ;;
XFCE) MSEQ="${SEQ_XFCEBASE}" ;;
- KDE4) MSEQ="${SEQ_KDE4BASE}" ;;
+ DAW) MSEQ="${SEQ_DAW}" ;;
PLASMA5) MSEQ="${SEQ_PLASMA5}" ;;
MATE) MSEQ="${SEQ_MSB}" ;;
CINNAMON) MSEQ="${SEQ_CIN}" ;;
@@ -1432,22 +1459,99 @@ EOL
# Set a root password.
echo "root:${ROOTPW}" | chroot ${LIVE_ROOTDIR} /usr/sbin/chpasswd
+# Create group and user for the nvidia persistence daemon:
+if ! chroot ${LIVE_ROOTDIR} /usr/bin/getent passwd ${NVUID} > /dev/null 2>&1 ;
+then
+ chroot ${LIVE_ROOTDIR} /usr/sbin/groupadd -g ${NVGRPNR} ${NVGRP}
+ chroot ${LIVE_ROOTDIR} /usr/sbin/useradd -c "Nvidia persistence" -u ${NVUIDNR} -g ${NVGRPNR} -d /dev/null -s /bin/false ${NVUID}
+ echo "${NVUID}:$(openssl rand -base64 12)" | chroot ${LIVE_ROOTDIR} /usr/sbin/chpasswd
+fi
+
# Create a nonprivileged user account (called "live" by default):
-chroot ${LIVE_ROOTDIR} /usr/sbin/useradd -c "Slackware Live User" -g users -G wheel,audio,cdrom,floppy,plugdev,video,power,netdev,lp,scanner,kmem,dialout,games,disk,input -u 1000 -d /home/${LIVEUID} -m -s /bin/bash ${LIVEUID}
+chroot ${LIVE_ROOTDIR} /usr/sbin/useradd -c "Slackware Live User" -g users -G wheel,audio,cdrom,floppy,plugdev,video,power,netdev,lp,scanner,kmem,dialout,games,disk,input -u ${LIVEUIDNR} -d /home/${LIVEUID} -m -s /bin/bash ${LIVEUID}
echo "${LIVEUID}:${LIVEPW}" | chroot ${LIVE_ROOTDIR} /usr/sbin/chpasswd
-# Configure suauth:
-cat <<EOT >${LIVE_ROOTDIR}/etc/suauth
+# Configure suauth if we are not on a PAM system (where this does not work):
+if [ ! -L ${LIVE_ROOTDIR}/lib${LIBDIRSUFFIX}/libpam.so.? ]; then
+ cat <<EOT >${LIVE_ROOTDIR}/etc/suauth
root:${LIVEUID}:OWNPASS
root:ALL EXCEPT GROUP wheel:DENY
EOT
-chmod 600 ${LIVE_ROOTDIR}/etc/suauth
+ chmod 600 ${LIVE_ROOTDIR}/etc/suauth
+fi
# Configure sudoers:
chmod 640 ${LIVE_ROOTDIR}/etc/sudoers
sed -i ${LIVE_ROOTDIR}/etc/sudoers -e 's/# *\(%wheel\sALL=(ALL)\sALL\)/\1/'
chmod 440 ${LIVE_ROOTDIR}/etc/sudoers
+# Add some convenience to the bash shell:
+mkdir -p ${LIVE_ROOTDIR}/etc/skel/
+cat << "EOT" > ${LIVE_ROOTDIR}/etc/skel/.profile
+# Source a .bashrc if it exists:
+[[ -r ~/.bashrc ]] && . ~/.bashrc
+
+# Define some useful aliases:
+alias ll="ls -la $LS_OPTIONS"
+lsp() { basename $(ls -1 "/var/log/packages/$@"*) ; }
+alias md="mkdir"
+alias tarview="tar -tvf"
+# GREP_OPTIONS="--color=auto" is deprecated, use alias to enable colored output:
+alias grep="grep --color=auto"
+alias fgrep="fgrep --color=auto"
+alias egrep="egrep --color=auto"
+
+# Ctrl-D should not log us off immediately; now it needs 10 times:
+set -o ignoreeof
+EOT
+
+# Do the root account the same favor:
+cat ${LIVE_ROOTDIR}/etc/skel/.profile > ${LIVE_ROOTDIR}/root/.profile
+chown root:root ${LIVE_ROOTDIR}/root/.profile
+
+# If the 'vi' symlink doees not exist, add it:
+if [ ! -e ${LIVE_ROOTDIR}/usr/bin/vi ]; then
+ if [ -x ${LIVE_ROOTDIR}/usr/bin/elvis ]; then
+ ln -s elvis ${LIVE_ROOTDIR}/usr/bin/vi
+ else
+ ln -s vim ${LIVE_ROOTDIR}/usr/bin/vi
+ fi
+fi
+
+if [ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.networkmanager ]; then
+ # Enable NetworkManager if present:
+ chmod +x ${LIVE_ROOTDIR}/etc/rc.d/rc.networkmanager
+ # And disable Slackware's own way of configuring eth0:
+ cat <<EOT > ${LIVE_ROOTDIR}/etc/rc.d/rc.inet1.conf
+IFNAME[0]="eth0"
+IPADDR[0]=""
+NETMASK[0]=""
+USE_DHCP[0]=""
+DHCP_HOSTNAME[0]=""
+
+GATEWAY=""
+DEBUG_ETH_UP="no"
+EOT
+
+ # Ensure that NetworkManager uses its internal DHCP client - seems to give
+ # better compliancy:
+ sed -e "s/^dhcp=dhcpcd/#&/" -e "s/^#\(dhcp=internal\)/\1/" \
+ -i ${LIVE_ROOTDIR}/etc/NetworkManager/NetworkManager.conf
+
+else
+ # Use Slackware's own network configurion routing for eth0 in the base image:
+ cat <<EOT > ${LIVE_ROOTDIR}/etc/rc.d/rc.inet1.conf
+IFNAME[0]="eth0"
+IPADDR[0]=""
+NETMASK[0]=""
+USE_DHCP[0]="yes"
+DHCP_HOSTNAME[0]="${LIVE_HOSTNAME}"
+
+GATEWAY=""
+DEBUG_ETH_UP="no"
+EOT
+fi
+
# Enable a Slackware mirror for slackpkg:
cat <<EOT >> ${LIVE_ROOTDIR}/etc/slackpkg/mirrors
#http://mirrors.slackware.com/slackware/slackware${DIRSUFFIX}-${SL_VERSION}/
@@ -1512,40 +1616,6 @@ yes o | ARCH=${SL_ARCH} /usr/sbin/slackpkg new-config
EOSL
-if [ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.networkmanager ]; then
- # Enable NetworkManager if present:
- chmod +x ${LIVE_ROOTDIR}/etc/rc.d/rc.networkmanager
- # And disable Slackware's own way of configuring eth0:
- cat <<EOT > ${LIVE_ROOTDIR}/etc/rc.d/rc.inet1.conf
-IFNAME[0]="eth0"
-IPADDR[0]=""
-NETMASK[0]=""
-USE_DHCP[0]=""
-DHCP_HOSTNAME[0]=""
-
-GATEWAY=""
-DEBUG_ETH_UP="no"
-EOT
-
- # Ensure that NetworkManager uses its internal DHCP client - seems to give
- # better compliancy:
- sed -e "s/^dhcp=dhcpcd/#&/" -e "s/^#\(dhcp=internal\)/\1/" \
- -i ${LIVE_ROOTDIR}/etc/NetworkManager/NetworkManager.conf
-
-else
- # Use Slackware's own network configurion routing for eth0 in the base image:
- cat <<EOT > ${LIVE_ROOTDIR}/etc/rc.d/rc.inet1.conf
-IFNAME[0]="eth0"
-IPADDR[0]=""
-NETMASK[0]=""
-USE_DHCP[0]="yes"
-DHCP_HOSTNAME[0]="${LIVE_HOSTNAME}"
-
-GATEWAY=""
-DEBUG_ETH_UP="no"
-EOT
-fi
-
# Add our scripts to the Live OS:
mkdir -p ${LIVE_ROOTDIR}/usr/local/sbin
install -m0755 ${LIVE_TOOLDIR}/makemod ${LIVE_TOOLDIR}/iso2usb.sh ${LIVE_TOOLDIR}/upslak.sh ${LIVE_ROOTDIR}/usr/local/sbin/
@@ -1581,7 +1651,7 @@ if ls ${LIVE_ROOTDIR}/boot/vmlinuz-huge-* 1>/dev/null 2>/dev/null; then
# and move them to a single directory in the ISO:
mkdir -p ${LIVE_ROOTDIR}/usr/share/${LIVEMAIN}
cd ${LIVE_ROOTDIR}/usr/share/${LIVEMAIN}
- uncompressfs ${DEF_SL_PKGROOT}/../isolinux/initrd.img | cpio -i -d -H newc --no-absolute-filenames usr/lib/setup/* sbin/probe sbin/fixdate
+ uncompressfs ${DEF_SL_PKGROOT}/../isolinux/initrd.img | cpio -i -d -m -H newc usr/lib/setup/* sbin/probe sbin/fixdate
mv -i usr/lib/setup/* sbin/probe sbin/fixdate .
rm -r usr sbin
rm -f setup
@@ -1632,7 +1702,17 @@ if ls ${LIVE_ROOTDIR}/boot/vmlinuz-huge-* 1>/dev/null 2>/dev/null; then
fi
# Fix some occurrences of '/usr/lib/setup/' that are covered by $PATH:
sed -i -e 's,/usr/lib/setup/,,g' -e 's,:/usr/lib/setup,:/usr/share/${LIVEMAIN},g' ${LIVE_ROOTDIR}/usr/share/${LIVEMAIN}/*
- # Add the Slackware Live HD installer:
+ # Add the Slackware Live HD installer scripts:
+ for USCRIPT in SeTuacct SeTudiskpart SeTupass ; do
+ cat ${LIVE_TOOLDIR}/${USCRIPT}.tpl | sed \
+ -e "s/@DISTRO@/$DISTRO/g" \
+ -e "s/@CDISTRO@/${DISTRO^}/g" \
+ -e "s/@UDISTRO@/${DISTRO^^}/g" \
+ -e "s/@LIVEDE@/$LIVEDE/g" \
+ -e "s/@SL_VERSION@/$SL_VERSION/g" \
+ > ${LIVE_ROOTDIR}/usr/share/${LIVEMAIN}/${USCRIPT}
+ chmod 755 ${LIVE_ROOTDIR}/usr/share/${LIVEMAIN}/${USCRIPT}
+ done
mkdir -p ${LIVE_ROOTDIR}/usr/local/sbin
cat ${LIVE_TOOLDIR}/setup2hd.tpl | sed \
-e "s/@DIRSUFFIX@/$DIRSUFFIX/g" \
@@ -1698,30 +1778,6 @@ chown --reference=${LIVE_ROOTDIR}/home/${LIVEUID} ${LIVE_ROOTDIR}/home/${LIVEUID
mkdir -p ${LIVE_ROOTDIR}/usr/share/apps/kdm/pics/users
cp ${LIVE_TOOLDIR}/blueSW-64px.png ${LIVE_ROOTDIR}/usr/share/apps/kdm/pics/users/blues.icon
-# Add some convenience to the bash shell:
-mkdir -p ${LIVE_ROOTDIR}/etc/skel/
-cat << "EOT" > ${LIVE_ROOTDIR}/etc/skel/.profile
-# Source a .bashrc if it exists:
-[[ -r ~/.bashrc ]] && . ~/.bashrc
-
-# Define some useful aliases:
-alias ll="ls -la $LS_OPTIONS"
-lsp() { basename $(ls -1 "/var/log/packages/$@"*) ; }
-alias md="mkdir"
-alias tarview="tar -tvf"
-# GREP_OPTIONS="--color=auto" is deprecated, use alias to enable colored output:
-alias grep="grep --color=auto"
-alias fgrep="fgrep --color=auto"
-alias egrep="egrep --color=auto"
-
-# Ctrl-D should not log us off immediately; now it needs 10 times:
-set -o ignoreeof
-EOT
-
-# Do the root account the same favor:
-cat ${LIVE_ROOTDIR}/etc/skel/.profile > ${LIVE_ROOTDIR}/root/.profile
-chown root:root ${LIVE_ROOTDIR}/root/.profile
-
# Give XDM a nicer look:
mkdir -p ${LIVE_ROOTDIR}/etc/X11/xdm/liveslak-xdm
cp -a ${LIVE_TOOLDIR}/xdm/* ${LIVE_ROOTDIR}/etc/X11/xdm/liveslak-xdm/
@@ -1747,6 +1803,12 @@ cat << EOT > ${LIVE_ROOTDIR}/etc/fonts/local.conf
EOT
chroot ${LIVE_ROOTDIR} fc-cache -f
+# Allow direct scanning via xsane (no temporary intermediate files) in Gimp:
+if [ ! -L ${LIVE_ROOTDIR}/usr/lib${DIRSUFFIX}/gimp/2.0/plug-ins/xsane ]; then
+ mkdir -p ${LIVE_ROOTDIR}/usr/lib${DIRSUFFIX}/gimp/2.0/plug-ins
+ ln -s /usr/bin/xsane \
+ ${LIVE_ROOTDIR}/usr/lib${DIRSUFFIX}/gimp/2.0/plug-ins/xsane
+fi
# -------------------------------------------------------------------------- #
echo "-- Configuring XFCE."
@@ -1864,10 +1926,10 @@ Zonetab=/usr/share/zoneinfo/zone.tab
ZonetabCache=
EOT
-if [ "$LIVEDE" = "PLASMA5" ]; then
+if [ "$LIVEDE" = "PLASMA5" -o "$LIVEDE" = "DAW" ]; then
# -------------------------------------------------------------------------- #
- echo "-- Configuring PLASMA5."
+ echo "-- Configuring PLASMA5/DAW."
# -------------------------------------------------------------------------- #
# Remove the confusing openbox session if present:
@@ -1879,6 +1941,10 @@ if [ "$LIVEDE" = "PLASMA5" ]; then
then
rm -f ${LIVE_ROOTDIR}/usr/share/wayland-sessions/plasmawayland.desktop || true
fi
+
+ # Set the OS name to "Slackware Live" in "System Information":
+ echo "Name=${DISTRO^} Live" >> ${LIVE_ROOTDIR}/etc/kde/xdg/kcm-about-distrorc
+
# Set sane SDDM defaults on first boot (root-owned file):
mkdir -p ${LIVE_ROOTDIR}/var/lib/sddm
cat <<EOT > ${LIVE_ROOTDIR}/var/lib/sddm/state.conf
@@ -1971,7 +2037,7 @@ text/html=kwebkitpart.desktop;
EOT
fi
-fi # End LIVEDE = PLASMA5
+fi # End LIVEDE = PLASMA5/DAW
if [ "$LIVEDE" = "DLACK" ]; then
@@ -1996,6 +2062,66 @@ if [ "$LIVEDE" = "DLACK" ]; then
fi # End LIVEDE = DLACK
+if [ "$LIVEDE" = "DAW" ]; then
+
+ # -------------------------------------------------------------------------- #
+ echo "-- Configuring DAW."
+ # -------------------------------------------------------------------------- #
+
+ # Stream ALSA through Pulse and all through Jack. This is achieved by
+ # having pulseaudio-jack module installed and starting jack-dbus:
+
+ mkdir -p ${LIVE_ROOTDIR}/home/${LIVEUID}/.config/rncbc.org
+ cat <<EOT > ${LIVE_ROOTDIR}/home/${LIVEUID}/.config/rncbc.org/QjackCtl.conf
+[Options]
+DBusEnabled=true
+JackDBusEnabled=true
+KeepOnTop=false
+PostShutdownScript=false
+PostShutdownScriptShell=
+PostStartupScript=false
+PostStartupScriptShell=
+ServerConfig=true
+ServerConfigName=.jackdrc
+ShutdownScript=false
+ShutdownScriptShell=
+Singleton=true
+StartJack=true
+StartMinimized=true
+StartupScript=false
+StartupScriptShell=
+StopJack=true
+SystemTray=true
+SystemTrayQueryClose=false
+XrunRegex=xrun of at least ([0-9|\\.]+) msecs
+
+[Presets]
+DefPreset=(default)
+
+[Settings]
+Driver=alsa
+Frames=256
+Periods=2
+PortMax=256
+Priority=5
+Realtime=true
+SampleRate=48000
+Server=jackd
+StartDelay=2
+EOT
+
+ # Add a default jackd configuration:
+ cat <<EOT > ${LIVE_ROOTDIR}/home/${LIVEUID}/.jackdrc
+/usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2
+EOT
+
+ # Autostart qjackctl:
+ mkdir -p ${LIVE_ROOTDIR}/home/${LIVEUID}/.config/autostart
+ cp -a ${LIVE_ROOTDIR}/usr/share/applications/qjackctl.desktop \
+ ${LIVE_ROOTDIR}/home/${LIVEUID}/.config/autostart
+
+fi # End LIVEDE = DAW
+
if [ "$LIVEDE" = "STUDIOWARE" ]; then
# -------------------------------------------------------------------------- #
@@ -2007,16 +2133,29 @@ if [ "$LIVEDE" = "STUDIOWARE" ]; then
chroot ${LIVE_ROOTDIR} /usr/sbin/useradd -c "Avahi Service Account" -u 214 -g 214 -d /dev/null -s /bin/false avahi
echo "avahi:$(openssl rand -base64 12)" | chroot ${LIVE_ROOTDIR} /usr/sbin/chpasswd
-fi # End LIVEDE = STUDIOWARE
+fi # End LIVEDE = STUDIOWARE
-if [ "$LIVEDE" = "PLASMA5" -o "$LIVEDE" = "STUDIOWARE" ]; then
+if [ "$LIVEDE" = "PLASMA5" -o "$LIVEDE" = "DAW" -o "$LIVEDE" = "STUDIOWARE" ];
+then
# -------------------------------------------------------------------------- #
- echo "-- Configuring $LIVEDE (RT beaviour)."
+ echo "-- Configuring $LIVEDE (RT behaviour)."
# -------------------------------------------------------------------------- #
# RT Scheduling and Locked Memory:
- cat << "EOT" > ${LIVE_ROOTDIR}/etc/initscript
+ # Implementation depends on whether PAM is installed:
+ if [ -L ${LIVE_ROOTDIR}/lib${LIBDIRSUFFIX}/libpam.so.? ]; then
+ # For PAM based system, allow user in 'audio' group to invoke rt capability:
+ mkdir -p ${LIVE_ROOTDIR}/etc/security/limits.d
+ cat <<EOT > ${LIVE_ROOTDIR}/etc/security/limits.d/rt_audio.conf
+# Realtime capability allowed for user in the 'audio' group:
+# Use 'unlimited' with care, you can lock up your system when app misbehaves:
+#@audio - memlock 2097152
+@audio - memlock unlimited
+@audio - rtprio 95
+EOT
+ else
+ cat << "EOT" > ${LIVE_ROOTDIR}/etc/initscript
# Set umask to safe level:
umask 022
# Disable core dumps:
@@ -2024,13 +2163,39 @@ ulimit -c 0
# Allow unlimited size to be locked into memory:
ulimit -l unlimited
# Address issue of jackd failing to start with realtime scheduling:
-ulimit -r 65
+ulimit -r 95
# Execute the program.
eval exec "$4"
EOT
+ chmod +x ${LIVE_ROOTDIR}/etc/initscript
+ fi
+
+ # Allow access for 'audio' group to the high precision event timer,
+ # which may benefit a DAW which relies on ALSA MIDI:
+ mkdir -p ${LIVE_ROOTDIR}/etc/udev/rules.d
+ cat <<EOT > ${LIVE_ROOTDIR}/etc/udev/rules.d/40-timer-permissions.rules
+KERNEL=="rtc0", GROUP="audio"
+KERNEL=="hpet", GROUP="audio"
+EOT
+
+ # Audio related sysctl settings for better realtime performance:
+ mkdir -p ${LIVE_ROOTDIR}/etc/sysctl.d
+ cat <<EOT > ${LIVE_ROOTDIR}/etc/sysctl.d/daw.conf
+# https://wiki.linuxaudio.org/wiki/system_configuration
+dev.hpet.max-user-freq = 3072
+fs.inotify.max_user_watches = 524288
+vm.swappiness = 10
+EOT
+
+ # # This would benefit a DAW, but if the user runs the Live OS on a laptop,
+ # # she might want to decide about this herself:
+ # mkdir -p ${LIVE_ROOTDIR}/etc/default
+ #cat <<EOT > ${LIVE_ROOTDIR}/etc/default/cpufreq
+ #SCALING_GOVERNOR=performance
+ #EOT
-fi # End LIVEDE = PLASMA5/STUDIOWARE
+fi # End LIVEDE = PLASMA5/DAW/STUDIOWARE
# You can define the function 'custom_config()' by uncommenting it in
# the configuration file 'make_slackware_live.conf'.
@@ -2145,8 +2310,8 @@ echo "-- Tweaking system startup."
# Configure the default DE when running startx:
if [ "$LIVEDE" = "SLACKWARE" ]; then
ln -sf xinitrc.kde ${LIVE_ROOTDIR}/etc/X11/xinit/xinitrc
-elif [ "$LIVEDE" = "KDE4" ]; then
- ln -sf xinitrc.kde ${LIVE_ROOTDIR}/etc/X11/xinit/xinitrc
+elif [ "$LIVEDE" = "DAW" ]; then
+ ln -sf xinitrc.plasma ${LIVE_ROOTDIR}/etc/X11/xinit/xinitrc
elif [ "$LIVEDE" = "PLASMA5" ]; then
ln -sf xinitrc.plasma ${LIVE_ROOTDIR}/etc/X11/xinit/xinitrc
elif [ "$LIVEDE" = "MATE" ]; then
@@ -2276,37 +2441,32 @@ sed -e "s% /usr/bin/update.*verbose%#&%" -i ${LIVE_ROOTDIR}/etc/rc.d/rc.M
sed -e '/^ *\/usr\/bin\/glib-c/ s, /usr/bin/glib-c,#&,' -i ${LIVE_ROOTDIR}/etc/rc.d/rc.M
sed -e "s% /sbin/depmod -%#&%" -i ${LIVE_ROOTDIR}/etc/rc.d/rc.modules
-# If we detect a NVIDIA driver, then run the nvidia install routine:
+# Start/stop the NVIDIA persistence daemon if a NVIDIA driver is loaded;
+# Note that this assumes the nvidia-driver and nvidia-kernel packages
+# from slackbuilds.org are being used:
cat <<EOT >> ${LIVE_ROOTDIR}/etc/rc.d/rc.local
-# Deal with the presence of NVIDIA drivers:
-if [ -x /usr/sbin/nvidia-switch ]; then
- if [ -f /usr/lib${DIRSUFFIX}/xorg/modules/extensions/libglx.so.*-nvidia -a -f /usr/lib${DIRSUFFIX}/xorg/modules/drivers/nvidia_drv.so ]; then
- echo "-- Installing binary Nvidia drivers: /usr/sbin/nvidia-switch --install"
- /usr/sbin/nvidia-switch --install
- fi
- # For CUDA/OpenCL to work after reboot, create missing nvidia device nodes:
+# For CUDA/OpenCL to work after reboot, create missing nvidia device nodes:
+if [ -x /usr/bin/nvidia-modprobe ]; then
+ echo "Creating missing nvidia device nodes..."
/usr/bin/nvidia-modprobe -c 0 -u
-else
- # Take care of a reboot where nvidia drivers disappeared
- # afer being used earlier, by restoring the original libraries:
- if ls /usr/lib${DIRSUFFIX}/xorg/modules/extensions/libglx.so-xorg 1>/dev/null 2>/dev/null ; then
- mv /usr/lib${DIRSUFFIX}/xorg/modules/extensions/libglx.so{-xorg,} 2>/dev/null
- mv /usr/lib${DIRSUFFIX}/xorg/modules/extensions/libglx.la{-xorg,} 2>/dev/null
- fi
- if ls /usr/lib${DIRSUFFIX}/libGL.so.*-xorg 1>/dev/null 2>/dev/null ; then
- LIBGL=\$(ls -1 /usr/lib${DIRSUFFIX}/libGL.so.*-xorg |rev |cut -d/ -f1 |cut -d- -f2- |rev)
- mv /usr/lib${DIRSUFFIX}/\${LIBGL}-xorg /usr/lib${DIRSUFFIX}/\${LIBGL} 2>/dev/null
- ln -sf \${LIBGL} /usr/lib${DIRSUFFIX}/libGL.so.1 2>/dev/null
- ln -sf \${LIBGL} /usr/lib${DIRSUFFIX}/libGL.so 2>/dev/null
- mv /usr/lib${DIRSUFFIX}/libGL.la-xorg /usr/lib${DIRSUFFIX}/libGL.la 2>/dev/null
- fi
- if ls /usr/lib${DIRSUFFIX}/libEGL.so.*-xorg 1>/dev/null 2>/dev/null ; then
- LIBEGL=\$(ls -1 /usr/lib${DIRSUFFIX}/libEGL.so.*-xorg |rev |cut -d/ -f1 |cut -d- -f2- |rev)
- mv /usr/lib${DIRSUFFIX}/\${LIBEGL}-xorg /usr/lib${DIRSUFFIX}/\${LIBEGL} 2>/dev/null
- ln -sf \${LIBEGL} /usr/lib${DIRSUFFIX}/libEGL.so.1 2>/dev/null
- ln -sf \${LIBEGL} /usr/lib${DIRSUFFIX}/libEGL.so 2>/dev/null
- fi
+fi
+
+# Start the nvidia-persistenced daemon:
+if [ -x /etc/rc.d/rc.nvidia-persistenced ] && [ -d /var/run/nvidia-persistenced ]; then
+ echo "Starting nvidia persistence daemon..."
+ sed -e "s/NVPD_USER=.*/NVPD_USER=${NVUID}/" -i /etc/rc.d/rc.nvidia-persistenced
+ chown ${NVUID}:${NVGRP} /var/run/nvidia-persistenced 2>/dev/null
+ /etc/rc.d/rc.nvidia-persistenced start
+fi
+EOT
+
+cat <<EOT >> ${LIVE_ROOTDIR}/etc/rc.d/rc.local_shutdown
+
+# Stop the nvidia-persistenced daemon:
+if [ -x /etc/rc.d/rc.nvidia-persistenced ]; then
+ echo "Stopping nvidia persistence daemon..."
+ /etc/rc.d/rc.nvidia-persistenced stop
fi
EOT
@@ -2417,25 +2577,27 @@ if [ "$NFSROOTSUP" = "YES" ]; then
# We need to extract the full kernel-modules package for deps resolving:
tar -C ${KMODS_TEMP} -xf ${KMODS_PKG}
# Get the kernel modules:
- cd ${KMODS_TEMP}
- cp -a --parents lib/modules/${KVER}/${NETMODS} \
- ${LIVE_ROOTDIR}/boot/initrd-tree/
- cd - 1>/dev/null
- # Prune the ones we do not need:
- for KNETRM in ${NETEXCL} ; do
- find ${LIVE_ROOTDIR}/boot/initrd-tree/lib/modules/${KVER}/${NETMODS} \
- -name $KNETRM -depth -exec rm -rf {} \;
- done
- # Add any dependency modules:
- for MODULE in $(find ${LIVE_ROOTDIR}/boot/initrd-tree/lib/modules/${KVER}/${NETMODS} -type f -exec basename {} .ko \;) ; do
- /sbin/modprobe --dirname ${KMODS_TEMP} --set-version $KVER --show-depends --ignore-install $MODULE 2>/dev/null |grep "^insmod " |cut -f 2 -d ' ' |while read SRCMOD; do
- if [ "$(basename $SRCMOD .ko)" != "$MODULE" ]; then
- cd ${KMODS_TEMP}
- # Need to strip ${KMODS_TEMP} from the start of ${SRCMOD}:
- cp -a --parents $(echo $SRCMOD |sed 's|'${KMODS_TEMP}'/|./|' ) \
- ${LIVE_ROOTDIR}/boot/initrd-tree/
- cd - 1>/dev/null
- fi
+ for NETMODPATH in ${NETMODS} ; do
+ cd ${KMODS_TEMP}
+ cp -a --parents lib/modules/${KVER}/${NETMODPATH} \
+ ${LIVE_ROOTDIR}/boot/initrd-tree/
+ cd - 1>/dev/null
+ # Prune the ones we do not need:
+ for KNETRM in ${NETEXCL} ; do
+ find ${LIVE_ROOTDIR}/boot/initrd-tree/lib/modules/${KVER}/${NETMODPATH} \
+ -name $KNETRM -depth -exec rm -rf {} \;
+ done
+ # Add any dependency modules:
+ for MODULE in $(find ${LIVE_ROOTDIR}/boot/initrd-tree/lib/modules/${KVER}/${NETMODPATH} -type f -exec basename {} .ko \;) ; do
+ /sbin/modprobe --dirname ${KMODS_TEMP} --set-version $KVER --show-depends --ignore-install $MODULE 2>/dev/null |grep "^insmod " |cut -f 2 -d ' ' |while read SRCMOD; do
+ if [ "$(basename $SRCMOD .ko)" != "$MODULE" ]; then
+ cd ${KMODS_TEMP}
+ # Need to strip ${KMODS_TEMP} from the start of ${SRCMOD}:
+ cp -a --parents $(echo $SRCMOD |sed 's|'${KMODS_TEMP}'/|./|' ) \
+ ${LIVE_ROOTDIR}/boot/initrd-tree/
+ cd - 1>/dev/null
+ fi
+ done
done
done
# Remove the temporary tree:
@@ -2578,6 +2740,9 @@ if [ "$LIVEDE" != "XFCE" -a "$LIVEDE" != "SLACKWARE" ]; then
# Add custom (proprietary) graphics drivers:
echo "-- Adding binary GPU drivers supporting kernel ${KVER}."
cp ${LIVE_TOOLDIR}/graphics/*${KVER}-${SL_VERSION}-${SL_ARCH}.sxz ${LIVE_MOD_OPT}/
+ if ls ${LIVE_TOOLDIR}/graphics/nvidia-*xx.ids 1>/dev/null 2>&1 ; then
+ cp ${LIVE_TOOLDIR}/graphics/nvidia-*xx.ids ${LIVE_MOD_OPT}/
+ fi
fi
fi
diff --git a/menu.tpl b/menu.tpl
index 4d7cc8d..2417db2 100644
--- a/menu.tpl
+++ b/menu.tpl
@@ -4,7 +4,7 @@ ui vesamenu.c32
default live
font @CONSFONT@
menu background swlogov.png
-menu title @CDISTRO@@DIRSUFFIX@-@SL_VERSION@ Live @VERSION@
+menu title @CDISTRO@@DIRSUFFIX@-@SL_VERSION@ liveslak-@VERSION@
menu clear
f2 f2.txt #00000000
f3 f3.txt #00000000
diff --git a/pkglists/alien.lst b/pkglists/alien.lst
index 30b6ada..c09c9e9 100644
--- a/pkglists/alien.lst
+++ b/pkglists/alien.lst
@@ -1,12 +1,13 @@
# Showcases for using with Slackware Live:
-NetworkManager-openconnect
-NetworkManager-openvpn
+#NetworkManager-openconnect
+#NetworkManager-openvpn
acpilight
-#boost-compat
+boost-compat
calibre
chromium
chromium-pepperflash-plugin
chromium-widevine-plugin
+#cmark
dropbox-client
#ffmpeg
freerdp
@@ -17,7 +18,7 @@ freerdp
gst-plugins-ffmpeg0
gst-plugins-libav
#icedtea-web
-#icu4c-compat
+icu4c-compat
keepassx
#lame
libreoffice
@@ -68,7 +69,7 @@ libstatgrab
#libtinfo
libtorrent-rasterbar
#lumina
-mkvtoolnix
+#mkvtoolnix
muparser
netsurf
nodejs
diff --git a/pkglists/cinnamon.lst b/pkglists/cinnamon.lst
index 3550eba..52ca5ae 100644
--- a/pkglists/cinnamon.lst
+++ b/pkglists/cinnamon.lst
@@ -1,6 +1,4 @@
-BeautifulSoup
accountsservice
-alacarte
autoconf-archive
caribou
cinnamon
@@ -10,7 +8,6 @@ cinnamon-menus
cinnamon-screensaver
cinnamon-session
cinnamon-settings-daemon
-cinnamon-themes
cinnamon-translations
cjs
clutter
@@ -19,18 +16,15 @@ cogl
colord
cracklib
dbus-python3
-gksu
-gnome-common
gnome-menus
graphviz
json-glib
krb5
libgee
-libgksu
libgnomekbd
libgtop
libgusb
-lxml
+libtimezonemap
metacity
mint-y-icons
mint-y-theme
@@ -46,8 +40,8 @@ ptyprocess
py3cairo
pygobject3-python3
python-pam
-python-soupsieve
python3
+pytz
setproctitle
speex
tinycss
diff --git a/pkglists/kde4add.lst b/pkglists/kde4add.lst
deleted file mode 100644
index 64d68e3..0000000
--- a/pkglists/kde4add.lst
+++ /dev/null
@@ -1,116 +0,0 @@
-# kdesdk:
-cervisia
-dolphin-plugins
-kapptemplate
-kcachegrind
-kde-dev-scripts
-kde-dev-utils
-kdesdk-kioslaves
-kdesdk-strigi-analyzers
-kdesdk-thumbnailers
-okteta
-poxml
-umbrello
-
-# kdebindings:
-smokegen
-smokeqt
-qtruby
-perlqt
-smokekde
-korundum
-perlkde
-pykde4
-kross-interpreters
-
-# kdeutils:
-kremotecontrol
-
-# kdemultimedia:
-juk
-
-# kdenetwork:
-krdc
-
-# kdegames:
-klickety
-kpat
-klines
-ksnakeduel
-kollision
-kshisen
-kblocks
-lskat
-bovo
-kajongg
-granatier
-kiriki
-kigo
-bomber
-kolf
-kbounce
-konquest
-kapman
-killbots
-kubrick
-kgoldrunner
-knetwalk
-kbreakout
-ksirk
-kfourinline
-kblackbox
-palapeli
-katomic
-ktuberling
-kjumpingcube
-kspaceduel
-
-# kdetoys:
-amor
-kteatime
-ktux
-
-# kdepim:
-kdepim
-kdepim-runtime
-
-# kdeedu:
-artikulate
-blinken
-cantor
-kalzium
-kanagram
-kgeography
-khangman
-kig
-kiten
-klettres
-kstars
-kqtquickcharts
-ktouch
-kturtle
-kwordquiz
-marble
-parley
-pairs
-rocs
-step
-
-# kdewebdev:
-kdewebdev
-
-# extragear:
-kaudiocreator
-oxygen-gtk2
-kdevplatform
-kdevelop-pg-qt
-kdevelop
-kdev-python
-kdevelop-php
-kdevelop-php-docs
-#wicd-kde
-amarok
-calligra
-partitionmanager
-k3b
-
diff --git a/pkglists/kde4base.lst b/pkglists/kde4base.lst
deleted file mode 100644
index 9ae964a..0000000
--- a/pkglists/kde4base.lst
+++ /dev/null
@@ -1,284 +0,0 @@
-# deps:
-LibRaw
-PyQt
-akonadi
-attica
-boost
-clucene
-eigen3
-grantlee
-gsl
-libbluedevil
-libcanberra
-libdbusmenu-qt
-libodfgen
-librevenge
-libtasn1
-libvisio
-libwpd
-libwpg
-phonon
-phonon-gstreamer
-qca
-qca-cyrus-sasl
-qca-gnupg
-qca-ossl
-qimageblitz
-qjson
-qt
-qt-gstreamer
-shared-desktop-ontologies
-sip
-soprano
-strigi
-virtuoso-ose
-xapian-core
-
-# kdebase:
-kfilemetadata
-baloo
-baloo-widgets
-nepomuk-core
-nepomuk-widgets
-kde-baseapps
-kactivities
-konsole
-kate
-kde-wallpapers
-kde-workspace
-kde-runtime
-kde-base-artwork
-
-# kdelibs:
-kdelibs
-
-# kdepimlibs.
-kdepimlibs
-
-# kdesdk:
-#cervisia
-#dolphin-plugins
-#kapptemplate
-#kcachegrind
-#kde-dev-scripts
-#kde-dev-utils
-#kdesdk-kioslaves
-#kdesdk-strigi-analyzers
-#kdesdk-thumbnailers
-libkomparediff2
-kompare
-lokalize
-#okteta
-#poxml
-#umbrello
-
-# kdegraphics:
-libkipi
-libkexiv2
-libkdcraw
-libksane
-kdegraphics-mobipocket
-okular
-kdegraphics-strigi-analyzer
-kdegraphics-thumbnailers
-gwenview
-kamera
-kcolorchooser
-kgamma
-kolourpaint
-kruler
-ksaneplugin
-ksnapshot
-svgpart
-
-# kdebindings:
-#smokegen
-#smokeqt
-#qtruby
-#perlqt
-#smokekde
-#korundum
-#perlkde
-#pykde4
-#kross-interpreters
-
-# kdeaccessibility:
-kaccessible
-kmouth
-kmousetool
-kmag
-
-# kdeutils:
-ark
-filelight
-kcalc
-kcharselect
-kdf
-kfloppy
-kgpg
-print-manager
-#kremotecontrol
-ktimer
-kwalletmanager
-superkaramba
-sweeper
-
-# kdemultimedia:
-libkcddb
-libkcompactdisc
-audiocd-kio
-dragon
-mplayerthumbs
-#juk
-kmix
-
-# kdenetwork:
-kdenetwork-filesharing
-kdenetwork-strigi-analyzers
-zeroconf-ioslave
-kget
-kopete
-kppp
-#krdc
-krfb
-
-# oxygen-icons:
-oxygen-icons
-
-# kdeadmin:
-kcron
-ksystemlog
-kuser
-
-# kdeartwork:
-kdeartwork
-
-# kdegames:
-libkdegames
-libkmahjongg
-#klickety
-ksudoku
-ksquares
-#kpat
-#klines
-#ksnakeduel
-#kollision
-#kshisen
-#kblocks
-#lskat
-kreversi
-#bovo
-#kajongg
-#granatier
-kmines
-#kiriki
-#kigo
-#bomber
-#kolf
-kdiamond
-#kbounce
-#konquest
-#kapman
-knavalbattle
-#killbots
-#kubrick
-#kgoldrunner
-#knetwalk
-#kbreakout
-#ksirk
-#kfourinline
-picmi
-#kblackbox
-#palapeli
-#katomic
-#ktuberling
-#kjumpingcube
-kmahjongg
-#kspaceduel
-
-# kdetoys:
-#amor
-#kteatime
-#ktux
-
-# kdepim:
-#kdepim
-#kdepim-runtime
-
-# kdeedu:
-libkdeedu
-analitza
-#artikulate
-#blinken
-#cantor
-kalgebra
-#kalzium
-#kanagram
-kbruch
-#kgeography
-#khangman
-#kig
-#kiten
-#klettres
-kmplot
-#kstars
-#kqtquickcharts
-#ktouch
-#kturtle
-#kwordquiz
-#marble
-#parley
-#pairs
-#rocs
-#step
-
-# kdewebdev:
-#kdewebdev
-
-# kdeplasma-addons:
-kdeplasma-addons
-
-# polkit-kde:
-polkit-kde-agent-1
-polkit-kde-kcmodules-1
-
-# extragear:
-bluedevil
-#kaudiocreator
-kplayer
-kwebkitpart
-#oxygen-gtk2
-#kdevplatform
-#kdevelop-pg-qt
-#kdevelop
-#kdev-python
-#kdevelop-php
-#kdevelop-php-docs
-#wicd-kde
-libmm-qt
-libnm-qt
-plasma-nm
-skanlite
-kio-mtp
-libktorrent
-ktorrent
-#amarok
-#calligra
-libkscreen
-kscreen
-kdeconnect-kde
-#partitionmanager
-#k3b
-
-# Supported languages in the ISO:
-kde-l10n-da
-kde-l10n-de
-kde-l10n-en_GB
-kde-l10n-es
-kde-l10n-fr
-kde-l10n-ja
-kde-l10n-it
-kde-l10n-nl
-kde-l10n-pt_BR
-kde-l10n-pt_PT
-kde-l10n-ru
diff --git a/pkglists/kde4plasma5.lst b/pkglists/kde4plasma5.lst
deleted file mode 100644
index aee96a9..0000000
--- a/pkglists/kde4plasma5.lst
+++ /dev/null
@@ -1,8 +0,0 @@
-# Slackware's KDE4:
-amarok
-kaudiocreator
-kdev-python
-kplayer
-kwebkitpart
-#oxygen-gtk2
-
diff --git a/pkglists/mate.lst b/pkglists/mate.lst
index 6424c37..b222d19 100644
--- a/pkglists/mate.lst
+++ b/pkglists/mate.lst
@@ -5,6 +5,7 @@ glade
graphviz
gssdp
gtk-engines
+gtk-layer-shell
gtksourceview
gtksourceview3
gupnp
@@ -53,6 +54,7 @@ mate-themes
# MSB EXTRA:
atril
+caja-actions
caja-dropbox
caja-extensions
galculator
diff --git a/pkglists/min.lst b/pkglists/min.lst
index e7d51e6..4f2ced4 100644
--- a/pkglists/min.lst
+++ b/pkglists/min.lst
@@ -13,6 +13,7 @@ bzip2
ca-certificates
coreutils
cpio
+cracklib
cryptsetup
cxxlibs
cyrus-sasl
@@ -26,12 +27,13 @@ dmidecode
dnsmasq
e2fsprogs
ed
-#elvis
+elvis
etc
eudev
file
findutils
floppy
+fuse3
gawk
gc
#ghostscript
@@ -46,7 +48,7 @@ gpgme
gpm
gptfdisk
grep
-groff
+#groff
gzip
haveged
hostname
@@ -61,6 +63,7 @@ kernel-firmware
kernel-headers
kernel-modules
kmod
+krb5
less
libassuan
libedit
@@ -72,21 +75,24 @@ libidn2
libksba
libmnl
libmpc
+libpwquality
libtermcap
libunistring
+libuv
#lilo
links
logrotate
lvm2
lzlib
-man
-man-db
+#man
+#man-db
man-pages
mc
mdadm
mkinitrd
mlocate
mozjs52
+mozjs60
mpfr
mtr
nano
@@ -96,10 +102,12 @@ netkit-ftp
netkit-routed
network-scripts
npth
+openldap
openldap-client
openssh
openssl
openssl10-solibs
+pam
parted
pciutils
perl
@@ -109,6 +117,8 @@ polkit
procps-ng
pth
python
+python2
+python2-module-collection
python3
quota
rsync
diff --git a/pkglists/multilib.lst b/pkglists/multilib.lst
index dfe20e6..2b1ee3e 100644
--- a/pkglists/multilib.lst
+++ b/pkglists/multilib.lst
@@ -17,14 +17,17 @@ glibc-solibs
aaa_elflibs-compat32
attr-compat32
bzip2-compat32
+cracklib-compat32
cups-compat32
dbus-compat32
e2fsprogs-compat32
eudev-compat32
libgudev-compat32
+libpwquality-compat32
lzlib-compat32
openssl10-solibs-compat32
openssl-solibs-compat32
+pam-compat32
plzip-compat32
util-linux-compat32
xz-compat32
@@ -43,6 +46,11 @@ opencl-headers-compat32
# The L/ series:
Mako-compat32
SDL2-compat32
+SDL2_gfx-compat32
+SDL2_image-compat32
+SDL2_mixer-compat32
+SDL2_net-compat32
+SDL2_ttf-compat32
alsa-lib-compat32
alsa-oss-compat32
alsa-plugins-compat32
@@ -50,6 +58,7 @@ at-spi2-atk-compat32
at-spi2-core-compat32
atk-compat32
audiofile-compat32
+brotli-compat32
cairo-compat32
dbus-glib-compat32
elfutils-compat32
@@ -57,6 +66,7 @@ esound-compat32
expat-compat32
ffmpeg-compat32
fftw-compat32
+fluidsynth-compat32
freetype-compat32
fribidi-compat32
gamin-compat32
@@ -79,9 +89,11 @@ gstreamer-compat32
gstreamer0-compat32
harfbuzz-compat32
icu4c-compat32
+isl-compat32
jasper-compat32
json-c-compat32
json-glib-compat32
+keyutils-compat32
lame-compat32
lcms-compat32
lcms2-compat32
@@ -124,6 +136,7 @@ libusb-compat32
libvorbis-compat32
libvpx-compat32
libwebp-compat32
+libxkbcommon-compat32
libxml2-compat32
libxslt-compat32
lmdb-compat32
@@ -131,16 +144,19 @@ lzo-compat32
mozilla-nss-compat32
ncurses-compat32
ocl-icd-compat32
+openal-soft-compat32
openjpeg-compat32
opus-compat32
orc-compat32
pango-compat32
pcre-compat32
pcre2-compat32
+polkit-compat32
popt-compat32
pulseaudio-compat32
python-six-compat32
qt-compat32
+qt5-compat32
readline-compat32
sbc-compat32
sdl-compat32
@@ -152,17 +168,20 @@ startup-notification-compat32
svgalib-compat32
v4l-utils-compat32
wavpack-compat32
+woff2-compat32
zlib-compat32
zstd-compat32
# The N/ series:
curl-compat32
cyrus-sasl-compat32
gnutls-compat32
+krb5-compat32
libgcrypt-compat32
libgpg-error-compat32
libtirpc-compat32
nettle-compat32
openldap-client-compat32
+openldap-compat32
openssl-compat32
p11-kit-compat32
samba-compat32
@@ -221,6 +240,7 @@ libxshmfence-compat32
mesa-compat32
pixman-compat32
vulkan-sdk-compat32
+wayland-compat32
xcb-util-compat32
xorgproto-compat32
# The XAP/ series:
diff --git a/pkglists/noxbase.lst b/pkglists/noxbase.lst
index d6ec902..6a6abdf 100644
--- a/pkglists/noxbase.lst
+++ b/pkglists/noxbase.lst
@@ -1,5 +1,6 @@
ModemManager
NetworkManager
+NetworkManager-openvpn
a52dec
alsa-lib
alsa-oss
@@ -32,6 +33,7 @@ ilmbase
intltool
ipw2100-fw
ipw2200-fw
+isl
iw
js185
lcms2
diff --git a/pkglists/plasma5.lst b/pkglists/plasma5.lst
index f4bafaf..6a691bb 100644
--- a/pkglists/plasma5.lst
+++ b/pkglists/plasma5.lst
@@ -3,6 +3,7 @@
#
# deps:
ConsoleKit2
+LibRaw
OpenAL
PyQt
PyQt5
@@ -20,6 +21,7 @@ drumstick
dvdauthor
elogind
espeak-ng
+exiv2
flite
freecell-solver
frei0r-plugins
@@ -30,6 +32,7 @@ hack-font-ttf
hyphen
id3lib
json-glib
+kdsoap
lensfun
libappindicator
libburn
@@ -39,6 +42,7 @@ libdmtx
libindicator
libinput
libpwquality
+libqalculate
libsass
libwacom
libxkbcommon
@@ -46,7 +50,7 @@ lmdb
mesa
mlt
ninja
-#noto-cjk-font-ttf
+noto-cjk-font-ttf
noto-font-ttf
opencv
pcaudiolib
@@ -65,7 +69,6 @@ qca-qt5
qrencode
qt-gstreamer
qt5
-qt5-speech
qt5-webkit
qtav
rttr
@@ -148,11 +151,13 @@ kapidox
karchive
kauth
kbookmarks
+kcalendarcore
kcmutils
kcodecs
kcompletion
kconfig
kconfigwidgets
+kcontacts
kcoreaddons
kcrash
kdbusaddons
@@ -191,6 +196,7 @@ kparts
kpeople
kplotting
kpty
+kquickcharts
kross
krunner
kservice
@@ -236,9 +242,7 @@ kaddressbook
kalarm
kalarmcal
kblog
-kcalcore
kcalutils
-kcontacts
kdav
kdepim-addons
kdepim-apps-libs
@@ -295,6 +299,7 @@ kscreen2
kscreenlocker
ksshaskpass
ksysguard
+kwallet-pam
kwayland
kwayland-integration
kwin
@@ -321,6 +326,8 @@ xdg-desktop-portal-kde
# plasma-extra:
#kde-wallpapers
+pulseaudio-qt
+kpeoplevcard
kdeconnect-framework
latte-dock
oxygen-fonts
@@ -342,6 +349,7 @@ cervisia
dolphin
dolphin-plugins
dragon
+elisa
ffmpegthumbs
filelight
granatier
@@ -374,6 +382,7 @@ kde-dev-scripts
kde-dev-utils
kde-runtime
kdebugsettings
+kdeconnect-kde
kdeedu-data
kdegraphics-mobipocket
kdegraphics-strigi-analyzer
@@ -489,8 +498,8 @@ zeroconf-ioslave
# applications-extra:
alkimia
-#calligra
-#calligraplan
+calligra
+calligraplan
digikam
falkon
kaudiocreator
@@ -501,6 +510,7 @@ kdevelop
kdevelop-pg-qt
kdevplatform
kdiagram
+kid3
kile
kjots
kmymoney
@@ -508,9 +518,11 @@ kpmcore
krename
krusader
kstars
+ktimetracker
ktorrent
kuser
kwebkitpart
+labplot
libktorrent
partitionmanager
skanlite
diff --git a/pkglists/daw.conf b/pkglists/plasma5alien.conf
index a81a7c2..a81a7c2 100644
--- a/pkglists/daw.conf
+++ b/pkglists/plasma5alien.conf
diff --git a/pkglists/plasma5alien.lst b/pkglists/plasma5alien.lst
new file mode 100644
index 0000000..b6c6cf4
--- /dev/null
+++ b/pkglists/plasma5alien.lst
@@ -0,0 +1,6 @@
+# Alien's packages that enrich the Plasma5 experience:
+NetworkManager-openconnect
+freerdp
+openconnect
+vlc
+
diff --git a/pkglists/x_base.lst b/pkglists/x_base.lst
index 690326d..1606ad6 100644
--- a/pkglists/x_base.lst
+++ b/pkglists/x_base.lst
@@ -18,6 +18,7 @@ bdftopcf
bigreqsproto
bluez
boost
+brotli
cairo
cdrtools
compositeproto
@@ -71,6 +72,7 @@ glproto
glu
gmime
gnome-keyring
+gnome-themes-extra
gnome-themes-standard
gobject-introspection
graphite2
@@ -101,6 +103,7 @@ json-c
json-glib
kbproto
keybinder
+keybinder3
lame
lcms
libFS
@@ -168,6 +171,7 @@ libwacom
libwebp
libwmf
libwnck
+libxkbcommon
libxkbfile
libxklavier
libxshmfence
@@ -183,6 +187,7 @@ mypaint-brushes
neon
net-snmp
ocl-icd
+openal-soft
opus
pamixer
pango
@@ -196,6 +201,7 @@ pycairo
pygobject
pygobject3
pygtk
+python-distro
randrproto
recordproto
rendercheck
@@ -223,6 +229,7 @@ ttf-indic-fonts
videoproto
viewres
vte
+wayland
wqy-zenhei-font-ttf
x11-skel
x11perf
@@ -318,6 +325,7 @@ xset
xsetroot
xsm
xstdcmap
+xterm
xtrans
xvidtune
xvinfo
diff --git a/pkglists/xapbase.lst b/pkglists/xapbase.lst
index 33ec7ef..37069e5 100644
--- a/pkglists/xapbase.lst
+++ b/pkglists/xapbase.lst
@@ -3,14 +3,15 @@ LibRaw
MPlayer
aspell
atkmm
-audacious
-audacious-plugins
+# requires qt5 now:
+#audacious
+#audacious-plugins
blueman
cairomm
fltk
geeqie
#gftp
-gimp
+#gimp
gkrellm
glibmm
#gnuchess
@@ -20,8 +21,10 @@ gv
hexchat
imagemagick
jansson
+libcue
+libnma
libsigc++
-lftp
+#lftp
mozilla-firefox
#mozilla-thunderbird
network-manager-applet
@@ -32,13 +35,13 @@ pavucontrol
rdesktop
rxvt
rxvt-unicode
-sane
+#sane
seamonkey-solibs
tigervnc
-vim
-vim-gvim
+#vim
+#vim-gvim
x11-ssh-askpass
-x3270
+#x3270
#xaos
#xfractint
xgames
@@ -47,4 +50,4 @@ xgames
#xpaint
# Now needs qt:
#xpdf
-xsane
+#xsane
diff --git a/pkglists/xfcebase.lst b/pkglists/xfcebase.lst
index 3e49027..3674c34 100644
--- a/pkglists/xfcebase.lst
+++ b/pkglists/xfcebase.lst
@@ -5,6 +5,7 @@ gtk-xfce-engine
libxfce4ui
libxfce4util
#orage
+thunar
thunar-volman
tumbler
xfce4-appfinder
diff --git a/pkglists/z00_slk4daw.lst b/pkglists/z00_slk4daw.lst
new file mode 100644
index 0000000..9496ea4
--- /dev/null
+++ b/pkglists/z00_slk4daw.lst
@@ -0,0 +1,50 @@
+PyQt5
+QScintilla
+cdparanoia
+djvulibre
+font-bh-ttf
+font-bitstream-type1
+font-xfree86-type1
+gcc-g++
+gcc-gfortran
+ghostscript
+ghostscript-fonts-std
+gimp
+groff
+gtkmm2
+liberation-fonts-ttf
+libXcm
+libid3tag
+liboggz
+libva-utils
+man
+man-db
+opus-tools
+opusfile
+pidgin
+python-six
+pyxdg
+qt5
+qt5-webkit
+raptor2
+sane
+sazanami-fonts-ttf
+sip
+taglib
+taglib-extras
+#tibmachuni-font-ttf
+vim
+vim-gvim
+vulkan-sdk
+woff2
+xcb-util-cursor
+xcb-util-errors
+xcb-util-image
+xcb-util-renderutil
+xcb-util-wm
+xcm
+xconsole
+xdg-user-dirs
+xedit
+xpdf
+xsane
diff --git a/pkglists/z01_plasma5base.conf b/pkglists/z01_plasma5base.conf
new file mode 100644
index 0000000..1ab1a31
--- /dev/null
+++ b/pkglists/z01_plasma5base.conf
@@ -0,0 +1,15 @@
+# If 'SL_REPO_URL' is a rsync:// URL and 'SL_REPO' points to a non-existent
+# or empty directory, then the content of 'SL_REPO_URL' will be rsync-ed
+# to the local directory 'SL_REPO'.
+
+VARIANT=latest
+
+SL_REPO_URL="rsync://slackware.uk/people/alien-kde/${SL_VERSION}/${VARIANT}/${SL_ARCH}"
+SL_REPO="/var/cache/liveslak/ktown/${SL_VERSION}/${VARIANT}/${SL_ARCH}"
+
+# Package root directory:
+SL_PKGROOT=${SL_REPO}
+
+# Patches root directory:
+SL_PATCHROOT=""
+
diff --git a/pkglists/z01_plasma5base.lst b/pkglists/z01_plasma5base.lst
new file mode 100644
index 0000000..058acf6
--- /dev/null
+++ b/pkglists/z01_plasma5base.lst
@@ -0,0 +1,452 @@
+# Create a rough version of this file using:
+# cd current/latest/x86_64 ; find -name *.t?z |rev |cut -d- -f4- |rev |sort
+# --------------------------------------------------------------------------
+# This file tries to define a lean 'base' setup of Plasma5
+#
+# deps:
+LibRaw
+accountsservice
+cfitsio
+cryfs
+cryptopp
+ddcutil
+dotconf
+#drumstick
+#dvdauthor
+elogind
+#espeak-ng
+exiv2
+#flite
+#freecell-solver
+#frei0r-plugins
+gpgme
+grantlee
+grantlee-qt4
+hack-font-ttf
+#hyphen
+id3lib
+json-glib
+kdsoap
+#lensfun
+libappindicator
+libburn
+libdbusmenu-gtk
+libdbusmenu-qt5
+libdmtx
+libindicator
+#libqalculate
+#libsass
+lmdb
+#mlt
+#noto-cjk-font-ttf
+noto-font-ttf
+#opencv
+#pcaudiolib
+perl-path-tiny
+perl-template-toolkit
+phonon
+phonon-gstreamer
+phonon-vlc
+polkit-qt5-1
+poppler
+python3-random2
+#pyxdg
+#quazip
+qca-qt5
+qrencode
+qt-gstreamer
+#qtav
+#rttr
+#sassc
+sni-qt
+#speech-dispatcher
+#vid.stab
+
+# frameworks:
+attica-framework
+baloo5
+bluez-qt
+breeze-icons
+extra-cmake-modules
+frameworkintegration
+kactivities-framework
+kactivities-stats
+kapidox
+karchive
+kauth
+kbookmarks
+kcalendarcore
+kcmutils
+kcodecs
+kcompletion
+kconfig
+kconfigwidgets
+kcontacts
+kcoreaddons
+kcrash
+kdbusaddons
+kdeclarative
+kded
+kdelibs4support
+kdesignerplugin
+kdesu
+kdewebkit
+kdnssd
+kdoctools
+kemoticons
+kfilemetadata5
+kglobalaccel
+kguiaddons
+kholidays
+khtml
+ki18n
+kiconthemes
+kidletime
+kimageformats
+kinit
+kio
+kirigami2
+kitemmodels
+kitemviews
+kjobwidgets
+kjs
+kjsembed
+kmediaplayer
+knewstuff
+knotifications
+knotifyconfig
+kpackage
+kparts
+kpeople
+kplotting
+kpty
+kquickcharts
+kross
+krunner
+kservice
+ktexteditor
+ktextwidgets
+kunitconversion
+kwallet
+kwidgetsaddons
+kwindowsystem
+kxmlgui
+kxmlrpcclient
+modemmanager-qt
+networkmanager-qt
+oxygen-icons5
+plasma-framework
+prison
+purpose
+qqc2-desktop-style
+solid
+sonnet
+syndication
+syntax-highlighting
+threadweaver
+
+# kdepim:
+#akonadi
+#akonadi-calendar
+#akonadi-calendar-tools
+#akonadi-contacts
+#akonadi-import-wizard
+#akonadi-mime
+#akonadi-notes
+#akonadi-search
+#akonadiconsole
+#akregator
+#blogilo
+#calendarsupport
+#eventviews
+#grantlee-editor
+#grantleetheme
+#incidenceeditor
+#kaddressbook
+#kalarm
+#kalarmcal
+#kblog
+#kcalutils
+#kdav
+#kdepim-addons
+#kdepim-apps-libs
+#kdepim-runtime
+#kidentitymanagement
+#kimap
+#kitinerary
+#kldap
+#kleopatra
+#kmail
+#kmail-account-wizard
+#kmailtransport
+#kmbox
+#kmime
+#knotes
+#kontact
+#kontactinterface
+#korganizer
+#kpimtextedit
+#kpkpass
+#ksmtp
+#ktnef
+#libgravatar
+#libkdepim
+#libkgapi
+#libkleo
+#libksieve
+#mailcommon
+#mailimporter
+#mbox-importer
+#messagelib
+#pim-data-exporter
+#pim-sieve-editor
+#pim-storage-service-manager
+#pimcommon
+
+# plasma:
+bluedevil
+breeze
+breeze-gtk
+breeze-grub
+drkonqi
+kactivitymanagerd
+kde-cli-tools
+kde-gtk-config
+kdecoration
+kdeplasma-addons
+kgamma5
+khelpcenter
+khotkeys
+kinfocenter
+kmenuedit
+kscreen2
+kscreenlocker
+ksshaskpass
+ksysguard
+kwallet-pam
+kwayland
+kwayland-integration
+kwin
+kwrited
+libkscreen2
+libksysguard
+milou
+oxygen
+plasma-browser-integration
+plasma-desktop
+plasma-integration
+plasma-mediacenter
+plasma-pa
+plasma-sdk
+plasma-vault
+plasma-workspace-wallpapers
+plasma5-nm
+polkit-kde-framework
+powerdevil
+sddm-kcm
+systemsettings
+user-manager
+xdg-desktop-portal-kde
+
+# plasma-extra:
+#kde-wallpapers
+pulseaudio-qt
+#kpeoplevcard
+latte-dock
+#oxygen-fonts
+sddm-qt5
+wacomtablet
+
+# applications:
+#analitza
+ark
+#artikulate
+audiocd-kio
+baloo5-widgets
+#blinken
+#bomber
+#bovo
+#cantor
+#cervisia
+dolphin
+dolphin-plugins
+#dragon
+elisa
+ffmpegthumbs
+#filelight
+#granatier
+gwenview
+#juk
+k3b
+#kaccessible
+#kajongg
+#kalgebra
+#kalzium
+kamera
+kamoso
+#kanagram
+#kapman
+#kapptemplate
+kate
+#katomic
+#kbackup
+#kblackbox
+#kblocks
+#kbounce
+#kbreakout
+#kbruch
+#kcachegrind
+kcalc
+kcharselect
+kcolorchooser
+kcron
+#kde-dev-scripts
+#kde-dev-utils
+kde-runtime
+#kdebugsettings
+kdeconnect-kde
+#kdeedu-data
+kdegraphics-mobipocket
+kdegraphics-strigi-analyzer
+kdegraphics-thumbnailers
+kdenetwork-filesharing
+kdenetwork-strigi-analyzers
+#kdenlive
+#kdesdk-kioslaves
+#kdesdk-strigi-analyzers
+#kdesdk-thumbnailers
+kdf
+kdialog
+#kdiamond
+keditbookmarks
+#kfilereplace
+kfind
+#kfloppy
+#kfourinline
+#kgeography
+#kget
+#kgoldrunner
+kgpg
+#khangman
+#kig
+#kigo
+#killbots
+kimagemapeditor
+kio-extras
+kirigami-gallery
+#kiriki
+#kiten
+#kjumpingcube
+#klettres
+#klickety
+#klines
+#klinkstatus
+kmag
+#kmahjongg
+#kmines
+kmix
+kmousetool
+#kmouth
+#kmplot
+#knavalbattle
+#knetwalk
+#knights
+#kolf
+#kollision
+#kolourpaint
+#kommander
+kompare
+#konqueror
+#konquest
+konsole
+#kopete
+#kpat
+kppp
+#kqtquickcharts
+krdc
+#kremotecontrol
+#kreversi
+krfb
+#kruler
+ksaneplugin
+#kshisen
+#ksirk
+#ksnakeduel
+#kspaceduel
+#ksquares
+#ksudoku
+ksystemlog
+#kteatime
+#ktimer
+#ktouch
+#ktuberling
+#kturtle
+#kubrick
+kwalletmanager
+kwave
+#kwordquiz
+libkcddb
+libkcompactdisc
+libkdcraw
+#libkdeedu
+#libkdegames
+#libkeduvocdocument
+libkexiv2
+#libkface
+#libkgeomap
+#libkipi
+#libkmahjongg
+libkomparediff2
+libksane
+lokalize
+#lskat
+#marble
+#minuet
+mplayerthumbs
+okteta
+okular
+#palapeli
+#parley
+#picmi
+#poxml
+print-manager
+#rocs
+spectacle
+#step
+#svgpart
+#sweeper
+#umbrello
+zeroconf-ioslave
+
+# applications-extra:
+#alkimia
+#calligra
+#calligraplan
+#digikam
+falkon
+#kaudiocreator
+#krita
+#kdev-php
+#kdev-python
+#kdevelop
+#kdevelop-pg-qt
+#kdevplatform
+#kdiagram
+#kid3
+#kile
+#kjots
+#kmymoney
+#kpmcore
+#krename
+#krusader
+#kstars
+#ktimetracker
+#ktorrent
+#kuser
+#kwebkitpart
+libktorrent
+#partitionmanager
+skanlite
+
+# Issues with 3 files in the squashfs module missing the last character:
+plasma-workspace
diff --git a/pkglists/z02_alien4daw.conf b/pkglists/z02_alien4daw.conf
new file mode 100644
index 0000000..a81a7c2
--- /dev/null
+++ b/pkglists/z02_alien4daw.conf
@@ -0,0 +1,12 @@
+# If 'SL_REPO_URL' is a rsync:// URL and 'SL_REPO' points to a non-existent
+# or empty directory, then the content of 'SL_REPO_URL' will be rsync-ed
+# to the local directory 'SL_REPO'.
+SL_REPO_URL="rsync://slackware.uk/people/alien/sbrepos/${SL_VERSION}/${SL_ARCH}"
+SL_REPO="/var/cache/liveslak/sbrepos/${SL_VERSION}/${SL_ARCH}"
+
+# Package root directory:
+SL_PKGROOT=${SL_REPO}
+
+# Patches root directory:
+SL_PATCHROOT=""
+
diff --git a/pkglists/z02_alien4daw.lst b/pkglists/z02_alien4daw.lst
new file mode 100644
index 0000000..e923471
--- /dev/null
+++ b/pkglists/z02_alien4daw.lst
@@ -0,0 +1,5 @@
+dropbox-client
+gst-plugins-ffmpeg0
+openjdk
+unrar
+vlc
diff --git a/pkglists/z03_daw.conf b/pkglists/z03_daw.conf
new file mode 100644
index 0000000..a81a7c2
--- /dev/null
+++ b/pkglists/z03_daw.conf
@@ -0,0 +1,12 @@
+# If 'SL_REPO_URL' is a rsync:// URL and 'SL_REPO' points to a non-existent
+# or empty directory, then the content of 'SL_REPO_URL' will be rsync-ed
+# to the local directory 'SL_REPO'.
+SL_REPO_URL="rsync://slackware.uk/people/alien/sbrepos/${SL_VERSION}/${SL_ARCH}"
+SL_REPO="/var/cache/liveslak/sbrepos/${SL_VERSION}/${SL_ARCH}"
+
+# Package root directory:
+SL_PKGROOT=${SL_REPO}
+
+# Patches root directory:
+SL_PATCHROOT=""
+
diff --git a/pkglists/daw.lst b/pkglists/z03_daw.lst
index 411d2d1..40d1074 100644
--- a/pkglists/daw.lst
+++ b/pkglists/z03_daw.lst
@@ -1,24 +1,33 @@
# A collection of packages for the digital musician.
+OpenBLAS
a2jmidid
alsa-plugins-jack
amsynth
ardour
aubio
+audacity
avldrums.lv2
calf
+capnproto
+cecilia5
cuetools
-drumkit
drumstick
+dssi
eq10q
helm
+hydrogen
jack2
ladspa_sdk
lash
libconfig
+libfishsound
+libgig
liblo
liblrdf
+liblscp
libmpdclient
lilv
+linuxsampler
lsp-plugins
lv2
mac
@@ -29,11 +38,16 @@ ntk
portaudio
portmidi
pulseaudio-jack
+python-numpy
+python-pathlib2
+python-pyo
qjackctl
+qsampler
qsynth
rubberband
serd
shntool
+sonic-visualiser
sord
sratom
suil
@@ -42,5 +56,8 @@ vamp-aubio-plugins
vamp-plugin-sdk
vmpk
wxGTK3
+wxpython
yaml-cpp
-zynaddsubfx
+#zynaddsubfx
+zyn-fusion
+
diff --git a/setup2hd.tpl b/setup2hd.tpl
index eb076a3..4bc48bb 100755
--- a/setup2hd.tpl
+++ b/setup2hd.tpl
@@ -24,9 +24,13 @@
#
# As always, bug reports, suggestions, etc: volkerdi@slackware.com
#
-# Modifications 2016, 2017 by Eric Hameleers <alien@slackware.com>
+# Modifications 2016, 2017, 2019, 2020 by Eric Hameleers <alien@slackware.com>
#
+# -------------------------------------------- #
+# Slackware Live Edition - check the media #
+# -------------------------------------------- #
+
# The Slackware setup depends on english language settings because it
# parses program output like that of "fdisk -l". So, we need to override
# the Live user's local language settings here:
@@ -34,17 +38,25 @@ export LANG=C
export LC_ALL=C
if [ ! -d /mnt/livemedia/@LIVEMAIN@/system ]; then
- dialog --title "LIVE MEDIA NOT ACCESSIBLE" --msgbox "\
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "LIVE MEDIA NOT ACCESSIBLE" --msgbox "\
\n\
Before you can install software, complete the following tasks:\n\
\n\
1. Mount your Live media partition on /mnt/livemedia." 16 68
exit 1
fi
+
+# ------------------------------------------------ #
+# Slackware Live Edition - end check the media #
+# ------------------------------------------------ #
+
TMP=/var/log/setup/tmp
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
+# Wipe the probe md5sum to force rescanning partitions if setup is restarted:
+rm -f $TMP/SeTpartition.md5
rm -f $TMP/SeT*
# If a keymap was set up, restore that data:
if [ -r $TMP/Pkeymap ]; then
@@ -54,43 +66,80 @@ echo "on" > $TMP/SeTcolor # turn on color menus
PATH="$PATH:/usr/share/@LIVEMAIN@"
export PATH;
export COLOR=on
-#echo
-#echo
-#echo "Probing disk partitions. (Hint: if your ATAPI CD-ROM causes timeouts"
-#echo "during the probe process, try hitting the eject button)"
-#echo
-#sleep 5
-#
+dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" --infobox "\n
+Scanning your system for partition information...\n
+\n" 5 55
+# In case the machine is full of fast SSDs:
+sleep 1
# Before probing, activate any LVM partitions
# that may exist from before the boot:
vgchange -ay 1> /dev/null 2> /dev/null
if probe -l 2> /dev/null | grep -E 'Linux$' 1> /dev/null 2> /dev/null ; then
+ RUNPART=no
probe -l 2> /dev/null | grep -E 'Linux$' | sort 1> $TMP/SeTplist 2> /dev/null
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "LINUX PARTITIONS DETECTED" \
+ --yes-label "Continue" --no-label "Skip" --defaultno \
+ --yesno "Setup detected partitions on this machine of type Linux.\n\
+You probably created these before running '$(basename $0)'. Great!\n\n\
+If you would like to re-consider your partitioning scheme, \
+you can click 'Continue' now to start 'cfdisk' (MBR disk) \
+and/or 'cgdisk' (GPT disk) for all your hard drives.\n\
+Otherwise, select 'Skip' to skip disk partitioning and go on with the setup." \
+12 64
+ if [ $? -eq 0 ]; then
+ RUNPART=yes
+ fi
else
- dialog --title "NO LINUX PARTITIONS DETECTED" \
- --msgbox "There don't seem to be any partitions on this machine of type \
+ RUNPART=yes
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "NO LINUX PARTITIONS DETECTED" \
+ --msgbox "There don't seem to be any partitions on this machine of type \
Linux. You'll need to make at least one of these to install Linux. \
-To do this, you'll need to leave 'setup', and make the partitions using \
-'cfdisk' (MBR partitions) or 'cgdisk' (GPT partitions). For more \
-information, read the 'setup' help file from the next menu." 10 64
+To do this, you'll get a chance to make these partitions now using \
+'cfdisk' (MBR partitions) or 'cgdisk' (GPT partitions)." 10 64
fi
if [ -d /sys/firmware/efi ]; then
if ! probe -l 2> /dev/null | grep "EFI System Partition" 1> /dev/null 2> /dev/null ; then
- dialog --title "NO EFI SYSTEM PARTITION DETECTED" \
- --msgbox "This machine appears to be using EFI/UEFI, but no EFI System \
+ RUNPART=yes
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "NO EFI SYSTEM PARTITION DETECTED" \
+ --msgbox "This machine appears to be using EFI/UEFI, but no EFI System \
Partition was found. You'll need to make an EFI System Partition in order \
-to boot from the hard drive. To do this, leave 'setup', and \
-use 'cgdisk' to make a 100MB partition of type EF00. For more information, \
-read the 'setup' help file from the next menu." 10 64
+to boot from the hard drive. In the next step, using cfdisk/cgdisk, \
+make a 100MB partition of type EF00." 10 64
fi
fi
+if [ "$RUNPART" = "yes" ]; then
+
+ # ------------------------------------------------------- #
+ # Slackware Live Edition - find/partition the disk(s) #
+ # ------------------------------------------------------- #
+
+ SeTudiskpart
+ if [ ! $? = 0 ]; then
+ # No disks found or user canceled, means: abort.
+ exit 1
+ fi
+
+ # ----------------------------------------------------------- #
+ # Slackware Live Edition - end find/partition the disk(s) #
+ # ----------------------------------------------------------- #
+
+fi # End RUNPART = yes
+
T_PX="/setup2hd"
mkdir -p ${T_PX}
echo "$T_PX" > $TMP/SeTT_PX
ROOT_DEVICE="`mount | grep "on / " | cut -f 1 -d ' '`"
echo "$ROOT_DEVICE" > $TMP/SeTrootdev
-if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then # clear source
- umount /var/log/mount # location
+if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then # clear source location:
+ # In case of bind mounts, try to unmount them first:
+ umount /var/log/mount/dev 2> /dev/null
+ umount /var/log/mount/proc 2> /dev/null
+ umount /var/log/mount/sys 2> /dev/null
+ # Unmount target partition:
+ umount /var/log/mount
fi
# Anything mounted on /var/log/mount now is a fatal error:
if mount | grep /var/log/mount 1> /dev/null 2> /dev/null ; then
@@ -111,8 +160,8 @@ mkdir /var/log/mount 2> /dev/null
while [ 0 ]; do
dialog --title "@CDISTRO@ Linux Setup (version @SL_VERSION@)" \
---menu \
-"Welcome to @CDISTRO@ Linux Setup (Live Edition).\n\
+ --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --menu "Welcome to @CDISTRO@ Linux Setup (Live Edition).\n\
Select an option below using the UP/DOWN keys and SPACE or ENTER.\n\
Alternate keys may also be used: '+', '-', and TAB." 18 72 9 \
"HELP" "Read the @CDISTRO@ Setup HELP file" \
@@ -168,7 +217,8 @@ Alternate keys may also be used: '+', '-', and TAB." 18 72 9 \
if [ "$MAINSELECT" = "INSTALL" ]; then
if [ ! -r $TMP/SeTnative ]; then
- dialog --title "CANNOT INSTALL SOFTWARE YET" --msgbox "\
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "CANNOT INSTALL SOFTWARE YET" --msgbox "\
\n\
Before you can install software, complete the following tasks:\n\
\n\
@@ -186,35 +236,40 @@ Press ENTER to return to the main menu." 16 68
# --------------------------------------------- #
# Buy us some time while we are calculating disk usage:
- dialog --title "WELCOME TO @UDISTRO@ LIVE (@LIVEDE@)" --infobox \
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "WELCOME TO @UDISTRO@ LIVE (@LIVEDE@)" --infobox \
"\nCalculating disk usage, please be patient ..." 5 65
ACT_MODS=$(ls -rt --indicator-style=none /mnt/live/modules/ |wc -l)
TOT_MODS=$(find /mnt/livemedia/@LIVEMAIN@/ -type f -name "*.sxz" |wc -l)
- DU_LIVE=$(du -s /mnt/@LIVEMAIN@fs/ |tr -s '\t' ' ' |cut -f1 -d' ')
+ DU_LIVE=$(du -s /mnt/live/modules/ 2>/dev/null |tr -s '\t' ' ' |cut -f1 -d' ')
PARTFREE=$(df -P -BM $T_PX |tail -1 |tr -s '\t' ' ' |cut -d' ' -f4)
PARTFREE=${PARTFREE%M}
# Warn when it looks we have insufficient room:
if [ $PARTFREE -lt $(($DU_LIVE/1024)) ]; then
-+ dialog --title "WELCOME TO @UDISTRO@ LIVE (@LIVEDE@)" --yesno \
- "\nAvailable space: $PARTFREE MB\nRequired space: $(($DU_LIVE/1024))\nIt looks like your hard drive partition is too small.\nDo you want to continue?" 10 65
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "WELCOME TO @UDISTRO@ LIVE (@LIVEDE@)" --yesno \
+ "\nAvailable space: $PARTFREE MB\nRequired space: $(($DU_LIVE/1024))\nIt looks like your hard drive partition is too small.\nDo you want to continue?" 10 65
retval=$?
if [ $retval = 1 ]; then
umount $T_PX
exit 1
fi
else
- dialog --title "WELCOME TO @UDISTRO@ LIVE (@LIVEDE@)" --msgbox \
- "\nAvailable space: $PARTFREE MB\nRequired space: $(($DU_LIVE/1024)) MB\nIt looks like you're good to go!" 10 65
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "WELCOME TO @UDISTRO@ LIVE (@LIVEDE@)" --msgbox \
+ "\nAvailable space: $PARTFREE MB\nRequired space: $(($DU_LIVE/1024)) MB\nIt looks like you're good to go!" 10 65
fi
(
# Install the Live OS by rsyncing the readonly overlay to the harddisk:
- rsync -Hav --progress --no-inc-recursive /mnt/@LIVEMAIN@fs/ $T_PX/ \
+ rsync -HAXav --whole-file --checksum-choice=none --inplace --progress --no-inc-recursive \
+ /mnt/@LIVEMAIN@fs/ $T_PX/ \
| awk '{ if (index($0, "to-chk=") > 0) { split($0, pieces, "to-chk="); split(pieces[2], term, ")"); split(term[1], division, "/"); print (1-(division[1]/division[2]))*100 }; fflush(); }' \
| sed --unbuffered 's/^\([0-9]*\).*/\1/'
- ) | dialog --title "INSTALLING @UDISTRO@ LIVE (@LIVEDE@) TO DISK" --gauge \
+ ) | dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "INSTALLING @UDISTRO@ LIVE (@LIVEDE@) TO DISK" --gauge \
"\nProcessing ${TOT_MODS} @CDISTRO@ Live modules ($(( $DU_LIVE/1024 )) MB)" 8 65
#
@@ -226,8 +281,10 @@ Press ENTER to return to the main menu." 16 68
live_post_install () {
# Re-use some of the custom configuration from 0099-@DISTRO@_zzzconf-*.sxz
# (some of these may not be present but the command will not fail):
- dialog --title "POST-INSTALL @UDISTRO@ LIVE (@LIVEDE@) DATA" --infobox \
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "POST-INSTALL @UDISTRO@ LIVE (@LIVEDE@) DATA" --infobox \
"\nCopying Live modifications to hard disk ..." 5 65
+ sleep 1 # It's too fast...
# Do not overwrite a custom keymap:
if [ ! -f $T_PX/etc/rc.d/rc.keymap ]; then
unsquashfs -f -dest $T_PX \
@@ -239,6 +296,7 @@ Press ENTER to return to the main menu." 16 68
/etc/X11/xdm/liveslak-xdm \
/etc/X11/xorg.conf.d/30-keyboard.conf \
/etc/inittab \
+ /etc/skel \
/etc/profile.d/lang.sh \
/etc/rc.d/rc.font \
/etc/rc.d/rc.gpm \
@@ -249,6 +307,48 @@ Press ENTER to return to the main menu." 16 68
# Remove the marker file from the filesystem root:
rm -f ${T_PX}/@MARKER@
+ # ---------------------
+ # Set up a user account,
+ dialog --title "@UDISTRO@ (@LIVEDE@) USER CREATION" \
+ --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --msgbox "You will first get the chance to create your user account, \
+and set its password.\nYour account will be added to sudoers and suauth.\n\n\
+Next you will be asked to set root's password." 9 55
+ # This will set UFULLNAME, UACCOUNT and USHELL variables:
+ SeTuacct 2>&1 1> $TMP/tempresult
+ if [ $? = 0 ]; then
+ # User filled out the form, so let's get the results for
+ # UFULLNAME, UACCOUNT and USHELL:
+ source $TMP/tempresult
+ rm -f $TMP/tempresult
+ # Set a password for the new account:
+ UPASS=$(SeTupass $UACCOUNT)
+ # Create the account and set the password:
+ chroot ${T_PX} /usr/sbin/useradd -c "$UFULLNAME" -g users -G wheel,audio,cdrom,floppy,plugdev,video,power,netdev,lp,scanner,kmem,dialout,games,disk,input -u 1000 -d /home/${UACCOUNT} -m -s ${USHELL} ${UACCOUNT}
+ echo "${UACCOUNT}:${UPASS}" | chroot ${T_PX} /usr/sbin/chpasswd
+ unset UPASS
+
+ # Configure suauth:
+ cat <<EOT >${T_PX}/etc/suauth
+root:${UACCOUNT}:OWNPASS
+root:ALL EXCEPT GROUP wheel:DENY
+EOT
+ chmod 600 ${LIVE_ROOTDIR}/etc/suauth
+
+ # Configure sudoers:
+ chmod 640 ${T_PX}/etc/sudoers
+ sed -i ${T_PX}/etc/sudoers -e 's/# *\(%wheel\sALL=(ALL)\sALL\)/\1/'
+ chmod 440 ${T_PX}/etc/sudoers
+ fi # End user creation
+ # ---------------------------
+
+ if [ "$(cat $T_PX/etc/shadow | grep 'root:' | cut -f 2 -d :)" = "" ]; then
+ # There is no root password yet:
+ UPASS=$(SeTupass root)
+ echo "root:${UPASS}" | chroot ${T_PX} /usr/sbin/chpasswd
+ unset UPASS
+ fi
+
cat << EOF > $TMP/tempmsg
@CDISTRO@ Live Edition (@LIVEDE@) has been installed to your hard drive!
@@ -262,12 +362,14 @@ Press ENTER to return to the main menu." 16 68
# unsquashfs -f -dest $T_PX /mnt/livemedia/@LIVEMAIN@/addons/mymodule.sxz
EOF
- dialog --title "POST INSTALL HINTS AND TIPS" --msgbox "`cat $TMP/tempmsg`" \
+ dialog --backtitle "@CDISTRO@ Linux Setup (Live Edition)" \
+ --title "POST INSTALL HINTS AND TIPS" --msgbox "`cat $TMP/tempmsg`" \
20 65
rm $TMP/tempmsg
MAINSELECT="CONFIGURE"
- }
+ } # END live_post_install() function
+
if [ -f /usr/share/@LIVEMAIN@/setup2hd.@DISTRO@ ]; then
# If the setup2hd post-configuration file exists, source it.
@@ -293,6 +395,10 @@ EOF
if [ -f /usr/sbin/eliloconfig -a -f $T_PX/usr/sbin/eliloconfig ]; then
cat /usr/sbin/eliloconfig > $T_PX/usr/sbin/eliloconfig
fi
+ # Make bind mounts for /dev, /proc, and /sys:
+ mount -o bind /dev $T_PX/dev 2> /dev/null
+ mount -o bind /proc $T_PX/proc 2> /dev/null
+ mount -o bind /sys $T_PX/sys 2> /dev/null
SeTconfig
REPLACE_FSTAB=Y
if [ -r $TMP/SeTnative ]; then
diff --git a/upslak.sh b/upslak.sh
index 92f549b..4af5ae5 100644
--- a/upslak.sh
+++ b/upslak.sh
@@ -134,7 +134,7 @@ COMPR="xz --check=crc32"
KMODS=${KMODS:-"squashfs:overlay:loop:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:mmc-core:mmc-block:sdhci:sdhci-pci:sdhci-acpi:usb-storage:hid:usbhid:i2c-hid:hid-generic:hid-apple:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:hid_multitouch:jbd:mbcache:ext3:ext4:isofs:fat:nls_cp437:nls_iso8859-1:msdos:vfat:ntfs"}
# Network kernel modules to include for NFS root support:
-NETMODS="kernel/drivers/net"
+NETMODS="kernel/drivers/net kernel/drivers/virtio"
# Network kernel modules to exclude from above list:
NETEXCL="appletalk arcnet bonding can dummy.ko hamradio hippi ifb.ko irda macvlan.ko macvtap.ko pcmcia sb1000.ko team tokenring tun.ko usb veth.ko wan wimax wireless xen-netback.ko"
@@ -329,25 +329,27 @@ collect_kmods() {
# Do we have to add network support?
if [ $NETSUPPORT -eq 1 ]; then
# The initrd already contains dhcpcd so we just need to add kmods:
- cd ${KMODDIR}
- mkdir -p ${IMGDIR}/lib/modules/${KVER}
- cp -a --parents ${NETMODS} ${IMGDIR}/lib/modules/${KVER}/
- cd - 1>/dev/null
- # Prune the ones we do not need:
- for KNETRM in ${NETEXCL} ; do
- find ${IMGDIR}/lib/modules/${KVER}/${NETMODS} \
- -name $KNETRM -depth -exec rm -rf {} \;
- done
- # Add any dependency modules:
- for MODULE in $(find ${IMGDIR}/lib/modules/${KVER}/${NETMODS} -type f -exec basename {} .ko \;) ; do
- modprobe --dirname ${KMODDIR%%/lib/modules/${KVER}} --set-version $KVER --show-depends --ignore-install $MODULE 2>/dev/null |grep "^insmod " |cut -f 2 -d ' ' |while read SRCMOD; do
- if [ "$(basename $SRCMOD .ko)" != "$MODULE" ]; then
- cd ${KMODDIR}
- # Need to strip ${KMODDIR} from the start of ${SRCMOD}:
- cp -a --parents $(echo $SRCMOD |sed 's|'${KMODDIR}'/|./|' ) \
- ${IMGDIR}/lib/modules/${KVER}/
- cd - 1>/dev/null
- fi
+ for NETMODPATH in ${NETMODS} ; do
+ cd ${KMODDIR}
+ mkdir -p ${IMGDIR}/lib/modules/${KVER}
+ cp -a --parents ${NETMODPATH} ${IMGDIR}/lib/modules/${KVER}/
+ cd - 1>/dev/null
+ # Prune the ones we do not need:
+ for KNETRM in ${NETEXCL} ; do
+ find ${IMGDIR}/lib/modules/${KVER}/${NETMODPATH} \
+ -name $KNETRM -depth -exec rm -rf {} \;
+ done
+ # Add any dependency modules:
+ for MODULE in $(find ${IMGDIR}/lib/modules/${KVER}/${NETMODPATH} -type f -exec basename {} .ko \;) ; do
+ modprobe --dirname ${KMODDIR%%/lib/modules/${KVER}} --set-version $KVER --show-depends --ignore-install $MODULE 2>/dev/null |grep "^insmod " |cut -f 2 -d ' ' |while read SRCMOD; do
+ if [ "$(basename $SRCMOD .ko)" != "$MODULE" ]; then
+ cd ${KMODDIR}
+ # Need to strip ${KMODDIR} from the start of ${SRCMOD}:
+ cp -a --parents $(echo $SRCMOD |sed 's|'${KMODDIR}'/|./|' ) \
+ ${IMGDIR}/lib/modules/${KVER}/
+ cd - 1>/dev/null
+ fi
+ done
done
done
fi
@@ -409,7 +411,7 @@ extract_initrd() {
cd ${IMGDIR}
uncompressfs ${IMGFILE} \
- | cpio -i -d -H newc --no-absolute-filenames
+ | cpio -i -d -m -H newc
} # End of extract_initrd()
# Modify the extracted initrd and re-pack it: