summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.txt89
-rw-r--r--iso2usb.sh142
-rw-r--r--languages1
-rwxr-xr-xliveinit156
-rw-r--r--make_slackware_live.conf3
-rwxr-xr-xmake_slackware_live.sh364
-rwxr-xr-xmakemod21
-rw-r--r--pkglists/alien.lst45
-rw-r--r--pkglists/kde4plasma5.lst3
-rw-r--r--pkglists/lxqt.conf12
-rw-r--r--pkglists/lxqt.lst33
-rw-r--r--pkglists/lxqtdeps.conf12
-rw-r--r--pkglists/lxqtdeps.lst88
-rw-r--r--pkglists/mate.conf8
-rw-r--r--pkglists/mate.lst6
-rw-r--r--pkglists/min.lst2
-rw-r--r--pkglists/multilib.conf12
-rw-r--r--pkglists/multilib.lst177
-rw-r--r--pkglists/plasma5.conf7
-rw-r--r--pkglists/plasma5.lst364
-rw-r--r--pkglists/xapbase.lst5
-rw-r--r--pkglists/xbase.lst8
22 files changed, 1101 insertions, 457 deletions
diff --git a/README.txt b/README.txt
index 9b9cfda..243a40c 100644
--- a/README.txt
+++ b/README.txt
@@ -63,6 +63,41 @@ Slackware Live Edition knows two user accounts: "root" and "live". They have pa
Slackware Live Edition deviates as little as possible from a regular Slackware boot. Once you have passed the initial Liveboot stage and brought up the actual OS, you login as user "live". From that moment onwards, you are in a regular Slackware environment.
+==== Booting the Live OS ====
+
+
+=== BIOS boot ===
+
+
+Slackware Live Edition uses syslinux to boot the Linux kernel on BIOS computers. To be precise, the "isolinux" variant is installed to the ISO image and the "extlinux" variant is installed into the Linux partition of the USB Live version.
+
+Syslinux shows a graphical boot menu with a nice Slackware-themed background and several options:
+ * Start (SLACKWARE | PLASMA5 | XFCE | MATE) Live (depending on which of the ISOs you boot)
+ * Non-US Keyboard selection
+ * Non-US Language selection
+ * Memory test with memtest86+
+
+You can select a keyboard mapping that matches your computer's. Also you can boot Slackware in another language than US English.
+If you stick to US English interface language you will probably still want to change the timezone because it will default to UTC. You have to specify a custom timezone manually by adding "tz=YourGeography/YourLocation" because the syslinux bootmenu does not offer you a selection of timezones. Syslinux allows you to edit the boot commandline by pressing <TAB>. Press <ENTER> to boot after you made your changes or <ESC> to discard your edit and return to the menu.
+
+
+=== UEFI boot ===
+
+
+On UEFI computers, Grub2 handles the boot and it will show a menu similar (and similarly themed) to the Syslinux menu:
+
+ * Start (SLACKWARE | PLASMA5 | XFCE | MATE) Live (depending on which of the ISOs you boot)
+ * Non-US Keyboard selection
+ * Non-US Language selection
+ * Non-US Timezone selection
+ * Memory test with memtest86+
+ * Help on boot parameters
+
+Editing a Grub menu before booting it is possible by pressing the "e" key. After making your changes to the boot commandline, press <F10> to boot. To discard your changes, press <ESC>.
+
+Another difference between Syslinux and Grub2 menus: in Grub2 you can select a non-US keyboard, language and/or timezone and you will return to the main menu every time. You still have to select "Start SLACKWARE Live" to boot the computer. In the Syslinux menu, only the keyboard selection menu will return you to the main menu. Any non-US *language* selection on the other hand will boot you into Slackware Live immediately; without returning to the main menu. This is a limitation of syslinux which would require exponentially more menu files to construct a menu with more choices. Grub2 supports variables which make it easy to modify a menu entry's characteristics.
+
+
==== Transfering ISO content to USB stick ====
@@ -80,6 +115,8 @@ This script, called 'iso2usb.sh', accepts the following parameters: <code>
-i|--infile <filename> Full path to the ISO image file.
-o|--outdev <filename> The device name of your USB drive.
-p|--persistence <name> Custom name of the 'persistence' directory/file.
+ -r|--refresh Refresh the USB stick with the ISO content.
+ No formatting, do not touch user content.
-u|--unattended Do not ask any questions.
-v|--verbose Show verbose messages.
-w|--wait<number> Add <number> seconds wait time to initialize USB.
@@ -167,8 +204,18 @@ The following parameters are recognized by Slackware Live Edition. To boot with
The default is 4 for graphical login.
kbd=fr xkb=ch,fr => Example of custom X keyboard layout.
+ The parameter xkb can be set to "XkbLayout,XkbVariant,XkbOptions".
The boot menus will configure some of these for you but you can
of course always modify the values.
+ Note that the optional XkbOptions can be several comma-separated values.
+ The XkbLayout and XkbVariant values must not contain commas.
+ You can set just the XkbVariant by adding something like "kbd=ch xkb=,fr"
+
+For example "xkb=ch,fr,compose:sclk,grp:alt_shift_toggle"
+Note that the XkbOptions can be several comma-separated values.
+The XkbLayout and XkbVariant values must not contain commas.
+
+You can still set just the XkbVariant by adding something like "kbd=ch xkb=,fr"
livepw="somestring" => Change the password for user "live".
The password is passed as a cleartext string.
@@ -256,6 +303,9 @@ nop => No persistence, i.e. boot the virgin installation in
If you want to ignore any persistent data during boot,
including LUKS data, specify "nop luksvol=" .
+nop=wipe => Wipe all data from persistence directory or container.
+ Useful in cases where your persistent data got corrupted.
+
persistence=name => Use this if you are using a different
directory/file than "persistence" for storing persistent data.
@@ -513,7 +563,9 @@ The script's parameters are:
-t <doc|mandoc> Trim the ISO (remove man and/or doc).
-v Show debug/error output.
-z version Define your Slackware version (default: current).
+ -G Generate ISO file from existing directory tree
-H hostname Hostname of the Live OS (default: darkstar).
+ -M Add multilib (x86_64 only).
-O outfile Custom filename for the ISO.
-R runlevel Runlevel to boot into (default: 4).
-X Use xorriso instead of mkisofs/isohybrid.
@@ -542,6 +594,7 @@ You can create your own custom Live OS by changing its characteristics in the co
* The name of the Desktop variant (the script itself knows SLACKWARE, PLASMA5, XFCE, MATE and CINNAMON),
* The list(s) of packages used for your custom distribution,
+ * The name of the useraccount (by default that is "live"),
* The name of the distribution (by default that is "slackware"),
* And finally you can define a function "custom_config()" where you can add all your costom post-installation steps that are not covered in the "make_slackware_live.sh" script itself.
@@ -561,6 +614,10 @@ This is the section in ''make_slackware_live.conf'' which deals with these custo
# Your custom distro name (will reflect in boot screen & filenames):
#DISTRO="cinelerra"
+#OPTIONAL:
+# Name of the 'live' user account in the Live image:
+#LIVEUID="live"
+
# OPTIONAL:
# Marker used for finding the Slackware Live files:
#MARKER="CINELERRA"
@@ -651,38 +708,6 @@ Slackware Live Edition expects its modules to adhere to a particularly loose fil
- Example of an optional module: 0060-nvidia-352.79_4.4.1-current-x86_64.sxz
-=== BIOS boot ===
-
-
-Slackware Live Edition uses syslinux to boot the Linux kernel on BIOS computers. To be precise, the "isolinux" variant is installed to the ISO image and the "extlinux" variant is installed into the Linux partition of the USB Live version.
-
-Syslinux shows a graphical boot menu with a nice Slackware-themed background and several options:
- * Start (SLACKWARE | PLASMA5 | XFCE | MATE) Live (depending on which of the ISOs you boot)
- * Non-US Keyboard selection
- * Non-US Language selection
- * Memory test with memtest86+
-
-You can select a keyboard mapping that matches your computer's. Also you can boot Slackware in another language than US English.
-If you stick to US English interface language you will probably still want to change the timezone because it will default to UTC. You have to specify a custom timezone manually by adding "tz=YourGeography/YourLocation" because the syslinux bootmenu does not offer you a selection of timezones. Syslinux allows you to edit the boot commandline by pressing <TAB>. Press <ENTER> to boot after you made your changes or <ESC> to discard your edit and return to the menu.
-
-
-=== UEFI boot ===
-
-
-On UEFI computers, Grub2 handles the boot and it will show a menu similar (and similarly themed) to the Syslinux menu:
-
- * Start (SLACKWARE | PLASMA5 | XFCE | MATE) Live (depending on which of the ISOs you boot)
- * Non-US Keyboard selection
- * Non-US Language selection
- * Non-US Timezone selection
- * Memory test with memtest86+
- * Help on boot parameters
-
-Editing a Grub menu before booting it is possible by pressing the "e" key. After making your changes to the boot commandline, press <F10> to boot. To discard your changes, press <ESC>.
-
-Another difference between Syslinux and Grub2 menus: in Grub2 you can select a non-US keyboard, language and/or timezone and you will return to the main menu every time. You still have to select "Start SLACKWARE Live" to boot the computer. In the Syslinux menu, only the keyboard selection menu will return you to the main menu. Any non-US *language* selection on the other hand will boot you into Slackware Live immediately; without returning to the main menu. This is a limitation of syslinux which would require exponentially more menu files to construct a menu with more choices. Grub2 supports variables which make it easy to modify a menu entry's characteristics.
-
-
===== Other Slackware based Live distros =====
diff --git a/iso2usb.sh b/iso2usb.sh
index 4228c56..ed6fec4 100644
--- a/iso2usb.sh
+++ b/iso2usb.sh
@@ -26,9 +26,14 @@ set -e
# Set to '1' if you want to ignore all warnings:
FORCE=0
+# By default, we use 'slhome.img' as the name of the LUKS home containerfile.
+DEF_SLHOME="slhome"
+SLHOME="${DEF_SLHOME}"
+
# By default, we use 'persistence' as the name of the persistence directory,
# or 'persistence.img' as the name of the persistence container:
-PERSISTENCE="persistence"
+DEF_PERSISTENCE="persistence"
+PERSISTENCE="${DEF_PERSISTENCE}"
# Default persistence type is a directory:
PERSISTTYPE="dir"
@@ -40,6 +45,7 @@ UNATTENDED=0
VERBOSE=0
# Variables to store content from an initrd we are going to refresh:
+OLDPERSISTENCE=""
OLDWAIT=""
OLDLUKS=""
@@ -52,10 +58,14 @@ DOLUKS=0
# We are NOT refreshing existing Live content by default:
REFRESH=0
+# These tools are required by the script, we will check for their existence:
+REQTOOLS="blkid cpio extlinux fdisk gdisk isoinfo mkdosfs sgdisk"
+
# Initialize more variables:
CNTBASE=""
CNTDEV=""
CNTFILE=""
+HLUKSSIZE=""
LUKSHOME=""
LODEV=""
@@ -64,6 +74,7 @@ IMGDIR=""
ISOMNT=""
CNTMNT=""
USBMNT=""
+US2MNT=""
# Compressor used on the initrd ("gzip" or "xz --check=crc32");
# Note that the kernel's XZ decompressor does not understand CRC64:
@@ -84,13 +95,14 @@ cleanup() {
# In case of failure, only the most recent device should still be open:
if mount |grep -q ${CNTDEV} ; then
umount -f ${CNTDEV}
- cryptsetup luksClose ${CNTBASE}
+ cryptsetup luksClose $(basename ${CNTBASE})
losetup -d ${LODEV}
fi
fi
[ -n "${ISOMNT}" ] && ( /sbin/umount -f ${ISOMNT} 2>/dev/null; rmdir $ISOMNT )
[ -n "${CNTMNT}" ] && ( /sbin/umount -f ${CNTMNT} 2>/dev/null; rmdir $CNTMNT )
[ -n "${USBMNT}" ] && ( /sbin/umount -f ${USBMNT} 2>/dev/null; rmdir $USBMNT )
+ [ -n "${US2MNT}" ] && ( /sbin/umount -f ${US2MNT} 2>/dev/null; rmdir $US2MNT )
[ -n "${IMGDIR}" ] && ( rm -rf $IMGDIR )
set -e
}
@@ -114,8 +126,11 @@ cat <<EOT
# -f|--force Ignore most warnings (except the back-out).
# -h|--help This help.
# -i|--infile <filename> Full path to the ISO image file.
+# -l|--lukshome <name> Custom path to the containerfile for your LUKS
+# encrypted /home ($SLHOME by default).
# -o|--outdev <filename> The device name of your USB drive.
-# -p|--persistence <dirname> Custom name of the 'persistence' directory.
+# -p|--persistence <name> Custom path to the 'persistence' directory
+# or containerfile ($PERSISTENCE by default).
# -r|--refresh Refresh the USB stick with the ISO content.
# No formatting, do not touch user content.
# -u|--unattended Do not ask any questions.
@@ -148,6 +163,7 @@ uncompressfs () {
read_initrd() {
IMGFILE="$1"
+ OLDPERSISTENCE=$(uncompressfs ${IMGFILE} |cpio -i --to-stdout init |grep "^PERSISTENCE" |cut -d '"' -f2 2>/dev/null)
OLDWAIT=$(uncompressfs ${IMGFILE} |cpio -i --to-stdout wait-for-root 2>/dev/null)
OLDLUKS=$(uncompressfs ${IMGFILE} |cpio -i --to-stdout luksdev 2>/dev/null)
}
@@ -181,11 +197,30 @@ update_initrd() {
if [ $REFRESH -eq 1 ]; then
echo "--- Refreshing Slackware initrd..."
WAIT="$OLDWAIT"
+ if [ -n "$OLDLUKS" ]; then
+ echo "--- Detected LUKS container configuration:"
+ echo "$OLDLUKS" | sed 's/^/ /'
+ fi
echo "$OLDLUKS" >> luksdev
+ if [ "${PERSISTENCE}" != "${DEF_PERSISTENCE}" ]; then
+ # If the user specified a nonstandard persistence, use that:
+ echo "--- Updating persistence from '$OLDPERSISTENCE' to '$PERSISTENCE'"
+ sed -i -e "s,^PERSISTENCE=.*,PERSISTENCE=\"${PERSISTENCE}\"," init
+ elif [ "${PERSISTENCE}" != "${OLDPERSISTENCE}" ]; then
+ # The user did not specify persistence, re-use the retrieved value:
+ sed -i -e "s,^PERSISTENCE=.*,PERSISTENCE=\"${OLDPERSISTENCE}\"," init
+ echo "--- Re-use previous '$OLDPERSISTENCE' for persistence"
+ PERSISTENCE="${OLDPERSISTENCE}"
+ fi
else
- echo "--- Updating 'waitforroot' time from '$OLDWAIT' to '$WAIT':"
+ if [ "${PERSISTENCE}" != "${DEF_PERSISTENCE}" ]; then
+ # If the user specified a nonstandard persistence, use that:
+ echo "--- Updating persistence from '$DEF_PERSISTENCE' to '$PERSISTENCE'"
+ sed -i -e "s,^PERSISTENCE=.*,PERSISTENCE=\"${PERSISTENCE}\"," init
+ fi
fi
+ echo "--- Updating 'waitforroot' time from '$OLDWAIT' to '$WAIT'"
echo ${WAIT} > wait-for-root
if [ $DOLUKS -eq 1 -a -n "${LUKSHOME}" ]; then
@@ -198,7 +233,7 @@ update_initrd() {
echo "--- Compressing the initrd image again:"
chmod 0755 ${IMGDIR}
find . |cpio -o -H newc |$COMPR > ${IMGFILE}
- cd - 2>/dev/null
+ cd - 1>/dev/null
rm -rf $IMGDIR/*
} # End of update_initrd()
@@ -213,7 +248,7 @@ create_container() {
# Create a container file or re-use previously created one:
if [ -f $USBMNT/${CNTBASE}.img ]; then
CNTFILE="${CNTBASE}.img"
- CNTSIZE=$(( $(du -sk ${CNTFILE}) / 1024 ))
+ CNTSIZE=$(( $(du -sk $USBMNT/${CNTFILE} |tr '\t' ' ' |cut -f1 -d' ') / 1024 ))
echo "--- Keeping existing '${CNTFILE}' (size ${CNTSIZE} MB)."
return
fi
@@ -225,8 +260,8 @@ create_container() {
PARTFREE=${PARTFREE%M}
if [ $PARTFREE -lt 10 ]; then
- echo "** Free space on USB partition is less than 10 MB;"
- echo "** Not creating a container file!"
+ echo "*** Free space on USB partition is less than 10 MB;"
+ echo "*** Not creating a container file!"
exit 1
fi
@@ -243,16 +278,17 @@ create_container() {
esac
if [ $CNTSIZE -le 0 ]; then
- echo "** Container size must be larger than ZERO!"
- echo "** Check your '-c' commandline parameter."
+ echo "*** Container size must be larger than ZERO!"
+ echo "*** Check your '-c' commandline parameter."
exit 1
elif [ $CNTSIZE -ge $PARTFREE ]; then
- echo "** Not enough free space for container file!"
- echo "** Check your '-c' commandline parameter."
+ echo "*** Not enough free space for container file!"
+ echo "*** Check your '-c' commandline parameter."
exit 1
fi
echo "--- Creating ${CNTSIZE} MB container file using 'dd if=/dev/urandom', patience please..."
+ mkdir -p $USBMNT/$(dirname "${CNTBASE}")
CNTFILE="${CNTBASE}.img"
# Create a sparse file (not allocating any space yet):
dd of=$USBMNT/${CNTFILE} bs=1M count=0 seek=$CNTSIZE
@@ -263,11 +299,17 @@ create_container() {
if [ "${CNTENCR}" = "luks" ]; then
# Format the loop device with LUKS:
echo "--- Encrypting the container file with LUKS; enter 'YES' and a passphrase..."
- cryptsetup -y luksFormat $LODEV
+ until cryptsetup -y luksFormat $LODEV ; do
+ echo ">>> Did you type two different passphrases?"
+ read -p ">>> Press [ENTER] to try again or Ctrl-C to abort ..." REPLY
+ done
# Unlock the LUKS encrypted container:
echo "--- Unlocking the LUKS container requires your passphrase again..."
- cryptsetup luksOpen $LODEV ${CNTBASE}
- CNTDEV=/dev/mapper/${CNTBASE}
+ until cryptsetup luksOpen $LODEV $(basename ${CNTBASE}) ; do
+ echo ">>> Did you type an incorrect passphrases?"
+ read -p ">>> Press [ENTER] to try again or Ctrl-C to abort ..." REPLY
+ done
+ CNTDEV=/dev/mapper/$(basename ${CNTBASE})
# Now we allocate blocks for the LUKS device. We write encrypted zeroes,
# so that the file looks randomly filled from the outside.
# Take care not to write more bytes than the internal size of the container:
@@ -305,7 +347,7 @@ create_container() {
# Don't forget to clean up after ourselves:
if [ "${CNTENCR}" = "luks" ]; then
- cryptsetup luksClose ${CNTBASE}
+ cryptsetup luksClose $(basename ${CNTBASE})
fi
losetup -d ${LODEV} || true
@@ -325,6 +367,8 @@ while [ ! -z "$1" ]; do
-c|--crypt)
HLUKSSIZE="$2"
DOLUKS=1
+ # Needs unsquashfs to extract the /home
+ REQTOOLS="${REQTOOLS} unsquashfs"
shift 2
;;
-f|--force)
@@ -339,6 +383,10 @@ while [ ! -z "$1" ]; do
SLISO="$(cd $(dirname $2); pwd)/$(basename $2)"
shift 2
;;
+ -l|--lukshome)
+ SLHOME="$2"
+ shift 2
+ ;;
-o|--outdev)
TARGET="$2"
shift 2
@@ -408,7 +456,7 @@ fi
# Are all the required not-so-common add-on tools present?
PROG_MISSING=""
-for PROGN in blkid cpio extlinux fdisk gdisk isoinfo mkdosfs sgdisk unsquashfs ; do
+for PROGN in ${REQTOOLS} ; do
if ! PATH="/sbin:$PATH" which $PROGN 1>/dev/null 2>/dev/null ; then
PROG_MISSING="${PROG_MISSING}-- $PROGN\n"
fi
@@ -508,7 +556,7 @@ if [ ! -d $ISOMNT ]; then
else
chmod 711 $ISOMNT
fi
-# USB mount:
+# USB mounts:
USBMNT=$(mktemp -d -p /mnt -t alienusb.XXXXXX)
if [ ! -d $USBMNT ]; then
echo "*** Failed to create a temporary mount point for the USB device!"
@@ -517,6 +565,14 @@ if [ ! -d $USBMNT ]; then
else
chmod 711 $USBMNT
fi
+US2MNT=$(mktemp -d -p /mnt -t alienus2.XXXXXX)
+if [ ! -d $US2MNT ]; then
+ echo "*** Failed to create a temporary mount point for the USB device!"
+ cleanup
+ exit 1
+else
+ chmod 711 $US2MNT
+fi
# Mount the Linux partition:
/sbin/mount -t auto ${TARGET}3 ${USBMNT}
@@ -561,7 +617,9 @@ if [ $REFRESH -eq 1 ]; then
LIVEMAIN="$(echo $(find ${ISOMNT} -name "0099*") |rev |cut -d/ -f3 |rev)"
rsync -rlptD --delete \
${ISOMNT}/${LIVEMAIN}/system/ ${USBMNT}/${LIVEMAIN}/system/
- chattr -i ${USBMNT}/boot/extlinux/ldlinux.sys 2>/dev/null
+ if [ -f ${USBMNT}/boot/extlinux/ldlinux.sys ]; then
+ chattr -i ${USBMNT}/boot/extlinux/ldlinux.sys 2>/dev/null
+ fi
rsync -rlptD --delete \
${ISOMNT}/boot/ ${USBMNT}/boot/
fi
@@ -572,20 +630,35 @@ if [ -n "$VERSION" ]; then
echo "$VERSION" > ${USBMNT}/.isoversion
fi
-if [ $DOLUKS -eq 1 ]; then
- # Create LUKS container file:
- create_container ${TARGET}3 ${HLUKSSIZE} slhome luks /home
+if [ -n "${HLUKSSIZE}" ]; then
+ # Create LUKS container file for /home:
+ create_container ${TARGET}3 ${HLUKSSIZE} ${SLHOME} luks /home
LUKSHOME=${CNTFILE}
fi
-# Update the initrd with longer USB wait time and LUKS /home info:
+# Update the initrd with regard to USB wait time, persistence and LUKS.
+# If this is a refresh and anything changed to persistence, then the
+# variable $PERSISTENCE will have the correct value when exing this function:
+# If you want to move your LUKS home containerfile you'll have to do that
+# manually - not a supported option for now.
update_initrd ${USBMNT}/boot/initrd.img
if [ $REFRESH -eq 1 ]; then
# Determine what we need to do with persistence if this is a refresh.
+ if [ "${PERSISTENCE}" != "${OLDPERSISTENCE}" ]; then
+ # The user specified a nonstandard persistence, so move the old one first;
+ # hide any errors if it did not *yet* exist:
+ mkdir -p ${USBMNT}/$(dirname ${PERSISTENCE})
+ mv ${USBMNT}/${OLDPERSISTENCE}.img ${USBMNT}/${PERSISTENCE}.img 2>/dev/null
+ mv ${USBMNT}/${OLDPERSISTENCE} ${USBMNT}/${PERSISTENCE} 2>/dev/null
+ fi
if [ -f ${USBMNT}/${PERSISTENCE}.img ]; then
# If a persistence container exists, we re-use it:
PERSISTTYPE="file"
+ if cryptsetup isLuks ${USBMNT}/${PERSISTENCE}.img ; then
+ # If the persistence file is LUKS encrypted we need to record its size:
+ PLUKSSIZE=$(( $(du -sk $USBMNT/${PERSISTENCE}.img |tr '\t' ' ' |cut -f1 -d' ') / 1024 ))
+ fi
elif [ -d ${USBMNT}/${PERSISTENCE} -a "${PERSISTTYPE}" = "file" ]; then
# A persistence directory exists but the user wants a container now;
# so we will delete the persistence directory and create a container file
@@ -623,35 +696,34 @@ mv ${USBMNT}/boot/extlinux/isolinux.cfg ${USBMNT}/boot/extlinux/extlinux.conf
rm -f ${USBMNT}/boot/extlinux/isolinux.*
/sbin/extlinux --install ${USBMNT}/boot/extlinux
-# No longer needed:
-if /sbin/mount |grep -qw ${USBMNT} ; then /sbin/umount ${USBMNT} ; fi
-
if [ $EFIBOOT -eq 1 ]; then
# Mount the EFI partition and copy /EFI as well as /boot directories into it:
- /sbin/mount -t vfat -o shortname=mixed ${TARGET}2 ${USBMNT}
- mkdir -p ${USBMNT}/EFI/BOOT
- rsync -rlptD ${ISOMNT}/EFI/BOOT/* ${USBMNT}/EFI/BOOT/
+ /sbin/mount -t vfat -o shortname=mixed ${TARGET}2 ${US2MNT}
+ mkdir -p ${US2MNT}/EFI/BOOT
+ rsync -rlptD ${ISOMNT}/EFI/BOOT/* ${US2MNT}/EFI/BOOT/
mkdir -p ${USBMNT}/boot
echo "--- Copying EFI boot files from ISO to USB."
if [ $VERBOSE -eq 1 ]; then
- rsync -rlptD -v ${ISOMNT}/boot/* ${USBMNT}/boot/
+ rsync -rlptD -v ${ISOMNT}/boot/* ${US2MNT}/boot/
else
- rsync -rlptD ${ISOMNT}/boot/* ${USBMNT}/boot/
+ rsync -rlptD ${ISOMNT}/boot/* ${US2MNT}/boot/
fi
if [ $REFRESH -eq 1 ]; then
# Clean out old Live system data:
echo "--- Cleaning out old Live system data."
rsync -rlptD --delete \
- ${ISOMNT}/EFI/BOOT/ ${USBMNT}/EFI/BOOT/
+ ${ISOMNT}/EFI/BOOT/ ${US2MNT}/EFI/BOOT/
rsync -rlptD --delete \
- ${ISOMNT}/boot/ ${USBMNT}/boot/
+ ${ISOMNT}/boot/ ${US2MNT}/boot/
fi
- # Update the initrd with longer USB wait time and LUKS container info:
- update_initrd ${USBMNT}/boot/initrd.img
+ # Copy the modified initrd over from the Linux partition:
+ cat ${USBMNT}/boot/initrd.img > ${US2MNT}/boot/initrd.img
+ sync
fi
# No longer needed:
if /sbin/mount |grep -qw ${USBMNT} ; then /sbin/umount ${USBMNT} ; fi
+if /sbin/mount |grep -qw ${US2MNT} ; then /sbin/umount ${US2MNT} ; fi
# Unmount/remove stuff:
cleanup
diff --git a/languages b/languages
index b810107..2b31d09 100644
--- a/languages
+++ b/languages
@@ -12,4 +12,5 @@ ja:japanese:jp106:Asia/Tokyo:ja_JP.utf8:
nl:nederlands:nl:Europe/Amsterdam:nl_NL.utf8:
pt:portugues:pt-latin1:Europe/Lisbon:pt_PT.utf8:
ru:russian:ru_win:Europe/Moscow:ru_RU.utf8:
+se:svensk:sv-latin1:Europe/Stockholm:sv_SE.utf8:se,
us:us american:us:US/Pacific:en_US.utf8:
diff --git a/liveinit b/liveinit
index 43c8a9c..38a13b1 100755
--- a/liveinit
+++ b/liveinit
@@ -40,6 +40,12 @@ LIVEMAIN="@LIVEMAIN@"
MARKER="@MARKER@"
PERSISTENCE="@PERSISTENCE@"
+DISTRO="@DISTRO@"
+CDISTRO="@CDISTRO@"
+VERSION="@VERSION@"
+
+LIVEUID="@LIVEUID@"
+
LIVEMEDIA=""
LIVEPATH=""
@@ -220,14 +226,18 @@ for ARG in $(cat /proc/cmdline); do
esac
done
+# Verbose boot script execution:
[ $DEBUG -ge 2 ] && set -x
debugit () {
- [ $DEBUG -eq 0 -o $DEBUG -gt 3 ] && return
- echo "DEBUG>> -- blkid info -- :"
- blkid | while read LINE ; do echo "DEBUG>> $LINE" ; done
- echo "DEBUG>> -- mount info -- :"
- mount | while read LINE ; do echo "DEBUG>> $LINE" ; done
+ if [ $DEBUG -eq 0 -o $DEBUG -gt 3 ]; then
+ return
+ elif [ $DEBUG -le 2 ]; then
+ echo "DEBUG>> -- blkid info -- :"
+ blkid | while read LINE ; do echo "DEBUG>> $LINE" ; done
+ echo "DEBUG>> -- mount info -- :"
+ mount | while read LINE ; do echo "DEBUG>> $LINE" ; done
+ fi
echo "DEBUG>> -- Press ENTER to continue -- : "
read JUNK
return
@@ -272,7 +282,7 @@ fi
# Load kernel modules (ideally this was already done by udev):
if [ ! -d /lib/modules/$(uname -r) ]; then
- echo "No kernel modules found for Linux $(uname -r)."
+ echo "${MARKER}: No kernel modules found for Linux $(uname -r)."
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
@@ -477,33 +487,44 @@ if [ "$RESCUE" = "" ]; then
# SUBSYS can be 'system', 'addons', 'optional':
SUBSYS="$1"
- if ls /mnt/media/${LIVEMAIN}/${SUBSYS}/*.sxz 1>/dev/null 2>/dev/null ; then
- for MODULE in /mnt/media/${LIVEMAIN}/${SUBSYS}/*.sxz ; do
- MODBASE="$(basename ${MODULE} .sxz)"
- if [ "$SUBSYS" = "optional" ]; then
- # Load one or more optionals by using boot parameter 'load':
- # load=mod1[,mod2[,mod3]]
- if [ -z "$LOAD" -o -z "$(echo ",${LOAD}," |grep -i ",$(echo $MODBASE |cut -d- -f2),")" ]; then
- continue
- fi
- elif [ "$SUBSYS" = "addons" ]; then
- # Skip loading one or more addons by using boot parameter 'noload':
- # noload=mod1[,mod2[,mod3]]
- if [ -n "$NOLOAD" -a -n "$(echo ",${NOLOAD}," |grep -i ",$(echo $MODBASE |cut -d- -f2),")" ]; then
- echo "$MODBASE" >> /mnt/live/modules/skipped
- continue
- fi
+ for MODULE in $(find /mnt/media/${LIVEMAIN}/${SUBSYS}/ -name "*.sxz" 2>/dev/null |sort) ; do
+ MODBASE="$(basename ${MODULE} .sxz)"
+ if [ "$SUBSYS" = "optional" ]; then
+ # Load one or more optionals by using boot parameter 'load':
+ # load=mod1[,mod2[,mod3]]
+ if [ -z "$LOAD" -o -z "$(echo ",${LOAD}," |grep -i ",$(echo $MODBASE |cut -d- -f2),")" ]; then
+ continue
+ fi
+ elif [ "$SUBSYS" = "addons" ]; then
+ # Skip loading one or more addons by using boot parameter 'noload':
+ # noload=mod1[,mod2[,mod3]]
+ if [ -n "$NOLOAD" -a -n "$(echo ",${NOLOAD}," |grep -i ",$(echo $MODBASE |cut -d- -f2),")" ]; then
+ echo "$MODBASE" >> /mnt/live/modules/skipped
+ continue
fi
- MODLOC=$(find_modloc ${MODULE} /mnt/media)
+ fi
+ MODLOC=$(find_modloc ${MODULE} /mnt/media)
+ if [ -d /mnt/live/modules/${MODBASE} ]; then
+ echo "${MARKER}: duplicate $SUBSYS module '${MODBASE}', excluding it from the overlay."
+ echo "$MODBASE" >> /mnt/live/modules/dupes
+ else
mkdir /mnt/live/modules/${MODBASE}
mount -t squashfs -o loop ${MODLOC} /mnt/live/modules/${MODBASE}
- RODIRS=":/mnt/live/modules/${MODBASE}${RODIRS}"
- # 0099-* are the Live customizations, exclude those for setup2hd:
- if ! echo ${MODBASE} | grep -q ^0099 ; then
- FS2HD=":/mnt/live/modules/${MODBASE}${FS2HD}"
+ if [ $? -eq 0 ]; then
+ if echo ${MODBASE} | grep -q ^0000 -a ; then
+ echo "${MARKER}: ${CDISTRO} Live based on liveslak-${VERSION} #$(cat /mnt/live/modules/${MODBASE}/${MARKER})"
+ fi
+ RODIRS=":/mnt/live/modules/${MODBASE}${RODIRS}"
+ # 0099-* are the Live customizations, exclude those for setup2hd:
+ if ! echo ${MODBASE} | grep -q ^0099 ; then
+ FS2HD=":/mnt/live/modules/${MODBASE}${FS2HD}"
+ fi
+ else
+ echo "${MARKER}: Failed to mount $SUBSYS module '${MODBASE}', excluding it from the overlay."
+ echo "$MODBASE" >> /mnt/live/modules/failed
fi
- done
- fi
+ fi
+ done
}
## End support functions ##
@@ -691,19 +712,19 @@ if [ "$RESCUE" = "" ]; then
mount -o remount,rw /mnt/media
# Find a free loop device to mount the persistence container file:
prdev=$(find_loop)
- prdir=${PERSISTENCE}_$(od -An -N1 -tu1 /dev/urandom |tr -d ' ')
+ prdir=$(basename ${PERSISTENCE})_$(od -An -N1 -tu1 /dev/urandom |tr -d ' ')
mkdir -p /mnt/live/${prdir}
losetup $prdev /mnt/media/${PERSISTENCE}.img
# Check if the persistence container is LUKS encrypted:
if cryptsetup isLuks $prdev 1>/dev/null 2>/dev/null ; then
echo "Unlocking LUKS encrypted persistence file '/${PERSISTENCE}.img'"
- cryptsetup luksOpen $prdev ${PERSISTENCE} </dev/tty0 >/dev/tty0 2>&1
+ cryptsetup luksOpen $prdev $(basename ${PERSISTENCE}) </dev/tty0 >/dev/tty0 2>&1
if [ $? -ne 0 ]; then
echo "${MARKER}: Failed to unlock persistence file '/${PERSISTENCE}.img'."
echo "${MARKER}: Falling back to RAM."
else
# LUKS properly unlocked; from now on use the mapper device instead:
- prdev=/dev/mapper/${PERSISTENCE}
+ prdev=/dev/mapper/$(basename ${PERSISTENCE})
fi
fi
prfs=$(blkid $prdev |rev |cut -d'"' -f2 |rev)
@@ -714,10 +735,10 @@ if [ "$RESCUE" = "" ]; then
else
if [ "$WIPE_PERSISTENCE" = "1" ]; then
echo "${MARKER}: Wiping existing persistent data in '/${PERSISTENCE}.img'."
- find /mnt/live/${prdir}/${PERSISTENCE}/ -mindepth 1 -exec rm -rf {} \; 2>/dev/null
+ find /mnt/live/${prdir}/$(basename ${PERSISTENCE})/ -mindepth 1 -exec rm -rf {} \; 2>/dev/null
fi
echo "${MARKER}: Writing persistent changes to file '/${PERSISTENCE}.img'."
- UPPERDIR=/mnt/live/${prdir}/${PERSISTENCE}
+ UPPERDIR=/mnt/live/${prdir}/$(basename ${PERSISTENCE})
OVLWORK=/mnt/live/${prdir}/.ovlwork
fi
fi
@@ -730,6 +751,8 @@ if [ "$RESCUE" = "" ]; then
fi
fi
+ debugit
+
# Create the writable upper directory, plus the workdir which is required
# for overlay to function (the two must be in the same POSIX filesystem):
[ ! -d ${UPPERDIR} ] && mkdir -p ${UPPERDIR}
@@ -794,11 +817,19 @@ EOT
fi
if [ ! -z "$KEYMAP" -o ! -z "$XKB" ]; then
# Set a keyboard mapping in X.Org, derived from the console map if needed:
- # Variable XKB can be set to "XkbLayout,XkbVariant", like "xkb=ch,fr"
+ # Variable XKB can be set to "XkbLayout,XkbVariant,XkbOptions".
+ # For example "xkb=ch,fr,compose:sclk,grp:alt_shift_toggle"
+ # Note that the XkbOptions can be several comma-separated values.
+ # The XkbLayout and XkbVariant values must not contain commas.
# You can set just the XkbVariant by adding something like "kbd=ch xkb=,fr"
+
+ # Catch a missing comma in the "$XKB" string value which messes with 'cut':
+ XKB="$XKB,"
XKBLAYOUT=$(echo $XKB |cut -d, -f1)
XKBVARIANT=$(echo $XKB |cut -d, -f2)
- # Ensure that XKBLAYOUT gets a value; XKBVARIANT is allowed to be empty.
+ XKBOPTIONS=$(echo $XKB |cut -d, -f3-)
+ # Ensure that XKBLAYOUT gets a value;
+ # XKBVARIANT and XKBOPTIONS are allowed to be empty.
if [ -z "$XKBLAYOUT" ]; then
if [ -z "$KEYMAP" ]; then
XKBLAYOUT="us"
@@ -810,27 +841,48 @@ EOT
XKBLAYOUT="us"
fi
echo "${MARKER}: Switching live X desktop to '$XKBLAYOUT' keyboard"
- # Germans use the AltGr key, so Scroll Lock will be their Compose Key:
- if [ "$XKBLAYOUT" = "de" ]; then
- XKBOPTIONS="compose:sclk"
- else
- XKBOPTIONS="compose:ralt"
- fi
- # If the layout is not 'us' then add 'us' as a secondary nevertheless:
+
if [ "$XKBLAYOUT" != "us" ]; then
+ # If the layout is not 'us' then add 'us' as a secondary nevertheless:
XKBLAYOUT="$XKBLAYOUT,us"
XKBVARIANT="$XKBVARIANT,"
- XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll,$XKBOPTIONS"
+ fi
+
+ if [ -z "$XKBOPTIONS" ]; then
+ # If the user did not specify any X keyboard options then we will
+ # determine a set of sane defaults:
+ if [ "$XKBLAYOUT" != "us" ]; then
+ # User should be able to switch between layouts (Alt-Shift toggles).
+ # Also, many languages use the AltGr key, so we will use Shift-AltGr
+ # (press them, then release them, then enter your two keys of choice)
+ # as the Compose Key - see "/usr/share/X11/xkb/rules/xorg.lst":
+ XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll,lv3:ralt_switch_multikey"
+ else
+ # For US keyboard we just define the Compose Key as before:
+ XKBOPTIONS="lv3:ralt_switch_multikey"
+ fi
fi
mkdir -p /mnt/overlay/etc/X11/xorg.conf.d
- cat <<EOT > /mnt/overlay/etc/X11/xorg.conf.d/30-keyboard.conf
+ echo > /mnt/overlay/etc/X11/xorg.conf.d/30-keyboard.conf
+ cat <<EOT >> /mnt/overlay/etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass"
Identifier "keyboard-all"
+ MatchIsKeyboard "on"
+ MatchDevicePath "/dev/input/event*"
Driver "evdev"
Option "XkbLayout" "$XKBLAYOUT"
+EOT
+ if [ -z "$XKBVARIANT" ]; then
+ cat <<EOT >> /mnt/overlay/etc/X11/xorg.conf.d/30-keyboard.conf
+ #Option "XkbVariant" "$XKBVARIANT"
+EOT
+ else
+ cat <<EOT >> /mnt/overlay/etc/X11/xorg.conf.d/30-keyboard.conf
Option "XkbVariant" "$XKBVARIANT"
+EOT
+ fi
+ cat <<EOT >> /mnt/overlay/etc/X11/xorg.conf.d/30-keyboard.conf
Option "XkbOptions" "$XKBOPTIONS"
- MatchIsKeyboard "on"
EndSection
EOT
@@ -859,21 +911,21 @@ EOT
echo ${TZ} > /mnt/overlay/etc/timezone
# KDE4 and PLASMA5 user timezone re-configuration:
- if [ -f /mnt/overlay/home/live/.kde/share/config/ktimezonedrc ]; then
+ if [ -f /mnt/overlay/home/${LIVEUID}/.kde/share/config/ktimezonedrc ]; then
sed -i -e "s%^LocalZone=.*%LocalZone=${TZ}%" \
- /mnt/overlay/home/live/.kde/share/config/ktimezonedrc
+ /mnt/overlay/home/${LIVEUID}/.kde/share/config/ktimezonedrc
fi
- if [ -f /mnt/overlay/home/live/.config/ktimezonedrc ]; then
+ if [ -f /mnt/overlay/home/${LIVEUID}/.config/ktimezonedrc ]; then
sed -i -e "s%^LocalZone=.*%LocalZone=${TZ}%" \
- /mnt/overlay/home/live/.config/ktimezonedrc
+ /mnt/overlay/home/${LIVEUID}/.config/ktimezonedrc
fi
fi
if [ ! -z "$LIVEPW" ]; then
# User entered a custom live password on the boot commandline:
- echo "${MARKER}: Changing password for user 'live'."
+ echo "${MARKER}: Changing password for user '${LIVEUID}'."
chroot /mnt/overlay /usr/sbin/chpasswd <<EOPW
-live:${LIVEPW}
+${LIVEUID}:${LIVEPW}
EOPW
fi
diff --git a/make_slackware_live.conf b/make_slackware_live.conf
index 3fe172e..53f3834 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
+# Name of the 'live' user account in the Live image:
+#LIVEUID="live"
+
# Passwords for the user accounts in the Live image:
#ROOTPW="root"
#LIVEPW="live"
diff --git a/make_slackware_live.sh b/make_slackware_live.sh
index 4ce65b5..388714f 100755
--- a/make_slackware_live.sh
+++ b/make_slackware_live.sh
@@ -35,7 +35,7 @@
# -----------------------------------------------------------------------------
# Version of the Live OS generator:
-VERSION="1.1.0"
+VERSION="1.1.3"
# Directory where our live tools are stored:
LIVE_TOOLDIR=${LIVE_TOOLDIR:-"$(cd $(dirname $0); pwd)"}
@@ -80,6 +80,9 @@ THEDATE=$(date +%Y%m%d)
# ---------------------------------------------------------------------------
#
+# The live username of the image:
+LIVEUID=${LIVEUID:-"live"}
+
# The root and live user passwords of the image:
ROOTPW=${ROOTPW:-"root"}
LIVEPW=${LIVEPW:-"live"}
@@ -129,6 +132,13 @@ MARKER=${MARKER:-"SLACKWARELIVE"}
# The filesystem label we will be giving our ISO:
MEDIALABEL=${MEDIALABEL:-"LIVESLAK"}
+# For x86_64 you can add multilib:
+MULTILIB=${MULTILIB:-"NO"}
+
+# Use the '-G' parameter to generate the ISO from a pre-populated directory
+# containing the live OS files:
+ONLY_ISO="NO"
+
# The name of the directory used for storing persistence data:
PERSISTENCE=${PERSISTENCE:-"persistence"}
@@ -169,7 +179,7 @@ SEQ_CIN="tagfile:a,ap,d,e,f,k,l,n,t,tcl,x,xap,xfce,y pkglist:slackextra,cinnamon
# List of kernel modules required for a live medium to boot properly;
# Lots of HID modules added to support keyboard input for LUKS password entry:
-KMODS=${KMODS:-"squashfs:overlay:loop:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:usb-storage:hid:usbhid:hid-generic:hid-cherry:hid-logitech:hid-logitech-dj:hid-logitech-hidpp:hid-lenovo:hid-microsoft:jbd:mbcache:ext3:ext4:isofs:fat:nls_cp437:nls_iso8859-1:msdos:vfat"}
+KMODS=${KMODS:-"squashfs:overlay:loop:xhci-pci:ohci-pci:ehci-pci:xhci-hcd:uhci-hcd:ehci-hcd:usb-storage:hid:usbhid:i2c-hid:hid-generic: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"}
# Firmware for wired network cards required for NFS root support:
NETFIRMWARE="3com acenic adaptec bnx tigon e100 sun kaweth tr_smctr cxgb3"
@@ -377,10 +387,25 @@ function install_pkgs() {
if [ "$TRIM" = "doc" -o "$TRIM" = "mandoc" -o "$LIVEDE" = "XFCE" ]; then
# Remove undesired (too big for a live OS) document subdirectories:
(cd "${2}/usr/doc" && find . -type d -mindepth 2 -maxdepth 2 -exec rm -rf {} \;)
+ rm -rf "$2"/usr/share/gtk-doc
+ rm -rf "$2"/usr/share/help
+ # Remove residual bloat:
+ rm -f "${2}"/usr/doc/*/*.{html,css,xml,pdf,db,bz2,xz}
fi
if [ "$TRIM" = "mandoc" ]; then
- # Also remove man pages:
- rm -rf "$2"/usr/man
+ # Also remove man and info pages:
+ rm -rf "$2"/usr/man "$2"/usr/info
+ fi
+ 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 some of the big unused/esoteric static libraries:
+ rm -rf "$2"/usr/lib${DIRSUFFIX}/{libaudiofile,libgdk,libglib,libgtk}.a
+ rm -rf "$2"/usr/lib${DIRSUFFIX}/{liblftp*,libnl}.a
fi
# End install_pkgs
@@ -592,11 +617,98 @@ EOL
done
}
+#
+# Create an ISO file from a directory's content:
+#
+create_iso() {
+ TOPDIR=${1:-"${LIVE_STAGING}"}
+
+ cd "$TOPDIR"
+
+ # Tag the type of live environment to the ISO filename:
+ if [ "$LIVEDE" = "SLACKWARE" ]; then
+ ISOTAG=""
+ else
+ ISOTAG="-$(echo $LIVEDE |tr A-Z a-z)"
+ fi
+
+ # Determine whether we add UEFI boot capabilities to the ISO:
+ if [ -f boot/syslinux/efiboot.img -a "$USEXORR" = "NO" ]; then
+ UEFI_OPTS="-eltorito-alt-boot -no-emul-boot -eltorito-platform 0xEF -eltorito-boot boot/syslinux/efiboot.img"
+ elif [ -f boot/syslinux/efiboot.img -a "$USEXORR" = "YES" ]; then
+ UEFI_OPTS="-eltorito-alt-boot -e boot/syslinux/efiboot.img -no-emul-boot"
+ else
+ UEFI_OPTS=""
+ fi
+
+ # Time to determine the output filename, now that we know all the variables
+ # and ensured that the OUTPUT directory exists:
+ OUTFILE=${OUTFILE:-"${OUTPUT}/${DISTRO}${DIRSUFFIX}-live${ISOTAG}-${SL_VERSION}.iso"}
+ if [ "$USEXORR" = "NO" ]; then
+ mkisofs -o "${OUTFILE}" \
+ -V "${MEDIALABEL}" \
+ -R -J \
+ -hide-rr-moved \
+ -v -d -N \
+ -no-emul-boot -boot-load-size ${BOOTLOADSIZE} -boot-info-table \
+ -sort boot/syslinux/iso.sort \
+ -b boot/syslinux/isolinux.bin \
+ -c boot/syslinux/isolinux.boot \
+ ${UEFI_OPTS} \
+ -preparer "$(echo $LIVEDE |sed 's/BASE//') Live built by ${BUILDER}" \
+ -publisher "The Slackware Linux Project - http://www.slackware.com/" \
+ -A "${DISTRO^}-${SL_VERSION} for ${SL_ARCH} ($(echo $LIVEDE |sed 's/BASE//') Live $VERSION)" \
+ -x ./$(basename ${LIVE_WORK}) \
+ -x ./${LIVEMAIN}/bootinst \
+ -x boot/syslinux/testing \
+ .
+
+ if [ "$SL_ARCH" = "x86_64" -o "$EFI32" = "YES" ]; then
+ # Make this a hybrid ISO with UEFI boot support on x86_64.
+ # On 32bit, the variable EFI32 must be explicitly enabled.
+ isohybrid -u "${OUTFILE}"
+ else
+ isohybrid "${OUTFILE}"
+ fi # End UEFI hybrid ISO.
+ else
+ echo "-- Using xorriso to generate the ISO and make it hybrid."
+ xorriso -as mkisofs -o "${OUTFILE}" \
+ -V "${MEDIALABEL}" \
+ -J -joliet-long -r \
+ -hide-rr-moved \
+ -v -d -N \
+ -b boot/syslinux/isolinux.bin \
+ -c boot/syslinux/isolinux.boot \
+ -boot-load-size ${BOOTLOADSIZE} -boot-info-table -no-emul-boot \
+ ${UEFI_OPTS} \
+ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
+ -isohybrid-gpt-basdat \
+ -preparer "$(echo $LIVEDE |sed 's/BASE//') Live built by ${BUILDER}" \
+ -publisher "The Slackware Linux Project - http://www.slackware.com/" \
+ -A "${DISTRO^}-${SL_VERSION} for ${SL_ARCH} ($(echo $LIVEDE |sed 's/BASE//') Live $VERSION)" \
+ -x ./$(basename ${LIVE_WORK}) \
+ -x ./${LIVEMAIN}/bootinst \
+ -x boot/syslinux/testing \
+ .
+ fi
+
+ # Return to original directory:
+ cd - 1>/dev/null
+
+ cd "${OUTPUT}"
+ md5sum "$(basename "${OUTFILE}")" \
+ > "$(basename "${OUTFILE}")".md5
+ cd - 1>/dev/null
+ echo "-- Live ISO image created:"
+ ls -l "${OUTFILE}"*
+
+} # End of create_iso()
+
# ---------------------------------------------------------------------------
# Action!
# ---------------------------------------------------------------------------
-while getopts "a:d:efhm:r:s:t:vz:HO:R:X" Option
+while getopts "a:d:efhm:r:s:t:vz:GH:MO:R:X" Option
do
case $Option in
h )
@@ -628,7 +740,9 @@ do
echo " -t <doc|mandoc> Trim the ISO (remove man and/or doc)."
echo " -v Show debug/error output."
echo " -z version Define your ${DISTRO^} version (default: $SL_VERSION)."
+ echo " -G Generate ISO file from existing directory tree"
echo " -H hostname Hostname of the Live OS (default: $LIVE_HOSTNAME)."
+ echo " -M Add multilib (x86_64 only)."
echo " -O outfile Custom filename for the ISO."
echo " -R runlevel Runlevel to boot into (default: $RUNLEVEL)."
echo " -X Use xorriso instead of mkisofs/isohybrid."
@@ -654,8 +768,12 @@ do
;;
z ) SL_VERSION="${OPTARG}"
;;
+ G ) ONLY_ISO="YES"
+ ;;
H ) LIVE_HOSTNAME="${OPTARG}"
;;
+ M ) MULTILIB="YES"
+ ;;
O ) OUTFILE="${OPTARG}"
OUTPUT="$(cd $(dirname "${OUTFILE}"); pwd)"
;;
@@ -677,6 +795,8 @@ shift $(($OPTIND - 1))
# if one exists.
# ---------------------------------------------------------------------------
+[ "$DEBUG" = "NO" ] && DBGOUT="/dev/null" || DBGOUT="/dev/stderr"
+
# -----------------------------------------------------------------------------
# Some sanity checks first.
# -----------------------------------------------------------------------------
@@ -687,11 +807,22 @@ if [ -n "$REFRESH" -a "$FORCE" = "YES" ]; then
exit 1
fi
+if [ "$ONLY_ISO" = "YES" -a "$FORCE" = "YES" ]; then
+ echo ">> Please use only _one_ of the switches '-f' or '-G'!"
+ echo ">> Run '$0 -h' for more help."
+ exit 1
+fi
+
if [ $RUNLEVEL -ne 3 -a $RUNLEVEL -ne 4 ]; then
echo ">> Default runlevel other than 3 or 4 is not supported."
exit 1
fi
+if [ "$SL_ARCH" != "x86_64" -a "$MULTILIB" = "YES" ]; then
+ echo ">> Multilib is only supported on x86_64 architecture."
+ exit 1
+fi
+
# Directory suffix, arch dependent:
if [ "$SL_ARCH" = "x86_64" ]; then
DIRSUFFIX="64"
@@ -711,12 +842,6 @@ DEF_SL_PKGROOT=${SL_PKGROOT}
SL_PATCHROOT=${SL_REPO}/${DISTRO}${DIRSUFFIX}-${SL_VERSION}/patches/packages
DEF_SL_PATCHROOT=${SL_PATCHROOT}
-# Do we have a local Slackware repository?
-if [ ! -d ${SL_REPO} ]; then
- echo "-- Slackware repository root '${SL_REPO}' does not exist! Exiting."
- exit 1
-fi
-
# Are all the required add-on tools present?
[ "$USEXORR" = "NO" ] && ISOGEN="mkisofs isohybrid" || ISOGEN="xorriso"
PROG_MISSING=""
@@ -732,7 +857,28 @@ if [ ! -z "$PROG_MISSING" ] ; then
exit 1
fi
-[ "$DEBUG" = "NO" ] && DBGOUT="/dev/null" || DBGOUT="/dev/stderr"
+# Create output directory for image file:
+mkdir -p "${OUTPUT}"
+if [ $? -ne 0 ]; then
+ echo "-- Creation of output directory '${OUTPUT}' failed! Exiting."
+ exit 1
+fi
+
+# If so requested, we generate the ISO image and immediately exit.
+if [ "$ONLY_ISO" = "YES" -a -n "${LIVE_STAGING}" ]; then
+ create_iso ${LIVE_STAGING}
+ cleanup
+ exit 0
+else
+ # Remove ./boot - it will be created from scratch later:
+ rm -rf ${LIVE_STAGING}/boot
+fi
+
+# Do we have a local Slackware repository?
+if [ ! -d ${SL_REPO} ]; then
+ echo "-- Slackware repository root '${SL_REPO}' does not exist! Exiting."
+ exit 1
+fi
# Cleanup if we are FORCEd to rebuild from scratch:
if [ "$FORCE" = "YES" ]; then
@@ -742,16 +888,9 @@ if [ "$FORCE" = "YES" ]; then
rm -rf ${LIVE_STAGING}/${LIVEMAIN} ${LIVE_WORK} ${LIVE_ROOTDIR}
fi
-# Create output directory for image file:
-mkdir -p "${OUTPUT}"
-if [ $? -ne 0 ]; then
- echo "-- Creation of output directory '${OUTPUT}' failed! Exiting."
- exit 1
-fi
-
# Create temporary directories for building the live filesystem:
for LTEMP in $LIVE_OVLDIR $LIVE_BOOT $LIVE_MOD_SYS $LIVE_MOD_ADD $LIVE_MOD_OPT ; do
- umount ${LTEMP} 2>${DBGOUT} || true
+ umount ${LTEMP} 2>${DBGOUT} || true
mkdir -p ${LTEMP}
if [ $? -ne 0 ]; then
echo "-- Creation of temporary directory '${LTEMP}' failed! Exiting."
@@ -802,9 +941,17 @@ esac
# Do we need to create/include additional module(s) defined by a pkglist:
if [ -n "$SEQ_ADDMOD" ]; then
+ echo "-- Adding ${SEQ_ADDMOD}."
MSEQ="${MSEQ} pkglist:${SEQ_ADDMOD}"
fi
+# Do we need to include multilib?
+# Add these last so we can easily distribute the module separately.
+if [ "$MULTILIB" = "YES" ]; then
+ echo "-- Adding multilib."
+ MSEQ="${MSEQ} pkglist:multilib"
+fi
+
echo "-- Creating '${LIVEDE}' image."
# Module sequence can be composed of multiple sub-sequences:
@@ -851,10 +998,10 @@ for SPS in ${SL_SERIES} ; do
# We need to take care of a few things first:
if [ "$SL_ARCH" = "x86_64" -o "$SMP32" = "NO" ]; then
- KGEN=$(echo ${INSTDIR}/var/log/packages/kernel*modules* |grep -v smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
+ KGEN=$(ls --indicator-style=none ${INSTDIR}/var/log/packages/kernel*modules* |grep -v smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
KVER=$(ls --indicator-style=none ${INSTDIR}/lib/modules/ |grep -v smp |head -1)
else
- KGEN=$(echo ${INSTDIR}/var/log/packages/kernel*modules* |grep smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
+ KGEN=$(ls --indicator-style=none ${INSTDIR}/var/log/packages/kernel*modules* |grep smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
KVER=$(ls --indicator-style=none ${INSTDIR}/lib/modules/ |grep smp |head -1)
fi
if [ -z "$KVER" ]; then
@@ -918,10 +1065,10 @@ mount -t overlay -o lowerdir=${RODIRS},upperdir=${INSTDIR},workdir=${LIVE_OVLDIR
# Determine the kernel version in the Live OS:
if [ "$SL_ARCH" = "x86_64" -o "$SMP32" = "NO" ]; then
- KGEN=$(echo ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep -v smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
+ KGEN=$(ls --indicator-style=none ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep -v smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
KVER=$(ls --indicator-style=none ${LIVE_ROOTDIR}/lib/modules/ |grep -v smp |head -1)
else
- KGEN=$(echo ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
+ KGEN=$(ls --indicator-style=none ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
KVER=$(ls --indicator-style=none ${LIVE_ROOTDIR}/lib/modules/ |grep smp |head -1)
fi
@@ -1040,13 +1187,13 @@ EOL
# Set a root password.
echo "root:${ROOTPW}" | chpasswd --root ${LIVE_ROOTDIR}
-# Create a nonprivileged user account "live":
-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 -u 1000 -d /home/live -m -s /bin/bash live
-echo "live:${LIVEPW}" | chpasswd --root ${LIVE_ROOTDIR}
+# 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 -u 1000 -d /home/${LIVEUID} -m -s /bin/bash ${LIVEUID}
+echo "${LIVEUID}:${LIVEPW}" | chpasswd --root ${LIVE_ROOTDIR}
# Configure suauth:
cat <<EOT >${LIVE_ROOTDIR}/etc/suauth
-root:live:OWNPASS
+root:${LIVEUID}:OWNPASS
root:ALL EXCEPT GROUP wheel:DENY
EOT
chmod 600 ${LIVE_ROOTDIR}/etc/suauth
@@ -1084,19 +1231,19 @@ ALLOW32BIT=off
USEBL=1
WGETOPTS="--timeout=20 --tries=2"
GREYLIST=on
-PKGS_PRIORITY=( restricted alienbob ktown_testing )
-REPOPLUS=( slackpkgplus restricted alienbob ktown_testing )
+PKGS_PRIORITY=( restricted alienbob ktown mate )
+REPOPLUS=( slackpkgplus restricted alienbob ktown mate )
MIRRORPLUS['slackpkgplus']=http://slakfinder.org/slackpkg+/
MIRRORPLUS['restricted']=http://bear.alienbase.nl/mirrors/people/alien/restricted_sbrepos/${SL_VERSION}/${SL_ARCH}/
MIRRORPLUS['alienbob']=http://bear.alienbase.nl/mirrors/people/alien/sbrepos/${SL_VERSION}/${SL_ARCH}/
-MIRRORPLUS['ktown_testing']=http://bear.alienbase.nl/mirrors/alien-kde/${SL_VERSION}/testing/${SL_ARCH}/
-MIRRORPLUS['mate_testing']=http://slackware.uk/msb/testing/1.12/${SL_ARCH}/
-
+#MIRRORPLUS['ktown_testing']=http://bear.alienbase.nl/mirrors/alien-kde/${SL_VERSION}/testing/${SL_ARCH}/
+MIRRORPLUS['ktown']=http://bear.alienbase.nl/mirrors/alien-kde/${SL_VERSION}/latest/${SL_ARCH}/
+MIRRORPLUS['mate']=http://slackware.uk/msb/${SL_VERSION}/latest/${SL_ARCH}/
EOPL
fi
-/usr/sbin/slackpkg -batch=on update gpg
-/usr/sbin/slackpkg -batch=on update
+ARCH=${SL_ARCH} /usr/sbin/slackpkg -batch=on update gpg
+ARCH=${SL_ARCH} /usr/sbin/slackpkg -batch=on update
EOSL
@@ -1230,9 +1377,9 @@ echo "-- Configuring the X base system."
sed -i -e '/^c3\|^c4\|^c5\|^c6/s/^/# /' ${LIVE_ROOTDIR}/etc/inittab
# Give the 'live' user a face:
-cp ${LIVE_TOOLDIR}/blueSW-64px.png ${LIVE_ROOTDIR}/home/live/.face.icon
-chown --reference=${LIVE_ROOTDIR}/home/live ${LIVE_ROOTDIR}/home/live/.face.icon
-( cd ${LIVE_ROOTDIR}/home/live/ ; ln .face.icon .face )
+cp ${LIVE_TOOLDIR}/blueSW-64px.png ${LIVE_ROOTDIR}/home/${LIVEUID}/.face.icon
+chown --reference=${LIVE_ROOTDIR}/home/${LIVEUID} ${LIVE_ROOTDIR}/home/${LIVEUID}/.face.icon
+( cd ${LIVE_ROOTDIR}/home/${LIVEUID}/ ; ln .face.icon .face )
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
@@ -1246,7 +1393,7 @@ sed -i "s/@LIBDIR@/lib${DIRSUFFIX}/g" ${LIVE_ROOTDIR}/etc/X11/xdm/liveslak-xdm/x
# The Xscreensaver should show a blank screen only, to prevent errors about
# missing modules:
-echo "mode: blank" > ${LIVE_ROOTDIR}/home/live/.xscreensaver
+echo "mode: blank" > ${LIVE_ROOTDIR}/home/${LIVEUID}/.xscreensaver
# -------------------------------------------------------------------------- #
echo "-- Configuring XFCE."
@@ -1266,15 +1413,18 @@ echo "-- Configuring KDE4."
# Adjust some usability issues with the default desktop layout:
if [ -f ${LIVE_ROOTDIR}/usr/share/apps/plasma/layout-templates/org.kde.plasma-desktop.defaultPanel/contents/layout.js ]; then
- sed -i \
- -e '/showActivityManager/a konsole = panel.addWidget("quicklaunch")' \
- -e '/showActivityManager/a dolphin = panel.addWidget("quicklaunch")' \
- -e '/showActivityManager/a firefox = panel.addWidget("quicklaunch")' \
- -e '$a firefox.writeConfig("iconUrls","file:///usr/share/applications/mozilla-firefox.desktop")' \
- -e '$a dolphin.writeConfig("iconUrls","file:////usr/share/applications/kde4/dolphin.desktop")' \
- -e '$a konsole.writeConfig("iconUrls","file:///usr/share/applications/kde4/konsole.desktop")' \
- -e '/tasks.writeConfig/d' \
- ${LIVE_ROOTDIR}/usr/share/apps/plasma/layout-templates/org.kde.plasma-desktop.defaultPanel/contents/layout.js
+ # Only apply to an unmodified file (Slackware 14.2 already implements it):
+ if grep -q 'tasks.writeConfig' ${LIVE_ROOTDIR}/usr/share/apps/plasma/layout-templates/org.kde.plasma-desktop.defaultPanel/contents/layout.js ; then
+ sed -i \
+ -e '/showActivityManager/a konsole = panel.addWidget("quicklaunch")' \
+ -e '/showActivityManager/a dolphin = panel.addWidget("quicklaunch")' \
+ -e '/showActivityManager/a firefox = panel.addWidget("quicklaunch")' \
+ -e '$a firefox.writeConfig("iconUrls","file:///usr/share/applications/mozilla-firefox.desktop")' \
+ -e '$a dolphin.writeConfig("iconUrls","file:////usr/share/applications/kde4/dolphin.desktop")' \
+ -e '$a konsole.writeConfig("iconUrls","file:///usr/share/applications/kde4/konsole.desktop")' \
+ -e '/tasks.writeConfig/d' \
+ ${LIVE_ROOTDIR}/usr/share/apps/plasma/layout-templates/org.kde.plasma-desktop.defaultPanel/contents/layout.js
+ fi
fi
# Prepare some KDE4 defaults for the 'live' user and any new users.
@@ -1283,7 +1433,7 @@ fi
mkdir -p ${LIVE_ROOTDIR}/var/lib/kdm
cat <<EOT > ${LIVE_ROOTDIR}/var/lib/kdm/kdmsts
[PrevUser]
-:0=live
+:0=${LIVEUID}
EOT
chmod 600 ${LIVE_ROOTDIR}/var/lib/kdm/kdmsts
@@ -1346,14 +1496,16 @@ if [ "$LIVEDE" = "PLASMA5" ]; then
echo "-- Configuring PLASMA5."
# -------------------------------------------------------------------------- #
+ # Remove the confusing openbox session if present:
+ rm -f ${LIVE_ROOTDIR}/usr/share/xsessions/openbox-session.desktop || true
# Remove the buggy mediacenter session:
- rm ${LIVE_ROOTDIR}/usr/share/xsessions/plasma-mediacenter.desktop || true
+ rm -f ${LIVE_ROOTDIR}/usr/share/xsessions/plasma-mediacenter.desktop || true
# 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
[Last]
# Name of the last logged-in user. This username will be preselected/shown when the login screen shows up
-User=live
+User=${LIVEUID}
# Name of the session file of the last session selected. This session will be preselected when the login screen shows up.
Session=/usr/share/xsessions/plasma.desktop
@@ -1434,15 +1586,16 @@ if type custom_config 1>/dev/null 2>/dev/null ; then
fi
# Workaround a bug where our Xkbconfig is not loaded sometimes:
-echo "setxkbmap" > ${LIVE_ROOTDIR}/home/live/.xprofile
+echo "setxkbmap" > ${LIVE_ROOTDIR}/home/${LIVEUID}/.xprofile
# Give the live user a copy of our XFCE (and more) skeleton configuration:
cd ${LIVE_ROOTDIR}/etc/skel/
- find . -exec cp -a --parents "{}" ${LIVE_ROOTDIR}/home/live/ \;
+ find . -exec cp -a --parents "{}" ${LIVE_ROOTDIR}/home/${LIVEUID}/ \;
+ find ${LIVE_ROOTDIR}/home/${LIVEUID}/ -type f -exec sed -i -e "s,/home/live,/home/${LIVEUID}," "{}" \;
cd - 1>/dev/null
# Make sure that user 'live' owns her own files:
-chroot ${LIVE_ROOTDIR} chown -R live:users home/live
+chroot ${LIVE_ROOTDIR} chown -R ${LIVEUID}:users home/${LIVEUID}
# -------------------------------------------------------------------------- #
echo "-- Tweaking system startup."
@@ -1473,8 +1626,10 @@ sed -i ${LIVE_ROOTDIR}/etc/inittab -e "s/\(id:\).\(:initdefault:\)/\1${RUNLEVEL}
[ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.yp ] && chmod -x ${LIVE_ROOTDIR}/etc/rc.d/rc.yp
[ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.sshd ] && chmod -x ${LIVE_ROOTDIR}/etc/rc.d/rc.sshd
-# But enable NFS client support:
+# But enable NFS client support and CUPS:
[ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.rpc ] && chmod +x ${LIVE_ROOTDIR}/etc/rc.d/rc.rpc
+[ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.cups ] && chmod +x ${LIVE_ROOTDIR}/etc/rc.d/rc.cups
+[ -f ${LIVE_ROOTDIR}/etc/rc.d/rc.cups-browsed ] && chmod +x ${LIVE_ROOTDIR}/etc/rc.d/rc.cups-browsed
# Add a softvol pre-amp to ALSA - some computers have too low volumes.
# If etc/asound.conf exists it's configuring ALSA to use Pulse,
@@ -1660,10 +1815,10 @@ mount --bind /dev ${LIVE_ROOTDIR}/dev
# Determine the installed kernel version:
if [ "$SL_ARCH" = "x86_64" -o "$SMP32" = "NO" ]; then
- KGEN=$(echo ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep -v smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
+ KGEN=$(ls --indicator-style=none ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep -v smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
KVER=$(ls --indicator-style=none ${LIVE_ROOTDIR}/lib/modules/ |grep -v smp |head -1)
else
- KGEN=$(echo ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
+ KGEN=$(ls --indicator-style=none ${LIVE_ROOTDIR}/var/log/packages/kernel*modules* |grep smp |head -1 |rev | cut -d- -f3 |tr _ - |rev)
KVER=$(ls --indicator-style=none ${LIVE_ROOTDIR}/lib/modules/ |grep smp |head -1)
fi
@@ -1677,6 +1832,11 @@ cat $LIVE_TOOLDIR/liveinit | sed \
-e "s/@MEDIALABEL@/$MEDIALABEL/g" \
-e "s/@PERSISTENCE@/$PERSISTENCE/g" \
-e "s/@DARKSTAR@/$LIVE_HOSTNAME/g" \
+ -e "s/@LIVEUID@/$LIVEUID/g" \
+ -e "s/@DISTRO@/$DISTRO/g" \
+ -e "s/@CDISTRO@/${DISTRO^}/g" \
+ -e "s/@UDISTRO@/${DISTRO^^}/g" \
+ -e "s/@VERSION@/$VERSION/g" \
> ${LIVE_ROOTDIR}/boot/initrd-tree/init
cat /dev/null > ${LIVE_ROOTDIR}/boot/initrd-tree/luksdev
# We do not add openobex to the initrd and don't want to see irrelevant errors:
@@ -1764,6 +1924,10 @@ if [ "$SL_ARCH" = "x86_64" -o "$EFI32" = "YES" ]; then
# Copy the UEFI boot directory structure:
mkdir -p ${LIVE_STAGING}/EFI/BOOT
cp -a ${LIVE_TOOLDIR}/EFI/BOOT/{grub-embedded.cfg,make-grub.sh,*.txt,theme} ${LIVE_STAGING}/EFI/BOOT/
+ if [ "$LIVEDE" = "XFCE" ]; then
+ # We do not use the unicode font, so it can be removed to save space:
+ rm -f ${LIVE_STAGING}/EFI/BOOT/theme/unicode.pf2
+ fi
# Create the grub fonts used in the theme:
for FSIZE in 5 10 12; do
@@ -1828,13 +1992,6 @@ fi
echo "-- Assemble the ISO image."
-# Tag the type of live environment to the ISO filename:
-if [ "$LIVEDE" = "SLACKWARE" ]; then
- ISOTAG=""
-else
- ISOTAG="-$(echo $LIVEDE |tr A-Z a-z)"
-fi
-
# We keep strict size requirements for the XFCE ISO:
# addons/optional modules will not be added.
if [ "$LIVEDE" != "XFCE" ]; then
@@ -1853,10 +2010,10 @@ if [ "$LIVEDE" != "XFCE" -a "$LIVEDE" != "SLACKWARE" ]; then
# however the SLACKWARE ISO should not have any non-Slackware content.
# You can 'cheat' when building the SLACKWARE ISO by copying the graphics
# drivers into the 'optional' directory yourself.
- if ls ${LIVE_TOOLDIR}/graphics/*${KVER}-*.sxz 1>/dev/null 2>&1 ; then
+ if ls ${LIVE_TOOLDIR}/graphics/*${KVER}-${SL_VERSION}-${SL_ARCH}.sxz 1>/dev/null 2>&1 ; then
# Add custom (proprietary) graphics drivers:
echo "-- Adding binary GPU drivers supporting kernel ${KVER}."
- cp ${LIVE_TOOLDIR}/graphics/*${KVER}-*.sxz ${LIVE_MOD_OPT}/
+ cp ${LIVE_TOOLDIR}/graphics/*${KVER}-${SL_VERSION}-${SL_ARCH}.sxz ${LIVE_MOD_OPT}/
fi
fi
@@ -1865,80 +2022,7 @@ fi
mkdir -p ${LIVE_STAGING}/${LIVEMAIN}/rootcopy
# Create an ISO file from the directories found below ${LIVE_STAGING}:
-cd ${LIVE_STAGING}
-
-# Determine whether we add UEFI boot capabilities to the ISO:
-if [ -f boot/syslinux/efiboot.img -a "$USEXORR" = "NO" ]; then
- UEFI_OPTS="-eltorito-alt-boot -no-emul-boot -eltorito-platform 0xEF -eltorito-boot boot/syslinux/efiboot.img"
-elif [ -f boot/syslinux/efiboot.img -a "$USEXORR" = "YES" ]; then
- UEFI_OPTS="-eltorito-alt-boot -e boot/syslinux/efiboot.img -no-emul-boot"
-else
- UEFI_OPTS=""
-fi
-
-# Time to determine the output filename, now that we know all the variables
-# and ensured that the OUTPUT directory exists:
-OUTFILE=${OUTFILE:-"${OUTPUT}/${DISTRO}${DIRSUFFIX}-live${ISOTAG}-${SL_VERSION}.iso"}
-if [ "$USEXORR" = "NO" ]; then
- mkisofs -o "${OUTFILE}" \
- -V "${MEDIALABEL}" \
- -R -J \
- -hide-rr-moved \
- -v -d -N \
- -no-emul-boot -boot-load-size ${BOOTLOADSIZE} -boot-info-table \
- -sort boot/syslinux/iso.sort \
- -b boot/syslinux/isolinux.bin \
- -c boot/syslinux/isolinux.boot \
- ${UEFI_OPTS} \
- -preparer "$(echo $LIVEDE |sed 's/BASE//') Live built by ${BUILDER}" \
- -publisher "The Slackware Linux Project - http://www.slackware.com/" \
- -A "${DISTRO^}-${SL_VERSION} for ${SL_ARCH} ($(echo $LIVEDE |sed 's/BASE//') Live $VERSION)" \
- -x ./$(basename ${LIVE_WORK}) \
- -x ./${LIVEMAIN}/bootinst \
- -x boot/syslinux/testing \
- .
-
- if [ "$SL_ARCH" = "x86_64" -o "$EFI32" = "YES" ]; then
- # Make this a hybrid ISO with UEFI boot support on x86_64.
- # On 32bit, the variable EFI32 must be explicitly enabled.
- isohybrid -u "${OUTFILE}"
- else
- isohybrid "${OUTFILE}"
- fi # End UEFI hybrid ISO.
-else
- echo "-- Using xorriso to generate the ISO and make it hybrid."
- xorriso -as mkisofs -o "${OUTFILE}" \
- -V "${MEDIALABEL}" \
- -J -joliet-long -r \
- -hide-rr-moved \
- -v -d -N \
- -b boot/syslinux/isolinux.bin \
- -c boot/syslinux/isolinux.boot \
- -boot-load-size ${BOOTLOADSIZE} -boot-info-table -no-emul-boot \
- ${UEFI_OPTS} \
- -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
- -isohybrid-gpt-basdat \
- -preparer "$(echo $LIVEDE |sed 's/BASE//') Live built by ${BUILDER}" \
- -publisher "The Slackware Linux Project - http://www.slackware.com/" \
- -A "${DISTRO^}-${SL_VERSION} for ${SL_ARCH} ($(echo $LIVEDE |sed 's/BASE//') Live $VERSION)" \
- -x ./$(basename ${LIVE_WORK}) \
- -x ./${LIVEMAIN}/bootinst \
- -x boot/syslinux/testing \
- .
-fi
-
-# This copy is no longer needed:
-rm -rf ./boot
-
-# Return to original directory:
-cd - 1>/dev/null
-
-cd "${OUTPUT}"
- md5sum "$(basename "${OUTFILE}")" \
- > "$(basename "${OUTFILE}")".md5
-cd - 1>/dev/null
-echo "-- Live ISO image created:"
-ls -l "${OUTFILE}"*
+create_iso ${LIVE_STAGING}
# Clean out the mounts etc:
cleanup
diff --git a/makemod b/makemod
index 27ba575..ae030c9 100755
--- a/makemod
+++ b/makemod
@@ -60,21 +60,20 @@ elif [ -f "$2" -a "$INTERACTIVE" = "YES" ]; then
fi
fi
-# .sxz extension uses xz compression:
-COMPR="xz"
+MODEXT=$(echo "$2" |rev |cut -d'.' -f1 |rev)
+case $MODEXT in
+ sxz) COMPR="xz" ;;
+ sgz) COMPR="gzip" ;;
+ xzm) COMPR="xz" ;;
+ *) echo "-- Unsupported module extension '$MODEXT'" ; exit 1 ;;
+esac
if [ -d "$1" ]; then
- echo "Creating .sxz from directory."
+ echo "Creating .${MODEXT} module from directory using '$COMPR' compression."
+ TMPDIR=$(mktemp -t -d makesxz.XXXXXX)
PKGDIR="$1"
else
- MODEXT=$(echo "$2" |rev |cut -d'.' -f1 |rev)
- case $MODEXT in
- sxz) COMPR="xz" ;;
- sgz) COMPR="gzip" ;;
- xzm) COMPR="xz" ;;
- *) echo "-- Unsupported module extension '$MODEXT'" ; exit 1 ;;
- esac
- echo "Creating .${MODEXT} from package."
+ echo "Creating .${MODEXT} module from package using '$COMPR' compression."
TMPDIR=$(mktemp -t -d makesxz.XXXXXX)
PKGDIR="$TMPDIR"
if [ ! -d $PKGDIR ]; then
diff --git a/pkglists/alien.lst b/pkglists/alien.lst
index 15e03e8..9608495 100644
--- a/pkglists/alien.lst
+++ b/pkglists/alien.lst
@@ -5,10 +5,12 @@ chromium-pepperflash-plugin
chromium-widevine-plugin
dropbox-client
ffmpeg
+freerdp
gecko-mediaplayer
gmtk
gnome-mplayer
gst-plugins-ffmpeg0
+gst-plugins-libav
icedtea-web
libdvdcss
libreoffice
@@ -56,10 +58,53 @@ libreoffice-dict-vi
libreoffice-dict-zu
libreoffice-kde-integration
libtorrent-rasterbar
+lumina
openjdk
p7zip
+python-twisted
podofo
qbittorrent
+sqlitebrowser
+sshfs-fuse
veracrypt
vlc
wxGTK
+zope.interface
+
+# LXQT deps:
+# If you are making a standalone LXQT Live ISO, then please note that LXQT
+# needs quite a bit of Plasma5 packages and deps.
+# Therefore you might want to use these definition files instead:
+# ./pkglists/lxqtdeps.* and ./pkglists/lxqt.*
+obconf
+openbox
+
+# LXQT:
+compton-conf
+libconfig
+libfm
+libfm-extra
+libfm-qt
+liblxqt
+libqtxdg
+libsysstat
+lximage-qt
+lxmenu-data
+lxqt-about
+lxqt-common
+lxqt-config
+lxqt-globalkeys
+lxqt-notificationd
+lxqt-openssh-askpass
+lxqt-panel
+lxqt-policykit
+lxqt-powermanagement
+lxqt-qtplugin
+lxqt-runner
+lxqt-session
+lxqt-sudo
+menu-cache
+obconf-qt
+pcmanfm-qt
+qterminal
+qtermwidget
diff --git a/pkglists/kde4plasma5.lst b/pkglists/kde4plasma5.lst
index 9656cb2..717bbea 100644
--- a/pkglists/kde4plasma5.lst
+++ b/pkglists/kde4plasma5.lst
@@ -6,7 +6,6 @@
# Slackware's KDE4:
amarok
-#bluedevil
calligra
k3b
kaudiocreator
@@ -16,10 +15,8 @@ kdevelop-pg-qt
kdevelop-php
kdevelop-php-docs
kdevplatform
-kio-mtp
kplayer
kwebkitpart
oxygen-gtk2
partitionmanager
-skanlite
diff --git a/pkglists/lxqt.conf b/pkglists/lxqt.conf
new file mode 100644
index 0000000..4b527b2
--- /dev/null
+++ b/pkglists/lxqt.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="/mnt/auto/sox/sbrepos/${SL_VERSION}/${SL_ARCH}"
+
+# Package root directory:
+SL_PKGROOT=${SL_REPO}
+
+# Patches root directory:
+SL_PATCHROOT=""
+
diff --git a/pkglists/lxqt.lst b/pkglists/lxqt.lst
new file mode 100644
index 0000000..df6e5f7
--- /dev/null
+++ b/pkglists/lxqt.lst
@@ -0,0 +1,33 @@
+# deps:
+obconf
+openbox
+
+# lxqt:
+compton-conf
+libconfig
+libfm
+libfm-extra
+libfm-qt
+liblxqt
+libqtxdg
+libsysstat
+lximage-qt
+lxmenu-data
+lxqt-about
+lxqt-common
+lxqt-config
+lxqt-globalkeys
+lxqt-notificationd
+lxqt-openssh-askpass
+lxqt-panel
+lxqt-policykit
+lxqt-powermanagement
+lxqt-qtplugin
+lxqt-runner
+lxqt-session
+lxqt-sudo
+menu-cache
+obconf-qt
+pcmanfm-qt
+qterminal
+qtermwidget
diff --git a/pkglists/lxqtdeps.conf b/pkglists/lxqtdeps.conf
new file mode 100644
index 0000000..2db46bd
--- /dev/null
+++ b/pkglists/lxqtdeps.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-kde/${SL_VERSION}/latest/${SL_ARCH}"
+SL_REPO="/mnt/auto/sox/data/slackware/ktown/${SL_VERSION}/latest/${SL_ARCH}"
+
+# Package root directory:
+SL_PKGROOT=${SL_REPO}
+
+# Patches root directory:
+SL_PATCHROOT=""
+
diff --git a/pkglists/lxqtdeps.lst b/pkglists/lxqtdeps.lst
new file mode 100644
index 0000000..792a0fa
--- /dev/null
+++ b/pkglists/lxqtdeps.lst
@@ -0,0 +1,88 @@
+# deps:
+libinput
+libxkbcommon
+qt5
+qt5-webkit
+libdbusmenu-qt5
+polkit-qt5-1
+wayland
+
+# frameworks:
+attica-framework
+baloo5
+bluez-qt
+breeze-icons
+extra-cmake-modules
+frameworkintegration
+kactivities-framework
+kactivities-stats
+kapidox
+karchive
+kauth
+kbookmarks
+kcmutils
+kcodecs
+kcompletion
+kconfig
+kconfigwidgets
+kcoreaddons
+kcrash
+kdbusaddons
+kdeclarative
+kded
+kdelibs4support
+kdesignerplugin
+kdesu
+kdewebkit
+kdnssd
+kdoctools
+kemoticons
+kfilemetadata5
+kglobalaccel
+kguiaddons
+khtml
+ki18n
+kiconthemes
+kidletime
+kimageformats
+kinit
+kio
+kitemmodels
+kitemviews
+kjobwidgets
+kjs
+kjsembed
+kmediaplayer
+knewstuff
+knotifications
+knotifyconfig
+kpackage
+kparts
+kpeople
+kplotting
+kpty
+kross
+krunner
+kservice
+ktexteditor
+ktextwidgets
+kunitconversion
+kwallet
+kwidgetsaddons
+kwindowsystem
+kxmlgui
+kxmlrpcclient
+modemmanager-qt
+networkmanager-qt
+oxygen-icons5
+plasma-framework
+solid
+sonnet
+threadweaver
+
+# plasma:
+libkscreen2
+
+# applications-extra:
+sddm-qt5
+
diff --git a/pkglists/mate.conf b/pkglists/mate.conf
index d91f63d..c02452a 100644
--- a/pkglists/mate.conf
+++ b/pkglists/mate.conf
@@ -1,8 +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/msb/testing/1.14/${SL_ARCH}/"
-SL_REPO="/mnt/auto/sox/ftp/pub/Linux/Slackware/msb/testing/1.14/${SL_ARCH}"
+
+# For now, hard-code "14.2" because "current" does not have a "latest":
+#SL_REPO_URL="rsync://slackware.uk/msb/${SL_VERSION}/latest/${SL_ARCH}/"
+#SL_REPO="/mnt/auto/sox/ftp/pub/Linux/Slackware/msb/${SL_VERSION}/latest/${SL_ARCH}"
+SL_REPO_URL="rsync://slackware.uk/msb/14.2/latest/${SL_ARCH}/"
+SL_REPO="/mnt/auto/sox/ftp/pub/Linux/Slackware/msb/14.2/latest/${SL_ARCH}"
# Package root directory:
SL_PKGROOT=${SL_REPO}
diff --git a/pkglists/mate.lst b/pkglists/mate.lst
index 4a0d06e..04d22a4 100644
--- a/pkglists/mate.lst
+++ b/pkglists/mate.lst
@@ -1,18 +1,24 @@
# MSB DEPS:
docutils
gksu
+glade
gssdp
gtk-engines
gtksourceview
+gtksourceview3
gupnp
libgksu
libgtop
+libgxps
libunique
+libunique3
libwnck3
murrine
pangox-compat
pygtksourceview
rarian
+vala
+vte3
yelp-tools
yelp-xsl
zenity
diff --git a/pkglists/min.lst b/pkglists/min.lst
index f1e9f87..1b6d02d 100644
--- a/pkglists/min.lst
+++ b/pkglists/min.lst
@@ -8,7 +8,7 @@ bin
binutils
bind
bison
-bsd-games
+#bsd-games
bzip2
ca-certificates
coreutils
diff --git a/pkglists/multilib.conf b/pkglists/multilib.conf
new file mode 100644
index 0000000..1f8d5e6
--- /dev/null
+++ b/pkglists/multilib.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/multilib/${SL_VERSION}"
+SL_REPO="/mnt/auto/sox/www/sox/slackware/multilib/${SL_VERSION}"
+
+# Package root directory:
+SL_PKGROOT=${SL_REPO}
+
+# Patches root directory:
+SL_PATCHROOT=""
+
diff --git a/pkglists/multilib.lst b/pkglists/multilib.lst
new file mode 100644
index 0000000..046106a
--- /dev/null
+++ b/pkglists/multilib.lst
@@ -0,0 +1,177 @@
+# The core multilib packages:
+compat32-tools
+gcc
+gcc-g++
+gcc-gfortran
+gcc-gnat
+gcc-go
+gcc-java
+gcc-objc
+glibc
+glibc-i18n
+glibc-profile
+glibc-solibs
+# This is what I consider as the essential 32bit multilib package set.
+# You can find this list embedded in the 'massconvert32.sh' script.
+# The A/ series:
+aaa_elflibs-compat32
+attr-compat32
+bzip2-compat32
+cups-compat32
+dbus-compat32
+e2fsprogs-compat32
+eudev-compat32
+libgudev-compat32
+openssl-solibs-compat32
+util-linux-compat32
+xz-compat32
+# The AP/ series:
+cups-compat32
+cups-filters-compat32
+flac-compat32
+mariadb-compat32
+mpg123-compat32
+sqlite-compat32
+# The D/ series:
+libtool-compat32
+llvm-compat32
+# The L/ series:
+alsa-lib-compat32
+alsa-oss-compat32
+alsa-plugins-compat32
+atk-compat32
+audiofile-compat32
+cairo-compat32
+dbus-glib-compat32
+elfutils-compat32
+esound-compat32
+expat-compat32
+fftw-compat32
+freetype-compat32
+fribidi-compat32
+gamin-compat32
+gdk-pixbuf2-compat32
+giflib-compat32
+glib2-compat32
+gmp-compat32
+gnome-keyring-compat32
+gtk+2-compat32
+gst-plugins-base-compat32
+gst-plugins-base0-compat32
+gst-plugins-good-compat32
+gst-plugins-good0-compat32
+gstreamer-compat32
+gstreamer0-compat32
+harfbuzz-compat32
+icu4c-compat32
+jasper-compat32
+json-c-compat32
+lcms-compat32
+lcms2-compat32
+libaio-compat32
+libart_lgpl-compat32
+libasyncns-compat32
+libexif-compat32
+libffi-compat32
+libglade-compat32
+libgphoto2-compat32
+libidn-compat32
+libieee1284-compat32
+libjpeg-turbo-compat32
+libmng-compat32
+libmpc-compat32
+libnl3-compat32
+libnotify-compat32
+libogg-compat32
+libpcap-compat32
+libpng-compat32
+libsamplerate-compat32
+libsndfile-compat32
+libtasn1-compat32
+libtermcap-compat32
+libtiff-compat32
+libusb-compat32
+libvorbis-compat32
+libxml2-compat32
+libxslt-compat32
+lzo-compat32
+ncurses-compat32
+openjpeg-compat32
+orc-compat32
+pango-compat32
+popt-compat32
+pulseaudio-compat32
+qt-compat32
+readline-compat32
+sbc-compat32
+sdl-compat32
+seamonkey-solibs-compat32
+speexdsp-compat32
+startup-notification-compat32
+svgalib-compat32
+v4l-utils-compat32
+zlib-compat32
+# The N/ series:
+curl-compat32
+cyrus-sasl-compat32
+gnutls-compat32
+libgcrypt-compat32
+libgpg-error-compat32
+libtirpc-compat32
+nettle-compat32
+openldap-client-compat32
+openssl-compat32
+p11-kit-compat32
+samba-compat32
+# The X/ series:
+fontconfig-compat32
+freeglut-compat32
+glew-compat32
+glu-compat32
+libFS-compat32
+libICE-compat32
+libSM-compat32
+libX11-compat32
+libXScrnSaver-compat32
+libXau-compat32
+libXaw-compat32
+libXcomposite-compat32
+libXcursor-compat32
+libXdamage-compat32
+libXdmcp-compat32
+libepoxy-compat32
+libXevie-compat32
+libXext-compat32
+libXfixes-compat32
+libXfont-compat32
+libXfontcache-compat32
+libXft-compat32
+libXi-compat32
+libXinerama-compat32
+libXmu-compat32
+libXp-compat32
+libXpm-compat32
+libXrandr-compat32
+libXrender-compat32
+libXres-compat32
+libXt-compat32
+libXtst-compat32
+libXv-compat32
+libXvMC-compat32
+libXxf86dga-compat32
+libXxf86misc-compat32
+libXxf86vm-compat32
+libdmx-compat32
+libdrm-compat32
+libfontenc-compat32
+libpciaccess-compat32
+libva-compat32
+libva-intel-driver-compat32
+libvdpau-compat32
+libxcb-compat32
+libxshmfence-compat32
+mesa-compat32
+pixman-compat32
+xcb-util-compat32
+# The XAP/ series:
+sane-compat32
diff --git a/pkglists/plasma5.conf b/pkglists/plasma5.conf
index 49e51ef..7dcf394 100644
--- a/pkglists/plasma5.conf
+++ b/pkglists/plasma5.conf
@@ -1,8 +1,11 @@
# 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-kde/${SL_VERSION}/5/${SL_ARCH}"
-SL_REPO="/mnt/auto/sox/data/slackware/ktown/${SL_VERSION}/5/${SL_ARCH}"
+
+VARIANT=testing
+
+SL_REPO_URL="rsync://slackware.uk/people/alien-kde/${SL_VERSION}/${VARIANT}/${SL_ARCH}"
+SL_REPO="/mnt/auto/sox/data/slackware/ktown/${SL_VERSION}/${VARIANT}/${SL_ARCH}"
# Package root directory:
SL_PKGROOT=${SL_REPO}
diff --git a/pkglists/plasma5.lst b/pkglists/plasma5.lst
index c182ab1..f98d9fc 100644
--- a/pkglists/plasma5.lst
+++ b/pkglists/plasma5.lst
@@ -5,29 +5,34 @@
OpenAL
PyQt5
cfitsio
+elogind
grantlee
grantlee-qt4
+hack-font-ttf
json-glib
libappindicator
libdbusmenu-gtk
libdbusmenu-qt5
libindicator
+libinput
libxkbcommon
lmdb
+mesa
ninja
noto-cjk-font-ttf
-noto-font-ttf-2015-09
+noto-font-ttf
phonon
phonon-gstreamer
phonon-vlc
polkit-qt5-1
+poppler
qca-qt5
qt-gstreamer
qt5
qt5-webkit
-sip
sni-qt
wayland
+xorg-server
# telepathy deps:
farstream
@@ -49,151 +54,35 @@ telepathy-logger-qt5
telepathy-mission-control
telepathy-qt5
-# applications:
-analitza
-ark
-artikulate
-audiocd-kio
-baloo5-widgets
-blinken
-bomber
-bovo
-cantor
-cervisia
-dolphin
-dolphin-plugins
-dragon
-filelight
-granatier
-gwenview
-juk
-kaccessible
-kajongg
-kalgebra
-kalzium
-kamera
-kanagram
-kapman
-kapptemplate
-kate
-katomic
-kblackbox
-kblocks
-kbounce
-kbreakout
-kbruch
-kcachegrind
-kcalc
-kcharselect
-kcolorchooser
-kcron
-kde-baseapps
-kde-dev-scripts
-kde-dev-utils
-kde-runtime
-kdebugsettings
-kdeedu-data
-kdegraphics-mobipocket
-kdegraphics-strigi-analyzer
-kdegraphics-thumbnailers
-kdenetwork-filesharing
-kdenetwork-strigi-analyzers
-kdesdk-kioslaves
-kdesdk-strigi-analyzers
-kdesdk-thumbnailers
-kdewebdev
-kdf
-kdiamond
-kfloppy
-kfourinline
-kgeography
-kget
-kgoldrunner
-kgpg
-khangman
-kig
-kigo
-killbots
-kio-extras
-kiriki
-kiten
-kjots
-kjumpingcube
-klettres
-klickety
-klines
-kmag
-kmahjongg
-kmines
-kmix
-kmousetool
-kmouth
-kmplot
-knavalbattle
-knetwalk
-kolf
-kollision
-kolourpaint
-kompare
-konquest
-konsole
-kopete
-kpat
-kppp
-kqtquickcharts
-krdc
-kremotecontrol
-kreversi
-krfb
-kruler
-ksaneplugin
-kshisen
-ksirk
-ksnakeduel
-kspaceduel
-ksquares
-kstars
-ksudoku
-ksystemlog
-kteatime
-ktimer
-ktouch
-ktuberling
-kturtle
-kubrick
-kuser
-kwalletmanager
-kwordquiz
-libkcddb
-libkcompactdisc
-libkdcraw
-libkdeedu
-libkdegames
-libkeduvocdocument
-libkexiv2
-libkgeomap
-libkipi
-libkmahjongg
-libkomparediff2
-libksane
-lokalize
-lskat
-marble
-mplayerthumbs
-okteta
-okular
-palapeli
-parley
-picmi
-poxml
-print-manager
-rocs
-spectacle
-step
-svgpart
-sweeper
-umbrello
-zeroconf-ioslave
+# kde4 extragear:
+kio-mtp
+
+# kde4 based:
+akonadi4
+baloo
+baloo-widgets
+kactivities
+katepart4
+kdelibs
+kdepimlibs4
+kfilemetadata
+konsolepart4
+korundum
+kross-interpreters
+libkdegames4
+libkexiv2_4
+libkmahjongg4
+libksane4
+nepomuk-core
+nepomuk-widgets
+oktetapart4
+perlkde
+perlqt
+pykde4
+qtruby
+smokegen
+smokekde
+smokeqt
# frameworks:
attica-framework
@@ -268,39 +157,12 @@ solid
sonnet
threadweaver
-# kde4 extragear:
-kio-mtp
-
-# kde4 based:
-akonadi4
-baloo
-baloo-widgets
-kactivities
-katepart4
-kdelibs
-kdepimlibs4
-kfilemetadata
-konsolepart4
-korundum
-kross-interpreters
-libkdegames4
-libkexiv2_4
-libkmahjongg4
-libksane4
-nepomuk-core
-nepomuk-widgets
-oktetapart4
-perlkde
-perlqt
-pykde4
-qtruby
-smokegen
-smokekde
-smokeqt
-
# kdepim:
akonadi
akonadi-calendar
+akonadi-contacts
+akonadi-mime
+akonadi-notes
akonadi-search
calendarsupport
eventviews
@@ -385,9 +247,156 @@ powerdevil
sddm-kcm
systemsettings
+# applications:
+analitza
+ark
+artikulate
+audiocd-kio
+baloo5-widgets
+blinken
+bomber
+bovo
+cantor
+cervisia
+dolphin
+dolphin-plugins
+dragon
+filelight
+granatier
+gwenview
+juk
+kaccessible
+kajongg
+kalgebra
+kalzium
+kamera
+kanagram
+kapman
+kapptemplate
+kate
+katomic
+kblackbox
+kblocks
+kbounce
+kbreakout
+kbruch
+kcachegrind
+kcalc
+kcharselect
+kcolorchooser
+kcron
+kde-baseapps
+kde-dev-scripts
+kde-dev-utils
+kde-runtime
+kdebugsettings
+kdeedu-data
+kdegraphics-mobipocket
+kdegraphics-strigi-analyzer
+kdegraphics-thumbnailers
+kdenetwork-filesharing
+kdenetwork-strigi-analyzers
+kdesdk-kioslaves
+kdesdk-strigi-analyzers
+kdesdk-thumbnailers
+kdewebdev
+kdf
+kdiamond
+kfloppy
+kfourinline
+kgeography
+kget
+kgoldrunner
+kgpg
+khangman
+kig
+kigo
+killbots
+kio-extras
+kiriki
+kiten
+kjots
+kjumpingcube
+klettres
+klickety
+klines
+kmag
+kmahjongg
+kmines
+kmix
+kmousetool
+kmouth
+kmplot
+knavalbattle
+knetwalk
+kolf
+kollision
+kolourpaint
+kompare
+konquest
+konsole
+kopete
+kpat
+kppp
+kqtquickcharts
+krdc
+kremotecontrol
+kreversi
+krfb
+kruler
+ksaneplugin
+kshisen
+ksirk
+ksnakeduel
+kspaceduel
+ksquares
+kstars
+ksudoku
+ksystemlog
+kteatime
+ktimer
+ktouch
+ktuberling
+kturtle
+kubrick
+kuser
+kwalletmanager
+kwordquiz
+libkcddb
+libkcompactdisc
+libkdcraw
+libkdeedu
+libkdegames
+libkeduvocdocument
+libkexiv2
+libkgeomap
+libkipi
+libkmahjongg
+libkomparediff2
+libksane
+lokalize
+lskat
+marble
+mplayerthumbs
+okteta
+okular
+palapeli
+parley
+picmi
+poxml
+print-manager
+rocs
+spectacle
+step
+svgpart
+sweeper
+umbrello
+zeroconf-ioslave
+
# applications extra:
ktorrent
libktorrent
+skanlite
# telepathy:
kaccounts-integration
@@ -416,5 +425,6 @@ kde-l10n-it
kde-l10n-nl
kde-l10n-pt_BR
kde-l10n-pt
+kde-l10n-sv
kde-l10n-ru
diff --git a/pkglists/xapbase.lst b/pkglists/xapbase.lst
index a4a8de5..f8b768b 100644
--- a/pkglists/xapbase.lst
+++ b/pkglists/xapbase.lst
@@ -5,6 +5,7 @@ audacious
audacious-plugins
blueman
cairomm
+fltk
geeqie
gftp
gimp
@@ -18,6 +19,7 @@ hexchat
imagemagick
js185
libsigc++
+lftp
mozilla-firefox
#mozilla-thunderbird
network-manager-applet
@@ -28,10 +30,11 @@ rdesktop
rxvt
sane
seamonkey-solibs
+tigervnc
vim-gvim
x11-ssh-askpass
x3270
-xaos
+#xaos
#xfractint
xgames
#xlockmore
diff --git a/pkglists/xbase.lst b/pkglists/xbase.lst
index 3028f90..1fcd6ec 100644
--- a/pkglists/xbase.lst
+++ b/pkglists/xbase.lst
@@ -20,8 +20,11 @@ bigreqsproto
bluez
boost
cairo
+cdrtools
cgmanager
compositeproto
+cups
+cups-filters
damageproto
db48
dbus
@@ -31,6 +34,7 @@ dejavu-fonts-ttf
desktop-file-utils
djvulibre
dmxproto
+dosfstools
dri2proto
dri3proto
elfutils
@@ -95,6 +99,7 @@ gtkspell
gvfs
harfbuzz
hicolor-icon-theme
+hplip
hunspell
iceauth
ico
@@ -238,6 +243,7 @@ mozilla-nss
mpg123
mtdev
neon
+net-snmp
nettle
newt
nfs-utils
@@ -282,7 +288,7 @@ sqlite
startup-notification
svgalib
t1lib
-tibmachuni-font-ttf
+#tibmachuni-font-ttf
ttf-indic-fonts
udisks
udisks2