[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
slackware:liveslak [2016/05/05 20:55 (UTC)] – Document the PXE server. alienbob | slackware:liveslak [2023/01/04 11:01 (UTC)] – Be more explicit in an example. alienbob | ||
---|---|---|---|
Line 6: | Line 6: | ||
- | Welcome to the Slackware Live Edition! | + | Welcome to the Slackware Live Edition! |
- | Slackware Live Edition does not have to be installed to a computer hard drive. | + | Slackware Live Edition does not have to be installed to a computer hard drive (//however you do have that choice if you want to: using the '' |
The USB version is " | The USB version is " | ||
Line 32: | Line 32: | ||
The " | The " | ||
- | - a complete 64bit Slackware-current Live Edition (in a 2.6 GB ISO); | + | - a complete 64bit Slackware-current Live Edition (in a 4.0 GB ISO); |
- a slimmed-down XFCE ISO (700 MB) with XDM as the graphical login manager. | - a slimmed-down XFCE ISO (700 MB) with XDM as the graphical login manager. | ||
- | - a ISO image (3.1 GB) of Slackware64-current containing Plasma 5 instead of KDE 4, with an addition of several other packages from the alienBOB repositories: | + | - a ISO image (4.3 GB) of Slackware64-current containing |
- | - a Mate variant (1.7 GB) where KDE 4 has been replaced by Mate (a Gnome 2 fork); | + | - A Digital Audio Workstation (DAW) based on a custom Slackware package set plus a basic Plasma5, containing a rich software collection for musicians, producers and live performance artists. |
+ | - a Mate variant (3.2 GB) where KDE 4 has been replaced by Mate (a Gnome 2 fork); | ||
- a Cinnamon flavour (a fork of the Gnome 3 Shell replacing Slackware' | - a Cinnamon flavour (a fork of the Gnome 3 Shell replacing Slackware' | ||
+ | - a [[https:// | ||
+ | - a [[http:// | ||
- a //Custom// variant which you can give your own name, its own package list and custom post-install configuration. | - a //Custom// variant which you can give your own name, its own package list and custom post-install configuration. | ||
Line 44: | Line 47: | ||
Common download locations are: | Common download locations are: | ||
- | * Primary site: http://bear.alienbase.nl/ | + | * Primary site: https://download.liveslak.org/ (%%rsync://liveslak.org/liveslak/%%) |
- | * Darren' | + | * Darren' |
- | * Willy?s http:// | + | * Willy's http:// |
- | * Ryan?s https:// | + | |
- | * Shasta?s http:// | + | |
Line 64: | Line 65: | ||
- | ==== Transfering ISO content to USB stick ==== | + | ==== Booting |
- | + | ||
- | + | ||
- | A script is available which allows you to transfer the ISO image content to a USB stick, making some modifications depending on the script' | + | |
- | + | ||
- | The USB stick will be erased and re-formatted when running this script! | + | |
- | + | ||
- | This script, called ' | + | |
- | -c|--crypt size|perc | + | |
- | | + | |
- | or as a percentage of free space. | + | |
- | | + | |
- | -f|--force | + | |
- | -h|--help | + | |
- | -i|--infile < | + | |
- | -o|--outdev < | + | |
- | -p|--persistence < | + | |
- | -u|--unattended | + | |
- | -v|--verbose | + | |
- | -w|--wait< | + | |
- | -C|--cryptpersistfile size|perc | + | |
- | Use a LUKS-encrypted ' | + | |
- | of a directory (for use on FAT filesystem). | + | |
- | -P|--persistfile | + | |
- | of a directory (for use on FAT filesystem). | + | |
- | </ | + | |
- | Examples: | + | |
- | + | ||
- | * Create a USB version of Slackware Live, where the USB stick is known to the system as '/ | + | |
- | # ./ | + | |
- | * Create a USB Live like above, but this time adding an encrypted /home filesystem with 750 MB of space, and at the same time increase the wait time on boot to 15 seconds (useful for slow USB media that fail to start the Live OS otherwise): | + | |
- | # ./ | + | |
- | * Create a USB Live with an encrypted /home (allocating 30% of the stick' | + | |
- | # ./ | + | |
- | * Create a USB Live with both the /home and the persistent data encrypted (the persistence filesystem will be 300 MB in size): | + | |
- | # ./ | + | |
- | + | ||
- | You might have noticed that the " | + | |
- | + | ||
- | + | ||
- | ==== PXE booting the Live OS ==== | + | |
- | + | ||
- | + | ||
- | Slackware Live Edition can do a network boot boot using PXE protocol off a NFS export. | + | |
- | label liveslak | + | |
- | kernel slackware-live/ | + | |
- | append initrd=slackware-live/ | + | |
- | </ | + | |
- | As shown in the example above, a boot parameter '' | + | |
- | + | ||
- | Actually, two boot parameters are available to properly support network boot. A second boot parameter '' | + | |
- | + | ||
- | Syntax of these two parameters: | + | |
- | nfsroot=ip.ad.dr.ess:/ | + | |
- | nic=< | + | |
- | + | ||
- | Example uses of the two network boot parameters: | + | |
- | nfsroot=192.168.1.1:/ | + | |
- | nic=auto: | + | |
- | nic=auto: | + | |
- | nic=: | + | |
- | + | ||
- | After you have setup your PXE environment (DHCP, TFTP and NFS servers) properly using the above information, | + | |
- | + | ||
- | If your DHCP server takes too long in acknowledging the client' | + | |
- | + | ||
- | Persistence is not supported in this configuration; | + | |
- | + | ||
- | + | ||
- | === PXE server === | + | |
- | + | ||
- | + | ||
- | Slackware Live Edition is not just capable of booting as a PXE client; it is abl | + | |
- | e to run a PXE server all by itself. | + | |
- | + | ||
- | What does that mean? | + | |
- | + | ||
- | A practical example would be that your bring a USB stick with Slackware Live Edition to a LAN party, use it to boot one of the computers and then all the other computers in the (wired) LAN will be able to do a network boot and run the same Slackware Live Edition a couple of minutes later. | + | |
- | + | ||
- | How to start the PXE server? | + | |
- | + | ||
- | When you boot the Live OS you can then start a script " | + | |
- | + | ||
- | The PXE server uses dnsmasq to offer DNS to the PXE clients. The dnsmasq program will enable its internal DHCP server capabilities if your LAN does not have its own DHCP server. Dnsmasq will also start a TFTP server which the PXE clients will connect to in order to retrieve the boot files (kernel and initrd). | + | |
- | + | ||
- | If you have multiple network interfaces, it is important to know that dnsmasq will only bind to the interface where you want PXE clients to connect to. In a multi-NIC situation where a second NIC is connected to the outside world (your local network), this means that the DHCP/DNS server started by dnsmasq will not interfere with an existing DHCP server in your local network. | + | |
- | + | ||
- | Once the PXE server is running, the script will show you the dnsmasq' | + | |
- | + | ||
- | If your PXE server computer has sufficient RAM, it is strongly advised to boot the server' | + | |
- | + | ||
- | + | ||
- | ==== Boot parameters explained ==== | + | |
- | + | ||
- | + | ||
- | Press <F2> in the syslinux boot screen for an overview of (most) boot parameters. | + | |
- | + | ||
- | The following parameters are recognized by Slackware Live Edition. | + | |
- | + | ||
- | === Desktop Environment === | + | |
- | + | ||
- | 0|1|2|3|4|5|6|S|s|single => | + | |
- | Select a runlevel to start with. | + | |
- | The default is 4 for graphical login. | + | |
- | + | ||
- | kbd=fr xkb=ch,fr => | + | |
- | Example of custom X keyboard layout. | + | |
- | The boot menus will configure some of these for you but you can | + | |
- | of course always modify the values. | + | |
- | + | ||
- | livepw=" | + | |
- | Change the password for user " | + | |
- | The password is passed as a cleartext string. | + | |
- | + | ||
- | locale=nl_NL kbd=nl tz=Europe/ | + | |
- | Example of language, | + | |
- | keyboard and/or timezone customization. | + | |
- | + | ||
- | rootpw=" | + | |
- | Change the password for user " | + | |
- | The password is passed as a cleartext string. | + | |
- | + | ||
- | === Custom software === | + | |
- | + | ||
- | load=nvidia => | + | |
- | Load and configure Nvidia drivers if available | + | |
- | in the ISO (not for SLACKWARE and XFCE variants by default). | + | |
- | + | ||
- | load=mod1[, | + | |
- | Load one or more squashfs modules | + | |
- | from the directory "/ | + | |
- | By default none of these " | + | |
- | + | ||
- | noload=mod1[, | + | |
- | Prevent loading of one or more | + | |
- | squashfs modules from the directory "/ | + | |
- | By default all these " | + | |
- | + | ||
- | === Network boot === | + | |
- | + | ||
- | dhcpwait=< | + | |
- | Maximum wait time for the DHCP client to configure a network interface | + | |
- | (default: 20 seconds). | + | |
- | + | ||
- | nfsroot=ip.ad.dr.ess:/ | + | |
- | defines the IP address | + | |
- | of the NFS server, and the path to the extracted content | + | |
- | of Slackware Live Edition. | + | |
- | + | ||
- | nic=< | + | |
- | network device customization, | + | |
- | not needed when your network runs a DHCP server. | + | |
- | Specify a driver if UDEV does not detect the device. Specify the | + | |
- | interface if Slackware Live can not figure it out. If you specify | + | |
- | ' | + | |
- | is optional but needed to access the internet for instance. | + | |
- | + | ||
- | === Hardware related === | + | |
- | + | ||
- | localhd => | + | |
- | initialize RAID/LVM on local hard drives. | + | |
- | + | ||
- | nga => | + | |
- | no glamor 2D acceleration. | + | |
- | with error " | + | |
- | nomodeset => | + | |
- | Boot without kernel mode setting, needed with | + | |
- | some machines. | + | |
- | + | ||
- | rootdelay=10 => | + | |
- | Add 10 second delay to give the kernel more | + | |
- | time to initialize USB. Try this if booting fails. Default is 5. | + | |
- | + | ||
- | swap => | + | |
- | Allow the Live OS to activate all swap partitions on | + | |
- | the local hardware. By default, no swap is touched. | + | |
- | + | ||
- | === Media tweaks === | + | |
- | + | ||
- | hostname=your_custom_hostname[, | + | |
- | Specify a custom hostname. | + | |
- | to prohibit hostname modification in case of network boot. | + | |
- | + | ||
- | livemedia=/ | + | |
- | Tell the init script which partition | + | |
- | contains the Slackware Live OS you want to boot. This can | + | |
- | become necessary if you have another copy of Slackware Live | + | |
- | installed in another partition. | + | |
- | + | ||
- | livemedia=/ | + | |
- | Use this if you want to | + | |
- | load the live OS from an ISO file on a local harddisk partition. | + | |
- | + | ||
- | livemain=directoryname => | + | |
- | Use this if you copied the content | + | |
- | of the ISO to a different directory than " | + | |
- | + | ||
- | luksvol=file1[:/ | + | |
- | Mount LUKS container " | + | |
- | in the Live fs. Multiple files must be separated by a comma. | + | |
- | Specify " | + | |
- | including an encrypted /home . | + | |
- | + | ||
- | nop => | + | |
- | No persistence, | + | |
- | case your " | + | |
- | If you want to ignore any persistent data during boot, | + | |
- | including LUKS data, specify "nop luksvol=" | + | |
- | + | ||
- | persistence=name => | + | |
- | Use this if you are using a different | + | |
- | directory/ | + | |
- | + | ||
- | toram => | + | |
- | copy the OS from the media to to RAM before running it. | + | |
- | You can remove the boot media after booting. | + | |
- | + | ||
- | === Troubleshooting === | + | |
- | + | ||
- | blacklist=mod1[, | + | |
- | Add one or more kernel modules | + | |
- | to the kernel blacklist to prevent them from loading, in case | + | |
- | they cause issues during operation. | + | |
- | + | ||
- | debug => | + | |
- | During init, pause at strategic locations while | + | |
- | assembling the overlay filesystem and show mount information. | + | |
- | + | ||
- | rescue => | + | |
- | After initialization, | + | |
- | rescue shell to perform lowlevel maintenance. | + | |
- | + | ||
- | + | ||
- | ==== Layout of the ISO ==== | + | |
- | + | ||
- | + | ||
- | The Live ISO contains four directories in the root of its filesystem: | + | |
- | * EFI/ | + | |
- | * boot/ | + | |
- | * liveslak/ | + | |
- | * rootcopy/ | + | |
- | + | ||
- | The USB variant with persistence may have an additional directory in the root: | + | |
- | * persistence/ | + | |
- | + | ||
- | * The EFI/ directory contains the Grub configuration used when you boot the Live OS on a computer with UEFI. | + | |
- | * The boot/ directory contains the syslinux configuration used when the Live OS boots on a computer with a BIOS. This directory also contains the kernel and initrd files which are used to actually boot the OS. | + | |
- | * The liveslak/ directory contains all the squashfs modules which are used to assemble the filesystem of the Live OS. It contains three subdirectories: | + | |
- | * addons/ - modules which are stored in this directory will always be added t the Live filesystem unless you prevent that with a " | + | |
- | * optional/ - modules in this directory will not be added to the filesystem of the Live OS unless you force this with a " | + | |
- | * system/ - this directory contains all the modules which were created by the " | + | |
- | * rootcopy/ - this directory is empty by default. | + | |
- | + | ||
- | + | ||
- | ===== Developer Documentation ===== | + | |
- | + | ||
- | + | ||
- | ==== Scripts and tools ==== | + | |
- | + | ||
- | + | ||
- | === make_slackware_live.sh === | + | |
- | + | ||
- | + | ||
- | The first script: | + | |
- | + | ||
- | The script " | + | |
- | Thanks to Linux kernel 4.x and the squashfs-tools package in Slackware, the process of creating a Slackware Live ISO requires **no** (re)compilation of Slackware content or installing 3rd party packages. | + | |
- | + | ||
- | The script' | + | |
- | + | ||
- | + | ||
- | == Install the Slackware packages == | + | |
- | + | ||
- | + | ||
- | Stage one: | + | |
- | + | ||
- | * The script reads a package sequence for the Live variant and installs all packages in this sequence to subdirectories of a temporary directory tree. | + | |
- | * Every Slackware package set (a, ap, d, ... , y) or package list (min, xbase, xapbase, ...) is installed into a separate ' | + | |
- | * Each of those root directories is " | + | |
- | * These module files are subsequently loop-mounted and then combined together into a single read-only directory structure using an " | + | |
- | * This " | + | |
- | * On ' | + | |
- | * Note that when you boot the Live OS later on, another writable overlay will be used so capture any write operations performed by the OS. You will perceive the Live OS as a real OS that can write and remove files. | + | |
- | * a RAM-based filesystem when the Live OS runs without persistence. | + | |
- | * a directory or a loop-mounted container file on your USB stick, if you use a USB stick with persistence. | + | |
- | + | ||
- | + | ||
- | == Configure the Live filesystem with useful out-of-the-box defaults == | + | |
- | + | ||
- | + | ||
- | Stage two: | + | |
- | + | ||
- | * Some filesystem initialization is done when the overlay has been assembled: | + | |
- | * ' | + | |
- | * an initial environment for the accounts is configured, | + | |
- | * the desktop environment is pre-configured for first use, | + | |
- | * the liveslak scripts " | + | |
- | * if the Live system contains a huge kernel (all ISO variants except XFCE) then the " | + | |
- | * slackpkg is configured, | + | |
- | * a locate database is created, | + | |
- | * etc... | + | |
- | * All these modifications are written to the writable filesystem that was created in the previous section. This filesystem will also be stored on the ISO as a squashfs module and when the Live OS boots, it will be mounted read-only just like all the other modules. Its name will be " | + | |
- | + | ||
- | + | ||
- | == Configure the boot stage of the Live OS == | + | |
- | + | ||
- | + | ||
- | Stage three: | + | |
- | + | ||
- | * an initrd is generated, containing a modified " | + | |
- | * a slackware generic kernel plus the above initrd are added to a syslinux (for BIOS computers) and a grub2 (for UEFI computers) configuration. | + | |
- | + | ||
- | + | ||
- | == Create the ISO image == | + | |
- | + | ||
- | + | ||
- | Stage four: | + | |
- | + | ||
- | * a bootable ISO file is created using mkisofs. | + | |
- | * the " | + | |
- | + | ||
- | Done! You can find the ISO file and its MD5 checksum in the /tmp directory. | + | |
- | + | ||
- | + | ||
- | === iso2usb.sh === | + | |
- | + | ||
- | + | ||
- | The second script: | + | |
- | + | ||
- | The " | + | |
- | + | ||
- | This section explains how the script modifies the ISO for the enhanced USB functionality. | + | |
- | + | ||
- | == Mounting a filesystem in an encrypted container == | + | |
- | + | ||
- | The script will create a file of requested size in the root of the Live partition using the ' | + | |
- | If the container is used for an encrypted /home, its filename will be " | + | |
- | The Live OS is instructed to decrypt the container and mount the filesystem. | + | |
- | The iso2usb.sh script only supports creating and configuring an encrypted /home, but you can create additional encrtypted containers yourself and mount them on other locations in the ISO's filesystem. | + | |
- | + | ||
- | == Using a container file for storing persistence data == | + | |
- | + | ||
- | A second type of encrypted container exists, which can be used for storing your persistence data. The Live init script will check if it needs to enable persistence in this order: | + | |
- | - is the USB filesystem writable? | + | |
- | - does a directory / | + | |
- | - does a file / | + | |
- | + | ||
- | == Adding USB wait time == | + | |
- | + | ||
- | For slow USB media, the default 5 seconds wait time during boot are sometimes insufficient to allow the kernel to detect the partitions on your USB device. | + | |
- | + | ||
- | + | ||
- | === makemod === | + | |
- | + | ||
- | + | ||
- | The third script: | + | |
- | + | ||
- | The " | + | |
- | + | ||
- | Usage: | + | |
- | # makemod < | + | |
- | + | ||
- | * The first parameter is either the full path to a Slackware package, or else a directory. | + | |
- | * If a packagename is supplied as first parameter, it will be installed into a temporary directory using Slackware' | + | |
- | * If a directoryname is supplied, its content will be squashed into a module by the " | + | |
- | * The second parameter is the full pathname of the output module which will be created. | + | |
- | + | ||
- | You can copy the module you just created (minding the filename conventions for a Slackware Live module, see paragraph " | + | |
- | + | ||
- | + | ||
- | === setup2hd === | + | |
- | + | ||
- | + | ||
- | The fourth script: | + | |
- | + | ||
- | The " | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | === pxeserver === | + | |
- | + | ||
- | + | ||
- | The fifth script: | + | |
- | + | ||
- | The '' | + | |
- | * It requires a wired network; wireless PXE boot is impossible. | + | |
- | * The pxeserver script tries to find a wired interface; you can pass an explicit interfacename as parameter to the script (optional). | + | |
- | * If multiple wired interfaces are detected, a dialog asks the user to select the right one. | + | |
- | * A check is done for DHCP configuration of this wired interface; | + | |
- | * If DHCP configuration is found then pxeserver will not start its own DHCP server and instead will rely on your LAN's DHCP server. | + | |
- | * If no DHCP config is found, the script will ask permission to start its own internal DHCP server. | + | |
- | * The script will then start the PXE server, comprising of: | + | |
- | * dnsmasq providing DNS, DHCP and BOOTP; | + | |
- | * NFS and RPC daemons; | + | |
- | * The script will detect if you have an outside network connection on another interface and will enable IP forwarding if needed, so that the PXE clients will also have network access. | + | |
- | * The Live OS booted via pxelinux is configured with additional boot parameters: < | + | |
- | nfsroot=< | + | |
- | luksvol= | + | |
- | nop | + | |
- | hostname=< | + | |
- | tz=< | + | |
- | locale=< | + | |
- | kbd=< | + | |
- | </ | + | |
- | * Note that when networkbooting, | + | |
- | + | ||
- | + | ||
- | ==== Creating a Live ISO from scratch ==== | + | |
- | + | ||
- | + | ||
- | Creating an ISO image of Slackware Live Edition requires that you are running Slackware 14.2 (64-bit). | + | |
- | + | ||
- | You also need the " | + | |
- | + | ||
- | Liveslak is a directory tree containing scripts, bitmaps and configuration files. | + | |
- | + | ||
- | + | ||
- | === Liveslak sources layout === | + | |
- | + | ||
- | + | ||
- | The toplevel ' | + | |
- | * EFI/ - contains the skeleton for boot support on UEFI computers. | + | |
- | * addons/ - squashfs modules placed in this directory will be loaded into the Live filesystem when the OS boots. | + | |
- | * graphics/ - squashfs modules for proprietary GPU support (Nvidia) can be placed here. The module(s) will be copied to addons/ by the " | + | |
- | * local64/ , local/ - these directories can contain Slackware packages considered ' | + | |
- | * optional/ - squashfs modules placed in this directory will not automatically be loaded into the Live filesystem when the OS boots. | + | |
- | * pkglists/ - definition files of 3rd party repositories (*.conf) and the package lists to be used from those repositories (*.lst) must be placed in this directory. | + | |
- | * skel/ - contains compressed tarballs (whose filenames must match wildcard " | + | |
- | * syslinux/ | + | |
- | * xdm/ - graphical Slackware theme for the XDM graphical session manager for those ISO variants which do not ship with GDM, KDM or SDDM. | + | |
- | + | ||
- | The toplevel ' | + | |
- | * blueSW-128px.png , blueSW-64px.png - these are bitmaps of the Slackware "Blue S" logo, used for the " | + | |
- | * grub.tpl - the template file which is used to generate the grub menu for UEFI boot. | + | |
- | * iso2usb.sh - this script creates a bootable USB version wih persistence from a Slackware Live ISO. | + | |
- | * languages - this file contains the input configuration for language support. | + | |
- | * code = 2-letter language code | + | |
- | * name = descriptive name of the language | + | |
- | * kbd = name of the console keyboard mapping for this language | + | |
- | * tz = timezone for the language' | + | |
- | * locale = the locale used in the country | + | |
- | * xkb = optional custom X keyboard variant for the language | + | |
- | * liveinit - this is the " | + | |
- | * make_slackware_live.conf - the configuration file for the " | + | |
- | * make_slackware_live.sh - the script that generates the Live ISO. | + | |
- | * makemod - this script creates a squashfs module out of a Slackware package (or out of a directory tree). | + | |
- | * menu.tpl - template which is used to generate the syslinux boot menu for BIOS computers. | + | |
- | + | ||
- | + | ||
- | === Generate the ISO === | + | |
- | + | ||
- | + | ||
- | The liveslak' | + | |
- | | + | |
- | -d desktoptype | + | |
- | XFCE (basic XFCE), PLASMA5 (full Plasma5 replaces KDE4), | + | |
- | MATE (Gnome2 fork replaces KDE4), CINNAMON (fork of Gnome3 | + | |
- | Shell replaces KDE4). | + | |
- | | + | |
- | where the ISO won't boot otherwise (default: 4). | + | |
- | | + | |
- | custom configurations and new initrd.img. | + | |
- | -m pkglst[, | + | |
- | -r series[, | + | |
- | -s slackrepo_dir | + | |
- | -t < | + | |
- | | + | |
- | -z version | + | |
- | -H < | + | |
- | -O < | + | |
- | -R < | + | |
- | </ | + | |
- | The script uses package repositories to create a Live ISO. The packages will be installed into a temporary directory. | + | |
- | + | ||
- | In order to create a Live ISO for any of these variants, the package repositories that are required must be available as a local directory (this can be a network-mounted directory). | + | |
- | + | ||
- | When all pre-reqs are met, you issue a single command to generate the ISO. The following example will create a pure Slackware Live Edition: | + | |
- | # ./ | + | |
- | + | ||
- | Another example which creates a MATE variant, configuring runlevel ' | + | |
- | # ./ | + | |
- | + | ||
- | If you want to know what package sets are included in any of these Desktop Environments, | + | |
- | # grep ^SEQ_ make_slackware_live.sh | + | |
- | for MATE, you will find: | + | |
- | SEQ_MSB=" | + | |
- | Which means that most of the Slackware package series (excepting kde and kdei) will be installed from their tagfiles, and on top of that two package lists are installed from the pkglists/ subdirectory: | + | |
- | + | ||
- | + | ||
- | ==== Using the Customization Feature of the Live OS ==== | + | |
- | + | ||
- | + | ||
- | You can create your own custom Live OS by changing its characteristics in the configuration file "'' | + | |
- | Among the things you can change are: | + | |
- | * The name of the Desktop variant (the script itself knows "// | + | |
- | * The list(s) of packages used for your custom distribution, | + | |
- | * The name of the distribution (by default that is "// | + | |
- | * And finally you can define a function "'' | + | |
- | + | ||
- | This is the section in '' | + | |
- | # REQUIRED: | + | |
- | # Define a new name for your own variant of Slackware Live Edition: | + | |
- | # | + | |
- | + | ||
- | # REQUIRED: | + | |
- | # Define your own custom package sequence for a custom Live ISO. | + | |
- | # In this example you would need to create two files " | + | |
- | # and " | + | |
- | # respectively): | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # Your custom distro name (will reflect in boot screen & filenames): | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # Marker used for finding the Slackware Live files: | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # The filesystem label of the ISO: | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # The ISO main directory: | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # Add your own Live OS customizations to the function custom_config() : | + | |
- | # | + | |
- | # # Add your own stuff here which is not covered in the main script: | + | |
- | #} | + | |
- | </ | + | |
- | ==== Internals of Slackware Live Edition ==== | + | |
- | + | ||
- | + | ||
- | === Overlayfs, squashfs === | + | |
- | + | ||
- | + | ||
- | Overlayfs and squashfs are doing the real magic here. | + | |
- | As explained earlier, the squashfs program takes a directory structure and complresses this into a single archive file. It does this in a special way, more like how mkisofs does this than how tar creates an archive. | + | |
- | + | ||
- | When you have several of these loop-mounted squashfs modules, each containing a fraction of the filesystem of the OS, you are going to stack these fractional filesystems on top of each other and thus assemble the complete filesystem (much like Tintin did in The Secret of the Unicorn when he overlayed several translucent pieces of parchment and looked through them to see the complete picture). | + | |
- | + | ||
- | + | ||
- | === The initrd and its init script === | + | |
- | + | ||
- | + | ||
- | The initrd used for the Slackware Live Edition is a standard Slackware initrd created with Slackware' | + | |
- | The correct name for an ' | + | |
- | The init script of an initrd is what prepares the root filesystem even before the actual OS starts. | + | |
- | + | ||
- | What does the ' | + | |
- | + | ||
- | * It parses any boot parameters you entered (or were passed by syslinux/ | + | |
- | * It does some initialization just like the Slackware init (start udev, wait a bit for USB media to settle, load kernel modules, load custom keyboard mapping, initialize RAID etc) before it gets to the Slackware Live section. | + | |
- | * A RAM based filesystem is created which forms the base of all the rest. | + | |
- | * Using tools like ' | + | |
- | * With the Live media located, the next step is to loop-mount the squashfs modules one by one and add them to the overlay filesystem in the correct order. | + | |
- | * Modules will be loaded in order: | + | |
- | * first the system modules (core modules in the system/ subdirectory) | + | |
- | * then the addon modules (in the addon/ directory). | + | |
- | * last, the optional modules (in the optional/ subdirectory). | + | |
- | * Next, persistence will be configured if the Live OS was booted from a writable media such as a USB stick. | + | |
- | * The overlay filesystem is then finalized by adding the writable toplevel directory structure (either persistent or volatile). | + | |
- | * The complete RAM filesystem which underpins the overlay is made available to the user of the Live OS as "/ | + | |
- | * The filesystem of the Live media is made available to the user of the Live OS as "/ | + | |
- | * With the root filesystem assembled, the Live OS is configured before it actually boots: | + | |
- | * if you specified " | + | |
- | * if you specified a custom keyboard layout for the console (and optionally another for X) by using the " | + | |
- | * Same for any custom locale which was specified with the " | + | |
- | * If timezone and hardware clock were specified in the " | + | |
- | * The boot parameters " | + | |
- | * The " | + | |
- | * If the " | + | |
- | * The "/ | + | |
- | * The complete content of the /rootcopy directory on the Live partition (may be empty) is copied to the filesystem root of the Live OS, potentially ' | + | |
- | * And lastly but very importantly, | + | |
- | * The init script will end by telling the kernel to swith to our new root filesystem (the overlay) and start the Slackware init program (PID 1, / | + | |
- | * From this moment onward, you are booting a ' | + | |
- | + | ||
- | + | ||
- | === Slackware Live module format === | + | |
- | + | ||
- | + | ||
- | A Slackware Live module contains a directory tree, which has been ' | + | |
- | + | ||
- | Slackware Live Edition expects its modules to adhere to a particularly loose filename convention: | + | |
- | * The filename format is " | + | |
- | * The " | + | |
- | * Anything may be part of the ' | + | |
- | * The four digits of a modulename have a meaning. | + | |
- | 0000 = contains the Slackware /boot directory | + | |
- | 0010-0019 = packages installed from a Slackware tagfile (a,ap,d, ... , y series) | + | |
- | 0020-0029 = packages installed from a package list as found in the ./pkglists subdirectory of the liveslak sources (min, xbase, xapbase, xfcebase etc) | + | |
- | 0030-0039 = a ' | + | |
- | 0099 = liveslak configuration module (contaning all the customizations that change the installed packages into a usable Live OS) </ | + | |
- | * Other ranges are free to be used. Note that order in which the filesystem of the Live OS is assembled by overlaying the squashed directory trees depends on the module numbering. | + | |
- | + | ||
- | - Example of a core module: 0099-slackware_zzzconf-14.2-x86_64.sxz | + | |
- | - Example of an optional module: 0060-nvidia-352.79_4.4.1-current-x86_64.sxz | + | |
Line 674: | Line 74: | ||
Syslinux shows a graphical boot menu with a nice Slackware-themed background and several options: | Syslinux shows a graphical boot menu with a nice Slackware-themed background and several options: | ||
- | * Start (SLACKWARE | PLASMA5 | + | * Start (SLACKWARE | KTOWN | XFCE | MATE | DAW) Live (depending on which of the ISOs you boot) |
* Non-US Keyboard selection | * Non-US Keyboard selection | ||
* Non-US Language selection | * Non-US Language selection | ||
Line 688: | Line 88: | ||
On UEFI computers, Grub2 handles the boot and it will show a menu similar (and similarly themed) to the Syslinux menu: | On UEFI computers, Grub2 handles the boot and it will show a menu similar (and similarly themed) to the Syslinux menu: | ||
- | * Start (SLACKWARE | PLASMA5 | + | * Start (SLACKWARE | KTOWN | XFCE | MATE | DAW) Live (depending on which of the ISOs you boot) |
* Non-US Keyboard selection | * Non-US Keyboard selection | ||
* Non-US Language selection | * Non-US Language selection | ||
Line 697: | Line 97: | ||
Editing a Grub menu before booting it is possible by pressing the " | Editing a Grub menu before booting it is possible by pressing the " | ||
- | 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. | + | 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. |
- | ===== Other Slackware based Live distros ===== | + | === UEFI Secure Boot === |
- | Naturally, there have been many who went before me, and since I started as a n00b in Linux Live land, I have learnt a lot about how a Live distro works from playing with these other Slackware-based Live distros. Allow me to name them, and show respect: | + | On computers with Secure Boot enabled, extra measures may be required to boot an Operating System. |
+ | Secure Boot enforces that the first-stage bootloader is signed with an encryption key known to Microsoft. | ||
- | === SLAX === | + | Signing your Grub bootloader and your kernel also becomes mandatory, because the ' |
+ | The Slackware Live OS boots on a Secure Boot enabled computer if created with liveslak-1.5.0 or newer, and only for the 64-bit liveslak ISO images. | ||
- | Website: https://www.slax.org/ | + | To realize this, the Slackware Live ISO ' |
- | SLAX was the original Live variant | + | A distro ' |
- | The Live functionality of SLAX is based on aufs and unionfs which requires a custom-built | + | The Grub and kernel |
+ | == Add the '' | ||
- | === Porteus === | + | There are two ways to add or enroll this certificate. |
+ | * When you boot a Secure Boot enabled liveslak ISO for the first time, the ' | ||
+ | * If you already have a Linux OS up and running on that computer, you can use the program '' | ||
+ | # mokutil --import liveslak.der</ | ||
+ | Note that MOK key enrollment is a one-time action for the official liveslak based ISOs. All future liveslak ISOs will also be signed using this '' | ||
- | Website: http://ww.porteus.org/ | + | Note that you can create your own SSL certificate plus private key and use those to generate custom liveslak ISO images with Secure Boot support. All you need to do is to enroll the public key (the DER-encoded version of your SSL certificate) into the MOK database of your computer. |
- | Porteus was created as a fork of SLAX by the SLAX community when the development of SLAX seemed to have ended. | ||
+ | === Boot from an ISO file on disk === | ||
- | === Salix Live === | ||
+ | If you downloaded a liveslak ISO file and want to boot that ISO directly from its location on your computer' | ||
+ | menuentry " | ||
+ | set iso='/ | ||
+ | set bootparms=' | ||
+ | |||
+ | search -f $iso --set=root | ||
+ | loopback loop $iso | ||
+ | linux (loop)/ | ||
+ | initrd (loop)/ | ||
+ | }</ | ||
- | Website: http:// | + | This example will add a 'LIVESLAK ISO' |
- | + | ||
- | Salix is a distribution based on Slackware with its own philosophy of "one tool per task" reducing the number of packages a lot, compared to its parent Slackware distro. | + | |
- | + | ||
- | + | ||
- | === Slackel === | + | |
- | + | ||
- | + | ||
- | Website: http:// | + | |
- | + | ||
- | Slackel is a Greek distro based on both Slackware and Salix. | + | |
- | + | ||
- | + | ||
- | === SlackEX === | + | |
- | + | ||
- | + | ||
- | Website: http:// | + | |
- | + | ||
- | A website offering Live versions based on many regular Linux distributions. | + | |
- | + | ||
- | + | ||
- | ===== Liveslak Sources ===== | + | |
- | + | ||
- | + | ||
- | Slackware Live Edition is created by the 'liveslak' | + | |
- | + | ||
- | * Git repository: %%git:// | + | |
- | * Git repository (browsable): | + | |
- | * Download mirror: http:// | + | |
- | + | ||
- | + | ||
- | ====== Sources ====== | + | |
- | <!-- If you copy information from another source, then specify that source --> | + | |
- | * Original source: [[http:// | + | |
- | <!-- Authors are allowed | + | |
- | * Originally written by [[wiki: | + | |
- | <!-- * Contrbutions by [[wiki: | + | |
- | + | ||
- | <!-- Please do not modify anything below, except adding new tags.--> | + | |
- | <!-- You must also remove the tag-word " | + | |
- | {{tag> | + | |
- | ====== Slackware Live Edition ====== | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Preface ===== | + | |
- | + | ||
- | + | ||
- | Welcome to the Slackware Live Edition! | + | |
- | + | ||
- | Slackware Live Edition does not have to be installed to a computer | + | |
- | + | ||
- | The USB version is " | + | |
- | + | ||
- | In order to protect your sensitive private data in case you lose your USB stick (or in case it gets stolen) | + | |
- | + | ||
- | + | ||
- | ===== Why yet another Slackware Live ===== | + | |
- | + | ||
- | + | ||
- | The reasons I had for creating the Slackware Live Edition are as follows: | + | |
- | + | ||
- | - Provide a Live version of Slackware proper; i.e. show Slackware as it is, but without having to install it. No hiding of kernel messages scrolling across the screen at boot; no custom wallpapers, etcetera. | + | |
- | - The target should be slackware-current, | + | |
- | - Provide a way to generate | + | |
- | | + | |
- | - Option to create | + | |
- | - KISS: Keep It Simple Stupid! | + | |
- | + | ||
- | + | ||
- | ==== ISO variants ==== | + | |
- | + | ||
- | + | ||
- | The " | + | |
- | - a complete 64bit Slackware-current Live Edition (in a 2.6 GB ISO); | + | |
- | - a slimmed-down XFCE ISO (700 MB) with XDM as the graphical login manager. | + | |
- | - a ISO image (3.1 GB) of Slackware64-current containing Plasma 5 instead of KDE 4, with an addition of several other packages from the alienBOB repositories: | + | |
- | - a Mate variant (1.7 GB) where KDE 4 has been replaced by Mate (a Gnome 2 fork); | + | |
- | - a Cinnamon flavour (a fork of the Gnome 3 Shell replacing Slackware' | + | |
- | - a //Custom// variant which you can give your own name, its own package list and custom post-install configuration. | + | |
- | + | ||
- | + | ||
- | ===== Downloading ISO images ===== | + | |
- | + | ||
- | + | ||
- | Common download locations are: | + | |
- | * Primary site: http:// | + | |
- | * Darren' | + | |
- | * Willy?s http:// | + | |
- | * Ryan?s https:// | + | |
- | * Shasta?s http:// | + | |
- | + | ||
- | + | ||
- | ===== Enduser Documentation ===== | + | |
- | + | ||
- | + | ||
- | ==== Using the ISO image ==== | + | |
- | + | ||
- | + | ||
- | The ISO images are hybrid, which means you can either burn them to DVD, or use ' | + | |
- | + | ||
- | Slackware Live Edition knows two user accounts: " | + | |
- | + | ||
- | 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 " | + | |
Line 838: | Line 151: | ||
A script is available which allows you to transfer the ISO image content to a USB stick, making some modifications depending on the script' | A script is available which allows you to transfer the ISO image content to a USB stick, making some modifications depending on the script' | ||
- | The USB stick will be erased and re-formatted when running this script! | + | The USB stick will be erased and re-formatted when running this script |
This script, called ' | This script, called ' | ||
-c|--crypt size|perc | -c|--crypt size|perc | ||
| | ||
- | or as a percentage of free space. | + | or as a percentage of free space |
- | | + | |
+ | | ||
+ | -d|--devices | ||
-f|--force | -f|--force | ||
-h|--help | -h|--help | ||
Line 850: | Line 165: | ||
-o|--outdev < | -o|--outdev < | ||
-p|--persistence < | -p|--persistence < | ||
+ | If it does not exist yet, create it manually. | ||
+ | -r|--refresh | ||
+ | No formatting, do not touch user content. | ||
+ | -s|--scan | ||
+ | | ||
-u|--unattended | -u|--unattended | ||
-v|--verbose | -v|--verbose | ||
Line 856: | Line 176: | ||
Use a LUKS-encrypted ' | Use a LUKS-encrypted ' | ||
of a directory (for use on FAT filesystem). | of a directory (for use on FAT filesystem). | ||
+ | | ||
+ | as for the ' | ||
-P|--persistfile | -P|--persistfile | ||
of a directory (for use on FAT filesystem). | of a directory (for use on FAT filesystem). | ||
Line 869: | Line 191: | ||
* Create a USB Live with both the /home and the persistent data encrypted (the persistence filesystem will be 300 MB in size): | * Create a USB Live with both the /home and the persistent data encrypted (the persistence filesystem will be 300 MB in size): | ||
# ./ | # ./ | ||
+ | * Refresh the system modules on a USB Live using a Live ISO as the source. | ||
+ | # ./ | ||
You might have noticed that the " | You might have noticed that the " | ||
+ | |||
+ | |||
+ | ==== Using the Live OS to install Slackware to hard disk ==== | ||
+ | |||
+ | All variants of Slackware Live Edition contain a script " | ||
+ | The " | ||
+ | |||
+ | The " | ||
+ | * It will launch fdisk/gdisk if you forgot to create Linux partitions in advance; | ||
+ | * It will allow you to create a regular user account and set its password; | ||
+ | * It will prompt you to set the root password in a graphical dialog. | ||
+ | |||
+ | |||
+ | ==== Updating the kernel (and more) on a USB stick ==== | ||
+ | |||
+ | |||
+ | A script is available which allows you to tweak the content of a USB Live stick. | ||
+ | |||
+ | Specifically, | ||
+ | * Upgrade the kernel and modules, making a backup of the old kernel and modules. | ||
+ | * Restore the backed-up kernel and modules if the new kernel is not working. | ||
+ | * Add network support modules for PXE boot (if missing). | ||
+ | * Increase (or decrease) USB wait time during boot. | ||
+ | * Replace the Live init script inside the initrd image with a new script that you supply. | ||
+ | * Move current persistence data to a new squashfs module in ' | ||
+ | |||
+ | The script is meant to be used while you are running Slackare Live from that same USB stick but this is not mandatory. With the exception of the ' | ||
+ | |||
+ | Before making any modifications, | ||
+ | |||
+ | This script, called ' | ||
+ | -b|--nobackup | ||
+ | -d|--devices | ||
+ | -h|--help | ||
+ | -i|--init < | ||
+ | -k|--kernel < | ||
+ | -m|--kmoddir < | ||
+ | -n|--netsupport | ||
+ | -o|--outdev < | ||
+ | -p|--persistence | ||
+ | -r|--restore | ||
+ | -s|--scan | ||
+ | | ||
+ | -v|--verbose | ||
+ | -w|--wait< | ||
+ | </ | ||
+ | Examples: | ||
+ | |||
+ | * Get a listing of all available removable devices on the computer: | ||
+ | # ./upslak.sh -d | ||
+ | * Updating kernel and modules, providing two packages as input and assuming the USB stick is known as /dev/sdX: | ||
+ | # ./upslak.sh -o /dev/sdX -m kernel-modules-4.19.0-x86_64-1.txz -k kernel-generic-4.19.0-x86_64-1.txz | ||
+ | * Restore the previous kernel and modules after a failed update, and let the script scan your computer for the insertion of your USB stick: | ||
+ | # ./upslak.sh -s -r | ||
+ | * Replace the Live init script with the latest template taken from the git repository: | ||
+ | # ./upslak.sh -o /dev/sdX -i liveslak/ | ||
Line 905: | Line 285: | ||
- | Slackware Live Edition is not just capable of booting as a PXE client; it is abl | + | Slackware Live Edition is not just capable of booting as a PXE client; it is able to run a PXE server all by itself. |
- | e to run a PXE server all by itself. | + | |
What does that mean? | What does that mean? | ||
Line 940: | Line 319: | ||
kbd=fr xkb=ch,fr => | kbd=fr xkb=ch,fr => | ||
Example of custom X keyboard layout. | Example of custom X keyboard layout. | ||
+ | The parameter xkb can be set to " | ||
The boot menus will configure some of these for you but you can | The boot menus will configure some of these for you but you can | ||
of course always modify the values. | 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 " | ||
livepw=" | livepw=" | ||
Line 995: | Line 378: | ||
initialize RAID/LVM on local hard drives. | initialize RAID/LVM on local hard drives. | ||
- | nga => | + | tweaks=tweak1[, |
- | no glamor 2D acceleration. Use when X.Org fails | + | |
- | with error " | + | nga - no glamor 2D acceleration, avoids |
+ | nsh - no 'new style' sub-pixel hinting in freetype. | ||
+ | tpb - enable TrackPoint scrolling while holding down middle mouse button. | ||
+ | syn - start the syndaemon for better support of Synaptics touchpads. | ||
+ | ssh - start the SSH server (disabled by default). | ||
nomodeset => | nomodeset => | ||
Boot without kernel mode setting, needed with | Boot without kernel mode setting, needed with | ||
Line 1011: | Line 399: | ||
=== Media tweaks === | === Media tweaks === | ||
+ | |||
+ | cfg=[skip|write] => | ||
+ | Specify ' | ||
+ | OS parameters; or specify ' | ||
+ | to disk. | ||
+ | |||
+ | domain=your_custom_domain => | ||
+ | Specify a custom domain name. Defaults to ' | ||
hostname=your_custom_hostname[, | hostname=your_custom_hostname[, | ||
Line 1016: | Line 412: | ||
to prohibit hostname modification in case of network boot. | to prohibit hostname modification in case of network boot. | ||
- | livemedia=/ | + | livemedia=/ |
Tell the init script which partition | Tell the init script which partition | ||
contains the Slackware Live OS you want to boot. This can | contains the Slackware Live OS you want to boot. This can | ||
Line 1025: | Line 421: | ||
Use this if you want to | Use this if you want to | ||
load the live OS from an ISO file on a local harddisk partition. | load the live OS from an ISO file on a local harddisk partition. | ||
+ | |||
+ | livemedia=scandev:/ | ||
+ | Use this if liveslak should | ||
+ | scan all device partitions to locate the ISO file. | ||
livemain=directoryname => | livemain=directoryname => | ||
Line 1041: | Line 441: | ||
If you want to ignore any persistent data during boot, | If you want to ignore any persistent data during boot, | ||
including LUKS data, specify "nop luksvol=" | 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 => | persistence=name => | ||
Use this if you are using a different | Use this if you are using a different | ||
directory/ | directory/ | ||
+ | |||
+ | persistence=/ | ||
+ | persistence=scandev:/ | ||
+ | Use this if the persistence directory or container is not located on | ||
+ | the USB stick, but on a local hard disk partition. | ||
+ | Useful for network (PXE) boot where you still want to offer users persistence. | ||
toram => | toram => | ||
- | | + | |
You can remove the boot media after booting. | You can remove the boot media after booting. | ||
+ | |||
+ | toram=all => | ||
+ | Prevent writes to disk since we are supposed to run from RAM; | ||
+ | equivalent to parameter " | ||
+ | |||
+ | toram=core => Load Console OS modules into RAM. Console-only Slackware | ||
+ | loads fast, contains ' | ||
+ | overwrite it with a Persistent Live OS. | ||
+ | |||
+ | toram=os => | ||
+ | Load OS modules into RAM, but write persistent data to USB. | ||
=== Troubleshooting === | === Troubleshooting === | ||
Line 1060: | Line 481: | ||
During init, pause at strategic locations while | During init, pause at strategic locations while | ||
assembling the overlay filesystem and show mount information. | assembling the overlay filesystem and show mount information. | ||
+ | |||
+ | debug=< | ||
+ | ' | ||
+ | ' | ||
rescue => | rescue => | ||
Line 1069: | Line 494: | ||
- | The Live ISO contains | + | The Live ISO contains |
* EFI/ | * EFI/ | ||
* boot/ | * boot/ | ||
* liveslak/ | * liveslak/ | ||
- | * rootcopy/ | ||
The USB variant with persistence may have an additional directory in the root: | The USB variant with persistence may have an additional directory in the root: | ||
Line 1080: | Line 504: | ||
* The EFI/ directory contains the Grub configuration used when you boot the Live OS on a computer with UEFI. | * The EFI/ directory contains the Grub configuration used when you boot the Live OS on a computer with UEFI. | ||
* The boot/ directory contains the syslinux configuration used when the Live OS boots on a computer with a BIOS. This directory also contains the kernel and initrd files which are used to actually boot the OS. | * The boot/ directory contains the syslinux configuration used when the Live OS boots on a computer with a BIOS. This directory also contains the kernel and initrd files which are used to actually boot the OS. | ||
- | * The liveslak/ directory contains all the squashfs modules which are used to assemble the filesystem of the Live OS. It contains | + | * The liveslak/ directory contains all the squashfs modules which are used to assemble the filesystem of the Live OS, as well as files that are copied directly into the root of the Live filesystem. It contains |
- | * addons/ - modules which are stored in this directory will always be added t the Live filesystem unless you prevent that with a " | + | * addons/ - modules which are stored in this directory will always be added to the Live filesystem unless you prevent that with a " |
* optional/ - modules in this directory will not be added to the filesystem of the Live OS unless you force this with a " | * optional/ - modules in this directory will not be added to the filesystem of the Live OS unless you force this with a " | ||
* system/ - this directory contains all the modules which were created by the " | * system/ - this directory contains all the modules which were created by the " | ||
Line 1110: | Line 534: | ||
* The script reads a package sequence for the Live variant and installs all packages in this sequence to subdirectories of a temporary directory tree. | * The script reads a package sequence for the Live variant and installs all packages in this sequence to subdirectories of a temporary directory tree. | ||
- | * Every Slackware package set (a, ap, d, ... , y) or package list (min, xbase, xapbase, ...) is installed into a separate ' | + | * Every Slackware package set (a, ap, d, ... , y) or package list (min, noxbase, x_base, xapbase, ...) is installed into a separate ' |
* Each of those root directories is " | * Each of those root directories is " | ||
* These module files are subsequently loop-mounted and then combined together into a single read-only directory structure using an " | * These module files are subsequently loop-mounted and then combined together into a single read-only directory structure using an " | ||
* This " | * This " | ||
* On ' | * On ' | ||
- | * Note that when you boot the Live OS later on, another writable overlay will be used so capture any write operations performed by the OS. You will perceive the Live OS as a real OS that can write and remove files. | + | * Note that when you boot the Live OS later on, another writable overlay will be used to capture any write operations performed by the OS. You will perceive the Live OS as a real OS that can write and remove files. |
* a RAM-based filesystem when the Live OS runs without persistence. | * a RAM-based filesystem when the Live OS runs without persistence. | ||
* a directory or a loop-mounted container file on your USB stick, if you use a USB stick with persistence. | * a directory or a loop-mounted container file on your USB stick, if you use a USB stick with persistence. | ||
Line 1129: | Line 553: | ||
* an initial environment for the accounts is configured, | * an initial environment for the accounts is configured, | ||
* the desktop environment is pre-configured for first use, | * the desktop environment is pre-configured for first use, | ||
- | * the liveslak scripts " | + | * the liveslak scripts " |
- | * if the Live system contains a huge kernel (all ISO variants except XFCE) then the " | + | * the " |
* slackpkg is configured, | * slackpkg is configured, | ||
* a locate database is created, | * a locate database is created, | ||
* etc... | * etc... | ||
- | * All these modifications are written to the writable filesystem that was created in the previous section. This filesystem will also be stored on the ISO as a squashfs module and when the Live OS boots, it will be mounted read-only just like all the other modules. Its name will be " | + | * All these modifications are written to the writable filesystem that was created in the previous section. This filesystem will also be stored on the ISO as a squashfs module and when the Live OS boots, it will be mounted read-only just like all the other modules. Its name will be " |
Line 1165: | Line 589: | ||
This section explains how the script modifies the ISO for the enhanced USB functionality. | This section explains how the script modifies the ISO for the enhanced USB functionality. | ||
+ | |||
+ | == Layout of the USB stick == | ||
+ | |||
+ | The " | ||
+ | |||
+ | * First partition: a small (1 MB in size) FAT partition which is not used for Slackware Live Edition. | ||
+ | * Second partition: a 100 MB VFAT partition containing the kernel, initrd and all the other stuff required by syslinux and grub2 to boot Slackware Live Edition. | ||
+ | * Third partition: a Linux partition taking up all of the remaining space. It contains the actual liveslak modules, the persistent live storage and optionally your encrypted homedirectory. You can use the remainder of this Linux //ext4// filesystem' | ||
+ | |||
+ | Note that this script is the only supported method of transfering the liveslak ISO content to a USB stick and make that USB stick into a persistent live OS. Several 3rd party tools (like multibootusb, | ||
== Mounting a filesystem in an encrypted container == | == Mounting a filesystem in an encrypted container == | ||
Line 1171: | Line 605: | ||
If the container is used for an encrypted /home, its filename will be " | If the container is used for an encrypted /home, its filename will be " | ||
The Live OS is instructed to decrypt the container and mount the filesystem. | The Live OS is instructed to decrypt the container and mount the filesystem. | ||
- | The iso2usb.sh script only supports creating and configuring an encrypted /home, but you can create additional | + | The iso2usb.sh script only supports creating and configuring an encrypted /home, but you can create additional |
== Using a container file for storing persistence data == | == Using a container file for storing persistence data == | ||
Line 1208: | Line 642: | ||
The fourth script: | The fourth script: | ||
- | The " | + | The " |
- | + | * The Slackware network installation is identical to that of the official Slackware installation medium. | |
+ | * If you chose to install the Live OS, then after you select the target partition(s), | ||
Line 1241: | Line 675: | ||
- | ==== Creating a Live ISO from scratch ==== | + | === upslak.sh |
- | Creating an ISO image of Slackware Live Edition requires that you are running Slackware 14.2 (64-bit). | + | The sixth script: |
- | You also need the "liveslak" script | + | The "upslak.sh" script's runtime usage is explained in detail in a previous paragraph " |
- | Liveslak is a directory tree containing scripts, bitmaps and configuration files. | + | This section |
+ | When the script is started, it will do some sanity checks and then extracts the content of the initrd image. Some characteristics of the initrd will be recorded: | ||
+ | * existence of previously backed-up kernel modules is checked, | ||
+ | * template variables and their values are obtained from the init sctript, | ||
+ | * the current USB wait time is checked. | ||
+ | Depending on the parameters passed to the script, it will then perform one or more of the following actions: | ||
- | === Liveslak sources layout === | + | == Update the kernel and moules |
+ | You can provide a new kernel and its modules in two ways. The ' | ||
+ | If there is sufficient space on the Linux and EFI partitions, the script will make a backup of the current kernel and modules by renaming the kernel and the module directory with a " | ||
- | The toplevel ' | + | == Restore backed-up kernel |
- | * EFI/ - contains the skeleton for boot support on UEFI computers. | + | |
- | * addons/ - squashfs modules placed in this directory will be loaded into the Live filesystem when the OS boots. | + | |
- | * graphics/ - squashfs modules for proprietary GPU support (Nvidia) can be placed here. The module(s) will be copied to addons/ by the " | + | |
- | * local64/ , local/ - these directories can contain Slackware packages considered ' | + | |
- | * optional/ - squashfs | + | |
- | * pkglists/ - definition files of 3rd party repositories (*.conf) and the package lists to be used from those repositories (*.lst) must be placed in this directory. | + | |
- | * skel/ - contains compressed tarballs (whose filenames must match wildcard " | + | |
- | * syslinux/ | + | |
- | * xdm/ - graphical Slackware theme for the XDM graphical session manager for those ISO variants which do not ship with GDM, KDM or SDDM. | + | |
- | The toplevel ' | + | If a backup was made of kernel and modules, the upslak.sh script |
- | * blueSW-128px.png , blueSW-64px.png - these are bitmaps | + | |
- | * grub.tpl - the template file which is used to generate | + | |
- | * iso2usb.sh | + | |
- | * languages - this file contains | + | |
- | * code = 2-letter language code | + | |
- | * name = descriptive name of the language | + | |
- | * kbd = name of the console keyboard mapping for this language | + | |
- | * tz = timezone for the language' | + | |
- | * locale = the locale used in the country | + | |
- | * xkb = optional custom X keyboard variant for the language | + | |
- | * liveinit - this is the " | + | |
- | * make_slackware_live.conf - the configuration file for the " | + | |
- | * make_slackware_live.sh | + | |
- | * makemod - this script creates a squashfs module out of a Slackware package (or out of a directory tree). | + | |
- | * menu.tpl - template which is used to generate the syslinux boot menu for BIOS computers. | + | |
+ | == Add network support modules == | ||
- | === Generate the ISO === | + | This should normally not be needed. |
+ | == Increase (or decrease) USB wait time == | ||
- | The liveslak' | + | Similar to the functionality of the "iso2usb.sh" script, the " |
- | | + | |
- | -d desktoptype | + | |
- | XFCE (basic XFCE), PLASMA5 (full Plasma5 replaces KDE4), | + | |
- | MATE (Gnome2 fork replaces KDE4), CINNAMON (fork of Gnome3 | + | |
- | Shell replaces KDE4). | + | |
- | | + | |
- | where the ISO won't boot otherwise (default: 4). | + | |
- | -f | + | |
- | custom configurations and new initrd.img. | + | |
- | -m pkglst[, | + | |
- | -r series[, | + | |
- | -s slackrepo_dir | + | |
- | -t < | + | |
- | | + | |
- | -z version | + | |
- | -H < | + | |
- | -O < | + | |
- | -R < | + | |
- | </ | + | |
- | The script uses package repositories to create a Live ISO. The packages will be installed into a temporary directory. | + | |
- | In order to create a Live ISO for any of these variants, | + | == Replace |
- | When all pre-reqs are met, you issue a single command | + | The init script inside the initrd image is the core of liveslak. |
- | # ./ | + | |
- | Another example which creates | + | == Wrap persistence data into a new squashfs module == |
- | # ./ | + | |
- | If you want to know what package sets are included in any of these Desktop Environments, | + | Persistence data will accumulate over time on the USB stick. |
- | # grep ^SEQ_ make_slackware_live.sh | + | |
- | for MATE, you will find: | + | |
- | SEQ_MSB=" | + | |
- | Which means that most of the Slackware package series (excepting kde and kdei) will be installed from their tagfiles, and on top of that two package lists are installed from the pkglists/ subdirectory: | + | |
- | + | ||
- | + | ||
- | ==== Using the Customization Feature of the Live OS ==== | + | |
- | + | ||
- | + | ||
- | You can create your own custom Live OS by changing its characteristics in the configuration file "'' | + | |
- | Among the things you can change are: | + | |
- | * The name of the Desktop variant (the script itself knows "// | + | |
- | * The list(s) of packages used for your custom distribution, | + | |
- | * The name of the distribution (by default that is "// | + | |
- | * And finally you can define a function "'' | + | |
- | + | ||
- | This is the section in '' | + | |
- | # REQUIRED: | + | |
- | # Define a new name for your own variant of Slackware Live Edition: | + | |
- | # | + | |
- | + | ||
- | # REQUIRED: | + | |
- | # Define your own custom package sequence for a custom Live ISO. | + | |
- | # In this example you would need to create two files " | + | |
- | # and " | + | |
- | # respectively): | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # Your custom distro name (will reflect in boot screen & filenames): | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # Marker used for finding the Slackware Live files: | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # The filesystem label of the ISO: | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # The ISO main directory: | + | |
- | # | + | |
- | + | ||
- | # OPTIONAL: | + | |
- | # Add your own Live OS customizations to the function custom_config() : | + | |
- | # | + | |
- | # # Add your own stuff here which is not covered in the main script: | + | |
- | #} | + | |
- | </ | + | |
- | ==== Internals of Slackware Live Edition ==== | + | |
- | + | ||
- | + | ||
- | === Overlayfs, squashfs === | + | |
- | + | ||
- | + | ||
- | Overlayfs and squashfs are doing the real magic here. | + | |
- | As explained earlier, the squashfs program takes a directory structure and complresses this into a single archive file. It does this in a special way, more like how mkisofs does this than how tar creates an archive. | + | |
- | + | ||
- | When you have several of these loop-mounted squashfs modules, each containing a fraction of the filesystem of the OS, you are going to stack these fractional filesystems on top of each other and thus assemble the complete filesystem (much like Tintin did in The Secret of the Unicorn when he overlayed several translucent pieces of parchment and looked through them to see the complete picture). | + | |
- | + | ||
- | + | ||
- | === The initrd and its init script === | + | |
- | + | ||
- | + | ||
- | The initrd used for the Slackware Live Edition is a standard Slackware initrd created with Slackware' | + | |
- | The correct name for an ' | + | |
- | The init script of an initrd is what prepares the root filesystem even before the actual OS starts. | + | |
- | + | ||
- | What does the ' | + | |
- | + | ||
- | * It parses any boot parameters you entered (or were passed by syslinux/ | + | |
- | * It does some initialization just like the Slackware init (start udev, wait a bit for USB media to settle, load kernel modules, load custom keyboard mapping, initialize RAID etc) before it gets to the Slackware Live section. | + | |
- | * A RAM based filesystem is created which forms the base of all the rest. | + | |
- | * Using tools like ' | + | |
- | * With the Live media located, the next step is to loop-mount the squashfs modules one by one and add them to the overlay filesystem in the correct order. | + | |
- | * Modules will be loaded in order: | + | |
- | * first the system modules (core modules in the system/ subdirectory) | + | |
- | * then the addon modules (in the addon/ directory). | + | |
- | * last, the optional modules (in the optional/ subdirectory). | + | |
- | * Next, persistence will be configured if the Live OS was booted from a writable media such as a USB stick. | + | |
- | * The overlay filesystem is then finalized by adding the writable toplevel directory structure (either persistent or volatile). | + | |
- | * The complete RAM filesystem which underpins the overlay is made available to the user of the Live OS as "/ | + | |
- | * The filesystem of the Live media is made available to the user of the Live OS as "/ | + | |
- | * With the root filesystem assembled, the Live OS is configured before it actually boots: | + | |
- | * if you specified " | + | |
- | * if you specified a custom keyboard layout for the console (and optionally another for X) by using the " | + | |
- | * Same for any custom locale which was specified with the " | + | |
- | * If timezone and hardware clock were specified in the " | + | |
- | * The boot parameters " | + | |
- | * The " | + | |
- | * If the " | + | |
- | * The "/ | + | |
- | * The complete content of the /rootcopy directory on the Live partition (may be empty) is copied to the filesystem root of the Live OS, potentially ' | + | |
- | * And lastly but very importantly, | + | |
- | * The init script will end by telling the kernel | + | |
- | * From this moment onward, you are booting a ' | + | |
- | + | ||
- | + | ||
- | === Slackware Live module format === | + | |
- | + | ||
- | + | ||
- | A Slackware Live module contains a directory tree, which has been ' | + | |
- | + | ||
- | Slackware Live Edition expects its modules to adhere to a particularly loose filename convention: | + | |
- | * The filename format is " | + | |
- | * The " | + | |
- | * Anything may be part of the ' | + | |
- | * The four digits of a modulename have a meaning. | + | |
- | 0000 = contains the Slackware /boot directory | + | |
- | 0010-0019 = packages | + | |
- | 0020-0029 = packages installed from a package list as found in the ./pkglists subdirectory of the liveslak sources (min, xbase, xapbase, xfcebase etc) | + | |
- | 0030-0039 = a ' | + | |
- | 0099 = liveslak configuration module (contaning all the customizations that change the installed packages into a usable Live OS) </ | + | |
- | * Other ranges are free to be used. Note that order in which the filesystem of the Live OS is assembled by overlaying the squashed directory trees depends on the module numbering. | + | |
- | + | ||
- | - Example of a core module: 0099-slackware_zzzconf-14.2-x86_64.sxz | + | |
- | - 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 " | + | |
- | + | ||
- | 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' | + | |
- | 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 " | + | |
- | + | ||
- | + | ||
- | === 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 " | + | |
- | + | ||
- | 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. | + | |
- | + | ||
- | + | ||
- | ===== Other Slackware based Live distros ===== | + | |
- | + | ||
- | + | ||
- | Naturally, there have been many who went before me, and since I started as a n00b in Linux Live land, I have learnt a lot about how a Live distro works from playing with these other Slackware-based Live distros. | + | |
- | + | ||
- | + | ||
- | === SLAX === | + | |
- | + | ||
- | + | ||
- | Website: https:// | + | |
- | + | ||
- | SLAX was the original Live variant of Slackware. | + | |
- | + | ||
- | The Live functionality of SLAX is based on aufs and unionfs which requires a custom-built kernel with aufs support compiled-in. | + | |
- | + | ||
- | + | ||
- | === Porteus === | + | |
- | + | ||
- | + | ||
- | Website: http:// | + | |
- | + | ||
- | Porteus was created as a fork of SLAX by the SLAX community when the development of SLAX seemed to have ended. | + | |
- | + | ||
- | + | ||
- | === Salix Live === | + | |
- | + | ||
- | + | ||
- | Website: http:// | + | |
- | + | ||
- | Salix is a distribution based on Slackware with its own philosophy of "one tool per task" reducing the number of packages a lot, compared to its parent Slackware distro. | + | |
- | + | ||
- | + | ||
- | === Slackel === | + | |
- | + | ||
- | + | ||
- | Website: http:// | + | |
- | + | ||
- | Slackel is a Greek distro based on both Slackware and Salix. | + | |
- | + | ||
- | + | ||
- | === SlackEX === | + | |
- | + | ||
- | + | ||
- | Website: http:// | + | |
- | + | ||
- | A website offering Live versions based on many regular Linux distributions. | + | |
- | + | ||
- | + | ||
- | ===== Liveslak Sources ===== | + | |
- | + | ||
- | + | ||
- | Slackware Live Edition is created by the ' | + | |
- | + | ||
- | * Git repository: %%git:// | + | |
- | * Git repository (browsable): | + | |
- | * Download mirror: http:// | + | |
- | + | ||
- | + | ||
- | ====== Sources ====== | + | |
- | <!-- If you copy information from another source, then specify that source --> | + | |
- | * Original source: [[http:// | + | |
- | <!-- Authors are allowed to give credit to themselves! --> | + | |
- | * Originally written by [[wiki: | + | |
- | <!-- * Contrbutions by [[wiki: | + | |
- | + | ||
- | <!-- Please do not modify anything below, except adding new tags.--> | + | |
- | <!-- You must also remove the tag-word " | + | |
- | {{tag> | + | |
- | ====== Slackware Live Edition ====== | + | |
- | + | ||
- | + | ||
- | + | ||
- | ===== Preface ===== | + | |
- | + | ||
- | + | ||
- | Welcome to the Slackware Live Edition! | + | |
- | + | ||
- | Slackware Live Edition does not have to be installed to a computer hard drive. | + | |
- | + | ||
- | The USB version | + | |
- | + | ||
- | In order to protect your sensitive private data in case you lose your USB stick (or in case it gets stolen) you can enhance your persistent USB Live OS with an encrypted homedirectory and/or an encrypted persistence file, to be unlocked on boot with a passphrase that only you know. | + | |
- | + | ||
- | + | ||
- | ===== Why yet another Slackware Live ===== | + | |
- | + | ||
- | + | ||
- | The reasons I had for creating the Slackware Live Edition are as follows: | + | |
- | + | ||
- | - Provide a Live version of Slackware proper; i.e. show Slackware as it is, but without having to install it. No hiding of kernel messages scrolling across the screen at boot; no custom wallpapers, etcetera. | + | |
- | - The target should be slackware-current, | + | |
- | - Provide a way to generate a Live ISO with just a mirror of Slackware' | + | |
- | - Still be able to customize its content. | + | |
- | - Option to create a bootable USB stick running Slackware Live (which is different from ' | + | |
- | - KISS: Keep It Simple Stupid! | + | |
- | + | ||
- | + | ||
- | ==== ISO variants ==== | + | |
- | + | ||
- | + | ||
- | The " | + | |
- | - a complete 64bit Slackware-current Live Edition (in a 2.6 GB ISO); | + | |
- | - a slimmed-down XFCE ISO (700 MB) with XDM as the graphical login manager. | + | |
- | - a ISO image (3.1 GB) of Slackware64-current containing Plasma 5 instead of KDE 4, with an addition of several other packages from the alienBOB repositories: | + | |
- | - a Mate variant (1.7 GB) where KDE 4 has been replaced by Mate (a Gnome 2 fork); | + | |
- | - a Cinnamon flavour (a fork of the Gnome 3 Shell replacing Slackware' | + | |
- | - a //Custom// variant which you can give your own name, its own package list and custom post-install configuration. | + | |
- | + | ||
- | + | ||
- | ===== Downloading ISO images ===== | + | |
- | + | ||
- | + | ||
- | Common download locations are: | + | |
- | * Primary site: http:// | + | |
- | * Darren' | + | |
- | * Willy?s http:// | + | |
- | * Ryan?s https:// | + | |
- | * Shasta?s http:// | + | |
- | + | ||
- | + | ||
- | ===== Enduser Documentation ===== | + | |
- | + | ||
- | + | ||
- | ==== Using the ISO image ==== | + | |
- | + | ||
- | + | ||
- | The ISO images are hybrid, which means you can either burn them to DVD, or use ' | + | |
- | + | ||
- | Slackware Live Edition knows two user accounts: " | + | |
- | + | ||
- | Slackware Live Edition deviates as little as possible from a regular Slackware boot. Once you have passed | + | |
- | + | ||
- | + | ||
- | ==== Transfering ISO content to USB stick ==== | + | |
- | + | ||
- | + | ||
- | A script is available which allows you to transfer the ISO image content to a USB stick, making some modifications depending on the script's parameters. | + | |
- | + | ||
- | The USB stick will be erased and re-formatted when running this script! | + | |
- | + | ||
- | This script, called | + | |
- | -c|--crypt size|perc | + | |
- | | + | |
- | or as a percentage of free space. | + | |
- | | + | |
- | -f|--force | + | |
- | -h|--help | + | |
- | -i|--infile < | + | |
- | -o|--outdev < | + | |
- | -p|--persistence < | + | |
- | -u|--unattended | + | |
- | -v|--verbose | + | |
- | -w|--wait< | + | |
- | -C|--cryptpersistfile size|perc | + | |
- | Use a LUKS-encrypted ' | + | |
- | of a directory (for use on FAT filesystem). | + | |
- | -P|--persistfile | + | |
- | of a directory (for use on FAT filesystem). | + | |
- | </ | + | |
- | Examples: | + | |
- | + | ||
- | * Create a USB version of Slackware Live, where the USB stick is known to the system as '/ | + | |
- | # ./ | + | |
- | * Create a USB Live like above, but this time adding an encrypted /home filesystem with 750 MB of space, and at the same time increase the wait time on boot to 15 seconds (useful for slow USB media that fail to start the Live OS otherwise): | + | |
- | # ./ | + | |
- | * Create a USB Live with an encrypted /home (allocating 30% of the stick' | + | |
- | # ./ | + | |
- | * Create a USB Live with both the /home and the persistent data encrypted (the persistence filesystem will be 300 MB in size): | + | |
- | # ./ | + | |
- | + | ||
- | You might have noticed that the "-P" parameter does not accept a size parameter. | + | |
- | + | ||
- | + | ||
- | ==== PXE booting the Live OS ==== | + | |
- | + | ||
- | + | ||
- | Slackware Live Edition can do a network boot boot using PXE protocol off a NFS export. | + | |
- | label liveslak | + | |
- | kernel slackware-live/boot/generic | + | |
- | append initrd=slackware-live/ | + | |
- | </ | + | |
- | As shown in the example above, a boot parameter '' | + | |
- | + | ||
- | Actually, two boot parameters are available to properly support network boot. A second boot parameter '' | + | |
- | + | ||
- | Syntax of these two parameters: | + | |
- | nfsroot=ip.ad.dr.ess:/ | + | |
- | nic=< | + | |
- | + | ||
- | Example uses of the two network boot parameters: | + | |
- | nfsroot=192.168.1.1:/ | + | |
- | nic=auto: | + | |
- | nic=auto: | + | |
- | nic=: | + | |
- | + | ||
- | After you have setup your PXE environment (DHCP, TFTP and NFS servers) properly using the above information, | + | |
- | + | ||
- | If your DHCP server takes too long in acknowledging the client' | + | |
- | + | ||
- | Persistence is not supported in this configuration; | + | |
- | + | ||
- | + | ||
- | === PXE server === | + | |
- | + | ||
- | + | ||
- | Slackware Live Edition is not just capable of booting as a PXE client; it is abl | + | |
- | e to run a PXE server all by itself. | + | |
- | + | ||
- | What does that mean? | + | |
- | + | ||
- | A practical example would be that your bring a USB stick with Slackware | + | |
- | + | ||
- | How to start the PXE server? | + | |
- | + | ||
- | When you boot the Live OS you can then start a script " | + | |
- | + | ||
- | The PXE server uses dnsmasq to offer DNS to the PXE clients. The dnsmasq program will enable its internal DHCP server capabilities if your LAN does not have its own DHCP server. Dnsmasq will also start a TFTP server which the PXE clients will connect to in order to retrieve the boot files (kernel and initrd). | + | |
- | + | ||
- | If you have multiple network interfaces, it is important to know that dnsmasq will only bind to the interface where you want PXE clients to connect to. In a multi-NIC situation where a second NIC is connected to the outside world (your local network), this means that the DHCP/DNS server started by dnsmasq will not interfere with an existing DHCP server in your local network. | + | |
- | + | ||
- | Once the PXE server is running, the script will show you the dnsmasq' | + | |
- | + | ||
- | If your PXE server computer has sufficient RAM, it is strongly advised to boot the server' | + | |
- | + | ||
- | + | ||
- | ==== Boot parameters explained ==== | + | |
- | + | ||
- | + | ||
- | Press <F2> in the syslinux boot screen for an overview of (most) boot parameters. | + | |
- | + | ||
- | The following parameters are recognized by Slackware Live Edition. | + | |
- | + | ||
- | === Desktop Environment === | + | |
- | + | ||
- | 0|1|2|3|4|5|6|S|s|single => | + | |
- | Select a runlevel to start with. | + | |
- | The default is 4 for graphical login. | + | |
- | + | ||
- | kbd=fr xkb=ch,fr => | + | |
- | Example of custom X keyboard layout. | + | |
- | The boot menus will configure some of these for you but you can | + | |
- | of course always modify the values. | + | |
- | + | ||
- | livepw=" | + | |
- | Change the password for user " | + | |
- | The password is passed as a cleartext string. | + | |
- | + | ||
- | locale=nl_NL kbd=nl tz=Europe/ | + | |
- | Example of language, | + | |
- | keyboard and/or timezone customization. | + | |
- | + | ||
- | rootpw=" | + | |
- | Change the password for user " | + | |
- | The password is passed as a cleartext string. | + | |
- | + | ||
- | === Custom software === | + | |
- | + | ||
- | load=nvidia => | + | |
- | Load and configure Nvidia drivers if available | + | |
- | in the ISO (not for SLACKWARE and XFCE variants by default). | + | |
- | + | ||
- | load=mod1[, | + | |
- | Load one or more squashfs modules | + | |
- | from the directory "/ | + | |
- | By default none of these " | + | |
- | + | ||
- | noload=mod1[, | + | |
- | Prevent loading of one or more | + | |
- | squashfs modules from the directory "/ | + | |
- | By default all these " | + | |
- | + | ||
- | === Network boot === | + | |
- | + | ||
- | dhcpwait=< | + | |
- | Maximum wait time for the DHCP client to configure a network interface | + | |
- | (default: 20 seconds). | + | |
- | + | ||
- | nfsroot=ip.ad.dr.ess:/ | + | |
- | defines the IP address | + | |
- | of the NFS server, and the path to the extracted content | + | |
- | of Slackware Live Edition. | + | |
- | + | ||
- | nic=< | + | |
- | network device customization, | + | |
- | not needed when your network runs a DHCP server. | + | |
- | Specify a driver if UDEV does not detect the device. Specify the | + | |
- | interface if Slackware Live can not figure it out. If you specify | + | |
- | ' | + | |
- | is optional but needed to access the internet for instance. | + | |
- | + | ||
- | === Hardware related === | + | |
- | + | ||
- | localhd => | + | |
- | initialize RAID/LVM on local hard drives. | + | |
- | + | ||
- | nga => | + | |
- | no glamor 2D acceleration. | + | |
- | with error " | + | |
- | nomodeset => | + | |
- | Boot without kernel mode setting, needed with | + | |
- | some machines. | + | |
- | + | ||
- | rootdelay=10 => | + | |
- | Add 10 second delay to give the kernel more | + | |
- | time to initialize USB. Try this if booting fails. Default is 5. | + | |
- | + | ||
- | swap => | + | |
- | Allow the Live OS to activate all swap partitions on | + | |
- | the local hardware. By default, no swap is touched. | + | |
- | + | ||
- | === Media tweaks === | + | |
- | + | ||
- | hostname=your_custom_hostname[, | + | |
- | Specify a custom hostname. | + | |
- | to prohibit hostname modification in case of network boot. | + | |
- | + | ||
- | livemedia=/ | + | |
- | Tell the init script which partition | + | |
- | contains the Slackware Live OS you want to boot. This can | + | |
- | become necessary if you have another copy of Slackware Live | + | |
- | installed in another partition. | + | |
- | + | ||
- | livemedia=/ | + | |
- | Use this if you want to | + | |
- | load the live OS from an ISO file on a local harddisk partition. | + | |
- | + | ||
- | livemain=directoryname => | + | |
- | Use this if you copied the content | + | |
- | of the ISO to a different directory than " | + | |
- | + | ||
- | luksvol=file1[:/ | + | |
- | Mount LUKS container " | + | |
- | in the Live fs. Multiple files must be separated by a comma. | + | |
- | Specify " | + | |
- | including an encrypted /home . | + | |
- | + | ||
- | nop => | + | |
- | No persistence, | + | |
- | case your " | + | |
- | If you want to ignore any persistent data during boot, | + | |
- | including LUKS data, specify "nop luksvol=" | + | |
- | + | ||
- | persistence=name => | + | |
- | Use this if you are using a different | + | |
- | directory/ | + | |
- | + | ||
- | toram => | + | |
- | copy the OS from the media to to RAM before running it. | + | |
- | You can remove the boot media after booting. | + | |
- | + | ||
- | === Troubleshooting === | + | |
- | + | ||
- | blacklist=mod1[, | + | |
- | Add one or more kernel modules | + | |
- | to the kernel blacklist to prevent them from loading, in case | + | |
- | they cause issues during operation. | + | |
- | + | ||
- | debug => | + | |
- | During init, pause at strategic locations while | + | |
- | assembling the overlay filesystem and show mount information. | + | |
- | + | ||
- | rescue => | + | |
- | After initialization, | + | |
- | rescue shell to perform lowlevel maintenance. | + | |
- | + | ||
- | + | ||
- | ==== Layout of the ISO ==== | + | |
- | + | ||
- | + | ||
- | The Live ISO contains four directories in the root of its filesystem: | + | |
- | * EFI/ | + | |
- | * boot/ | + | |
- | * liveslak/ | + | |
- | * rootcopy/ | + | |
- | + | ||
- | The USB variant with persistence may have an additional directory in the root: | + | |
- | * persistence/ | + | |
- | + | ||
- | * The EFI/ directory contains the Grub configuration used when you boot the Live OS on a computer with UEFI. | + | |
- | * The boot/ directory contains | + | |
- | * The liveslak/ directory contains all the squashfs modules which are used to assemble the filesystem of the Live OS. It contains three subdirectories: | + | |
- | * addons/ - modules which are stored in this directory will always be added t the Live filesystem unless you prevent that with a " | + | |
- | * optional/ - modules in this directory will not be added to the filesystem of the Live OS unless you force this with a " | + | |
- | * system/ - this directory contains all the modules which were created by the " | + | |
- | * rootcopy/ - this directory is empty by default. | + | |
- | + | ||
- | + | ||
- | ===== Developer Documentation ===== | + | |
- | + | ||
- | + | ||
- | ==== Scripts and tools ==== | + | |
- | + | ||
- | + | ||
- | === make_slackware_live.sh === | + | |
- | + | ||
- | + | ||
- | The first script: | + | |
- | + | ||
- | The script " | + | |
- | Thanks to Linux kernel 4.x and the squashfs-tools package in Slackware, the process of creating a Slackware Live ISO requires **no** (re)compilation of Slackware content or installing 3rd party packages. | + | |
- | + | ||
- | The script' | + | |
- | + | ||
- | + | ||
- | == Install the Slackware packages == | + | |
- | + | ||
- | + | ||
- | Stage one: | + | |
- | + | ||
- | * The script reads a package sequence for the Live variant and installs all packages in this sequence to subdirectories of a temporary directory tree. | + | |
- | * Every Slackware package set (a, ap, d, ... , y) or package list (min, xbase, xapbase, ...) is installed into a separate ' | + | |
- | * Each of those root directories is " | + | |
- | * These module files are subsequently loop-mounted and then combined together into a single read-only directory structure using an " | + | |
- | * This " | + | |
- | * On ' | + | |
- | * Note that when you boot the Live OS later on, another writable overlay will be used so capture any write operations performed by the OS. You will perceive the Live OS as a real OS that can write and remove files. | + | |
- | * a RAM-based filesystem when the Live OS runs without persistence. | + | |
- | * a directory or a loop-mounted container file on your USB stick, if you use a USB stick with persistence. | + | |
- | + | ||
- | + | ||
- | == Configure the Live filesystem with useful out-of-the-box defaults == | + | |
- | + | ||
- | + | ||
- | Stage two: | + | |
- | + | ||
- | * Some filesystem initialization is done when the overlay has been assembled: | + | |
- | * ' | + | |
- | * an initial environment for the accounts is configured, | + | |
- | * the desktop environment is pre-configured for first use, | + | |
- | * the liveslak scripts " | + | |
- | * if the Live system contains a huge kernel | + | |
- | * slackpkg is configured, | + | |
- | * a locate database is created, | + | |
- | * etc... | + | |
- | * All these modifications are written to the writable filesystem that was created in the previous section. This filesystem will also be stored on the ISO as a squashfs module and when the Live OS boots, it will be mounted read-only just like all the other modules. Its name will be "0099-slackware_zzzconf-current-x86_64.sxz" or more generically " | + | |
- | + | ||
- | + | ||
- | == Configure the boot stage of the Live OS == | + | |
- | + | ||
- | + | ||
- | Stage three: | + | |
- | + | ||
- | * an initrd | + | |
- | * a slackware generic kernel plus the above initrd are added to a syslinux (for BIOS computers) and a grub2 (for UEFI computers) configuration. | + | |
- | + | ||
- | + | ||
- | == Create the ISO image == | + | |
- | + | ||
- | + | ||
- | Stage four: | + | |
- | + | ||
- | * a bootable ISO file is created using mkisofs. | + | |
- | * the " | + | |
- | + | ||
- | Done! You can find the ISO file and its MD5 checksum in the /tmp directory. | + | |
- | + | ||
- | + | ||
- | === iso2usb.sh === | + | |
- | + | ||
- | + | ||
- | The second script: | + | |
- | + | ||
- | The " | + | |
- | + | ||
- | This section explains how the script modifies the ISO for the enhanced USB functionality. | + | |
- | + | ||
- | == Mounting a filesystem in an encrypted container == | + | |
- | + | ||
- | The script will create a file of requested size in the root of the Live partition using the ' | + | |
- | If the container is used for an encrypted /home, its filename will be " | + | |
- | The Live OS is instructed to decrypt the container and mount the filesystem. | + | |
- | The iso2usb.sh script only supports creating and configuring an encrypted /home, but you can create additional encrtypted containers yourself and mount them on other locations in the ISO's filesystem. | + | |
- | + | ||
- | == Using a container file for storing persistence data == | + | |
- | + | ||
- | A second type of encrypted container exists, which can be used for storing your persistence data. The Live init script will check if it needs to enable persistence in this order: | + | |
- | - is the USB filesystem writable? | + | |
- | - does a directory / | + | |
- | - does a file / | + | |
- | + | ||
- | == Adding USB wait time == | + | |
- | + | ||
- | For slow USB media, the default 5 seconds wait time during boot are sometimes insufficient to allow the kernel to detect the partitions on your USB device. | + | |
- | + | ||
- | + | ||
- | === makemod === | + | |
- | + | ||
- | + | ||
- | The third script: | + | |
- | + | ||
- | The " | + | |
- | + | ||
- | Usage: | + | |
- | # makemod < | + | |
- | + | ||
- | * The first parameter is either the full path to a Slackware package, or else a directory. | + | |
- | * If a packagename is supplied as first parameter, it will be installed into a temporary directory using Slackware' | + | |
- | * If a directoryname is supplied, its content will be squashed into a module by the " | + | |
- | * The second parameter is the full pathname of the output module which will be created. | + | |
- | + | ||
- | You can copy the module you just created (minding the filename conventions for a Slackware Live module, see paragraph " | + | |
- | + | ||
- | + | ||
- | === setup2hd === | + | |
- | + | ||
- | + | ||
- | The fourth script: | + | |
- | + | ||
- | The " | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | === pxeserver === | + | |
- | + | ||
- | + | ||
- | The fifth script: | + | |
- | + | ||
- | The '' | + | |
- | * It requires a wired network; wireless PXE boot is impossible. | + | |
- | * The pxeserver script tries to find a wired interface; | + | |
- | * If multiple wired interfaces are detected, a dialog asks the user to select the right one. | + | |
- | * A check is done for DHCP configuration of this wired interface; | + | |
- | * If DHCP configuration is found then pxeserver will not start its own DHCP server and instead will rely on your LAN's DHCP server. | + | |
- | * If no DHCP config is found, the script will ask permission to start its own internal DHCP server. | + | |
- | * The script will then start the PXE server, comprising of: | + | |
- | * dnsmasq providing DNS, DHCP and BOOTP; | + | |
- | * NFS and RPC daemons; | + | |
- | * The script will detect if you have an outside network connection on another interface and will enable IP forwarding if needed, so that the PXE clients will also have network access. | + | |
- | * The Live OS booted via pxelinux is configured with additional boot parameters: < | + | |
- | nfsroot=< | + | |
- | luksvol= | + | |
- | nop | + | |
- | hostname=< | + | |
- | tz=< | + | |
- | locale=< | + | |
- | kbd=< | + | |
- | </ | + | |
- | * Note that when networkbooting, | + | |
Line 2013: | Line 719: | ||
- | Creating an ISO image of Slackware Live Edition requires that you are running Slackware 14.2 (64-bit). | + | Creating an ISO image of Slackware Live Edition requires that you are running Slackware 14.2 or newer (64-bit). |
- | You also need the " | + | You also need the " |
- | Liveslak is a directory tree containing scripts, bitmaps and configuration files. | + | Liveslak is a directory tree containing scripts, bitmaps and configuration files. |
Line 2025: | Line 731: | ||
The toplevel ' | The toplevel ' | ||
* EFI/ - contains the skeleton for boot support on UEFI computers. | * EFI/ - contains the skeleton for boot support on UEFI computers. | ||
+ | * README.txt - this documentation. | ||
* addons/ - squashfs modules placed in this directory will be loaded into the Live filesystem when the OS boots. | * addons/ - squashfs modules placed in this directory will be loaded into the Live filesystem when the OS boots. | ||
+ | * contrib/ - contributed scripts that are not used directly for the creation and usage of a Live ISO. | ||
* graphics/ - squashfs modules for proprietary GPU support (Nvidia) can be placed here. The module(s) will be copied to addons/ by the " | * graphics/ - squashfs modules for proprietary GPU support (Nvidia) can be placed here. The module(s) will be copied to addons/ by the " | ||
* local64/ , local/ - these directories can contain Slackware packages considered ' | * local64/ , local/ - these directories can contain Slackware packages considered ' | ||
+ | * media/ - scripts and images that are specific to a Live variant. | ||
* optional/ - squashfs modules placed in this directory will not automatically be loaded into the Live filesystem when the OS boots. | * optional/ - squashfs modules placed in this directory will not automatically be loaded into the Live filesystem when the OS boots. | ||
+ | * patches/ - patches for Slackware scripts that need modifications to run inside a Live OS. | ||
* pkglists/ - definition files of 3rd party repositories (*.conf) and the package lists to be used from those repositories (*.lst) must be placed in this directory. | * pkglists/ - definition files of 3rd party repositories (*.conf) and the package lists to be used from those repositories (*.lst) must be placed in this directory. | ||
+ | * setup2hd/ - script templates used by the '' | ||
* skel/ - contains compressed tarballs (whose filenames must match wildcard " | * skel/ - contains compressed tarballs (whose filenames must match wildcard " | ||
* syslinux/ | * syslinux/ | ||
Line 2045: | Line 756: | ||
* locale = the locale used in the country | * locale = the locale used in the country | ||
* xkb = optional custom X keyboard variant for the language | * xkb = optional custom X keyboard variant for the language | ||
- | * liveinit - this is the " | + | * liveinit.tpl - this is the template for the " |
* make_slackware_live.conf - the configuration file for the " | * make_slackware_live.conf - the configuration file for the " | ||
* make_slackware_live.sh - the script that generates the Live ISO. | * make_slackware_live.sh - the script that generates the Live ISO. | ||
* makemod - this script creates a squashfs module out of a Slackware package (or out of a directory tree). | * makemod - this script creates a squashfs module out of a Slackware package (or out of a directory tree). | ||
* menu.tpl - template which is used to generate the syslinux boot menu for BIOS computers. | * menu.tpl - template which is used to generate the syslinux boot menu for BIOS computers. | ||
+ | * pxeserver.tpl - template to generate the script that starts a PXE server allowing other computers to boot Slackware Live over the network. | ||
+ | * setup2hd.tpl | ||
+ | * setup2hd.local.tpl - here a developer of a custom Live OS can override the default post-installation routine by (re-)defining the function " | ||
+ | * upslak.sh - a script which allows you to tweak the content of a USB Live stick. | ||
Line 2056: | Line 771: | ||
The liveslak' | The liveslak' | ||
+ | The script' | ||
| | ||
- | -d desktoptype | + | -a arch Machine architecture (default: x86_64). |
- | XFCE (basic XFCE), | + | Use i586 for a 32bit ISO, x86_64 for 64bit. |
- | | + | -c comp Squashfs compression (default: xz). |
- | | + | Can be any of 'gzip lzma lzo xz zstd' |
+ | -d desktoptype | ||
+ | | ||
+ | stripped), KTOWN (ktown Plasma5 | ||
+ | (Gnome2 fork replaces | ||
+ | replaces | ||
| | ||
where the ISO won't boot otherwise (default: 4). | where the ISO won't boot otherwise (default: 4). | ||
| | ||
custom configurations and new initrd.img. | custom configurations and new initrd.img. | ||
+ | -l < | ||
+ | (script-default is ' | ||
-m pkglst[, | -m pkglst[, | ||
-r series[, | -r series[, | ||
-s slackrepo_dir | -s slackrepo_dir | ||
- | -t < | + | -t <none|doc|mandoc|bloat> |
+ | | ||
| | ||
-z version | -z version | ||
+ | | ||
+ | | ||
-H < | -H < | ||
- | -O < | + | -M Add multilib (x86_64 only). |
- | -R < | + | -O < |
+ | -R < | ||
+ | -S privkey: | ||
+ | using the full path to colon-separated | ||
+ | private key and certificate files. | ||
+ | | ||
</ | </ | ||
The script uses package repositories to create a Live ISO. The packages will be installed into a temporary directory. | The script uses package repositories to create a Live ISO. The packages will be installed into a temporary directory. | ||
- | In order to create a Live ISO for any of these variants, the package repositories that are required must be available as a local directory (this can be a network-mounted directory). | + | In order to create a Live ISO for any of these variants, the package repositories that are required must be available as a local directory (this can be a network-mounted directory). |
When all pre-reqs are met, you issue a single command to generate the ISO. The following example will create a pure Slackware Live Edition: | When all pre-reqs are met, you issue a single command to generate the ISO. The following example will create a pure Slackware Live Edition: | ||
Line 2084: | Line 815: | ||
Another example which creates a MATE variant, configuring runlevel ' | Another example which creates a MATE variant, configuring runlevel ' | ||
# ./ | # ./ | ||
+ | |||
+ | An example on how to create a DAW Live ISO which supports UEFI SecureBoot (since liveslak 1.5.0 and only for 64-bit), is compressed using ' | ||
+ | # ./ | ||
If you want to know what package sets are included in any of these Desktop Environments, | If you want to know what package sets are included in any of these Desktop Environments, | ||
Line 2092: | Line 826: | ||
- | ==== Using the Customization | + | ==== Using the Customization |
+ | |||
+ | === Master configuration file === | ||
You can create your own custom Live OS by changing its characteristics in the configuration file "'' | You can create your own custom Live OS by changing its characteristics in the configuration file "'' | ||
Among the things you can change are: | Among the things you can change are: | ||
- | * The name of the Desktop variant (the script itself knows "// | + | * The name of the Desktop variant (the script itself knows "// |
* The list(s) of packages used for your custom distribution, | * The list(s) of packages used for your custom distribution, | ||
+ | * The full name of the user (by default that is "// | ||
+ | * The name of the useraccount (by default that is "// | ||
* The name of the distribution (by default that is "// | * The name of the distribution (by default that is "// | ||
* And finally you can define a function "'' | * And finally you can define a function "'' | ||
Line 2112: | Line 850: | ||
# and " | # and " | ||
# respectively): | # respectively): | ||
- | # | + | # |
+ | |||
+ | # OPTIONAL: | ||
+ | # Use something else than the name " | ||
+ | # for the package list containing the generic kernel: | ||
+ | # | ||
# OPTIONAL: | # OPTIONAL: | ||
# Your custom distro name (will reflect in boot screen & filenames): | # Your custom distro name (will reflect in boot screen & filenames): | ||
# | # | ||
+ | |||
+ | #OPTIONAL: | ||
+ | # Name of the ' | ||
+ | # | ||
# OPTIONAL: | # OPTIONAL: | ||
Line 2136: | Line 883: | ||
#} | #} | ||
</ | </ | ||
+ | |||
+ | === Customizing the list of used packages === | ||
+ | |||
+ | Any liveslak ISO variant contains a specific set of Slackware packages, as defined in the various '' | ||
+ | |||
+ | Let's breakdown the definition of such a variable to explain how to customize the package set for your own live ISO. | ||
+ | |||
+ | The list of packages in the MATE ISO for instance, is defined by the '' | ||
+ | # grep ^SEQ_MSB make_slackware_live.sh | ||
+ | SEQ_MSB=" | ||
+ | |||
+ | Three keywords can be identified in the value of a '' | ||
+ | * tagfile - this is an Slackware tagfile for a complete package series. | ||
+ | * pkglist - this is a list of packages to be installed from the Slackware distro itself or from a Slackware-compatible 3rd-party repository. | ||
+ | * local - some packages can not be found in Slackware-compatible repositories. | ||
+ | |||
+ | For the value of a '' | ||
+ | |||
+ | === Custom background images === | ||
+ | |||
+ | The Plasma5 based Live variants allow customization of the background image used for the login greeter, the desktop wallpaper and the lock screen. The image you want to use for this purpose, must have a 16:9 aspect ratio and its dimensions should at least be 1920x1080 pixels. You must store the custom image inside the liveslak source tree: in the subdirectory '' | ||
+ | |||
+ | The " | ||
+ | |||
+ | |||
==== Internals of Slackware Live Edition ==== | ==== Internals of Slackware Live Edition ==== | ||
Line 2171: | Line 943: | ||
* The filesystem of the Live media is made available to the user of the Live OS as "/ | * The filesystem of the Live media is made available to the user of the Live OS as "/ | ||
* With the root filesystem assembled, the Live OS is configured before it actually boots: | * With the root filesystem assembled, the Live OS is configured before it actually boots: | ||
+ | * if a OS-specific configuration file (by default ''/ | ||
* if you specified " | * if you specified " | ||
* if you specified a custom keyboard layout for the console (and optionally another for X) by using the " | * if you specified a custom keyboard layout for the console (and optionally another for X) by using the " | ||
Line 2179: | Line 952: | ||
* If the " | * If the " | ||
* The "/ | * The "/ | ||
- | * The complete content of the /rootcopy directory on the Live partition (may be empty) is copied to the filesystem root of the Live OS, potentially ' | + | * The complete content of the /liveslak/rootcopy directory on the Live partition (may be empty) is copied to the filesystem root of the Live OS, potentially ' |
* And lastly but very importantly, | * And lastly but very importantly, | ||
* The init script will end by telling the kernel to swith to our new root filesystem (the overlay) and start the Slackware init program (PID 1, / | * The init script will end by telling the kernel to swith to our new root filesystem (the overlay) and start the Slackware init program (PID 1, / | ||
* From this moment onward, you are booting a ' | * From this moment onward, you are booting a ' | ||
+ | |||
+ | |||
+ | === OS configuration file for persistent media === | ||
+ | |||
+ | If present, the liveslak init will load a OS config file from a persistent Live medium such as a USB stick. | ||
+ | * BLACKLIST, KEYMAP, LIVE_HOSTNAME, | ||
+ | Values for the variables defined in this configuration file override the values already set via liveslak' | ||
+ | |||
+ | When booting your persistent //Slackware Live Edition//, the optional boot-time parameter " | ||
+ | * " | ||
+ | * " | ||
+ | |||
+ | The OS configuration file is not present by default. You either create it at boot-time using "'' | ||
+ | KEYMAP=nl | ||
+ | LIVE_HOSTNAME=zelazny | ||
+ | LOCALE=nl_NL.utf8 | ||
+ | TWEAKS=tpb, | ||
+ | TZ=Europe/ | ||
Line 2197: | Line 988: | ||
0000 = contains the Slackware /boot directory | 0000 = contains the Slackware /boot directory | ||
0010-0019 = packages installed from a Slackware tagfile (a,ap,d, ... , y series) | 0010-0019 = packages installed from a Slackware tagfile (a,ap,d, ... , y series) | ||
- | 0020-0029 = packages installed from a package list as found in the ./pkglists subdirectory of the liveslak sources (min, xbase, xapbase, xfcebase etc) | + | 0020-0029 = packages installed from a package list as found in the ./pkglists subdirectory of the liveslak sources (min, noxbase, x_base, xapbase, xfcebase etc) |
0030-0039 = a ' | 0030-0039 = a ' | ||
0099 = liveslak configuration module (contaning all the customizations that change the installed packages into a usable Live OS) </ | 0099 = liveslak configuration module (contaning all the customizations that change the installed packages into a usable Live OS) </ | ||
Line 2204: | Line 995: | ||
- Example of a core module: 0099-slackware_zzzconf-14.2-x86_64.sxz | - Example of a core module: 0099-slackware_zzzconf-14.2-x86_64.sxz | ||
- Example of an optional module: 0060-nvidia-352.79_4.4.1-current-x86_64.sxz | - 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 " | ||
- | |||
- | 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' | ||
- | 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 " | ||
- | |||
- | |||
- | === 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 " | ||
- | |||
- | 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. | ||
Line 2249: | Line 1008: | ||
Website: https:// | Website: https:// | ||
- | SLAX was the original Live variant of Slackware. | + | SLAX was the original Live variant of Slackware. |
The Live functionality of SLAX is based on aufs and unionfs which requires a custom-built kernel with aufs support compiled-in. | The Live functionality of SLAX is based on aufs and unionfs which requires a custom-built kernel with aufs support compiled-in. | ||
Line 2257: | Line 1016: | ||
- | Website: http://ww.porteus.org/ | + | Website: http://www.porteus.org/ |
Porteus was created as a fork of SLAX by the SLAX community when the development of SLAX seemed to have ended. | Porteus was created as a fork of SLAX by the SLAX community when the development of SLAX seemed to have ended. | ||
Line 2283: | Line 1042: | ||
Website: http:// | Website: http:// | ||
- | A website offering Live versions based on many regular Linux distributions. | + | A website offering Live versions based on many regular Linux distributions. |
Line 2291: | Line 1050: | ||
Slackware Live Edition is created by the ' | Slackware Live Edition is created by the ' | ||
- | * Git repository: %%git://bear.alienbase.nl/ | + | * Git repository: %%git://git.liveslak.org/ |
- | * Git repository (browsable): | + | * Git repository (browsable): |
* Download mirror: http:// | * Download mirror: http:// | ||
Line 2298: | Line 1057: | ||
====== Sources ====== | ====== Sources ====== | ||
<!-- If you copy information from another source, then specify that source --> | <!-- If you copy information from another source, then specify that source --> | ||
- | * Original source: [[http://bear.alienbase.nl/cgit/ | + | * Original source: [[https://git.slackware.nl/ |
+ | * Project landing page: [[https:// | ||
+ | * ISO downloads: [[https:// | ||
<!-- Authors are allowed to give credit to themselves! --> | <!-- Authors are allowed to give credit to themselves! --> | ||
* Originally written by [[wiki: | * Originally written by [[wiki: | ||
- | <!-- * Contrbutions | + | <!-- * Contributions |
<!-- Please do not modify anything below, except adding new tags.--> | <!-- Please do not modify anything below, except adding new tags.--> | ||
<!-- You must also remove the tag-word " | <!-- You must also remove the tag-word " | ||
- | {{tag> | + | {{tag> |