From 646a5c1cbfd95873950a87b5f75d52073a967023 Mon Sep 17 00:00:00 2001 From: Patrick J Volkerding Date: Mon, 28 May 2018 19:12:29 +0000 Subject: Mon May 28 19:12:29 UTC 2018 a/pkgtools-15.0-noarch-13.txz: Rebuilt. installpkg: default line length for --terselength is the number of columns. removepkg: added --terse mode. upgradepkg: default line length for --terselength is the number of columns. upgradepkg: accept -option in addition to --option. ap/vim-8.1.0026-x86_64-1.txz: Upgraded. d/bison-3.0.5-x86_64-1.txz: Upgraded. e/emacs-26.1-x86_64-1.txz: Upgraded. kde/kopete-4.14.3-x86_64-8.txz: Rebuilt. Recompiled against libidn-1.35. n/conntrack-tools-1.4.5-x86_64-1.txz: Upgraded. n/libnetfilter_conntrack-1.0.7-x86_64-1.txz: Upgraded. n/libnftnl-1.1.0-x86_64-1.txz: Upgraded. n/links-2.16-x86_64-2.txz: Rebuilt. Rebuilt to enable X driver for -g mode. n/lynx-2.8.9dev.19-x86_64-1.txz: Upgraded. n/nftables-0.8.5-x86_64-1.txz: Upgraded. n/p11-kit-0.23.11-x86_64-1.txz: Upgraded. n/ulogd-2.0.7-x86_64-1.txz: Upgraded. n/whois-5.3.1-x86_64-1.txz: Upgraded. xap/network-manager-applet-1.8.12-x86_64-1.txz: Upgraded. xap/vim-gvim-8.1.0026-x86_64-1.txz: Upgraded. --- source/installer/README | 136 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 source/installer/README (limited to 'source/installer/README') diff --git a/source/installer/README b/source/installer/README new file mode 100644 index 00000000..863bdf77 --- /dev/null +++ b/source/installer/README @@ -0,0 +1,136 @@ +The build_installer.sh script +============================= + +The 'build_installer.sh' script has the following characteristics: + +* It works for all Slackware ARCH'es (tested with i586 and x86_64) +* It can be started from any directory, because resulting output files will + be written to the current directory. This means that the script directory + can be on a read-only filesystem. +* It can update a pre-existing initrd.img file with kernel modules + for a new kernel in one single command +* It can build a complete Slackware installer set (initrd.img , usbboot.img + and pxelinux.cfg_default files) from scratch +* It can create a tarball containing a 'skeleton' for an initrd, which does + not contain any ARCH specific binary code; only the directory structure, + symlinks, configuration files and scripts. This skeleton can be used as a + base for creating a new initrd from scratch, in which case no previous + initrd.img file needs to be present to obtain the scripts etc from. The + skeleton file will be called 'skeleton_initrd.tar.gz' and will be written to + the current directory. + +Command line parameters and detailed usage +========================================== + +Running "./build_installer.sh -h" shows this message: + +# ----------------------------------------------------------------------------# +Usage: build_installer.sh +Parameters: + -h|--help Show this help + -c|--compressmods Compress the kernel modules inside the initrd.img + -m|--multiple Multiple initrd files (for SMP and non-SMP kernels) + -n|--netmods Add network modules to the initrd + -nc|--no-compressmods Do _not_ compress kernel modules + -nm|--no-multiple Do _not_ create multiple initrd files + -nn|--no-netmods Do _not_ add network modules to the initrd + -np|--no-pcmciamods Do _not_ add pcmcia modules to the initrd + -nr|--no-recompile Do _not_ recompile /re-add binaries + -nu|--no-usbboot Do _not_ create a USB boot image + -p|--pcmciamods Add pcmcia modules to the initrd + -q|--quiet Be (fairly) quiet during progress + -r|--recompile Recompile /re-add binaries (busybox,bash,dropbear as + well as any required bin/lib from Slackware packages) + -s|--skeleton Stop after creating a skeleton_initrd.tar.gz + (which only contains directories and scripts) + -u|--usbboot Create a USB boot image + -v|--verbose Be (very) verbose during progress + -I|--initrd Specify location of the initrd.img file + -S|--slackroot Specify location of the Slackware directory tree + +Actions to be taken (ARCH=x86_64): +* Be (very) verbose during progress +* Recompile /re-add binaries +* Add network modules to the initrd +* Add pcmcia modules to the initrd +* Compress all kernel modules +* Do _not_ split the initrd +* Create a USB boot image + +Use Slackware root: + /mnt/nfs/door/non-public/slackware-current +Use initrd file: + /mnt/nfs/door/non-public/slackware-current/isolinux/initrd.img + +# Note: [1] If you want to build your own specific bash, busybox and dropbear # +# instead of using the sources provided by the Slackware tree, # +# you should have these sources ready below # +# ./sources/{bash,busybox,dropbear} # +# Delete the directory if you don't want to use it! # +# [2] If you want to use your own _skeleton_ initrd (containing only # +# the directory layout plus all the scripts) you just make it # +# available as ./sources/initrd/skeleton_initrd.tar.gz # +# # +# The script will look for the directory 'sources' first in your # +# working directory, and next in the script's directory (whatever is # +# found in your working directory takes precedence). # +# ----------------------------------------------------------------------------# + + +The default actions performed by the script may be different for each ARCH - +they are parametrized in the script and can be modified by adding commandline +switches to the script's invocation. The examples below use explicit +switches to make them are valid commands for all ARCHes. + +Examples of usage +================== + +(1) Specify a different ARCH than the default, and point the script to a + non-default root directory of the Slackware tree: + + # ARCH=i486 SLACKROOT=~ftp/pub/slackware-current ./build_installer.sh + +(2) Slackware gets a new kernel, and the initrd needs to be updated with + new modules: + + # ./build_installer.sh -n -p -nr -u + + This command adds updated net/pcmcia modules to the initrd.img (and removes + old modules of course), will not recompile any of the binary software inside + (notably bash, busybox and dropbear) and will create a USB boot image as + the final action. Output files are created in the current directory. + +(3) Strip Slackware's existing initrd.img until it's skeleton remains: + + # ./build_installer.sh -s + + This command takes the file '$SLACKROOT/isolinux/initrd.img' and writes + the resulting 'skeleton_initrd.tar.gz' to the current directory. + NOTE: If you ever need to create a skeleton tarball, be sure to use a 32bit + slackware tree's initrd.img file for this. That way, the pathname + 'slackware' will be present in the tarball, and the build_installer.sh + script will be able to translate that to an ARCH-specific directory + name like for instance "slackware64" for the x86_64 platform. + Even on x86_64 you can run this command: + + # ARCH=i486 SLACKROOT=/stuff/slackware32 ./build_installer.sh -s + + to use a 32bit initrd.img file as the source. + +(4) Create a new initrd.img file from scratch, using a pre-existing skeleton + initrd tarball, and my own busybox sources/patches (while using the sources + for bash and dropbear that are present in the slackware directory tree): + + # mkdir -p ./sources/{busybox,initrd} + # cp /home/slackware64/installer/skeleton_initrd.tar.gz ./sources/initrd/ + # cp -a my_busybox_stuff/* ./sources/busybox/ + # ARCH=x86_64 ./build_installer.sh -c -n -p -u + + This will build initrd.img from the ground up, compiling binaries for bash, + busybox and dropbear (used in the installer) from their sources and + extracting library/binary files from several of the Slackware packages + found in the slackware directory tree. Network and pcmcia kernel modules + will be added and compressed (cutting down the client's RAM requirements + with 9 MB during installation), and finally a USB bootable image named + 'usbboot.img' will be created. + -- cgit v1.2.3