mirror of
git://slackware.nl/current.git
synced 2024-12-25 09:58:55 +01:00
646a5c1cbf
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.
136 lines
6.7 KiB
Text
136 lines
6.7 KiB
Text
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>
|
|
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 <file> Specify location of the initrd.img file
|
|
-S|--slackroot <dir> 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.
|
|
|