diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2018-05-28 19:12:29 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 23:39:35 +0200 |
commit | 646a5c1cbfd95873950a87b5f75d52073a967023 (patch) | |
tree | b8b8d2ab3b0d432ea69ad1a64d1c789649d65020 /source/installer | |
parent | d31c50870d0bee042ce660e445c9294a59a3a65b (diff) | |
download | current-646a5c1cbfd95873950a87b5f75d52073a967023.tar.gz |
Mon May 28 19:12:29 UTC 201820180528191229
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.
Diffstat (limited to 'source/installer')
28 files changed, 4358 insertions, 708 deletions
diff --git a/source/installer/ChangeLog.txt b/source/installer/ChangeLog.txt new file mode 100644 index 00000000..f20ea82c --- /dev/null +++ b/source/installer/ChangeLog.txt @@ -0,0 +1,647 @@ +Sat Apr 28 20:04:23 UTC 2018 + Reduce sleep times in the installer. You'll just have to read faster. ;-) ++--------------------------+ +Sat Apr 21 00:29:54 UTC 2018 + Use busybox's dd after all... it wasn't the cause of the size display bug. + Don't try to migrate /tmp storage to the hard drive. We're not in the + floppy disk era any more and are unlikely to run out of space on a tmpfs. ++--------------------------+ +Wed Apr 18 04:06:45 UTC 2018 + Update busybox to 1.28.3. + Add dd and mcookie to the installer. + Add a dialog when setup starts to tell the user that partition information + is being collected. ++--------------------------+ +Sat Mar 31 18:00:31 UTC 2018 + sources/initrd/skeleton_initrd.tar.gz: + /sbin/probe: use md5sum of /proc/partitions to determine if previously + cached results should be returned. ++--------------------------+ +Thu Mar 22 09:51:59 UTC 2018 + Fixes for ARM: + * Fix module loading from etc/rc.d/rc.S + * Update architecture quadlet for build target ++--------------------------+ +Thu Mar 1 21:56:38 UTC 2018 + Put up "Scanning for USB stick..." dialog during the scan delay. + Make "terse" the pre-selected menu mode. ++--------------------------+ +Thu Mar 1 06:55:30 UTC 2018 + /sbin/probe: Add -c option to use the cached previous results if possible. + Use cached probe where possible in /usr/lib/setup scripts. + In many places, remove double spaces from after sentences in accordance with + the Chicago Manual of Style recommendations. ++--------------------------+ +Mon Feb 19 22:30:33 UTC 2018 + Add packages: lzip, lzlib, plzip. ++--------------------------+ +Tue Feb 13 06:43:38 UTC 2018 + Put files in the same places that they would be on a real install, instead + of shoving everything into /bin. Remove busybox symlinks if we have a real + version to use instead. + Don't copy /bin/tar-[0-9]* to the installer. /bin/tar is good enough + (check it with --version ;-), and the pkgtools no longer use tar-1.13. + Don't sed the ldd shebang, no need now that we have a /usr/bin/bash symlink. + Make sure that /bin/sh points to bash, but don't mess with other shell links. + Copy /usr/bin/ddrescue from the package to the installer. ++--------------------------+ +Sun Feb 4 04:24:08 UTC 2018 + Create /etc/default directory. + Include /etc/default/{nfs,rpc} ++--------------------------+ +Wed Nov 22 18:34:44 UTC 2017 + Update to the newer elilo.x64 binary in sources/efi* ++--------------------------+ +Wed Nov 22 04:49:08 UTC 2017 + SeTEFI: Don't use fdisk -l (unneccessary). Thanks to Didier Spaier. + SetEFI: Scan /dev/mmcblk[0-9]. Thanks to zerouno. + probe: Filter another possible EFI partition label. ++--------------------------+ +Sun Nov 12 22:08:51 UTC 2017 + Include iproute2 and hostname packages (to get hostname and ip man pages). ++--------------------------+ +Mon Oct 2 17:35:19 UTC 2017 + slackinstall: When doing a network install, don't download a package if the + tagfile is going to skip installing it. Thanks to ivandi. ++--------------------------+ +Sat Sep 30 21:06:10 UTC 2017 + SeTnet attempts to cat $TMP/SeTT_PX at boot time, when it doesn't exist. + I just directed stderr from these attempts to /dev/null to get rid of the + error message, but perhaps there's a bug here that needs to be addressed? + SeTnet doesn't actually seem to use $T_PX for anything other than determining + if it's running on the installer or an installed system. ++--------------------------+ +Fri Jul 28 17:09:07 UTC 2017 + Upgraded to busybox-1.27.1, and enabled damn near everything. Might as well, + since the size of e.g. kernel modules will dwarf the busybox binary anyway, + and any real utilities we use will be copied over the symlinks after busybox + is built. + Removed /usr/bin/man shell script -- use busybox man applet instead. + Create /usr/bin/man? -> cat? symlinks to make busybox man happy with the + preprocessed manpages. ++--------------------------+ +Mon Jul 17 18:47:36 UTC 2017 + In busybox-dot-config, add support for findfs and volume ids. ++--------------------------+ +Fri Jul 7 18:53:31 UTC 2017 + Dnsmasq has changed to using libidn2, so add the libidn2 library and the + libunistring library to the installer. Don't add libidn version 1 anymore, + as nothing else on the installer uses it. ++--------------------------+ +Tue May 9 20:22:15 UTC 2017 + Replace hardcoded /mnt with ${T_PX} in many places. + Thanks to alienBOB. ++--------------------------+ +Tue May 9 18:43:55 UTC 2017 + Use nosuid,nodev,noexec mount options for /dev/shm in installer-created + /etc/fstab. ++--------------------------+ +Thu May 4 21:31:35 UTC 2017 + Patched SeTEFI and probe to fix NVMe support. + Thanks to Didier Spaier. ++--------------------------+ +Thu Feb 23 19:00:56 UTC 2017 + sources/initrd/skeleton_initrd.tar.gz: + /sbin/probe, line 156: filter output through strings to avoid bash warning + about NUL bytes in input. ++--------------------------+ +Mon Jan 2 23:34:36 UTC 2017 + build_installer: Use the 'bash' package rather than compiling it. + Removed some old ARM cruft. + Added some basic 'aarch64' (arm64) support. ++--------------------------+ +Sat Dec 24 00:53:47 UTC 2016 + build_installer: Do not include libtermcap. + Also, I'd rather see this use the bash package than compile bash, just to + save a bit of compile time. There's currently no reason to be compiling + this, and the given reason is "in case we might need diet configure flags + sometime in the future". YAGNI. ++--------------------------+ +Tue Jul 12 17:25:10 UTC 2016 + build_installer: Switched soft->hard float CFLAGS. + Removed trailing white space. ++--------------------------+ +Tue Jun 7 10:36:58 UTC 2016 + build_installer: Added /etc/nfsmount.conf so that any default changes + made to the nfs-utils package exist within the installer. + Moved some of the file copying script around. + sources/initrd/skeleton_initrd.tar.gz: + Removed etc/nfsmount.conf, etc/dialogrc (was already copied by the + build_installer script). + MoZes. ++--------------------------+ +Fri May 27 19:45:28 UTC 2016 + Forgot to make rc.dropbear executable, AAAAAARGH ++--------------------------+ +Wed May 25 23:08:19 UTC 2016 + In rc.dropbear, don't tell it to use motd.net, which no longer exists. ++--------------------------+ +Fri May 20 17:10:54 UTC 2016 + Include /sbin/e4crypt. ++--------------------------+ +Wed May 11 23:43:13 UTC 2016 + In rc.S, comment out making motd.net telling the user to source /etc/profile. + Dropbear handles things properly without that now. ++--------------------------+ +Tue May 3 19:53:33 UTC 2016 + Include md/dm-raid.ko module for LVM with internal RAID support. ++--------------------------+ +Sun Apr 24 00:27:03 UTC 2016 + Patched busybox to fix newly created directory perms on 64-bit platforms. ++--------------------------+ +Sat Mar 19 21:27:44 UTC 2016 + Increase "full install" size estimate to 9+ GB. ++--------------------------+ +Sat Mar 19 19:01:06 UTC 2016 + Add libpci.so.* to the installer, since lspci needs that now. ++--------------------------+ +Sat Mar 5 18:12:03 UTC 2016 + Use "mkfs.brtfs -f" in SeTpartitions. Thanks to Didier Spaier. ++--------------------------+ +Wed Mar 2 20:01:32 UTC 2016 + Patch /sbin/probe (again) to hopefully fix NVMe devices on Dell laptops. ++--------------------------+ +Sat Feb 20 17:50:37 UTC 2016 + Set empty password for root in /etc/shadow so that root can log in using + dropbear. Thanks to MoZes. ++--------------------------+ +Wed Feb 3 00:13:29 UTC 2016 + Include all cpufreq modules. + Keep acpi/processor.ko, needed by acpi-cpufreq. + Use 'LANG=C fdisk -l' in SeTEFI. ++--------------------------+ +Wed Jan 13 19:15:03 UTC 2016 + Fixed this line in /sbin/probe: + elif [ "$MAJOR" = "259" ]; then ++--------------------------+ +#NOT ACTUALLY MERGED SINCE IT DOESN'T WORK +#Tue Jan 12 07:26:02 UTC 2016 +# Use tar to extract the kernel module directory version number from the +# kernel-modules package. This is needed for a kernel such as 4.4 which +# installs modules in /lib/modules/4.4.0/. ++--------------------------+ +Thu Dec 24 20:35:26 UTC 2015 + Patched /sbin/probe for nvme partitions. + Thanks to Didier Spaier. ++--------------------------+ +Wed Dec 23 04:09:29 UTC 2015 + Added kernel modules: block/nvme.ko, mmc/host/sdhci-acpi.ko. ++--------------------------+ +Mon Dec 21 08:40:29 UTC 2015 +Updates for auto NFS mounting: +sources/initrd/skeleton_initrd.tar.gz: + usr/lib/setup/INSNFS: Use '/etc/rc.d/rc.rpc restart' rather than starting + rpcbind and rpc.statd directly. + etc/services: Removed. Now added by the build_installer.sh script. +build_installer.sh: + Add /etc/rc.d/rc.rpc to the installer image and chmod +x. + Add /usr/sbin/sm-notify from nfs-utils package. + Copy /etc/services from the 'a/etc' package to ensure that it's always up to date. + Copy /etc/netconfig from the libtirpc package (required for rpc.statd/rpcbind). + MoZes. ++--------------------------+ +Tue Dec 15 21:04:25 UTC 2015 + Remove portmap from package list, add libtirpc and rpcbind. + Patch INSNFS to run rpcbind instead of rpc.portmap. ++--------------------------+ +Tue Dec 1 22:28:10 UTC 2015 + In /etc/motd, don't suggest gdisk and cgdisk for partitioning GPT, since + fdisk and cfdisk work just fine now. Also, remove instructions for starting + PCMCIA and Cardbus devices. I doubt many people are still using that. ++--------------------------+ +Wed Nov 25 05:17:36 UTC 2015 + Add /dev/shm and /dev/pts to /etc/fstab. ++--------------------------+ +Wed Nov 25 02:34:25 UTC 2015 + Change 32-bit x86 $ARCH to i586. ++--------------------------+ +Tue Nov 24 21:54:15 UTC 2015 + Added /bin/numfmt to use for converting bytes into K, M, T, or even P. + Used in the installer itself and in pkgtools. ++--------------------------+ +Thu Nov 19 18:02:48 UTC 2015 + Replace udev with eudev/libgudev. ++--------------------------+ +Wed Nov 18 23:25:57 UTC 2015 + Also support T (although it's not like I wasn't already) ++--------------------------+ +Wed Nov 18 22:04:08 UTC 2015 + Correct partition sizes, and use K, M, or G. + Use -F -F for all mkfs.ext* (shut up and do what I say mode) ++--------------------------+ +Sat Nov 14 18:54:26 UTC 2015 + Add hwdata package to get pci.ids and usb.ids. ++--------------------------+ +Tue Nov 3 19:40:22 UTC 2015 + Added libpcre.so.1, needed by the new grep. ++--------------------------+ +Thu Oct 29 19:42:58 GMT 2015 + No longer build dhcpcd version 3, use the dhcpcd package from the 'n' + series. + Removed some superfluous white space. Still more to do ;-) ++--------------------------+ +Thu Aug 27 19:55:26 UTC 2015 + Patched build-installer.sh to allow for non-numeric $VERSION in packages. + Thanks to MoZes. ++--------------------------+ +Thu Aug 6 23:42:10 UTC 2015 + sed s/procps/procps-ng/g in build-installer.sh. ++--------------------------+ +Mon May 25 09:47:32 UTC 2015 +Merged fixes from MoZes: + +sources/initrd/skeleton_initrd.tar.gz: +1) etc/profile: + The code to parse TERM= from /proc/cmdline only worked properly if TERM= + was at a particular position in the string. + This is for handling installations on ARM using the serial console and 'screen': +--- etc/profile.orig 2013-12-03 09:04:26.000000000 +0000 ++++ etc/profile 2015-05-25 09:44:02.078325859 +0100 +@@ -7,8 +7,8 @@ + + # Allow a user to set the default TERM entry by specifying TERM=<name> + # as a kernel command line parameter: +-if cat /proc/cmdline | grep TERM= 1> /dev/null 2> /dev/null ; then +- export $( sed -n -e "s/.*\(TERM=.*\ \).*/\1/p" < /proc/cmdline ) ++if cat /proc/cmdline | grep "TERM=[a-zA-Z0-9]" 1> /dev/null 2> /dev/null ; then ++ export TERM=$( sed 's/.*TERM=\([^ ]*\).*/\1/' < /proc/cmdline ) + elif cat /proc/cmdline | grep console=ttyS 1> /dev/null 2> /dev/null ; then + +2) etc/rc.d/rc.inet1 +10 seconds timeout is too little on the SheevaPlug and I've also seen a report +on LQ about the same issue on x86_64 -- I suppose it depends on the network driver +or the NIC itself. +I needed at _least_ 30 seconds for the SheevaPlug to get an IP, and about 12 seconds +for the Banana Pi. +--- etc/rc.d/rc.inet1.orig 2011-04-15 13:48:22.000000000 +0100 ++++ etc/rc.d/rc.inet1 2015-05-25 10:01:19.357259132 +0100 +@@ -22,7 +22,7 @@ + if grep -q $(echo ${EDEV}: | cut -f 1 -d :): /proc/net/wireless ; then + continue # skip wireless interfaces + fi +- /sbin/dhcpcd -t 10 -L -T $EDEV 1>/etc/dhcpc/dhcpcd-${EDEV}.info 2>/dev/null & ++ /sbin/dhcpcd -t 35 -L -T $EDEV 1>/etc/dhcpc/dhcpcd-${EDEV}.info 2>/dev/null & + done + fi + +/build_installer.sh: (ARM only): + Set the system clock from the RTC prior to fudging the date because on some + devices the system clock is not set when the RTC module loads. ++--------------------------+ +Mon May 4 04:13:36 UTC 2015 +In rc.S, move fakedate hack so that udev runs first. ++--------------------------+ +Wed Apr 29 18:56:54 UTC 2015 +Merged updates from MoZes: +build_installer.sh: Enable setting the terminal window title even through +'screen'. +Fri Feb 20 19:18:22 UTC 2015 +Fetch libfdisk and libsmartcols from /lib, not /usr/lib. +The location was changed since there are binaries outside of /usr +that link to these. ++--------------------------+ +Fri Feb 20 01:19:54 UTC 2015 +Updated /sbin/probe to work with the new util-linux fdisk. +Updated SeTEFI to work with the new util-linux fdisk. ++--------------------------+ +Fri Feb 13 22:27:44 UTC 2015 +Fix calls to setterm that reset the foreground/background to set the desired +colors rather than use "default" since it appears the util-linux people broke +that, too. ++--------------------------+ +Fri Feb 13 20:41:50 UTC 2015 +Updates to rc.S in the skeleton_initrd.tar.gz to fix issues with the new +util-linux update. Also, use -F with mke2fs, otherwise it'll hang if the +partition was previously formatted. ++--------------------------+ +Wed Feb 11 01:10:20 UTC 2015 +Add libsmartcols fom the new util-linux. ++--------------------------+ +Sun Feb 8 14:40:19 GMT 2015 +Merged updates from MoZes: +build_installer.sh: Added rtl_nic to the list of firmwares to include. +This firmware is added to the ARM 'a/kernel-firmware' package so will not be present +on x86. ++--------------------------+ +Sun Nov 16 19:12:13 UTC 2014 +Applied fixes from MoZes: +1) bash patch #12 is UTF8 so it was not caught by the grep, so anything past patch 11 + was never applied. Fixed to match file types of 'ASCII' and 'text'. +2) ARM does not have syslinux, so we don't want to exit the Installer build because of this. + Only try and move the syslinux-nomtools binary if we're running on an *86* platform. ++--------------------------+ +Tue Sep 9 03:31:31 UTC 2014 +Use syslinux-nomtools on the installer. Thanks to Didier Spaier. ++--------------------------+ +Wed Jul 23 22:08:21 UTC 2014 +Fix SeTDOS script to show the partition device properly when setting the +security level. Thanks to luvr on LQ. ++--------------------------+ +Fri Apr 18 11:13:15 BST 2014 +All of these changes have been tested on ARM and x86. + +1. build_installer.sh + + Include both versions of tar from the a/tar-*.t?z package: + + Many users use the installer as a rescue system and tar-1.13 has issues with + files with long file names: + http://www.linuxquestions.org/questions/slackware-14/%5Bto-devs%5D-slackware-install-iso-tar-version-tooo-old-4175497116/ + + The pkgtools inside the installer call tar-1.13 directly. All other + scripts that call tar (font setting) work properly with tar-1.26. + +2. installer/sources/initrd/skeleton_initrd.tar.gz + +All of these changes are baked into the new version of the archive. + +Summary:- + +etc/inittab: + Upon shutdown of the installer, kill dropbear to prevent installations + performed over SSH from hanging until the SSH client times out. + +usr/lib/setup/setup: + Move from x86-centric man-at-keyboard method of finalising the + installation. Offer 'reboot' or 'shell' from a dialog prompt - helpful + for systems that were remotely installed. + Switch single line of text instruction to remove CD with a dialog box. ++--------------------------+ +Sat Feb 15 22:26:01 UTC 2014 +Merged updates from MoZes: +build_installer.diff + Changelog: + Add 's' and 'x' termcaps so the installation looks pretty when + installed over serial console using 'screen' as a terminal emulator. + ARM: Switch the 'versatile' kernel name to 'armv7'. + Drop an ancient serial console bug fix. + +skeleton_initrd.tar.gz: + Modified etc/profile: + to allow user to set TERM= as a kernel paramater, so as to set $TERM up front. + The previous logic was that when console=ttyS was found, the TERM defaulted to vt100 + which was unfortunate because the ARM devices are usually always booted from a serial + console with that kernel parameter, but are controlled from a fully functional + Linux terminal emulator. + + Modified etc/rc.S + Move the keyboard selector to after the profile scripts have been executed, so + the user can set a useful TERM value that works properly with dialog. + + Modified: usr/lib/setup/SeTnet + Added 'clear' after dialog finishes, to avoid a messy screen on the serial port + (for example, after eth0 is initialised with DHCP, drop bear starts and splatters + its key generation over the blue background, looking badly integrated). ++--------------------------+ +Fri Nov 1 01:02:38 UTC 2013 +Mute the LVM scan at the end of package installation. ++--------------------------+ +Sun Oct 27 21:53:15 UTC 2013 +Filter "partitions" found on a USB installer stick in SeTDOS so that +they don't appear in the menu. ++--------------------------+ +Sun Oct 13 23:49:24 UTC 2013 +Rework /sbin/probe to use gdisk instead of parted, as parted does not +display the partition type code. This allows detecting swap space +without first running mkswap on it, and prevents unknown partition types +from showing up as Linux partitions. +Added SeTEFI script, which will set up an EFI System Partition. +A partition found on the same device as the root Linux partition will be +preferred, but otherwise any EFI partition found on /dev/sd{a,b,c...} +will be used. +Add /bin/pr, needed by rescan-scsi-bus.sh. ++--------------------------+ +Wed Sep 25 05:12:29 UTC 2013 +Add support for installing the packages from a USB stick. +This will require changing usbimg2disk to not modify the initrd. ++--------------------------+ +Thu Sep 12 07:19:29 UTC 2013 +Add freq_table.ko if KMS is requested in the build. ++--------------------------+ +Sat Sep 7 21:08:24 UTC 2013 +Don't install pt_chown. It's been removed from glibc-2.18 as a possible +security hole, and is patched out of the glibc-2.17 in -current. ++--------------------------+ +Thu Sep 5 22:23:36 UTC 2013 +Added os-prober package, since liloconfig is going to use that to find +Windows partitions (avoiding the issue of a USB installer stick being +detected as a Window installation). ++--------------------------+ +Fri Aug 16 20:25:48 UTC 2013 +Fixed SeTPKG to handle changed output from "dialog --checklist" that no +longer includes quotes. Also handles the older versions of dialog. ++--------------------------+ +Mon Aug 12 20:50:58 UTC 2013 +Use /etc/dialogrc from the dialog package, since the syntax has changed. ++--------------------------+ +Tue Aug 6 01:46:50 UTC 2013 +Fixed a couple typos in PROMPThelp. ++--------------------------+ +Wed Jul 24 20:09:54 UTC 2013 +Added liblzo2, needed by mkfs.btrfs. ++--------------------------+ +Mon Jul 15 20:46:24 UTC 2013 +Stop removing 8021q module, which is needed to use VLANs. ++--------------------------+ +Sun Jul 7 06:48:25 UTC 2013 +Apply mancha's glibc crypt() patch to dropbear. ++--------------------------+ +Thu Jun 20 20:07:11 UTC 2013 +Add /etc/nfsmount.conf to default to use NFSv3. ++--------------------------+ +Mon Jun 10 18:49:44 UTC 2013 +Reset background color after a CD switch during installation. ++--------------------------+ +Fri Apr 19 05:43:00 UTC 2013 +In probe script (part of initrd skel), set LANG to C. +This will avoid parsing issues if we ever i18n this thing... ++--------------------------+ +Wed Mar 27 03:37:00 UTC 2013 +By default, add nomodeset to the kernel command line. +If modesetting is needed, boot with kms.s or kmssmp.s. ++--------------------------+ +Tue Mar 19 05:30:44 UTC 2013 +Added missing ehci-hcd module. ++--------------------------+ +Sat Mar 16 05:45:29 UTC 2013 +Modified usbboot.img to work with EFI as well. +Don't build efiboot.img. ++--------------------------+ +Tue Mar 12 04:35:07 UTC 2013 +Keep GPU modules, needed for video on UEFI. (ADD_KMS=1) +Support building an EFI boot image. (EFIBOOT=1) +Keep USB host modules, as huge.s is no longer building those in. +Added two Terminus fonts to the initrd. +Added setfont to busybox (needed to load an appropriate sized Terminus +font when KMS is used). +Patched busybox to fix a compile issue with glibc-2.17. ++--------------------------+ +Wed Feb 20 18:53:11 UTC 2013 +Support not adding network card firmware. (Stuart Winter) ++--------------------------+ +Fri Sep 7 18:06:06 UTC 2012 +Updated /sbin/rescan-scsi-bus. ++--------------------------+ +Tue Sep 4 19:06:38 UTC 2012 +Added comment=x-gvfs-show to /etc/fstab's cdrom entry. +Increased full install size in setup to 7.3+ GB. ++--------------------------+ +Thu Aug 23 17:25:09 UTC 2012 +Include sdhci.ko and sdhci-pci.ko. ++--------------------------+ +Mon Aug 13 20:01:09 UTC 2012 +Include the staging/hv modules. +Bind mount /dev in SeTconfig. +Support virtual devices such as /dev/vda and /dev/xvda in /sbin/probe. ++--------------------------+ +Thu Aug 9 02:36:37 UTC 2012 +Added support for MMC devices to /sbin/probe (needed for Raspberry Pi). +Thanks to David Spencer. ++--------------------------+ +Sat Aug 4 21:05:51 UTC 2012 +Switch from gdisk to gptdisk, and add new cgdisk and fixparts tools. +Copy /etc/modprobe.d/ and /lib/modprobe.d/ to the installer. ++--------------------------+ +Thu Jul 26 21:52:59 UTC 2012 +Use '-s' option with eject, otherwise it fails. +Fixed a missing space that broke a SeTnet dialog: +- "\nAttempting to fetch a remote configuration file using $PROTO ..."54 56 ++ "\nAttempting to fetch a remote configuration file using $PROTO ..." 54 56 ++--------------------------+ +Sun Jul 22 16:33:05 UTC 2012 +Added XFCE series in SeTPKG. ++--------------------------+ +Mon Jul 16 23:37:35 UTC 2012 +Add toplevel /run directory. ++--------------------------+ +Tue Jul 3 16:23:38 UTC 2012 +Allow nic=auto for headless installs. +Fixed /sbin/probe for systems that mix HP RAID with regular hard drives. ++--------------------------+ +Tue Jul 3 03:11:40 UTC 2012 +Change location of usb.ids and pci.ids to /usr/share/hwdata. ++--------------------------+ +Mon Jul 2 04:01:09 UTC 2012 +Patched busybox to fix wget -P option. +Thanks to Kirill Smirnoff. ++--------------------------+ +Thu Jun 28 16:42:39 UTC 2012 +Added installer-arm.diff from MoZes (identify ARM installer via dropbear) ++--------------------------+ +Thu Jun 28 16:04:57 UTC 2012 +Switch from module-init-tools to kmod. +Added missing dosfsck (the dangling symlinks were there already :) ++--------------------------+ +Thu Apr 12 22:06:48 UTC 2012 +Fix missing bash on 32-bit by adding an i486) options section +to build_installer.sh. ++--------------------------+ +Sat Apr 7 17:10:14 UTC 2012 +Use real GNU bash as the shell. +Point /bin/sh -> /bin/bash +Don't build a shell into busybox. ++--------------------------+ +Wed Mar 28 01:30:00 UTC 2012 +fixed placement of /lib{,64}/libz.so.*, danke MoZes ++--------------------------+ +Mon Mar 26 00:53:08 UTC 2012 +In SeTpartitions, use -d single -m single as it increases performance by +about 15%, and Luigi Genoni says multiple metadata copies are useless when +using a btrfs filesystem consisting of a single device or partition (which +is all the installer currently supports). ++--------------------------+ +Sat Apr 23 18:17:21 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Try to load loop device module. +build_installer.sh: Try to load loop device module. + Copy loop.ko to the installer. ++--------------------------+ +Thu Apr 21 21:20:23 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Fixed GPT on RAID controllers. + Slightly less trivial. ;-) ++--------------------------+ +Thu Apr 21 02:54:52 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Added GPT support on RAID devices + in /sbin/probe. Thanks to Greg Chandler. + (This was trivial, really!) ++--------------------------+ +Sun Apr 17 19:25:03 UTC 2011 +build_installer.sh: ADD_MANPAGES to arm. ++--------------------------+ +Fri Apr 15 18:25:28 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Merged updated skel from alienBOB + with PXE server changes. ++--------------------------+ +Tue Apr 12 19:21:47 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: applied skeleton_dhcpcd.diff. ++--------------------------+ +Tue Apr 12 00:19:24 UTC 2011 +Added busybox httpd applet with all options. ++--------------------------+ +Mon Apr 11 05:35:21 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: SetDOS, add umask modes for vfat + similar to ntfs. ++--------------------------+ +Sat Mar 26 18:58:48 UTC 2011 +build_installer.sh: Retain virtio kernel modules. ++--------------------------+ +Sat Mar 26 04:33:40 UTC 2011 +sources/busybox/busybox-1.18.4.tar.bz2: Upgraded. ++--------------------------+ +Fri Mar 25 04:01:51 UTC 2011 +build_installer.sh: Add fsck.*. + Adjusted kernel installation to handle /kernels/memtest/memtest +sources/initrd/skeleton_initrd.tar.gz: rc.S, scan RAID better ++--------------------------+ +Sat Mar 19 01:40:10 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Add terse installation mode that only + displays one line per package so that people's heads do not explode ++--------------------------+ +Fri Mar 18 04:44:04 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Increase estimate of full install + size to "6.5+ GB" ++--------------------------+ +Tue Mar 8 05:13:38 UTC 2011 +build_installer.sh: Add a kludgy but working man page whitelist and get + man pages on the x86 and x86_64 installers for partitioning tools, + filesystem tools, network stuff, and a few other things. + Added partx, findmnt, lsblk, fsfreeze, fstrim, and swaplabel. + Don't wipe /usr/man. + Use bzip2 for man pages (wins compression tests on man page text here easily) + ln -sf /etc/motd /root/README +sources/initrd/skeleton_initrd.tar.gz: Add /usr/man directory. + rc.S: chmod 755 /etc/rc.d/rc.pcmcia ++--------------------------+ +Fri Mar 4 03:29:09 UTC 2011 +build_installer.sh: Add btrfs-progs, gdisk, and gcc-g++ (for libstdc++). +sources/initrd/skeleton_initrd.tar.gz: support btrfs. ++--------------------------+ +Fri Feb 25 20:36:22 UTC 2011 +build_installer.sh: Add ddrescue package. ++--------------------------+ +Fri Feb 25 05:44:11 UTC 2011 +build_installer.sh: Support ADD_MANPAGES option + to add preprocessed manpages. + Not enabled for now. + This would really need a blacklist and/or whitelist first. +sources/initrd/skeleton_initrd.tar.gz: Replace broken zcat symlink + with the proper script. + Point /usr/bin/zcat at the zcat script. + Add a quick+dirty /usr/bin/man shell script to display man pages. +sources/busybox/busybox-1.18.3.tar.bz2: Upgraded. +sources/busybox/busybox-dot-config: Upgraded. ++--------------------------+ +Fri Feb 18 03:22:17 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: fdisk -l now shows HPFS/NTFS/exFAT, so + we need to check for NTFS before FAT in SeTDOS to avoid a false FAT detection. ++--------------------------+ +Wed Feb 16 07:45:13 UTC 2011 +build_installer.sh: util-linux-ng -> util-linux ++--------------------------+ +Tue Feb 15 23:04:25 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Patched /sbin/probe to add support for + GPT partitions. ++--------------------------+ +Fri Jan 21 16:08:24 UTC 2011 +sources/initrd/skeleton_initrd.tar.gz: Remove /etc/modprobe.conf + (request from MoZes) ++--------------------------+ 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> +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. + diff --git a/source/installer/build_installer.sh b/source/installer/build_installer.sh new file mode 100755 index 00000000..fd6e7dd7 --- /dev/null +++ b/source/installer/build_installer.sh @@ -0,0 +1,2179 @@ +#!/bin/bash +set +o posix + +# $Id: build_installer.sh,v 1.129 2011/04/13 23:03:07 eha Exp eha $ +# +# Copyright 2005-2018 Stuart Winter, Surrey, England, UK +# Copyright 2008, 2009, 2010, 2011, 2017 Eric Hameleers, Eindhoven, Netherlands +# Copyright 2011-2018 Patrick Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +################################################################################ +# +# Script: build_installer.sh +# Purpose: Build the Slackware installer from scratch (multiple architectures) +# Author: Stuart Winter <mozes@slackware.com> +# Eric Hameleers <alien@slackware.com> +# +################################################################################ +# +# Notes: [1] 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). +# +################################################################################ + +# INSTALLERVERSION is the Slackware version the installer will advertize! +INSTALLERVERSION=${INSTALLERVERSION:-"15.0"} +PKGNAM=slackware-installer + +# Needed to find package names: +shopt -s extglob + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +# Make sure that loopback support is loaded, if it is modular. +# Use traditional Q+D methodology... i.e. shove a stick in it +# Timmy, by the time anyone notices we'll be dead +modprobe loop 1> /dev/null 2> /dev/null + +# Path to Slackware source tree: +# (we need this to extract some packages - get libraries and stuff) +SLACKROOT=${SLACKROOT:-/mnt/nfs/door/non-public/slackware-current} + +# Where do we look for other stuff this script requires? +SRCDIR=$(cd $(dirname $0); pwd) # where the script looks for support +CWD=$(pwd) # where the script writes files + +# A list of modules (just the names, no directory path) that should not +# be included on the installer image. Typically this is a list of modules used +# with the generic kernel that are not built by the huge kernel: +MODBLACKLIST=$SRCDIR/module-blacklist + +# Temporary build locations: +TMP=${TMP:-/tmp/build-$PKGNAM} +PKG=$TMP/package-$PKGNAM + +# Firmware for wired network cards we need to add to the installer: +NETFIRMWARE="3com acenic adaptec bnx tigon e100 sun kaweth tr_smctr cxgb3 rtl_nic" + +# Safe defaults: +DUMPSKELETON=0 # set to '1' to just create a skeleton initrd tarball +SHOWHELP=0 # Do not show help + +# Default actions for the script: +case $ARCH in + arm*|aarch64) + ADD_NETMODS=1 # add network modules + ADD_PCMCIAMODS=1 # add pcmcia modules + ADD_MANPAGES=1 + COMPRESS_MODS=0 # already compressed in a/kernel-modules.t?z package already + DISTRODIR=${DISTRODIR:-"slackware"} # below this you find a,ap,d,..,y + LIBDIRSUFFIX="" # the default + RECOMPILE=1 # recompile busybox/dropbear and add new binaries + SPLIT_INITRD=0 # Do not create separate initrd for each kernel + USBBOOT=0 # do not build the USB boot image + EFIBOOT=0 # do not build the EFI boot image + VERBOSE=1 # show a lot of additional output + # The firmware we include by default is only for x86, but + ADD_NETFIRMWARE=1 # we'll probably want to include some at some stage. For now supply -nf to this script. + ;; + x86_64) + ADD_NETMODS=1 + ADD_PCMCIAMODS=1 + ADD_MANPAGES=1 + COMPRESS_MODS=1 + ADD_KMS=1 + DISTRODIR=${DISTRODIR:-"slackware64"} # below this you find a,ap,d,..,y + LIBDIRSUFFIX="64" + RECOMPILE=1 + SPLIT_INITRD=0 + USBBOOT=1 + EFIBOOT=1 + VERBOSE=1 + ADD_NETFIRMWARE=1 # Include the network card firmware + ;; + i586) + ADD_NETMODS=1 + ADD_PCMCIAMODS=1 + ADD_MANPAGES=1 + COMPRESS_MODS=1 + ADD_KMS=1 + DISTRODIR=${DISTRODIR:-"slackware"} # below this you find a,ap,d,..,y + LIBDIRSUFFIX="" + RECOMPILE=1 + SPLIT_INITRD=0 + USBBOOT=1 + EFIBOOT=1 + VERBOSE=1 + ADD_NETFIRMWARE=1 # Include the network card firmware + ;; + *) + ADD_NETMODS=1 # add network modules + ADD_PCMCIAMODS=1 # add pcmcia modules + ADD_MANPAGES=1 # Add preprocessed manpages + DISTRODIR=${DISTRODIR:-"slackware"} # below this you find a,ap,d,..,y + COMPRESS_MODS=1 # compress kernel modules + LIBDIRSUFFIX="" # the default + RECOMPILE=0 # re-use binaries from existing initrd and packages + SPLIT_INITRD=0 # Do not create separate initrd for each kernel + USBBOOT=0 # do not build the USB boot image + EFIBOOT=0 # do not build the EFI boot image + VERBOSE=1 # show a lot of additional output + ADD_NETFIRMWARE=1 # Include the network card firmware + ;; +esac + +# Define the CFLAGS for the known architectures: +case $ARCH in + arm) SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + ARCHQUADLET="-gnueabihf" ;; + aarch64) SLKCFLAGS="-O2" + ARCHQUADLET="" ;; + i?86) SLKCFLAGS="-O2 -march=i586 -mtune=i686" + ARCHQUADLET="" ;; + s390*) SLKCFLAGS="-O2" + ARCHQUADLET="" ;; + x86_64) SLKCFLAGS="-O2 -fPIC" + ARCHQUADLET="" ;; +esac + +# Here is where we take our kernel modules and dependency info from +# (at least one of these must be available): +case $ARCH in + arm*) + # What kernel directories are in this installer? + # This kernel is only here to allow us to build a generic ARM installer image from which + # the other architectures will be built. It doesn't matter which kernel this is, as it + # won't be used: post processing scripts unpack this image, generate a list of standard kernel + # modules; replace those modules with versions specific to the particular device and supplement + # the image with any additional requirements for that device. + KERNELS[0]=armv7 + # The -extraversion (appended to the $KVER) for the KERNELS[*]: + KEXTRAV[0]="-armv7" + ;; + aarch64) + KERNELS[0]=aarch64 + # The -extraversion (appended to the $KVER) for the KERNELS[*]: + KEXTRAV[0]="-aarch64" + ;; + i?86) + # What kernel directories are in this installer? + KERNELS[0]=huge.s + KERNELS[1]=hugesmp.s + # The -extraversion (appended to the $KVER) for the KERNELS[*]: + KEXTRAV[0]="" + KEXTRAV[1]="-smp" + ;; + x86_64) + # What kernel directories are in this installer? + KERNELS[0]=huge.s + # The -extraversion (appended to the $KVER) for the KERNELS[*]: + KEXTRAV[0]="" + ;; +esac + + +# Parse the commandline parameters: +while [ ! -z "$1" ]; do + case $1 in + -c|--compressmods) + COMPRESS_MODS=1 + shift + ;; + -h|--help) + SHOWHELP=1 + shift + ;; + -m|--multiple) + SPLIT_INITRD=1 + shift + ;; + -nf|--noaddnetfirmware) + ADD_NETFIRMWARE=0 + shift + ;; + -mn|--manpages) + ADD_MANPAGES=1 + shift + ;; + -n|--netmods) + ADD_NETMODS=1 + shift + ;; + -nc|--no-compressmods) + COMPRESS_MODS=0 + shift + ;; + -nn|--no-netmods) + ADD_NETMODS=0 + shift + ;; + -np|--no-pcmciamods) + ADD_PCMCIAMODS=0 + shift + ;; + -nr|--no-recompile) + RECOMPILE=0 + shift + ;; + -nm|--no-multiple) + SPLIT_INITRD=0 + shift + ;; + -nu|--no-usbboot) + USBBOOT=0 + shift + ;; + -p|--pcmciamods) + ADD_PCMCIAMODS=1 + shift + ;; + -q|--quiet) + VERBOSE=0 + shift + ;; + -r|--recompile) + RECOMPILE=1 + shift + ;; + -s|--skeleton) + DUMPSKELETON=1 + shift + ;; + -u|--usbboot) + USBBOOT=1 + shift + ;; + -v|--verbose) + VERBOSE=1 + shift + ;; + -I|--initrd) + INITRDIMG="$(cd $(dirname $2); pwd)/$(basename $2)" + shift 2 + ;; + -S|--slackroot) + SLACKROOT="$2" + shift 2 + ;; + -*) + echo "Unsupported parameter '$1'!" + exit 1 + ;; + *)# Do nothing + shift + ;; + esac +done + +############### Some house keeping now that we have read the commandline ####### + +# The location of the initrd.img file +INITRDIMG=${INITRDIMG:-"$SLACKROOT/isolinux/initrd.img"} + +# Wildcard expression for the kernel-modules package: +KERNELMODPKG=${KERNELMODPKG:-"${SLACKROOT}/${DISTRODIR}/a/kernel-modules-*.t?z"} +# PCMCIA support tools: +PCMCIAUTILS="${SLACKROOT}/${DISTRODIR}/a/pcmciautils-*.t?z" +# Needed by pcmciautils: +SYSFS="${SLACKROOT}/${DISTRODIR}/a/sysfsutils-*.t?z" + +# Wildcard expression for the kernel-firmware package: +KERNELFW_PKG=${KERNELFW_PKG:-"${SLACKROOT}/${DISTRODIR}/a/kernel-firmware-*.t?z"} + +# If we only want help, do no pre-processing which may lead to error messages +if [ $SHOWHELP -eq 0 ]; then + + if [ "$($(which id) -u)" != "0" ]; then + echo "You need to be root to run $(basename $0)." + exit 1 + fi + + if [ ! -d $SLACKROOT ]; then + echo "*** I can't find the Slackware package tree $SLACKROOT!" + exit 1 + fi + + # Determine the kernel version: + #KVER=$( ls -1 ${KERNELMODPKG} | head -1 | sed -e "s#.*/kernel-modules-\([^-]*\)-.*.t[gblx]z#\1#") + KVER="$( ls -1 ${KERNELMODPKG} | head -1 | rev | cut -d- -f3 | rev | cut -d_ -f1 )" + if [ -z "$KVER" ]; then + echo "*** I can't determine the kernel version!" + exit 1 + fi + echo "--- Detected kernel version: '$KVER' ---" + + if [ $VERBOSE -eq 1 ]; then + VERBOSE1="v" + VERBOSE2="vv" + VERBOSE3="vvv" + VERBOSETXT="--verbose" + SILENTMAKE="" + else + VERBOSE1="" + VERBOSE2="" + VERBOSE3="" + VERBOSETXT="" + SILENTMAKE="-s" + fi +fi + +############### Display help about command line parameters ##################### + +basic_usage() +{ +cat <<"EOH" +# ----------------------------------------------------------------------------# +$Id: build_installer.sh,v 1.129 2011/04/13 23:03:07 eha Exp eha $ +# ----------------------------------------------------------------------------# +EOH + +cat <<EOT + +Usage: $(basename $0) <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,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=$ARCH): +EOT + +[ $VERBOSE -eq 1 ] && echo "* Be (very) verbose during progress" \ + || echo "* Be (fairly) quiet during progress" +[ $RECOMPILE -eq 1 ] && echo "* Recompile busybox/dropbear /re-add binaries" \ + || echo "* Do _not_ recompile /re-add binaries" +[ $ADD_NETMODS -eq 1 ] && echo "* Add network modules to the initrd" \ + || echo "* Do _not_ add network modules to the initrd" +[ $ADD_PCMCIAMODS -eq 1 ] && echo "* Add pcmcia modules to the initrd" \ + || echo "* Do _not_ add pcmcia modules to the initrd" +[ $COMPRESS_MODS -eq 1 ] && echo "* Compress all kernel modules" \ + || echo "* Do _not_ compress kernel modules" +[ $SPLIT_INITRD -eq 1 ] && echo "* Split initrd's for SMP and non-SMP kernels" \ + || echo "* Do _not_ split the initrd" +[ $USBBOOT -eq 1 ] && echo "* Create a USB boot image" \ + || echo "* Do _not_ create a USB boot image" + +echo +echo -e "Use Slackware root: \n $SLACKROOT" +echo -e "Use initrd file: \n $INITRDIMG" + +cat <<EOT + +# Note: [1] If you want to build your own specific busybox and dropbear # +# instead of using the sources provided by the Slackware tree, # +# you should have these sources ready below # +# ./sources/{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). # +# ----------------------------------------------------------------------------# + +EOT +} + +############### Determine patch level required & apply the patch ################################ + +# Functions: +# Determine patch level required & apply the patch: +function auto_apply_patch () { + patchfile=$1 + + echo + echo "***********************************************************" + echo "** Working on Patch: $patchfile" + echo "***********************************************************" + echo + + # Decompress the patch if it's compressed with a known method: + FTYPE=$( file $patchfile ) + case "$FTYPE" in + *xz*compressed*) + xz -dc $patchfile > $TMP/$(basename $patchfile).unpacked + patchfile=$TMP/$(basename $patchfile).unpacked ;; + *bzip2*compressed*) + bzcat -f $patchfile > $TMP/$(basename $patchfile).unpacked + patchfile=$TMP/$(basename $patchfile).unpacked ;; + *gzip*compressed*) + zcat -f $patchfile > $TMP/$(basename $patchfile).unpacked + patchfile=$TMP/$(basename $patchfile).unpacked ;; + esac + + # By now the patch is decompressed or wasn't compressed originally. + # + # Most patches should not require more levels than this: + success=0 + for (( pl=0 ; pl<=5 ; pl++ )) ; do + echo "Patch : $patchfile , trying patch level $pl" + patch -N --fuzz=20 -t --dry-run -l -p$pl < $patchfile > /dev/null 2>&1 && success=1 && break + done + if [ $success = 1 ]; then + echo "Patch: $patchfile will apply at level $pl" + patch -N --fuzz=20 --verbose -l -p$pl < $patchfile + return 0 + else + echo "Patch: $patchfile failed to apply at levels 0-5" + return 1 + fi +} + +############### Unpack an existing initrd image ################################ + +unpack_oldinitrd() +{ + +# This function is called when we are not re-building a new initrd from scratch +# (but need to add modules for a new kernel version for instance): +echo "--- Unpacking the old initrd ---" +mkdir -p -m755 $PKG/$ARCH-installer-filesystem +cd $PKG/$ARCH-installer-filesystem + +zcat -f${VERBOSE1} $INITRDIMG | cpio -di${VERBOSE1} + +# Wipe the Kernel modules: +echo "--- Removing old kernel modules ---" +rm -rf lib/modules/* +} + +############### Create the Installer's filesystem ############################# + +create_installer_fs() +{ +# Make the directories required for the filesystem: +echo "--- Creating basic filesystem layout ---" +mkdir -p -m755 $PKG/$ARCH-installer-filesystem +cd $PKG/$ARCH-installer-filesystem +mkdir -p -m755 bin +mkdir -p -m755 dev +mkdir -p -m755 etc/rc.d +mkdir -p -m755 etc/dropbear +mkdir -p -m755 floppy +mkdir -p -m755 lib/modules +[ "$ARCH" = "x86_64" ] && mkdir -p -m755 lib64 +mkdir -p -m700 lost+found +mkdir -p -m755 mnt +mkdir -p -m755 proc +mkdir -p -m755 root +mkdir -p -m755 sbin +mkdir -p -m755 sys +mkdir -p -m755 tag +mkdir -p -m1777 tmp +mkdir -p -m755 usr/{bin,sbin,etc,lib/setup,libexec,share/tabset} +mkdir -p -m755 usr/share/terminfo/{c,l,v,x,s} +mkdir -p -m755 var/{mount,setup,run,lib} + +ln -sf /mnt/boot boot +ln -sf /var/log/mount cdrom +ln -sf /var/log/mount nfs + +( cd etc; touch mtab ) +( cd etc; touch mdev.conf ) + +} + +############### Extract skeleton from Slackware installer image ################ + +extract_skeleton_fs() +{ +# Temporary extraction directory: +echo "--- Extracting shell scripts from original initrd ---" +rm -rf $TMP/extract-packages +mkdir -p -m755 $TMP/extract-packages +cd $TMP/extract-packages + +# Unpack the real i586/current Slackware initrd.img (or a custom one specified +# with the '-I' parameter): +zcat -f${VERBOSE1} $INITRDIMG | cpio -di${VERBOSE1} + +# Wipe the binaries and x86 specific stuff. This will leave us with +# just the directories and shell scripts: +echo "--- Removing unwanted binaries and libs ---" +( find . -type f -print0 | xargs -0 file | egrep '(ELF.*)' | awk -F: '{print $1}' | xargs rm -f ) >/dev/null 2>&1 +( find . -name '*.a' -type f -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +# Wipe the Kernel modules: +rm -rf lib/modules/* +# Wipe firmware: +rm -rf lib/firmware/* +# Wipe udev stuff: +rm -rf lib/udev etc/udev +# Wipe the pci.ids: +rm -f usr/share/hwdata/pci.ids* +# Wipe any unneeded scripts that were installed from packages: +rm -f bin/{ldd,zgrep} sbin/fsck.* sbin/{lvmdump,xfs_check} +# Wipe ncurses stuff: +( find usr/share/terminfo -type f -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find usr/share/tabset -type f -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +# Wipe dangling symlinks: +( find -L ./bin -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find -L ./usr/bin -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find -L ./sbin -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find -L ./lib -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find -L ./lib${LIBDIRSUFFIX} -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find -L ./usr/lib -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 +( find -L ./usr/lib${LIBDIRSUFFIX} -type l -print0 | xargs -0 rm -f ) > /dev/null 2>&1 + +cd $PKG/$ARCH-installer-filesystem + +cp --remove-destination -fa${VERBOSE2} $TMP/extract-packages/. . +rm -rf $TMP/extract-packages + +# Re-create essential symlinks +ln -sf sbin/init init +( cd bin; ln -sf grep.bin grep ) +( cd bin; ln -sf grep.bin egrep ) +( cd bin; ln -sf grep.bin fgrep ) +( cd bin; ln -sf gzip zcat ) +( cd bin; ln -sf /usr/bin/compress compress ) +( cd usr/bin; ln -sf ../../bin/gzip zcat ) + +# Add RAID re-assembly commands to rc.S if missing: +if ! grep -q mdadm etc/rc.d/rc.S ; then + sed -i -e '/# Check \/proc\/partitions again:/s%^%# Re-assemble RAID volumes:\n/sbin/mdadm -E -s > /etc/mdadm.conf\n/sbin/mdadm -A -s\n\n%m' etc/rc.d/rc.S + if [ $? -ne 0 ]; then + echo "*** Adding mdadm commands to /etc/rc.d/rc.S failed. ***" + fi +fi + +} + +############### Zip up skeleton from Slackware installer image ################# + +zipup_installer_skeleton() +{ +cd $PKG/$ARCH-installer-filesystem +echo "--- Zipping up a skeleton initrd in '$CWD' ---" +tar -zc${VERBOSE1}f $CWD/skeleton_initrd.tar.gz . +} + +############### Unpack skeleton of a Slackware installer image ################# + +use_installer_source() +{ +if [ ! -f $CWD/sources/initrd/skeleton_initrd.tar.gz ]; then + if [ ! -f $SRCDIR/sources/initrd/skeleton_initrd.tar.gz ]; then + echo "*** Could not find 'skeleton_initrd.tar.gz' in either:" + echo "*** '$CWD/sources/initrd/' or '$SRCDIR/sources/initrd/'" + return 1 + else + SKELFILE="$SRCDIR/sources/initrd/skeleton_initrd.tar.gz" + fi +else + SKELFILE="$CWD/sources/initrd/skeleton_initrd.tar.gz" +fi +echo "--- Using _your_ skeleton installer (not the initrd in the Slacktree) ---" +echo "--- ($SKELFILE) ---" +cd $PKG/$ARCH-installer-filesystem +tar -zx${VERBOSE1}f $SKELFILE +} + +############### Build busybox ################################################## + +build_busybox() +{ +echo "--- Building a new busybox ---" +# Extract source: +cd $TMP +if [ -d $CWD/sources/busybox ]; then + echo "--- Using _your_ busybox sources (not those in the Slacktree) ---" + BUSYBOXPATH=$CWD/sources/busybox +elif [ -d $SRCDIR/sources/busybox ]; then + echo "--- Using _your_ busybox sources (not those in the Slacktree) ---" + BUSYBOXPATH=$SRCDIR/sources/busybox +else + # Use the busybox sources from the real Slackware tree: + BUSYBOXPATH=$SLACKROOT/source/installer +fi +[ ! -d $BUSYBOXPATH ] && ( echo "No directory '$BUSYBOXPATH'" ; exit 1 ) +BUSYBOXPKG=$(ls -1 $BUSYBOXPATH/busybox-*.tar.bz2 | head -1) +BUSYBOXCFG=$(ls -1 $BUSYBOXPATH/busybox?dot?config | head -1) +BUSYBOXVER=$(echo $BUSYBOXPKG | sed -e "s#.*/busybox-\(.*\).tar.bz2#\1#") + +echo "--- Compiling BUSYBOX version '$BUSYBOXVER' ---" +tar x${VERBOSE2}f $BUSYBOXPKG +cd busybox-* || exit 1 +if $(ls $BUSYBOXPATH/busybox*.diff.gz 1>/dev/null 2>/dev/null) ; then + for DIFF in $(ls $BUSYBOXPATH/busybox*.diff.gz) ; do + zcat $DIFF | patch -p1 --verbose || exit 1 + done +fi +chown -R root:root . + +# Copy config: +# If we you rather like bash instead of busybox's ash, you'll need to adjust +# the symlinks in /bin and stuff. +install -m644 $BUSYBOXCFG .config + +# Build: +make $SILENTMAKE $NUMJOBS CFLAGS="$SLKCFLAGS" || exit 1 + +# Install into package framework: +make $SILENTMAKE install || exit 1 +cd _install + +# Since Slackware 's installer uses the 'date' from coreutils, and 'zcat' +# script from gzip, we delete the busybox symlinks: +rm -f${VERBOSE1} bin/date bin/zcat + +# Likewise, we will remove the 'fdisk' applet which overwrites our shell script: +rm -f${VERBOSE1} sbin/fdisk + +# And we want to use our own 'cp': +rm -f${VERBOSE1} bin/cp + +cp --remove-destination -fa${VERBOSE2} * $PKG/$ARCH-installer-filesystem/ + +} + + +############### Build dropbear ################################################# + +build_dropbear() +{ +echo "--- Building a new dropbear ---" +# Extract source: +cd $TMP +if [ -d $CWD/sources/dropbear ]; then + echo "--- Using _your_ dropbear sources (not those in the Slacktree) ---" + DROPBEARPATH=$CWD/sources/dropbear +elif [ -d $SRCDIR/sources/dropbear ]; then + echo "--- Using _your_ dropbear sources (not those in the Slacktree) ---" + DROPBEARPATH=$SRCDIR/sources/dropbear +else + # Use the dropbear sources from the Slackware tree. + DROPBEARPATH=$SLACKROOT/source/installer/dropbear +fi +[ ! -d $DROPBEARPATH ] && ( echo "No directory '$DROPBEARPATH'" ; exit 1 ) +DROPBEARPKG=$(ls -1 $DROPBEARPATH/dropbear-*.tar.bz2 | head -1) +DROPBEARVER=$(echo $DROPBEARPKG | sed -e "s#.*/dropbear-\(.*\).tar.bz2#\1#") +tar x${VERBOSE2}f $DROPBEARPKG + +echo "--- Compiling DROPBEAR version '$DROPBEARVER' ---" +cd dropbear* || exit 1 +chown -R root:root . +chmod -R u+w,go+r-w,a-s . + +# The programs we want to have as symlinks to dropbearmulti binary: +PROGS="dropbear dbclient dropbearkey dropbearconvert scp ssh" + +# Patch to allow empty passwords (used in Slackware's installer): +patch -p1 ${VERBOSETXT} < $DROPBEARPATH/dropbear_emptypass.patch || exit 1 +# Apply xauth path patch +patch -p0 ${VERBOSETXT} < $DROPBEARPATH/dropbear.xauth.patch || exit 1 +# Change the path used for dbclient because our prefix is '/' not '/usr': +patch -p1 ${VERBOSETXT} < $DROPBEARPATH/dropbear_dbclientpath.patch || exit 1 +# Patch for new glibc crypt() that may return NULL: +patch -p1 < $DROPBEARPATH/dropbear.glibc.crypt.diff + +# Configure: +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/ \ + --mandir=/usr/man \ + --disable-syslog \ + --disable-utmp \ + --disable-utmpx \ + --disable-wtmp \ + --disable-wtmpx \ + --disable-pututline \ + --disable-pututxline \ + --build=$ARCH-slackware-linux$ARCHQUADLET || exit 1 + +# Build: +make $SILENTMAKE $NUMJOBS PROGRAMS="$PROGS" MULTI="1" SCPPROGRESS="1" || exit 1 + +# Install into installer's filesystem: +make $SILENTMAKE DESTDIR=$PKG/$ARCH-installer-filesystem/ MULTI="1" install || exit 1 + +# Link binaries to dropbearmulti since the 'make install' does not do that +# if we build a multicall binary +( cd $PKG/$ARCH-installer-filesystem/bin + ln -${VERBOSE1}fs ../bin/dropbearmulti ../sbin/dropbear + for i in $(echo $PROGS | sed -e 's/dropbear //') ; do + ln -${VERBOSE1}fs dropbearmulti $i + done +) + +} + +############## Install binaries into installer filesystem ###################### + +# You can generate file-> package list in slackware-current +# cd slackware-current/${DISTRODIR} +# find . -name '*.t?z' | while read name ; do echo "****** $name ******" ; tar tvvf $name ; done > /tmp/newfest +# + +import_binaries() +{ +# Change into the installer's filesystem: +cd $PKG/$ARCH-installer-filesystem + +echo "--- Importing binaries from Slackware packages ---" + +# Temporary extraction directory: +rm -rf $TMP/extract-packages +mkdir -p -m755 $TMP/extract-packages + +# This list of packages (Slackware v13.0+): +# +# Some ports require binaries from additional packages not shipped +# by Slackware/x86. Put the name of the binary into the relevant +# string below, and it'll be copied into either the installer filesystem's +# /sbin or /bin -- the installer does not have /usr/{sbin,bin}. +# +case $ARCH in + arm*) EXTRA_PKGS="a/u-boot-tools a/mtd-utils" + EXTRA_PKGS_BIN="" + EXTRA_PKGS_SBIN="" + EXTRA_PKGS_USRBIN="mkimage" + EXTRA_PKGS_USRSBIN="nand* flash_* flashcp sheeva* fw_setenv fw_printenv ubi*" ;; + *) EXTRA_PKGS="" + EXTRA_PKGS_BIN="" + EXTRA_PKGS_SBIN="" + EXTRA_PKGS_USRBIN="" + EXTRA_PKGS_USRSBIN="" ;; +esac +PKGLIST="${EXTRA_PKGS} \ +a/bash \ +a/btrfs-progs \ +a/coreutils \ +a/cryptsetup \ +a/dialog \ +a/dosfstools \ +a/e2fsprogs \ +a/etc \ +a/gptfdisk \ +a/grep \ +a/gzip \ +a/hdparm \ +a/hwdata \ +a/jfsutils \ +a/kmod \ +a/lvm2 \ +a/lzip \ +a/lzlib \ +a/mdadm \ +a/ncompress \ +a/openssl-solibs \ +a/os-prober \ +a/pciutils \ +a/plzip \ +a/pkgtools \ +a/procps-ng \ +a/reiserfsprogs \ +a/sed \ +a/shadow \ +a/sysfsutils \ +a/syslinux \ +a/tar \ +a/eudev \ +a/hostname \ +a/libgudev \ +a/usbutils \ +a/util-linux \ +a/xfsprogs \ +a/xz \ +ap/ddrescue \ +ap/dmidecode \ +ap/lsscsi \ +ap/terminus-font \ +d/gcc \ +d/gcc-g++ \ +l/glibc \ +l/libcap \ +l/libidn2 \ +l/libunistring \ +l/libusb \ +l/lzo \ +l/parted \ +l/pcre \ +l/popt \ +l/readline \ +l/zlib \ +n/dhcpcd \ +n/dnsmasq \ +n/iproute2 \ +n/libgcrypt \ +n/libgpg-error \ +n/libtirpc \ +n/net-tools \ +n/nfs-utils \ +n/ntp \ +n/rpcbind \ +n/samba" + +# Cruise through the required packages and extract them into +# a temporary directory: +for pkg in $PKGLIST ; do + if [ -s $SLACKROOT/${DISTRODIR}/$pkg-+([^-])-+([^-])-+([^-]).t[gblx]z ]; then + installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/$pkg-+([^-])-+([^-])-+([^-]).t[gblx]z | grep "Installing package " | cut -d'(' -f1 + else + echo "*** Package: "$pkg" not found in ${SLACKROOT}/${DISTRODIR} ***" + fi +done + +# +# Deal with the installer's /bin: +# +cd $TMP/extract-packages/bin +cp --remove-destination -fa${VERBOSE1} ${EXTRA_PKGS_BIN} \ + bash \ + comm \ + cp \ + cut \ + date \ + dialog \ + dircolors \ + findmnt \ + gzip \ + ipmask \ + ls \ + lsblk \ + paste \ + printf \ + pr \ + ps \ + mknod \ + mount \ + numfmt \ + sed \ + seq \ + sort \ + tar \ + umount \ + xz \ + zgrep \ + $PKG/$ARCH-installer-filesystem/bin/ +$(readlink -s setterm 1>/dev/null) || \ + cp --remove-destination -fa${VERBOSE1} setterm \ + $PKG/$ARCH-installer-filesystem/bin/ +cp --remove-destination -fa${VERBOSE1} grep $PKG/$ARCH-installer-filesystem/bin/grep.bin +cd $TMP/extract-packages/usr/bin +cp --remove-destination -fa${VERBOSE1} ${EXTRA_PKGS_USRBIN} \ + bash \ + ddrescue \ + ldd \ + lzip \ + plzip \ + rev \ + uuidgen \ + syslinux-nomtools \ + strings \ + $PKG/$ARCH-installer-filesystem/usr/bin/ +# Use syslinux-nomtools to avoid needing mtools on the installer: +if [[ $ARCH = *86* ]]; then + mv --verbose $PKG/$ARCH-installer-filesystem/usr/bin/syslinux-nomtools $PKG/$ARCH-installer-filesystem/usr/bin/syslinux || exit 1 +fi +$(readlink -s setterm 1>/dev/null) || \ + cp --remove-destination -fa${VERBOSE1} setterm \ + $PKG/$ARCH-installer-filesystem/usr/bin/ +cp --remove-destination -fa${VERBOSE1} \ + compress \ + $PKG/$ARCH-installer-filesystem/usr/bin/ + +# Make sure that /bin/sh points to bash: +( cd $PKG/$ARCH-installer-filesystem/bin + ln -${VERBOSE1}fs bash sh +) + +# +# Deal with the installer's /sbin: +# +cd $TMP/extract-packages/sbin +cp --remove-destination -fa${VERBOSE1} ${EXTRA_PKGS_SBIN} \ + badblocks \ + blkid \ + btrfs* \ + cgdisk \ + cryptsetup \ + debugfs \ + dmsetup \ + dosfsck \ + dumpe2fs \ + e2fsck \ + fsck \ + fsck.* \ + filefrag \ + fixparts \ + hdparm \ + insmod \ + e2image \ + e2label \ + e4crypt \ + gdisk \ + fsfreeze \ + fstrim \ + jfs_fsck \ + jfs_mkfs \ + kmod \ + logsave \ + ldconfig \ + lsmod \ + lspci \ + lvm \ + lvmdump \ + mount.nfs \ + mkdosfs \ + mke2fs \ + mkreiserfs \ + mkfs.* \ + mklost+found \ + mkswap \ + modprobe \ + mount \ + mdadm \ + rdev \ + reiserfsck \ + rmmod \ + resize2fs \ + rpcbind \ + rpc.statd \ + sfdisk \ + sgdisk \ + swaplabel \ + tune2fs \ + udev* \ + umount \ + xfs_repair \ + $PKG/$ARCH-installer-filesystem/sbin/ + # This had dmsetup* above, which unnecessarily copies dmsetup.static + # This had lvm* above, which unnecessarily copies lvm.static +cp --remove-destination -fa${VERBOSE1} fdisk \ + $PKG/$ARCH-installer-filesystem/sbin/fdisk.bin + +# Copy binaries from /usr/bin into the installer's /usr/bin/ +cd $TMP/extract-packages/usr/bin +cp --remove-destination -fa${VERBOSE1} ${EXTRA_PKGS_USRBIN} \ + chattr \ + lsattr \ + lsusb \ + mcookie \ + usb-devices \ + $PKG/$ARCH-installer-filesystem/usr/bin/ + +# Grab a couple of terminus fonts that we'll need to prevent +# blindness from microscopic KMS terminal fonts: +cd $TMP/extract-packages/usr/share/kbd/consolefonts +mkdir -p $PKG/$ARCH-installer-filesystem/usr/share/kbd/consolefonts +cp --remove-destination -fa${VERBOSE1} \ + ter-c14v.psf.gz \ + ter-120b.psf.gz \ + $PKG/$ARCH-installer-filesystem/usr/share/kbd/consolefonts + +# Copy binaries from /usr/sbin into the installer's /usr/sbin/ +cd $TMP/extract-packages/usr/sbin +cp --remove-destination -fa${VERBOSE1} ${EXTRA_PKGS_USRSBIN} \ + chpasswd \ + dnsmasq \ + ntpdate \ + parted \ + partprobe \ + partx \ + dmidecode \ + mount.cifs \ + sm-notify \ + umount.cifs \ + $PKG/$ARCH-installer-filesystem/usr/sbin/ + +# The installer has wrappers for cfdisk/fdisk which run /dev/makedevs.sh +# if it is there. If it is not there, udev is running and will handle +# creating or removing block devices in /dev as needed: +cd $TMP/extract-packages/sbin +cp --remove-destination -fa${VERBOSE1} \ + cfdisk \ + $PKG/$ARCH-installer-filesystem/sbin/cfdisk.bin + +# And for LVM, there are tonnes of symlinks: +cd $TMP/extract-packages/sbin +find . -type l -lname lvm -printf "%p\n" | xargs -i cp -fa${VERBOSE1} {} $PKG/$ARCH-installer-filesystem/sbin/ +# Fix lvmdump script: +sed -i -e 's?/usr/bin/tr?tr?' $PKG/$ARCH-installer-filesystem/sbin/lvmdump +# Grab the matching lvm.conf script: +mkdir -p $PKG/$ARCH-installer-filesystem/etc/lvm +cat $TMP/extract-packages/etc/lvm/lvm.conf \ + > $PKG/$ARCH-installer-filesystem/etc/lvm/lvm.conf + +# Use a current group file (udev expects this) +cat $TMP/extract-packages/etc/group > $PKG/$ARCH-installer-filesystem/etc/group + +## Copy udev related files over (do not clobber an existing blacklist): +#if [ -f $PKG/$ARCH-installer-filesystem/etc/modprobe.d/blacklist ]; then +# mv $PKG/$ARCH-installer-filesystem/etc/modprobe.d/blacklist{,.new} +#fi +# Copy udev related files over +cp -a $TMP/extract-packages/etc/modprobe.d $PKG/$ARCH-installer-filesystem/etc/ +mkdir -p $PKG/$ARCH-installer-filesystem/lib +cp -a $TMP/extract-packages/lib/modprobe.d $PKG/$ARCH-installer-filesystem/lib/ +cp -a $TMP/extract-packages/etc/{modprobe.conf,modprobe.d,scsi_id.config,udev} \ + $PKG/$ARCH-installer-filesystem/etc/ +cp -a $TMP/extract-packages/etc/rc.d/rc.udev \ + $PKG/$ARCH-installer-filesystem/etc/rc.d/ +#if [ -f $PKG/$ARCH-installer-filesystem/etc/modprobe.d/blacklist.new ]; then +# mv $PKG/$ARCH-installer-filesystem/etc/modprobe.d/blacklist{.new,} +#fi + +# Copy package tools: +cd $TMP/extract-packages/sbin +cp --remove-destination -fa${VERBOSE1} \ + installpkg \ + pkgtool \ + removepkg \ + $PKG/$ARCH-installer-filesystem/sbin/ + +# Deal with /lib stuff from the packages: +mkdir -p -m755 $PKG/$ARCH-installer-filesystem/lib +mkdir -p -m755 $PKG/$ARCH-installer-filesystem/lib${LIBDIRSUFFIX} +mkdir -p -m755 $PKG/$ARCH-installer-filesystem/usr/lib${LIBDIRSUFFIX} +cp -fa${VERBOSE1} $TMP/extract-packages/lib/udev \ + $PKG/$ARCH-installer-filesystem/lib/ +cd $TMP/extract-packages/lib${LIBDIRSUFFIX} +cp -fa${VERBOSE1} \ + e2initrd_helper \ + libblkid*so* \ + libcap*so* \ + libcrypto*so* \ + libcryptsetup*.so* \ + libdevmapper*so* \ + libfdisk.so* \ + libgcc*so* \ + libgcrypt*.so* \ + libgpg-error*.so* \ + libkmod*so* \ + liblzma*so* \ + libmount.so* \ + libpcre.so* \ + libpopt*.so* \ + libsmartcols.so* \ + libssl*so* \ + libtirpc*so* \ + libudev*so* \ + libuuid*so* \ + libvolume_id*so* \ + libz*.so* \ + $PKG/$ARCH-installer-filesystem/lib${LIBDIRSUFFIX}/ + +# Deal with /usr/lib stuff from the packages: +cd $TMP/extract-packages/usr/lib${LIBDIRSUFFIX} +cp -fa${VERBOSE1} \ + libgcc*.so* \ + libhistory*.so* \ + libidn2*.so* \ + liblz.so* \ + liblzo*.so* \ + libparted*so* \ + libreadline*.so* \ + libstdc++*.so* \ + libunistring*.so* \ + libusb-1.0*.so* \ + $PKG/$ARCH-installer-filesystem/usr/lib${LIBDIRSUFFIX}/ + +# Stuff needed for os-prober: +cd $TMP/extract-packages/usr/share +cp -fa${VERBOSE1} \ + os-prober \ + $PKG/$ARCH-installer-filesystem/usr/share/ +cd $TMP/extract-packages/usr/lib${LIBDIRSUFFIX} +cp -fa${VERBOSE1} \ + os-probes \ + os-prober \ + linux-boot-probes \ + $PKG/$ARCH-installer-filesystem/usr/lib${LIBDIRSUFFIX}/ +cd $TMP/extract-packages/usr/bin +cp -fa${VERBOSE1} \ + linux-boot-prober \ + os-prober \ + $PKG/$ARCH-installer-filesystem/usr/bin/ + +# Copy dhcpcd pieces: +cd $TMP/extract-packages/ +cp -fa${VERBOSE1} \ + lib/dhcpcd \ + $PKG/$ARCH-installer-filesystem/lib/ +cp -fa${VERBOSE1} \ + usr/lib${LIBDIRSUFFIX}/dhcpcd \ + $PKG/$ARCH-installer-filesystem/usr/lib${LIBDIRSUFFIX}/ +cp -fa${VERBOSE1} \ + var/lib/dhcpcd \ + $PKG/$ARCH-installer-filesystem/var/lib/ +cp -fa${VERBOSE1} \ + etc/dhcpcd.conf \ + $PKG/$ARCH-installer-filesystem/etc/ +cp -fa${VERBOSE1} \ + sbin/dhcpcd \ + $PKG/$ARCH-installer-filesystem/sbin/ + +# Add pci.ids and usb.ids now that we have lspci and lsusb onboard: +cd $TMP/extract-packages/usr/share/hwdata +mkdir -p -m755 $PKG/$ARCH-installer-filesystem/usr/share/hwdata +cp -fa${VERBOSE1} pci.ids usb.ids \ + $PKG/$ARCH-installer-filesystem/usr/share/hwdata + +# Copy the rc script for rpcbind: +cd $TMP/extract-packages/etc/rc.d +cp -fa${VERBOSE1} \ + rc.rpc \ + $PKG/$ARCH-installer-filesystem/etc/rc.d/ +chmod 755 $PKG/$ARCH-installer-filesystem/etc/rc.d/rc.rpc +mkdir -p $PKG/$ARCH-installer-filesystem/var/state/rpcbind + +# Copy /etc/default/{nfs,rpc}: +cd $TMP/extract-packages/etc/default +cp -fa${VERBOSE1} \ + nfs rpc \ + $PKG/$ARCH-installer-filesystem/etc/default + +# Remove busybox symlinks for things that we have a real version of: +for prunedir in $PKG/$ARCH-installer-filesystem/usr/bin $PKG/$ARCH-installer-filesystem/usr/sbin ; do + cd $prunedir + for removefile in $(find . -type f -maxdepth 1) ; do + rm -f $PKG/$ARCH-installer-filesystem/bin/$(basename $removefile) + rm -f $PKG/$ARCH-installer-filesystem/sbin/$(basename $removefile) + done +done +if [ -r rm -f $PKG/$ARCH-installer-filesystem/sbin/lspci -a ! -L $PKG/$ARCH-installer-filesystem/sbin/lspci -a -L $PKG/$ARCH-installer-filesystem/bin/lspci ]; then + rm -f $PKG/$ARCH-installer-filesystem/bin/lspci +fi + +# Update to latest versions of files within /etc/ +# /etc/ file Package Reason +# ------------------------------------------------------------------------------------ +# netconfig : libtirpc : Required by libtirpc (for rpc.statd/rpcbind) +# services : etc : Always use the latest version to avoid problems with NFS. +# dialogrc : dialog : Dialog config +# mke2fs.conf : e2fsprogs: Required for ext4 +# nfsmount.conf : nfs-utls : On ARM we set "vers=3" as the default which allows +# easy NFS mounting within the installer. +cd $TMP/extract-packages/etc/ +cp -fa${VERBOSE1} \ + services \ + netconfig \ + nfsmount.conf \ + dialogrc \ + mke2fs.conf \ + $PKG/$ARCH-installer-filesystem/etc/ + +# For ARM: +# Copy the configuration file for fw_(printenv/saveenv) utility. +# This allows people to more easily fix up a duff u-boot config +# from the installer because the config file contains some of the memory offsets +# for the most popular devices +[ -s $TMP/extract-packages/etc/fw_env.config* ] \ + && install -${VERBOSE1}pm644 $TMP/extract-packages/etc/fw_env.config* \ + $PKG/$ARCH-installer-filesystem/etc/fw_env.config + +# If man pages have been requested, copy the groff sources to process later +# For now, these will be English only (sorry) +if [ $ADD_MANPAGES -eq 1 ]; then + if [ -d $TMP/extract-packages/usr/man ]; then + mkdir -p $PKG/$ARCH-installer-filesystem/usr/man/ + cd $TMP/extract-packages/usr/man + cp --remove-destination -fa${VERBOSE1} man* \ + $PKG/$ARCH-installer-filesystem/usr/man/ + fi + # In case the real man package has been installed (unlikely) + if [ -f $TMP/extract-packages/lib${LIBDIRSUFFIX}/man.conf ]; then + cp -a $TMP/extract-packages/lib${LIBDIRSUFFIX}/man.conf $PKG/$ARCH-installer-filesystem/usr/lib${LIBDIRSUFFIX} + fi +fi + +} + +############### Install libraries into installer's filesystem ################## + +# We install the library packages and copy only the parts that we need. +# +# Rather than automate the process, for some packages we need to specifically +# select individual library names. +# In case you wonder why we don't copy these libraries during the extraction +# in the code above, it's because this way we don't need to keep up to date with +# any new library names or versions - we either take everything or be very +# specific -- this is particularly relevant for glibc. + +import_libraries() +{ +rm -rf $TMP/extract-packages +mkdir -p $TMP/extract-packages + +# Change into the installer's filesystem: +cd $PKG/$ARCH-installer-filesystem + +echo "--- Importing libraries from Slackware packages ---" + +# a/e2fsprogs: +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/e2fsprogs-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +rm -rf $TMP/extract-packages + +# a/glibc-solibs: +mkdir -p $TMP/extract-packages +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/glibc-solibs-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} /lib${LIBDIRSUFFIX}/ld-linux*so* lib${LIBDIRSUFFIX}/ +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +# pt_chown has been removed from glibc as a possible security hole: +#cp --remove-destination -fa${VERBOSE1} $TMP/extract-packages/usr/libexec/pt_chown usr/libexec +rm -rf $TMP/extract-packages + +# l/ncurses: +mkdir -p $TMP/extract-packages +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/l/ncurses-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +cp -fa${VERBOSE1} $TMP/extract-packages/usr/share/terminfo/{c,l,v,s,x} usr/share/terminfo/ +# Remove any terminal entries that are broken due to them being symlinks into directories that we haven't included: +find usr/share/terminfo/ -xtype l -print0 | xargs -0 rm -f +cp -fa${VERBOSE1} $TMP/extract-packages/usr/share/tabset/* usr/share/tabset/ +rm -rf $TMP/extract-packages +# Remove dangling symlinks (pointing into directories we did not copy): +( cd usr/share/terminfo + for file in $(find . -type l) ; do + if [ "$(readlink -e $file)" = "" ]; then + rm -f${VERSOSE1} $file + fi + done +) + +# a/acl: +mkdir -p $TMP/extract-packages +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/acl-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +rm -rf $TMP/extract-packages + +# a/attr: +mkdir -p $TMP/extract-packages +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/attr-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +rm -rf $TMP/extract-packages + +# a/pciutils: +mkdir -p $TMP/extract-packages +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/pciutils-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +rm -rf $TMP/extract-packages + +# a/procps-ng: +mkdir -p $TMP/extract-packages +installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/procps-ng-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ + lib${LIBDIRSUFFIX}/ +rm -rf $TMP/extract-packages + +# a/gpm: +#mkdir -p $TMP/extract-packages +#installpkg -root $TMP/extract-packages $SLACKROOT/${DISTRODIR}/a/gpm-*.t[gblx]z | grep "Installing package " | cut -d'(' -f1 +#cp -fa${VERBOSE1} $TMP/extract-packages/lib${LIBDIRSUFFIX}/*so* \ +# lib${LIBDIRSUFFIX}/ +#rm -rf $TMP/extract-packages + +} + +############### Install Kernel modules into installer's filesystem ############# +# +# +############### Add the network modules ######################################## + +add_netmods() +{ + +echo "--- Adding network modules ---" +cd $PKG/$ARCH-installer-filesystem + +# Clear out remaining cruft: +rm -rf ./lib/modules.incoming + +# Temporary extraction directory: +rm -rf $TMP/extract-packages +mkdir -p -m755 $TMP/extract-packages + +# Unpack the kernel modules (all kernels defined for this $ARCH): +for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + tar -C $TMP/extract-packages -x${VERBOSE1}f $(ls -1 ${KERNELMODPKG} | grep "${KVER}$(echo ${KEXTRAV[$ind]}| tr - _)-" ) lib +done +mv -f${VERBOSE1} $TMP/extract-packages/lib/modules ./lib/modules.incoming + +# Start removing unwanted modules to keep the resulting image small: +echo "--- Removing unneeded kernel modules ---" +for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + kv=${KEXTRAV[$ind]} + [ ! -d ./lib/modules.incoming/$KVER$kv ] && continue + ( + echo "--- Processing kernel version '$KVER$kv' ---" + cd ./lib/modules.incoming/$KVER$kv + cd kernel/ + # Remove blacklisted modules: + cat $MODBLACKLIST | while read modname ; do + find . -name $modname -exec rm -f "{}" \; + done + mv -f fs{,.orig} && \ + ( mkdir -m755 fs + # If the architecture has a mostly modular kernel, then + # the filesystem modules may need to be included within the installer: + case $ARCH in + arm*) + cp -a fs.orig/{udf*,isofs*,cifs*,ext*,fat*,fscache,jfs*,lockd,nfs,nfs_common,jbd*,nls,reiserfs,xfs,binfmt*,mbcache*,exportfs*} fs/ + ;; + *86*) + cp -a fs.orig/{cifs*,fscache,lockd,nfs,nfs_common} fs/ + ;; + *) + cp -a fs.orig/cifs* fs/ + ;; + esac + rm -rf fs.orig ) + rm -rf${VERBOSE1} sound arch + + cd net/ + # Architectures with a more modular kernel will want to keep supporting + # modules for 'nfs' et al: + case $ARCH in + arm*) + ;; + *86*) + ;; + *) + rm -rf${VERBOSE1} sunrpc + ;; + esac + mv -f ipv4{,.orig} && ( mkdir -m755 ipv4 ; cp -a ipv4.orig/inet* ipv4/ ; rm -rf ipv4.orig ) + mv -f ipv6{,.orig} && ( mkdir -m755 ipv6 ; cp -a ipv6.orig/ipv6* ipv6/ ; rm -rf ipv6.orig ) + rm -rf${VERBOSE1} 9p appletalk atm ax25 bluetooth bridge dccp decnet ieee80211 ipx irda key mac80211 netfilter netrom rds rfkill rose rxrpc sched sctp tipc wanrouter wimax wireless + cd .. + + cd drivers/ + # Architectures with a more modular kernel will want to keep 'ide' 'scsi' + # and other core device drivers: + case $ARCH in + arm*) + ;; + *) + mv scsi scsi.orig + mv md md.orig + rm -rf${VERBOSE1} cdrom ide md scsi + mkdir scsi + mv scsi.orig/hv_storvsc.ko scsi + rm -rf${VERBOSE1} scsi.orig + mkdir md + mv md.orig/dm-raid.ko md + rm -rf${VERBOSE1} md.orig + ;; + esac + # Save loop.ko, nvme.ko, and virtio_blk.ko, but remove other block drivers: + mv block block.orig + mkdir block + mv block.orig/nvme.ko block + mv block.orig/loop.ko block + mv block.orig/virtio_blk.ko block + rm -rf${VERBOSE1} block.orig + # Done with block directory + # Save the Hyper-V modules in staging, but toss the rest: + mv staging staging.orig + mv staging.orig/hv staging + rm -rf${VERBOSE1} staging.orig + rm -rf${VERBOSE1} ata atm bluetooth clocksource connector crypto dma idle infiniband input isdn kvm leds media memstick message mfd misc pci power rtc serial telephony uwb w1 watchdog + + if [ "$ADD_KMS" = "1" ]; then + # Keep video.ko and button.ko, needed by some gpu drivers. + # Also keep processor.ko, needed by acpi-cpufreq. + mv acpi acpi.orig + mkdir acpi + mv acpi.orig/{button,processor,video}.ko acpi + rm -rf${VERBOSE1} acpi.orig + + # Keep AGP modules: + mv char/agp agp.orig + rm -rf${VERBOSE1} char + mkdir char + mv agp.orig char/agp + + # Keep hwmon.ko: + mkdir hwmon.orig + mv hwmon/hwmon.ko hwmon.orig + rm -rf${VERBOSE1} hwmon + mv hwmon.orig hwmon + + # Keep platform/x86/mxm-wmi.ko and platform/x86/wmi.ko + mkdir x86.orig + mv platform/x86/mxm-wmi.ko platform/x86/wmi.ko x86.orig + rm -rf${VERBOSE1} platform + mkdir platform + mv x86.orig platform/x86 + + # Keep thermal/thermal_sys.ko: + mv thermal thermal.orig + mkdir thermal + mv thermal.orig/thermal_sys.ko thermal + rm -rf${VERBOSE1} thermal.orig + + # Keep some video drivers: + mv video video.orig + mkdir video + mv video.orig/{sis,syscopyarea.ko,sysfillrect.ko,sysimgblt.ko} video + rm -rf${VERBOSE1} video.orig + else + rm -rf${VERBOSE1} acpi char cpufreq hwmon platform thermal video + fi + + # Needed to install on MMC: + mv mmc/host mmc/host.orig + mkdir mmc/host + mv mmc/host.orig/sdhci.ko mmc/host + mv mmc/host.orig/sdhci-acpi.ko mmc/host + mv mmc/host.orig/sdhci-pci.ko mmc/host + rm -rf${VERBOSE1} mmc/host.orig + + cd usb/ + rm -rf${VERBOSE1} atm host/hwa-hc.ko host/whci image serial wusbcore + cd .. + + cd net/ + rm -rf${VERBOSE1} appletalk arcnet bonding chelsio hamradio irda ixgb wimax wireless wan + cd .. + + rm -f${VERBOSE1} ieee1394/pcilynx.ko + rm -f${VERBOSE1} net/pcmcia/com20020_cs.ko + rm -f${VERBOSE1} net/plip.ko + rm -f${VERBOSE1} net/usb/hso.ko + rm -f${VERBOSE1} usb/misc/uss720.ko + rm -f${VERBOSE1} gpio/wm831x-gpio.ko + #rm -f${VERBOSE1} clocksource/scx200_hrt.ko + ) +done + +# Move the remaining modules into place: +mkdir -p -m755 ./lib/modules +cp --remove-destination -fa${VERBOSE2} ./lib/modules.incoming/* ./lib/modules/ + +# This can go now: +rm -rf${VERBOSE1} ./lib/modules.incoming + +} + + +############### Add the pcmcia modules ######################################### + +add_pcmciamods() +{ + +echo "--- Adding pcmcia modules ---" +cd $PKG/$ARCH-installer-filesystem + +# Clear out remaining cruft: +rm -rf ./lib/modules.incoming + +# Temporary extraction directory: +rm -rf $TMP/extract-packages +mkdir -p -m755 $TMP/extract-packages + +# Unpack the kernel modules: +for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + kv=${KEXTRAV[$ind]} + tar -C $TMP/extract-packages -x${VERBOSE1}f $(ls -1 ${KERNELMODPKG} | grep "${KVER}$(echo $kv| tr - _)-" ) lib +done +mv -f${VERBOSE1} $TMP/extract-packages/lib/modules ./lib/modules.incoming + +# Compile the list with pcmcia modules and copy into place: +for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + kv=${KEXTRAV[$ind]} + mkdir -p $PKG/$ARCH-installer-filesystem/lib/modules/${KVER}$kv +done +for kmod in $( egrep "(/kernel/drivers/pcmcia/|/kernel/drivers/net/pcmcia/|/kernel/drivers/char/pcmcia/|/kernel/drivers/scsi/pcmcia/).*:" $PKG/$ARCH-installer-filesystem/lib/modules.incoming/$KVER${KEXTRAV[0]}/modules.dep | sed -e 's,:,,g ; s, ,\n,g' | sort | uniq | sed -e "s#^/lib/modules/$KVER${KEXTRAV[0]}##" ); do + for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + kv=${KEXTRAV[$ind]} + mkdir -p $PKG/$ARCH-installer-filesystem/lib/modules/${KVER}$kv/$(dirname $kmod) + cp -a${VERBOSE1} $PKG/$ARCH-installer-filesystem/lib/modules.incoming/${KVER}$kv/$kmod $PKG/$ARCH-installer-filesystem/lib/modules/${KVER}$kv/$(dirname $kmod)/ + done +done + +# We can get rid of this now: +rm -rf ./lib/modules.incoming + +# Install the necessary pcmcia support files from stock packages: +echo "--- Adding support tools from Slackware packages: ---" +rm -rf $TMP/extract-packages/* +installpkg -root $TMP/extract-packages/ $PCMCIAUTILS | grep "Installing package " | cut -d'(' -f1 +rm -rf $TMP/extract-packages/{usr,var} +cp -a $TMP/extract-packages/* $PKG/$ARCH-installer-filesystem/ +rm -rf $TMP/extract-packages/* +installpkg -root $TMP/extract-packages/ $SYSFS | grep "Installing package " | cut -d'(' -f1 +rm -rf $TMP/extract-packages/usr/{doc,include} $TMP/extract-packages/var +if [ ! $ADD_MANPAGES -eq 1 ]; then + rm -rf $TMP/extract-packages/usr/man/* +fi +cp -a $TMP/extract-packages/* $PKG/$ARCH-installer-filesystem/ +rm -rf $TMP/extract-packages/* + +} + + +############### Compress kernel modules ######################################## + +compress_modules() +{ + # If the module files should be compressed, do that now: + if [ $COMPRESS_MODS -eq 1 ]; then + echo "--- Compressing kernel modules ---" + cd $PKG/$ARCH-installer-filesystem + find ./lib/modules -type f -name "*.ko" -exec gzip -9f {} \; + for i in $(find ./lib/modules -type l -name "*.ko") ; do ln -s $( readlink $i).gz $i.gz ; rm $i ; done + cd - 1>/dev/null + fi + +} + + +############### Add network card firmware ##################################### + +add_netfirmware() +{ + # Some network cards use a firmware... + echo "--- Adding firmware for network cards ---" + cd $PKG/$ARCH-installer-filesystem + + # Just to be safe: + mkdir -p -m755 ./lib/firmware + + # Temporary extraction directory: + rm -rf $TMP/extract-packages + mkdir -p -m755 $TMP/extract-packages + + # Unpack the kernel firmware: + tar -C $TMP/extract-packages -x${VERBOSE1}f $(ls -1 ${KERNELFW_PKG}) lib + for FMW in $NETFIRMWARE ; do + cp -fa${VERBOSE2} $TMP/extract-packages/lib/firmware/${FMW}* ./lib/firmware + done + + # Clean up: + rm -rf $TMP/extract-packages/lib + cd - 1>/dev/null + +} + + +############### Calculate module dependencies (showing errors) ################# + +check_module_dependencies() +{ + +cd $PKG/$ARCH-installer-filesystem + +# Make sure you compile generic and huge kernels with the same options +# (apart from the drivers that will be modularized/builtins) or else you +# will see "unknown symbol" errors when the scripts resolves dependencies! +# Unpack the System.map files we need for checking unresolved dependencies +# (aka kernel modules we forgot to add): +for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + gunzip -cd ${SLACKROOT}/kernels/${KERNELS[$ind]}/System.map.gz \ + > ./lib/modules/System.map.$KVER${KEXTRAV[$ind]} +done + +echo "--- Calculating module dependencies ---" +for ind in $(seq 0 $((${#KERNELS[*]} -1)) ); do + kv=${KEXTRAV[$ind]} + [ ! -d $PKG/$ARCH-installer-filesystem/lib/modules/$KVER${kv} ] && continue + rm -f $PKG/$ARCH-installer-filesystem/lib/modules/$KVER${kv}/modules.* + /sbin/depmod -a -e -b $PKG/$ARCH-installer-filesystem \ + -F $PKG/$ARCH-installer-filesystem/lib/modules/System.map.$KVER$kv $KVER$kv +done + +# We do not need these any longer: +rm -f ./lib/modules/System.map.* +} + +############### Architecture specific stuff #################################### + +arch_specifics() +{ +cd $PKG/$ARCH-installer-filesystem + +echo "--- Running ARCH specific tasks ---" + +# First the tasks we want to apply to every architecture: + +# Set the Slackware version in the 'setup' script & /etc/issue +# to the version specified in this installer build script: +sed -i \ + 's?Slackware Linux Setup (version.*)?Slackware Linux Setup (version '"$INSTALLERVERSION"')?' \ + usr/lib/setup/setup +sed -i 's?(version.*)?(version '"$INSTALLERVERSION"')?g' etc/issue + +# Then split out per supported architecture: + +case $ARCH in + + arm*) + # + # ARM modifications: + # + cat << 'EOF' > root/qgo +# This makes parallel Slackware installations over SSH far easier to identify. +read -p "Host name (for window title): " winthostname +# We include additional control characters to enable us to set the window title +# even under GNU Screen: +echo -ne "\033P\033]0; Slackware ARM Installer on $winthostname \007\033\\" +ntpdate rolex.ripe.net && /bin/sh /sbin/fakedate && TERM=screen-256color setup +EOF + chmod 755 root/qgo + + # Don't need these - they take up space: + # + rm -f sbin/syslinux + + # Apply ARM patches to the installer scripts: + # + # We don't need to set a Kernel for Slackware ARM yet, as the boot loader config is usually + # out of reach of the OS and needs to be configured independently. + install -${VERBOSE1}pm755 $SRCDIR/arm/installer-patches/setkernel usr/lib/setup/SeTkernel + + # Load Kernel modules required for filesystems and so on. + sed -i '\?^#.*!/bin/? a\/etc/rc.d/rc.modules-arm' etc/rc.d/rc.S + install -${VERBOSE1}pm755 $SRCDIR/arm/rc.modules-arm etc/rc.d/ + + # Set the system clock from the hardware clock before fudging the date + # since on ARM the system clock is not automatically set on all devices. + sed -i '/^touch \/.today/ a/sbin/hwclock --hctosys' etc/rc.d/rc.S + + # Log errors into /tmp on the root filesystem. This helps the development + # process -- sometimes the doinst.sh scripts bail out because of a missing + # dependency (or sometimes a package just needs a recompile). + patch ${VERBOSETXT} -p0 < $SRCDIR/arm/installer-patches/slackinstall-logerror.diff || exit 1 + + # On some ARM devices there is no RTC so it's best to disable the + # fsck checks on the filesystems. + install -${VERBOSE1}pm755 $SRCDIR/arm/armedslack-nofscheck usr/lib/setup/ + patch ${VERBOSETXT} -p0 < $SRCDIR/arm/installer-patches/SeTpartitions-add-nofscheck.diff || exit 1 + + ;; + + x86_64) + # + # x86_64 modifications: + # + + # We may still need to fix-up 'slackware' directory paths to 'slackware64': + if ! grep -qr "slackware64" ./usr/lib/setup/ ; then + # Note, the order of fix-up is important: + sed -i \ + -e "s#/slackware\([^-]\)#/slackware64\1#g" \ + -e "s#slackware/#slackware64/#g" \ + -e "s#slackware)#slackware64)#g" \ + -e "s#slackware\$#slackware64#g" \ + -e "s#mkdir slackware#mkdir slackware64#" \ + $(grep -lr "slackware" ./usr/lib/setup) + fi + ;; + +esac + +} + +############### Create the new installer initrd ################################ + +create_initrd() +{ +cd $PKG/$ARCH-installer-filesystem/ + +echo "--- Creating your new initrd.img ---" +# Leave a note in the installer image to help us work out which build version +# it is -- just aids with bug reports for now: +cat <<"EOF" > .installer-version +Version details: +---------------- +Installer............: $Revision: 1.129 $ ($Date: 2011/04/13 23:03:07 $) +EOF +cat << EOF >> .installer-version +For Slackware version: $INSTALLERVERSION +Build date...........: $( date ) + +Build details: +-------------- +Installer arch.......: $ARCH +Build host...........: $( uname -a ) + +EOF + +if [ ! -f etc/ld.so.conf ]; then + cat <<EOF > etc/ld.so.conf +/lib${LIBDIRSUFFIX} +/usr/lib${LIBDIRSUFFIX} +EOF +fi +ldconfig -r. + +# Find any remaining dangling symlinks. +echo "--- Finding any dangling symlinks ---" +echo " Expect to see:" +echo " ./boot ./var/log/scripts ./var/log/packages" +echo " ./var/adm/scripts ./var/adm/packages ./cdrom ./nfs" +echo "" +find -L . -type l +echo "-------------------------------------" + +# Do we have to split the initrd (separate initrd for each kernel version)? +if [ $SPLIT_INITRD -eq 1 ]; then + if [ $(ls -d --indicator-style=none ./lib/modules/${KVER}* | wc -l) -eq 2 ]; + then + echo "--- Splitting into separate initrd's for $KVER ---" + local usek + for kv in $KVER $KVER-smp ; do + [ "$kv" = "$KVER" ] && usek="-smp" || usek="" + # Determine the size of the installer: + echo " Installer size (uncompressed): $( du -sh --exclude=$kv . )" + find . -path ./lib/modules/$kv -prune -o -print \ + | cpio -o -H newc | gzip -9fv > $CWD/initrd${usek}.img + echo " New installer image for kernel $KVER$usek is ${CWD}/initrd${usek}.img" + done + cat $SLACKROOT/isolinux/isolinux.cfg | sed \ + -e "/label huge.s/,/label hugesmp.s/s/initrd=initrd.img/initrd=initrd.img/" \ + -e "/label hugesmp.s/,/label speakup.s/s/initrd=initrd.img/initrd=initrd-smp.img/" \ + -e "/label speakup.s/,\$s/initrd=initrd.img/initrd=initrd.img/" \ + > $CWD/isolinux.cfg + elif [ $(ls -d --indicator-style=none ./lib/modules/${KVER}* | wc -l) -gt 2 ]; + then + echo "*** Initrd splitting only supported for a total of 2 kernel versions!" + SPLIT_INITRD=0 + else + echo "*** Only one set of kernel modules present, no splitting performed!" + SPLIT_INITRD=0 + fi +fi + +if [ $SPLIT_INITRD -eq 0 ]; then + # Determine the size of the installer: + echo " Installer size (uncompressed): $( du -sh . )" + find . | cpio -o -H newc | gzip -9fv > $CWD/initrd.img + echo " New installer image is ${CWD}/initrd.img" + cp -a $SLACKROOT/isolinux/isolinux.cfg $CWD/ +fi + +echo +echo "--- Suggested actions:" +echo "[1] chroot $PKG/$ARCH-installer-filesystem" +echo "[2] Test it" +echo "[3] When done, mv -f $CWD/initrd.img $SLACKROOT/isolinux/initrd.img" +echo +} + +############### Create the USB boot image file ################################# + +create_usbboot() +{ +# Like initrd.img, the usbboot.img will be created in the current directory +echo "--- Creating an image for the USB boot disk ---" + +# Calculate sizes: +let USBIMG=$( LC_ALL=C du -ck ${CWD}/initrd*.img | grep total | cut -f1 ) +for KERN in ${SLACKROOT}/kernels/*.?/*zImage ; do + let USBIMG=USBIMG+$( LC_ALL=C du -sk $KERN | cut -f1 ) +done +let USBIMG=USBIMG+777 # Add just that little extra... +if [ $EFIBOOT -eq 1 ]; then + # A bit more extra space since elilo will be added... + let USBIMG=USBIMG+256 +fi + +# Generate a pxelinux.cfg/default file (used for usbboot.img too) +cat ${CWD}/isolinux.cfg \ + | sed -e "s#/kernels/#kernels/#" > ${CWD}/pxelinux.cfg_default + +# Create a DOS formatted image file +if $(which mkfs.msdos 1>/dev/null 2>&1) ; then + MKDOS=mkfs.msdos +else + MKDOS=mkdosfs +fi +${MKDOS} -n USBSLACK -F 16 -C ${CWD}/usbboot.img $USBIMG || exit 1 +[ $VERBOSE -eq 1 ] && file ${CWD}/usbboot.img + +# Copy all relevant files into the image. +rm -rf ${CWD}/usbmount +mkdir -p -m700 ${CWD}/usbmount +mount -o loop,rw ${CWD}/usbboot.img ${CWD}/usbmount + +echo "--- Copying data to the USB boot disk image: ---" +cp $SLACKROOT/isolinux/setpkg ${CWD}/usbmount/ +cp $SLACKROOT/isolinux/{f*.txt,message.txt} ${CWD}/usbmount/ +cp ${CWD}/initrd*.img ${CWD}/usbmount/ +cat ${CWD}/pxelinux.cfg_default |sed -e 's# kernels/# #g' -e 's#/.zImage##' \ + -e 's#/memtest##' \ + > ${CWD}/usbmount/syslinux.cfg + +# Add EFI support: +if [ $EFIBOOT -eq 1 ]; then + cp -a ${SRCDIR}/sources/efi.${ARCH}/* ${CWD}/usbmount + # Make sure the Slackware and kernel version in message.txt are up to date: + cat ${SRCDIR}/sources/efi.${ARCH}/EFI/BOOT/message.txt | sed "s/version.*/version ${INSTALLERVERSION} \(Linux kernel $(uname -r | cut -f 1 -d -)\)\!/g" > ${CWD}/usbmount/EFI/BOOT/message.txt +fi + +# Older syslinux can not cope with subdirectories - let's just be safe: +echo "--- Making the usbboot image bootable: ---" +( + cd $SLACKROOT/kernels/ + for dir in `find -type d -name "*.?" -maxdepth 1` ; do + cp $dir/*zImage ${CWD}/usbmount/$dir + done + cp $SLACKROOT/kernels/memtest/memtest ${CWD}/usbmount/memtest +) +sync + +# Stamp the file with the syslinux bootloader: +# > Do "vi ~/.mtoolsrc" to add "mtools_skip_check=1", +# > if the next command gives an error: +umount ${CWD}/usbmount +syslinux -s ${CWD}/usbboot.img + +#Clean up: +rm -rf ${CWD}/usbmount + +} + +############### Create the EFI boot image file ################################# + +create_efiboot() +{ +# Like initrd.img, the efiboot.img will be created in the current directory +echo +echo "--- Creating an image for the EFI boot disk ---" + +# Calculate sizes: +let EFIIMG=$( LC_ALL=C du -ck ${CWD}/initrd*.img | grep total | cut -f1 ) +for KERN in ${SLACKROOT}/kernels/huge.s/*zImage ; do + let EFIIMG=EFIIMG+$( LC_ALL=C du -sk $KERN | cut -f1 ) +done +let EFIIMG=EFIIMG+2222 # Add just that little extra... + +# Round this value down to the nearest 2048 bytes: +let EFIIMG=EFIIMG\*1024 +let EFIIMG=EFIIMG/2048 + +# Create the image: +dd if=/dev/zero of=${CWD}/efiboot.img bs=2048 count=$EFIIMG +sgdisk -N 1 -t 1:EF00 --change-name=1:EFISLACK ${CWD}/efiboot.img +losetup -o 1048576 /dev/loop3 ${CWD}/efiboot.img +mkdosfs -F 32 /dev/loop3 +rm -rf ${CWD}/efimount +mkdir ${CWD}/efimount +mount /dev/loop3 ${CWD}/efimount +cp -a --verbose ${CWD}/sources/efi/* ${CWD}/efimount +cp -a --verbose ${SLACKROOT}/kernels/huge.s/*zImage ${CWD}/efimount/EFI/BOOT/huge.s +cp -a ${CWD}/initrd.img ${CWD}/efimount/EFI/BOOT/ +umount /dev/loop3 +losetup -d /dev/loop3 + +# Clean up: +rm -rf ${CWD}/efimount + +} + +############### Pre-process man pages ########################################## +process_manpages() +{ +# We have to preprocess these, since we aren't about to ship groff on here. +if [ -d usr/man ]; then + echo "--- Pre-processing man pages ---" + ( cd usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type f -maxdepth 1) ; do + echo -n "$eachpage " + # bzip2 is best for text (among gzip, bzip2, and xz tested) + /bin/gunzip -c "$eachpage" | /usr/bin/gtbl | /usr/bin/groff -mandoc -Tlatin1 | bzip2 -9c > "$(dirname $eachpage)/$(basename $eachpage .gz).bz2" + rm -f "$eachpage" + done + ) + done + echo + ) +fi +} +# End pre-process man pages + +############### Copy man pages ################################################# +copy_manpages() +{ +# We will only include the man pages that are copied here. +if [ -d usr/man ]; then + echo "--- Copying desired man pages ---" + ( cd usr + mv man man.full + mkdir man + # List every man page to include in the loop below. + # Pages should be preprocessed text files compressed with bzip2. + # Note that they can be any cattable text file and need not be true + # man page format... perhaps handy for future documentation, or + # README_LVM, etc. ? + for manpage in \ + man8/cfdisk.8.bz2 \ + man8/fdisk.8.bz2 \ + man8/gdisk.8.bz2 \ + man8/partprobe.8.bz2 \ + man8/parted.8.bz2 \ + man8/partx.8.bz2 \ + man8/sfdisk.8.bz2 \ + man8/sgdisk.8.bz2 \ + man8/mount.8.bz2 \ + man1/lsattr.1.bz2 \ + man1/chattr.1.bz2 \ + man8/e2image.8.bz2 \ + man8/badblocks.8.bz2 \ + man8/fsck.8.bz2 \ + man8/e2fsck.8.bz2 \ + man8/mke2fs.8.bz2 \ + man8/tune2fs.8.bz2 \ + man5/mke2fs.conf.5.bz2 \ + man5/e2fsck.conf.5.bz2 \ + man8/btrfs.8.bz2 \ + man8/mkfs.btrfs.8.bz2 \ + man8/jfs_mkfs.8.bz2 \ + man8/jfs_fsck.8.bz2 \ + man8/pvdisplay.8.bz2 \ + man8/vgchange.8.bz2 \ + man8/pvck.8.bz2 \ + man8/lvmsar.8.bz2 \ + man8/lvresize.8.bz2 \ + man8/lvrename.8.bz2 \ + man8/vgs.8.bz2 \ + man8/pvresize.8.bz2 \ + man8/vgexport.8.bz2 \ + man8/vgsplit.8.bz2 \ + man8/pvcreate.8.bz2 \ + man8/vgreduce.8.bz2 \ + man8/vgck.8.bz2 \ + man8/pvchange.8.bz2 \ + man8/vgdisplay.8.bz2 \ + man8/pvremove.8.bz2 \ + man8/vgremove.8.bz2 \ + man8/vgmerge.8.bz2 \ + man8/vgextend.8.bz2 \ + man8/lvchange.8.bz2 \ + man8/vgcfgbackup.8.bz2 \ + man8/lvreduce.8.bz2 \ + man8/lvscan.8.bz2 \ + man8/lvs.8.bz2 \ + man8/dmsetup.8.bz2 \ + man8/vgimport.8.bz2 \ + man8/pvscan.8.bz2 \ + man8/lvcreate.8.bz2 \ + man8/vgrename.8.bz2 \ + man8/lvdisplay.8.bz2 \ + man8/vgimportclone.8.bz2 \ + man8/lvextend.8.bz2 \ + man8/lvremove.8.bz2 \ + man8/vgcfgrestore.8.bz2 \ + man8/lvmconf.8.bz2 \ + man8/lvmdiskscan.8.bz2 \ + man8/lvmdump.8.bz2 \ + man8/vgcreate.8.bz2 \ + man8/vgscan.8.bz2 \ + man8/pvmove.8.bz2 \ + man8/lvmchange.8.bz2 \ + man8/vgmknodes.8.bz2 \ + man8/fsadm.8.bz2 \ + man8/vgconvert.8.bz2 \ + man8/lvconvert.8.bz2 \ + man8/lvm.8.bz2 \ + man8/lvmsadc.8.bz2 \ + man8/dmeventd.8.bz2 \ + man8/pvs.8.bz2 \ + man5/lvm.conf.5.bz2 \ + man8/cryptsetup.8.bz2 \ + man8/mdmon.8.bz2 \ + man8/mdadm.8.bz2 \ + man8/mkreiserfs.8.bz2 \ + man8/mkfs.xfs.8.bz2 \ + man8/installpkg.8.bz2 \ + man8/removepkg.8.bz2 \ + man8/pkgtool.8.bz2 \ + man8/mkfs.minix.8.bz2 \ + man8/mkdosfs.8.bz2 \ + man8/fdformat.8.bz2 \ + man1/grep.1.bz2 \ + man1/wc.1.bz2 \ + man1/chroot.1.bz2 \ + man1/tar.1.bz2 \ + man1/chmod.1.bz2 \ + man1/ln.1.bz2 \ + man1/chown.1.bz2 \ + man1/sync.1.bz2 \ + man1/du.1.bz2 \ + man1/ddrescue.1.bz2 \ + man1/dd.1.bz2 \ + man8/ifconfig.8.bz2 \ + man8/route.8.bz2 \ + man1/hostname.1.bz2 \ + man8/arp.8.bz2 \ + man8/netstat.8.bz2 \ + man8/ipmask.8.bz2 \ + man8/rarp.8.bz2 \ + man8/mii-tool.8.bz2 \ + man8/nameif.8.bz2 \ + man8/findmnt.8.bz2 \ + man8/lsblk.8.bz2 \ + man8/fsfreeze.8.bz2 \ + man8/fstrim.8.bz2 \ + man8/swaplabel.8.bz2 \ + man8/ip.8.bz2 \ + ; do + mkdir -p man/$(dirname $manpage) + cp -a man.full/$manpage man/$manpage + done + # Delete the pages that will not be included: + rm -rf man.full + # Create cat directories: + ( cd man + for mandir in man* ; do + ln -sf $mandir cat$(echo $mandir | cut -b4-) + done + ) + ) +fi +} +# End copy man pages + +############### Time to call all our functions ################################# + +############### Time to call all our functions ################################# + +if [ $SHOWHELP -eq 1 ]; then + basic_usage + exit +fi + +# Clean build environment: +rm -rf $TMP $PKG +mkdir -p $TMP $PKG +rm -f $CWD/initrd*.img $CWD/usbboot.img +rm -f $CWD/isolinux.cfg ${CWD}/pxelinux.cfg_default + +if [ $DUMPSKELETON -eq 1 ]; then + create_installer_fs + extract_skeleton_fs + zipup_installer_skeleton +else + cat <<-EOT + + ** Building software for: ARCH='$ARCH' + ** This host's specs: machine type='$(uname -m)' + ** processor='$(uname -p)' + ** hardware platform"='$(uname -i)' + ** Waiting 3 seconds or just press ENTER now :-) + + EOT + read -p "..." -t 3 + echo + # Are we re-compiling busybox/dropbear and populating with binaries? + if [ $RECOMPILE -eq 1 ]; then + create_installer_fs + if ! use_installer_source ; then + extract_skeleton_fs + fi + build_busybox || exit 1 + build_dropbear || exit 1 + import_binaries || exit 1 + import_libraries || exit 1 + arch_specifics + else + unpack_oldinitrd + fi + + # Are we adding network modules? + if [ $ADD_NETMODS -eq 1 ]; then + add_netmods + fi + + # Are we adding pcmcia modules? + if [ $ADD_PCMCIAMODS -eq 1 ]; then + add_pcmciamods + fi + + if [ $ADD_NETMODS -eq 1 -o $ADD_PCMCIAMODS -eq 1 ]; then + # If we added modules, we also need to add network card firmware: + # but only if specified. The default list of firmware is useless on ARM SoC systems. + # The TrimSlice has a RealTek card which requires firmware, but currently the firmware + # is compiled into the Kernel. This will probably have to change later, but for now + # it'll suffice. + if [ $ADD_NETFIRMWARE -eq 1 ]; then + add_netfirmware + fi + # If we added modules, compress them (if requested): + compress_modules + # If we added modules, check for missing dependencies: + check_module_dependencies + fi + + if [ $ADD_MANPAGES -eq 1 ]; then + process_manpages + copy_manpages + fi + + # Finally, create the Slackware installer initrd + create_initrd + + # If you wanted a USB boot image as well, here it is: + if [ $USBBOOT -eq 1 ]; then + create_usbboot + fi + + ## Commented out. The usbboot.img handles EFI now. + ## If you wanted an EFI boot image as well, here it is: + #if [ $EFIBOOT -eq 1 ]; then + # create_efiboot || exit 1 + #fi + +fi + diff --git a/source/installer/busybox-1.19.4.tar.bz2.sign b/source/installer/busybox-1.19.4.tar.bz2.sign deleted file mode 100644 index 39615406..00000000 --- a/source/installer/busybox-1.19.4.tar.bz2.sign +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN PGP SIGNED MESSAGE----- -Hash: SHA1 - -busybox-1.19.4.tar.bz2 released Sat, 04 Feb 2012 20:36:04 +0100 - -MD5: 9c0cae5a0379228e7b55e5b29528df8e busybox-1.19.4.tar.bz2 -SHA1: 5d7db83d8efbadc19c86ec236e673504bbf43517 busybox-1.19.4.tar.bz2 - -To verify this signature, you can obtain my public key -from http://busybox.net/~vda/vda_pubkey.gpg - ------BEGIN PGP SIGNATURE----- -Version: GnuPG v1.4.6 (GNU/Linux) - -iD8DBQFPLYisR7cMVazJllsRAlJcAJ9qzRJHdS3BTxltS8uXQjkY85kvnQCgxqD2 -UoFLhO99cgfJpTNM0/2S8PA= -=+tRO ------END PGP SIGNATURE----- diff --git a/source/installer/busybox.2.6.32.2.diff b/source/installer/busybox.2.6.32.2.diff deleted file mode 100644 index 15757775..00000000 --- a/source/installer/busybox.2.6.32.2.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- ./miscutils/eject.c.orig 2009-12-12 15:13:28.000000000 -0600 -+++ ./miscutils/eject.c 2009-12-31 14:04:20.000000000 -0600 -@@ -13,6 +13,10 @@ - * Most of the dirty work blatantly ripped off from cat.c =) - */ - -+/* kludge for 2.6.32.2 /usr/include/scsi/scsi.h */ -+#include <stdint.h> -+typedef uint8_t u8; -+ - #include <sys/mount.h> - #include "libbb.h" - /* Must be after libbb.h: they need size_t */ diff --git a/source/installer/busybox.SlackBuild b/source/installer/busybox.SlackBuild deleted file mode 100755 index bf99203a..00000000 --- a/source/installer/busybox.SlackBuild +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh -# Copyright 2007, 2009, 2011, 2012, 2016 Patrick J. Volkerding, Sebeka, MN, USA -# All rights reserved. -# -# Redistribution and use of this script, with or without modification, is -# permitted provided that the following conditions are met: -# -# 1. Redistributions of this script must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -PKGNAM=busybox -VERSION=${VERSION:-$(echo $PKGNAM-*.tar.bz2 | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-1} - -# Automatically determine the architecture we're building on: -if [ -z "$ARCH" ]; then - case "$( uname -m )" in - i?86) export ARCH=i486 ;; - arm*) export ARCH=arm ;; - # Unless $ARCH is already set, use uname -m for all other archs: - *) export ARCH=$( uname -m ) ;; - esac -fi - -CWD=$(pwd) -if [ "$TMP" = "" ]; then - TMP=/tmp -fi - -cd $TMP -rm -rf ${PKGNAM}-${VERSION} -tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1 -cd ${PKGNAM}-$VERSION || exit 1 - -zcat $CWD/busybox.2.6.32.2.diff.gz | patch -p1 || exit 1 - -# Fix broken wget -P option: -zcat $CWD/busybox.wget.P.diff.gz | patch -p1 --verbose || exit 1 - -zcat $CWD/busybox.glibc217.diff.gz | patch -p1 --verbose || exit 1 - -zcat $CWD/busybox.fix.perms.64bit.platforms.diff.gz | patch -p1 --verbose || exit 1 - -# Make sure ownerships and permissions are sane: -chown -R root:root . -find . -perm 666 -exec chmod 644 {} \; -find . -perm 664 -exec chmod 644 {} \; -find . -perm 600 -exec chmod 644 {} \; -find . -perm 444 -exec chmod 644 {} \; -find . -perm 400 -exec chmod 644 {} \; -find . -perm 440 -exec chmod 644 {} \; -find . -perm 777 -exec chmod 755 {} \; -find . -perm 775 -exec chmod 755 {} \; -find . -perm 511 -exec chmod 755 {} \; -find . -perm 711 -exec chmod 755 {} \; -find . -perm 555 -exec chmod 755 {} \; - -# Configure: -cat $CWD/busybox-dot-config > .config -make oldconfig - -# Build and install: -make -j4 || exit 1 -make install || exit 1 - diff --git a/source/installer/busybox.fix.perms.64bit.platforms.diff b/source/installer/busybox.fix.perms.64bit.platforms.diff deleted file mode 100644 index d8afd95e..00000000 --- a/source/installer/busybox.fix.perms.64bit.platforms.diff +++ /dev/null @@ -1,44 +0,0 @@ -From af36ba206f7cf0eef77a82af741766a2d03c51ad Mon Sep 17 00:00:00 2001 -From: Timo Teras <timo.teras@iki.fi> -Date: Fri, 10 Feb 2012 09:55:24 +0200 -Subject: mkdir: fix permissions on 64-bit platforms - -sizeof(long) != sizeof(mode_t), this causes the compare in -bb_make_directory of (long)-1 != (mode_t)-1 to fail and mess up -the permissions of final directory by doing chmod((mode_t) -1). - -Signed-off-by: Timo Teras <timo.teras@iki.fi> -Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> ---- - coreutils/mkdir.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/coreutils/mkdir.c b/coreutils/mkdir.c -index a4429b1..b33b6bb 100644 ---- a/coreutils/mkdir.c -+++ b/coreutils/mkdir.c -@@ -54,7 +54,7 @@ static const char mkdir_longopts[] ALIGN1 = - int mkdir_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int mkdir_main(int argc UNUSED_PARAM, char **argv) - { -- mode_t mode = (mode_t)(-1); -+ long mode = -1; - int status = EXIT_SUCCESS; - int flags = 0; - unsigned opt; -@@ -68,10 +68,11 @@ int mkdir_main(int argc UNUSED_PARAM, char **argv) - #endif - opt = getopt32(argv, "m:p" IF_SELINUX("Z:"), &smode IF_SELINUX(,&scontext)); - if (opt & 1) { -- mode = 0777; -- if (!bb_parse_mode(smode, &mode)) { -+ mode_t mmode = 0777; -+ if (!bb_parse_mode(smode, &mmode)) { - bb_error_msg_and_die("invalid mode '%s'", smode); - } -+ mode = mmode; - } - if (opt & 2) - flags |= FILEUTILS_RECUR; --- -cgit v0.12 diff --git a/source/installer/busybox.glibc217.diff b/source/installer/busybox.glibc217.diff deleted file mode 100644 index 94afe359..00000000 --- a/source/installer/busybox.glibc217.diff +++ /dev/null @@ -1,10 +0,0 @@ ---- ./include/libbb.h.orig 2012-02-04 13:34:24.000000000 -0600 -+++ ./include/libbb.h 2013-03-11 23:30:28.537980546 -0500 -@@ -35,6 +35,7 @@ - #include <sys/poll.h> - #include <sys/ioctl.h> - #include <sys/mman.h> -+#include <sys/resource.h> - #include <sys/socket.h> - #include <sys/stat.h> - #include <sys/time.h> diff --git a/source/installer/busybox.wget.P.diff b/source/installer/busybox.wget.P.diff deleted file mode 100644 index 99219d46..00000000 --- a/source/installer/busybox.wget.P.diff +++ /dev/null @@ -1,31 +0,0 @@ -From aacd44860129372e5d4ff1494664317f18cbb615 Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko <vda.linux@googlemail.com> -Date: Sun, 17 Jun 2012 18:21:30 +0000 -Subject: wget: fix wget-supports--P testsuite failure. Closes 4940 - -Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com> ---- -diff --git a/networking/wget.c b/networking/wget.c -index 5d58450..6d8f8a5 100644 ---- a/networking/wget.c -+++ b/networking/wget.c -@@ -621,13 +621,11 @@ static void download_one_url(const char *url) - if (G.fname_out[0] == '/' || !G.fname_out[0]) - G.fname_out = (char*)"index.html"; - /* -P DIR is considered only if there was no -O FILE */ -+ if (G.dir_prefix) -+ G.fname_out = fname_out_alloc = concat_path_file(G.dir_prefix, G.fname_out); - else { -- if (G.dir_prefix) -- G.fname_out = fname_out_alloc = concat_path_file(G.dir_prefix, G.fname_out); -- else { -- /* redirects may free target.path later, need to make a copy */ -- G.fname_out = fname_out_alloc = xstrdup(G.fname_out); -- } -+ /* redirects may free target.path later, need to make a copy */ -+ G.fname_out = fname_out_alloc = xstrdup(G.fname_out); - } - } - #if ENABLE_FEATURE_WGET_STATUSBAR --- -cgit v0.9.0.1-2-gef13 diff --git a/source/installer/dhcpcd/config.h.diff b/source/installer/dhcpcd/config.h.diff deleted file mode 100644 index 7bdefb60..00000000 --- a/source/installer/dhcpcd/config.h.diff +++ /dev/null @@ -1,17 +0,0 @@ -diff -Nur dhcpcd-3.2.3.orig/config.h dhcpcd-3.2.3/config.h ---- dhcpcd-3.2.3.orig/config.h 2008-02-25 02:28:19.000000000 -0600 -+++ dhcpcd-3.2.3/config.h 2009-03-06 14:55:01.998436374 -0600 -@@ -71,10 +71,10 @@ - - #define OPENNTPFILE ETCDIR "/ntpd.conf" - --#define DEFAULT_SCRIPT ETCDIR "/" PACKAGE ".sh" -+#define DEFAULT_SCRIPT INFODIR "/" PACKAGE ".sh" - --#define STATEDIR "/var" --#define PIDFILE STATEDIR "/run/" PACKAGE "-%s.pid" -+#define STATEDIR INFODIR -+#define PIDFILE INFODIR "/" PACKAGE "-%s.pid" - - #ifndef INFODIR - # define INFODIR "/var/lib/dhcpcd" diff --git a/source/installer/dhcpcd/dhcpcd.sh.diff b/source/installer/dhcpcd/dhcpcd.sh.diff deleted file mode 100644 index 290665a9..00000000 --- a/source/installer/dhcpcd/dhcpcd.sh.diff +++ /dev/null @@ -1,17 +0,0 @@ ---- a/dhcpcd.sh 2009-03-06 19:22:41.247171672 -0600 -+++ b/dhcpcd.sh 2009-03-06 19:24:19.186014526 -0600 -@@ -1,10 +1,10 @@ - #!/bin/sh - # --# This is a sample /etc/dhcpcd.sh script. --# /etc/dhcpcd.sh script is executed by dhcpcd daemon -+# This is a sample /etc/dhcpc/dhcpcd.sh script. -+# /etc/dhcpc/dhcpcd.sh script is executed by dhcpcd daemon - # any time it configures or shuts down interface. --# The following parameters are passed to dhcpcd.exe script: --# $1 = HostInfoFilePath, e.g "/var/lib/dhcpcd/dhcpcd-eth0.info" -+# The following parameters are passed to the dhcpcd.sh script: -+# $1 = HostInfoFilePath, e.g "/etc/dhcpc/dhcpcd-eth0.info" - # $2 = "up" if interface has been configured with the same - # IP address as before reboot; - # $2 = "down" if interface has been shut down; diff --git a/source/installer/installer.SlackBuild b/source/installer/installer.SlackBuild new file mode 100755 index 00000000..955dcdb0 --- /dev/null +++ b/source/installer/installer.SlackBuild @@ -0,0 +1,56 @@ +#!/bin/sh + +# Copyright 2018 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +INSTALLERVERSION=${INSTALLERVERSION:-"15.0"} +TMP=${TMP:-/tmp} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$(uname -m)" in + i?86) ARCH=i586 + SLACKROOT=${SLACKROOT:-/root/slackware-current} + OUTPUT=${OUTPUT:-$TMP/output-ia32-$(basename $(uname -r) -smp)} + ;; + x86_64) ARCH=x86_64 + SLACKROOT=${SLACKROOT:-/root/slackware64-current} + OUTPUT=${OUTPUT:-$TMP/output-x86_64-$(uname -r)} + ;; + arm*) readelf /usr/bin/file -A | egrep -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl + SLACKROOT=${SLACKROOT:-/root/slackware-current} + OUTPUT=${OUTPUT:-$TMP/output-arm-$(uname -r)} + ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) ARCH=$(uname -m) + SLACKROOT=${SLACKROOT:-/root/slackware-current} + OUTPUT=${OUTPUT:-$TMP/output-$(uname -m)-$(uname -r)} + ;; + esac + export ARCH +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +mkdir -p $OUTPUT +cd $OUTPUT ; ARCH=${ARCH} INSTALLERVERSION=${INSTALLERVERSION} NUMJOBS=${NUMJOBS} SLACKROOT=${SLACKROOT} sh ${CWD}/build_installer.sh -r -c + diff --git a/source/installer/module-blacklist b/source/installer/module-blacklist new file mode 100644 index 00000000..1e74a60d --- /dev/null +++ b/source/installer/module-blacklist @@ -0,0 +1,118 @@ +svcrdma.ko +xprtrdma.ko +3w-9xxx.ko +3w-xxxx.ko +BusLogic.ko +DAC960.ko +a100u2w.ko +aacraid.ko +advansys.ko +aha152x.ko +aha1542.ko +aic79xx.ko +aic7xxx.ko +aic7xxx_old.ko +arcmsr.ko +atp870u.ko +c67x00.ko +cciss.ko +configfs.ko +cpqarray.ko +crc-itu-t.ko +crc16.ko +dc395x.ko +dm-snapshot.ko +dmx3191d.ko +dtc.ko +eata.ko +ext2.ko +ext3.ko +ext4.ko +fat.ko +fdomain.ko +gdth.ko +gfs2.ko +hid-a4tech.ko +hid-chicony.ko +hid-cypress.ko +hid-dell.ko +hid-dummy.ko +hid-gyration.ko +hid-monterey.ko +hid-petalynx.ko +hid-pl.ko +hid-samsung.ko +hid-sony.ko +hid-sunplus.ko +hptiop.ko +i2c-dev.ko +i2o_block.ko +i2o_bus.ko +i2o_core.ko +i2o_proc.ko +i2o_scsi.ko +ide-gd_mod.ko +in2000.ko +initio.ko +ipr.ko +ips.ko +isofs.ko +isp116x-hcd.ko +isp1760.ko +jbd.ko +jbd2.ko +jfs.ko +libsas.ko +libsrp.ko +lpfc.ko +mbcache.ko +megaraid.ko +megaraid_mbox.ko +megaraid_mm.ko +megaraid_sas.ko +mptbase.ko +mptfc.ko +mptsas.ko +mptscsih.ko +mptspi.ko +msdos.ko +mvsas.ko +nls_cp437.ko +nls_iso8859-1.ko +nls_utf8.ko +nsp32.ko +ohci1394.ko +dv1394.ko +video1394.ko +pata_marvell.ko +pcilynx.ko +qla1280.ko +qla2xxx.ko +qla4xxx.ko +qlogicfas.ko +qlogicfas408.ko +raid_class.ko +reiserfs.ko +scsi_dh.ko +scsi_dh_alua.ko +scsi_dh_emc.ko +scsi_dh_hp_sw.ko +scsi_dh_rdac.ko +scsi_transport_fc.ko +scsi_transport_iscsi.ko +scsi_transport_sas.ko +scsi_transport_spi.ko +scsi_transport_srp.ko +sl811-hcd.ko +st.ko +stex.ko +sx8.ko +sym53c416.ko +sym53c8xx.ko +t128.ko +tmscsim.ko +udf.ko +ultrastor.ko +vfat.ko +wd7000.ko +xfs.ko diff --git a/source/installer/sources/busybox/busybox-1.28.3.tar.bz2.sign b/source/installer/sources/busybox/busybox-1.28.3.tar.bz2.sign new file mode 100644 index 00000000..66956cd7 --- /dev/null +++ b/source/installer/sources/busybox/busybox-1.28.3.tar.bz2.sign @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +busybox-1.28.3.tar.bz2 released Tue, 03 Apr 2018 22:08:41 +0200 + +MD5: 82e5ad09ae4a07c266fc179492b51757 busybox-1.28.3.tar.bz2 +SHA1: 64b47e83dccc5db7fe4ca596b28c9b901a136fe3 busybox-1.28.3.tar.bz2 + +To verify this signature, you can obtain my public key +from http://busybox.net/~vda/vda_pubkey.gpg + +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iEYEARECAAYFAlrD30sACgkQR7cMVazJllvYtQCdHpdnl0zwlnpGRwxFcLtHcqst +DukAn2aKJdCh2jELGH52korVaSh+E9fE +=FojI +-----END PGP SIGNATURE----- diff --git a/source/installer/busybox-dot-config b/source/installer/sources/busybox/busybox-dot-config index eef8ea26..995a2355 100644 --- a/source/installer/busybox-dot-config +++ b/source/installer/sources/busybox/busybox-dot-config @@ -1,55 +1,40 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.19.4 -# Sat Apr 7 11:51:30 2012 +# Busybox version: 1.28.3 +# Tue Apr 17 23:06:01 2018 # CONFIG_HAVE_DOT_CONFIG=y # -# Busybox Settings -# - -# -# General Configuration +# Settings # CONFIG_DESKTOP=y # CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set CONFIG_INCLUDE_SUSv2=y -# CONFIG_USE_PORTABLE_CODE is not set -CONFIG_PLATFORM_LINUX=y -CONFIG_FEATURE_BUFFERS_USE_MALLOC=y -# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set -# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_LONG_OPTS=y CONFIG_SHOW_USAGE=y CONFIG_FEATURE_VERBOSE_USAGE=y CONFIG_FEATURE_COMPRESS_USAGE=y -CONFIG_FEATURE_INSTALLER=y -CONFIG_INSTALL_NO_USR=y -CONFIG_LOCALE_SUPPORT=y -CONFIG_UNICODE_SUPPORT=y -# CONFIG_UNICODE_USING_LOCALE is not set -# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set -CONFIG_SUBST_WCHAR=63 -CONFIG_LAST_SUPPORTED_WCHAR=767 -# CONFIG_UNICODE_COMBINING_WCHARS is not set -# CONFIG_UNICODE_WIDE_WCHARS is not set -# CONFIG_UNICODE_BIDI_SUPPORT is not set -# CONFIG_UNICODE_NEUTRAL_TABLE is not set -# CONFIG_UNICODE_PRESERVE_BROKEN is not set -CONFIG_LONG_OPTS=y +CONFIG_LFS=y +# CONFIG_PAM is not set CONFIG_FEATURE_DEVPTS=y -# CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_UTMP=y CONFIG_FEATURE_WTMP=y CONFIG_FEATURE_PIDFILE=y +CONFIG_PID_FILE_PATH="/var/run" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +CONFIG_INSTALL_NO_USR=y CONFIG_FEATURE_SUID=y CONFIG_FEATURE_SUID_CONFIG=y CONFIG_FEATURE_SUID_CONFIG_QUIET=y -# CONFIG_SELINUX is not set # CONFIG_FEATURE_PREFER_APPLETS is not set CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_SYSLOG=y -# CONFIG_FEATURE_HAVE_RPC is not set +CONFIG_PLATFORM_LINUX=y # # Build Options @@ -58,21 +43,15 @@ CONFIG_FEATURE_SYSLOG=y # CONFIG_PIE is not set # CONFIG_NOMMU is not set # CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_LFS=y CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" - -# -# Debugging Options -# -# CONFIG_DEBUG is not set -# CONFIG_DEBUG_PESSIMIZE is not set -# CONFIG_WERROR is not set -CONFIG_NO_DEBUG_LIB=y -# CONFIG_DMALLOC is not set -# CONFIG_EFENCE is not set +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set # # Installation Options ("make install" behavior) @@ -87,27 +66,55 @@ CONFIG_INSTALL_APPLET_SYMLINKS=y CONFIG_PREFIX="./_install" # -# Busybox Library Tuning +# Debugging Options # -# CONFIG_FEATURE_SYSTEMD is not set +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set CONFIG_PASSWORD_MINLEN=6 -CONFIG_MD5_SIZE_VS_SPEED=2 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 # CONFIG_FEATURE_FAST_TOP is not set # CONFIG_FEATURE_ETC_NETWORKS is not set -CONFIG_FEATURE_USE_TERMIOS=y CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 CONFIG_FEATURE_EDITING_VI=y CONFIG_FEATURE_EDITING_HISTORY=64 # CONFIG_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set # CONFIG_FEATURE_REVERSE_SEARCH is not set CONFIG_FEATURE_TAB_COMPLETION=y # CONFIG_FEATURE_USERNAME_COMPLETION is not set CONFIG_FEATURE_EDITING_FANCY_PROMPT=y # CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +CONFIG_LOCALE_SUPPORT=y +CONFIG_UNICODE_SUPPORT=y +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=63 +CONFIG_LAST_SUPPORTED_WCHAR=767 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set CONFIG_FEATURE_NON_POSIX_CP=y CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y +CONFIG_FEATURE_USE_SENDFILE=y CONFIG_FEATURE_COPYBUF_KB=4 CONFIG_FEATURE_SKIP_ROOTFS=y CONFIG_MONOTONIC_SYSCALL=y @@ -121,85 +128,89 @@ CONFIG_IOCTL_HEX2STR_ERROR=y # # Archival Utilities # -# CONFIG_FEATURE_SEAMLESS_XZ is not set -# CONFIG_FEATURE_SEAMLESS_LZMA is not set +CONFIG_FEATURE_SEAMLESS_XZ=y +CONFIG_FEATURE_SEAMLESS_LZMA=y CONFIG_FEATURE_SEAMLESS_BZ2=y CONFIG_FEATURE_SEAMLESS_GZ=y CONFIG_FEATURE_SEAMLESS_Z=y CONFIG_AR=y CONFIG_FEATURE_AR_LONG_FILENAMES=y # CONFIG_FEATURE_AR_CREATE is not set +CONFIG_UNCOMPRESS=y +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y CONFIG_BZIP2=y +CONFIG_FEATURE_BZIP2_DECOMPRESS=y CONFIG_CPIO=y CONFIG_FEATURE_CPIO_O=y -# CONFIG_FEATURE_CPIO_P is not set +CONFIG_FEATURE_CPIO_P=y # CONFIG_DPKG is not set -# CONFIG_DPKG_DEB is not set -# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set -# CONFIG_GUNZIP is not set -# CONFIG_GZIP is not set -# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_DPKG_DEB=y +CONFIG_GZIP=y +CONFIG_FEATURE_GZIP_LONG_OPTIONS=y +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +CONFIG_FEATURE_GZIP_DECOMPRESS=y # CONFIG_LZOP is not set +# CONFIG_UNLZOP is not set +# CONFIG_LZOPCAT is not set # CONFIG_LZOP_COMPR_HIGH is not set -# CONFIG_RPM2CPIO is not set -# CONFIG_RPM is not set -# CONFIG_TAR is not set -# CONFIG_FEATURE_TAR_CREATE is not set -# CONFIG_FEATURE_TAR_AUTODETECT is not set -# CONFIG_FEATURE_TAR_FROM is not set -# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set -# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set -# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set -# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set -# CONFIG_FEATURE_TAR_TO_COMMAND is not set -# CONFIG_FEATURE_TAR_UNAME_GNAME is not set -# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +CONFIG_RPM=y +CONFIG_RPM2CPIO=y +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +CONFIG_FEATURE_TAR_AUTODETECT=y +CONFIG_FEATURE_TAR_FROM=y +CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y +CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +CONFIG_FEATURE_TAR_UNAME_GNAME=y +CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y # CONFIG_FEATURE_TAR_SELINUX is not set -# CONFIG_UNCOMPRESS is not set -# CONFIG_UNLZMA is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y # CONFIG_FEATURE_LZMA_FAST is not set -# CONFIG_LZMA is not set -# CONFIG_UNXZ is not set -# CONFIG_XZ is not set -# CONFIG_UNZIP is not set # # Coreutils # CONFIG_BASENAME=y CONFIG_CAT=y -# CONFIG_DATE is not set -# CONFIG_FEATURE_DATE_ISOFMT is not set -# CONFIG_FEATURE_DATE_NANO is not set -# CONFIG_FEATURE_DATE_COMPAT is not set -CONFIG_ID=y -CONFIG_GROUPS=y -CONFIG_TEST=y -CONFIG_FEATURE_TEST_64=y -CONFIG_TOUCH=y -CONFIG_TR=y -CONFIG_FEATURE_TR_CLASSES=y -CONFIG_FEATURE_TR_EQUIV=y -CONFIG_BASE64=y -CONFIG_WHO=y -CONFIG_USERS=y -CONFIG_CAL=y -CONFIG_CATV=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y CONFIG_CHGRP=y CONFIG_CHMOD=y CONFIG_CHOWN=y CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y CONFIG_CHROOT=y CONFIG_CKSUM=y -# CONFIG_COMM is not set -# CONFIG_CP is not set -# CONFIG_FEATURE_CP_LONG_OPTIONS is not set -# CONFIG_CUT is not set +CONFIG_COMM=y +CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y +CONFIG_CUT=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +CONFIG_FEATURE_DATE_NANO=y +CONFIG_FEATURE_DATE_COMPAT=y CONFIG_DD=y CONFIG_FEATURE_DD_SIGNAL_HANDLING=y CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y CONFIG_DF=y CONFIG_FEATURE_DF_FANCY=y CONFIG_DIRNAME=y @@ -210,41 +221,56 @@ CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y CONFIG_ECHO=y CONFIG_FEATURE_FANCY_ECHO=y CONFIG_ENV=y -CONFIG_FEATURE_ENV_LONG_OPTIONS=y -# CONFIG_EXPAND is not set -# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set +CONFIG_EXPAND=y +CONFIG_UNEXPAND=y CONFIG_EXPR=y CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y CONFIG_FALSE=y -# CONFIG_FOLD is not set +CONFIG_FOLD=y CONFIG_FSYNC=y CONFIG_HEAD=y CONFIG_FEATURE_FANCY_HEAD=y -# CONFIG_HOSTID is not set +CONFIG_HOSTID=y +CONFIG_ID=y +CONFIG_GROUPS=y CONFIG_INSTALL=y CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y CONFIG_LN=y CONFIG_LOGNAME=y -# CONFIG_LS is not set -# CONFIG_FEATURE_LS_FILETYPES is not set -# CONFIG_FEATURE_LS_FOLLOWLINKS is not set -# CONFIG_FEATURE_LS_RECURSIVE is not set -# CONFIG_FEATURE_LS_SORTFILES is not set -# CONFIG_FEATURE_LS_TIMESTAMPS is not set -# CONFIG_FEATURE_LS_USERNAME is not set -# CONFIG_FEATURE_LS_COLOR is not set -# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y CONFIG_MKDIR=y -CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y CONFIG_MKFIFO=y -# CONFIG_MKNOD is not set +CONFIG_MKNOD=y +CONFIG_MKTEMP=y CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y CONFIG_NICE=y -# CONFIG_NOHUP is not set -# CONFIG_OD is not set -# CONFIG_PRINTENV is not set +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y CONFIG_PRINTF=y CONFIG_PWD=y CONFIG_READLINK=y @@ -252,51 +278,68 @@ CONFIG_FEATURE_READLINK_FOLLOW=y CONFIG_REALPATH=y CONFIG_RM=y CONFIG_RMDIR=y -# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set -# CONFIG_SEQ is not set -# CONFIG_SHA1SUM is not set -# CONFIG_SHA256SUM is not set -# CONFIG_SHA512SUM is not set +CONFIG_SEQ=y +CONFIG_SHRED=y +CONFIG_SHUF=y CONFIG_SLEEP=y CONFIG_FEATURE_FANCY_SLEEP=y -# CONFIG_FEATURE_FLOAT_SLEEP is not set -# CONFIG_SORT is not set -# CONFIG_FEATURE_SORT_BIG is not set -# CONFIG_SPLIT is not set -# CONFIG_FEATURE_SPLIT_FANCY is not set +CONFIG_FEATURE_FLOAT_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +CONFIG_SPLIT=y +CONFIG_FEATURE_SPLIT_FANCY=y CONFIG_STAT=y CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_FEATURE_STAT_FILESYSTEM=y CONFIG_STTY=y CONFIG_SUM=y CONFIG_SYNC=y -# CONFIG_TAC is not set +CONFIG_FEATURE_SYNC_FANCY=y +CONFIG_TAC=y CONFIG_TAIL=y CONFIG_FEATURE_FANCY_TAIL=y -# CONFIG_TEE is not set -# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TIMEOUT=y +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_NODEREF=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y CONFIG_TRUE=y +CONFIG_TRUNCATE=y CONFIG_TTY=y CONFIG_UNAME=y -# CONFIG_UNEXPAND is not set -# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y CONFIG_UNIQ=y -# CONFIG_USLEEP is not set -# CONFIG_UUDECODE is not set -# CONFIG_UUENCODE is not set +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_BASE64=y +CONFIG_UUENCODE=y CONFIG_WC=y CONFIG_FEATURE_WC_LARGE=y +CONFIG_WHO=y +CONFIG_W=y +CONFIG_USERS=y CONFIG_WHOAMI=y CONFIG_YES=y # -# Common options for cp and mv +# Common options # -# CONFIG_FEATURE_PRESERVE_HARDLINKS is not set +CONFIG_FEATURE_VERBOSE=y # -# Common options for ls, more and telnet +# Common options for cp and mv # -CONFIG_FEATURE_AUTOWIDTH=y +CONFIG_FEATURE_PRESERVE_HARDLINKS=y # # Common options for df, du, ls @@ -304,57 +347,68 @@ CONFIG_FEATURE_AUTOWIDTH=y CONFIG_FEATURE_HUMAN_READABLE=y # -# Common options for md5sum, sha1sum, sha256sum, sha512sum -# -CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y - -# # Console Utilities # CONFIG_CHVT=y -CONFIG_FGCONSOLE=y CONFIG_CLEAR=y -# CONFIG_DEALLOCVT is not set +CONFIG_DEALLOCVT=y CONFIG_DUMPKMAP=y +CONFIG_FGCONSOLE=y CONFIG_KBD_MODE=y CONFIG_LOADFONT=y +CONFIG_SETFONT=y +CONFIG_FEATURE_SETFONT_TEXTUAL_MAP=y +CONFIG_DEFAULT_SETFONT_DIR="/usr/share/kbd/consolefonts" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y CONFIG_LOADKMAP=y -# CONFIG_OPENVT is not set +CONFIG_OPENVT=y CONFIG_RESET=y CONFIG_RESIZE=y CONFIG_FEATURE_RESIZE_PRINT=y CONFIG_SETCONSOLE=y CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y -# CONFIG_SETFONT is not set -# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set -CONFIG_DEFAULT_SETFONT_DIR="" CONFIG_SETKEYCODES=y CONFIG_SETLOGCONS=y CONFIG_SHOWKEY=y # -# Common options for loadfont and setfont +# Debian Utilities # -CONFIG_FEATURE_LOADFONT_PSF2=y -CONFIG_FEATURE_LOADFONT_RAW=y +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y # -# Debian Utilities +# klibc-utils # -CONFIG_MKTEMP=y -# CONFIG_PIPE_PROGRESS is not set -# CONFIG_RUN_PARTS is not set -# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set -# CONFIG_FEATURE_RUN_PARTS_FANCY is not set -# CONFIG_START_STOP_DAEMON is not set -# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set -# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set -CONFIG_WHICH=y +# CONFIG_MINIPS is not set +# CONFIG_NUKE is not set +# CONFIG_RESUME is not set +# CONFIG_RUN_INIT is not set # # Editors # -# CONFIG_PATCH is not set +CONFIG_AWK=y +CONFIG_FEATURE_AWK_LIBM=y +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y +CONFIG_FEATURE_DIFF_DIR=y +CONFIG_ED=y +CONFIG_PATCH=y +CONFIG_SED=y CONFIG_VI=y CONFIG_FEATURE_VI_MAX_LEN=1024 CONFIG_FEATURE_VI_8BIT=y @@ -369,16 +423,10 @@ CONFIG_FEATURE_VI_SETOPTS=y CONFIG_FEATURE_VI_SET=y CONFIG_FEATURE_VI_WIN_RESIZE=y CONFIG_FEATURE_VI_ASK_TERMINAL=y -CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y -CONFIG_AWK=y -CONFIG_FEATURE_AWK_LIBM=y -# CONFIG_CMP is not set -CONFIG_DIFF=y -CONFIG_FEATURE_DIFF_LONG_OPTIONS=y -CONFIG_FEATURE_DIFF_DIR=y -# CONFIG_ED is not set -# CONFIG_SED is not set -# CONFIG_FEATURE_ALLOW_EXEC is not set +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_ALLOW_EXEC=y # # Finding Utilities @@ -394,6 +442,7 @@ CONFIG_FEATURE_FIND_MAXDEPTH=y CONFIG_FEATURE_FIND_NEWER=y CONFIG_FEATURE_FIND_INUM=y CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y CONFIG_FEATURE_FIND_USER=y CONFIG_FEATURE_FIND_GROUP=y CONFIG_FEATURE_FIND_NOT=y @@ -401,20 +450,23 @@ CONFIG_FEATURE_FIND_DEPTH=y CONFIG_FEATURE_FIND_PAREN=y CONFIG_FEATURE_FIND_SIZE=y CONFIG_FEATURE_FIND_PRUNE=y -# CONFIG_FEATURE_FIND_DELETE is not set +CONFIG_FEATURE_FIND_DELETE=y CONFIG_FEATURE_FIND_PATH=y CONFIG_FEATURE_FIND_REGEX=y # CONFIG_FEATURE_FIND_CONTEXT is not set CONFIG_FEATURE_FIND_LINKS=y -# CONFIG_GREP is not set -# CONFIG_FEATURE_GREP_EGREP_ALIAS is not set -# CONFIG_FEATURE_GREP_FGREP_ALIAS is not set -# CONFIG_FEATURE_GREP_CONTEXT is not set +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y CONFIG_XARGS=y CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y # # Init Utilities @@ -423,304 +475,344 @@ CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y # CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set # CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y # CONFIG_FEATURE_CALL_TELINIT is not set CONFIG_TELINIT_PATH="" CONFIG_INIT=y +CONFIG_LINUXRC=y CONFIG_FEATURE_USE_INITTAB=y CONFIG_FEATURE_KILL_REMOVED=y CONFIG_FEATURE_KILL_DELAY=10 CONFIG_FEATURE_INIT_SCTTY=y CONFIG_FEATURE_INIT_SYSLOG=y -CONFIG_FEATURE_EXTRA_QUIET=y +CONFIG_FEATURE_INIT_QUIET=y # CONFIG_FEATURE_INIT_COREDUMPS is not set -# CONFIG_FEATURE_INITRD is not set CONFIG_INIT_TERMINAL_TYPE="linux" -CONFIG_MESG=y -CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y # # Login/Password Management Utilities # -CONFIG_ADD_SHELL=y -CONFIG_REMOVE_SHELL=y CONFIG_FEATURE_SHADOWPASSWDS=y # CONFIG_USE_BB_PWD_GRP is not set # CONFIG_USE_BB_SHADOW is not set CONFIG_USE_BB_CRYPT=y -# CONFIG_USE_BB_CRYPT_SHA is not set +CONFIG_USE_BB_CRYPT_SHA=y +CONFIG_ADD_SHELL=y +CONFIG_REMOVE_SHELL=y +CONFIG_ADDGROUP=y +CONFIG_FEATURE_ADDUSER_TO_GROUP=y CONFIG_ADDUSER=y -# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set CONFIG_FEATURE_CHECK_NAMES=y +CONFIG_LAST_ID=60000 CONFIG_FIRST_SYSTEM_ID=100 CONFIG_LAST_SYSTEM_ID=9999 -CONFIG_ADDGROUP=y -CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y -CONFIG_FEATURE_ADDUSER_TO_GROUP=y +CONFIG_CHPASSWD=y +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="sha256" +CONFIG_CRYPTPW=y +CONFIG_MKPASSWD=y CONFIG_DELUSER=y CONFIG_DELGROUP=y CONFIG_FEATURE_DEL_USER_FROM_GROUP=y -# CONFIG_GETTY is not set -# CONFIG_LOGIN is not set -# CONFIG_PAM is not set -# CONFIG_LOGIN_SCRIPTS is not set -# CONFIG_FEATURE_NOLOGIN is not set -# CONFIG_FEATURE_SECURETTY is not set +CONFIG_GETTY=y +CONFIG_LOGIN=y +CONFIG_LOGIN_SESSION_AS_CHILD=y +CONFIG_LOGIN_SCRIPTS=y +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y CONFIG_PASSWD=y CONFIG_FEATURE_PASSWD_WEAK_CHECK=y -# CONFIG_CRYPTPW is not set -# CONFIG_CHPASSWD is not set CONFIG_SU=y CONFIG_FEATURE_SU_SYSLOG=y CONFIG_FEATURE_SU_CHECKS_SHELLS=y -# CONFIG_SULOGIN is not set -# CONFIG_VLOCK is not set +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y # # Linux Ext2 FS Progs # -# CONFIG_CHATTR is not set -# CONFIG_FSCK is not set -# CONFIG_LSATTR is not set -# CONFIG_TUNE2FS is not set +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +CONFIG_TUNE2FS=y # # Linux Module Utilities # -CONFIG_MODINFO=y # CONFIG_MODPROBE_SMALL is not set -# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set -# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set -# CONFIG_INSMOD is not set -# CONFIG_RMMOD is not set -# CONFIG_LSMOD is not set -# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set -# CONFIG_MODPROBE is not set -# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set -# CONFIG_DEPMOD is not set +CONFIG_DEPMOD=y +CONFIG_INSMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +CONFIG_MODINFO=y +CONFIG_MODPROBE=y +CONFIG_FEATURE_MODPROBE_BLACKLIST=y +CONFIG_RMMOD=y # # Options common to multiple modutils # +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set # CONFIG_FEATURE_2_4_MODULES is not set -# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP is not set # CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set -# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set -# CONFIG_FEATURE_MODUTILS_ALIAS is not set -# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +CONFIG_FEATURE_MODUTILS_ALIAS=y +CONFIG_FEATURE_MODUTILS_SYMBOLS=y CONFIG_DEFAULT_MODULES_DIR="" CONFIG_DEFAULT_DEPMOD_FILE="" # # Linux System Utilities # +CONFIG_ACPID=y +CONFIG_FEATURE_ACPID_COMPAT=y +CONFIG_BLKDISCARD=y +CONFIG_BLKID=y +CONFIG_FEATURE_BLKID_TYPE=y CONFIG_BLOCKDEV=y -# CONFIG_REV is not set -# CONFIG_ACPID is not set -# CONFIG_FEATURE_ACPID_COMPAT is not set -# CONFIG_BLKID is not set -# CONFIG_FEATURE_BLKID_TYPE is not set +CONFIG_CAL=y +CONFIG_CHRT=y CONFIG_DMESG=y CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_EJECT=y +CONFIG_FEATURE_EJECT_SCSI=y +CONFIG_FALLOCATE=y +CONFIG_FATATTR=y CONFIG_FBSET=y CONFIG_FEATURE_FBSET_FANCY=y CONFIG_FEATURE_FBSET_READMODE=y -CONFIG_FDFLUSH=y CONFIG_FDFORMAT=y -# CONFIG_FDISK is not set +CONFIG_FDISK=y # CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set -# CONFIG_FEATURE_FDISK_WRITABLE is not set +CONFIG_FEATURE_FDISK_WRITABLE=y # CONFIG_FEATURE_AIX_LABEL is not set # CONFIG_FEATURE_SGI_LABEL is not set # CONFIG_FEATURE_SUN_LABEL is not set # CONFIG_FEATURE_OSF_LABEL is not set -# CONFIG_FEATURE_GPT_LABEL is not set -# CONFIG_FEATURE_FDISK_ADVANCED is not set -# CONFIG_FINDFS is not set -# CONFIG_FLOCK is not set -# CONFIG_FREERAMDISK is not set +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +CONFIG_FINDFS=y +CONFIG_FLOCK=y +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y # CONFIG_FSCK_MINIX is not set -# CONFIG_MKFS_EXT2 is not set -# CONFIG_MKFS_MINIX is not set -# CONFIG_FEATURE_MINIX2 is not set -# CONFIG_MKFS_REISER is not set -# CONFIG_MKFS_VFAT is not set -# CONFIG_GETOPT is not set -# CONFIG_FEATURE_GETOPT_LONG is not set +CONFIG_FSFREEZE=y +CONFIG_FSTRIM=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y CONFIG_HEXDUMP=y -# CONFIG_FEATURE_HEXDUMP_REVERSE is not set +CONFIG_FEATURE_HEXDUMP_REVERSE=y # CONFIG_HD is not set +CONFIG_XXD=y CONFIG_HWCLOCK=y -CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y -# CONFIG_IPCRM is not set -# CONFIG_IPCS is not set +CONFIG_IONICE=y +CONFIG_IPCRM=y +CONFIG_IPCS=y +CONFIG_LAST=y +CONFIG_FEATURE_LAST_FANCY=y CONFIG_LOSETUP=y -# CONFIG_LSPCI is not set -# CONFIG_LSUSB is not set -# CONFIG_MDEV is not set -# CONFIG_FEATURE_MDEV_CONF is not set -# CONFIG_FEATURE_MDEV_RENAME is not set -# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set -# CONFIG_FEATURE_MDEV_EXEC is not set -# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set -# CONFIG_MKSWAP is not set -# CONFIG_FEATURE_MKSWAP_UUID is not set +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +CONFIG_FEATURE_MDEV_RENAME_REGEXP=y +CONFIG_FEATURE_MDEV_EXEC=y +CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +CONFIG_MKFS_EXT2=y +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +CONFIG_MKFS_REISER=y +CONFIG_MKDOSFS=y +CONFIG_MKFS_VFAT=y +CONFIG_MKSWAP=y +CONFIG_FEATURE_MKSWAP_UUID=y CONFIG_MORE=y -# CONFIG_MOUNT is not set -# CONFIG_FEATURE_MOUNT_FAKE is not set -# CONFIG_FEATURE_MOUNT_VERBOSE is not set -# CONFIG_FEATURE_MOUNT_HELPERS is not set -# CONFIG_FEATURE_MOUNT_LABEL is not set +CONFIG_MOUNT=y +CONFIG_FEATURE_MOUNT_FAKE=y +CONFIG_FEATURE_MOUNT_VERBOSE=y +CONFIG_FEATURE_MOUNT_HELPERS=y +CONFIG_FEATURE_MOUNT_LABEL=y # CONFIG_FEATURE_MOUNT_NFS is not set -# CONFIG_FEATURE_MOUNT_CIFS is not set -# CONFIG_FEATURE_MOUNT_FLAGS is not set -# CONFIG_FEATURE_MOUNT_FSTAB is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +CONFIG_NSENTER=y CONFIG_PIVOT_ROOT=y CONFIG_RDATE=y CONFIG_RDEV=y # CONFIG_READPROFILE is not set -# CONFIG_RTCWAKE is not set -# CONFIG_SCRIPT is not set -# CONFIG_SCRIPTREPLAY is not set -# CONFIG_SETARCH is not set -CONFIG_SWAPONOFF=y +CONFIG_RENICE=y +CONFIG_REV=y +CONFIG_RTCWAKE=y +CONFIG_SCRIPT=y +CONFIG_SCRIPTREPLAY=y +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +CONFIG_SETSID=y +CONFIG_SWAPON=y +CONFIG_FEATURE_SWAPON_DISCARD=y CONFIG_FEATURE_SWAPON_PRI=y +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y CONFIG_SWITCH_ROOT=y -# CONFIG_UMOUNT is not set -# CONFIG_FEATURE_UMOUNT_ALL is not set -# CONFIG_FEATURE_MOUNT_LOOP is not set -# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set +CONFIG_TASKSET=y +CONFIG_FEATURE_TASKSET_FANCY=y +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +CONFIG_UNSHARE=y +CONFIG_WALL=y + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y # CONFIG_FEATURE_MTAB_SUPPORT is not set -# CONFIG_VOLUMEID is not set -# CONFIG_FEATURE_VOLUMEID_EXT is not set -# CONFIG_FEATURE_VOLUMEID_BTRFS is not set -# CONFIG_FEATURE_VOLUMEID_REISERFS is not set -# CONFIG_FEATURE_VOLUMEID_FAT is not set -# CONFIG_FEATURE_VOLUMEID_HFS is not set -# CONFIG_FEATURE_VOLUMEID_JFS is not set -# CONFIG_FEATURE_VOLUMEID_XFS is not set -# CONFIG_FEATURE_VOLUMEID_NTFS is not set -# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set -# CONFIG_FEATURE_VOLUMEID_UDF is not set -# CONFIG_FEATURE_VOLUMEID_LUKS is not set -# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set -# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set -# CONFIG_FEATURE_VOLUMEID_ROMFS is not set -# CONFIG_FEATURE_VOLUMEID_SYSV is not set -# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set -# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +CONFIG_FEATURE_VOLUMEID_BCACHE=y +CONFIG_FEATURE_VOLUMEID_BTRFS=y +CONFIG_FEATURE_VOLUMEID_CRAMFS=y +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +CONFIG_FEATURE_VOLUMEID_HFS=y +CONFIG_FEATURE_VOLUMEID_ISO9660=y +CONFIG_FEATURE_VOLUMEID_JFS=y +CONFIG_FEATURE_VOLUMEID_LINUXRAID=y +CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y +CONFIG_FEATURE_VOLUMEID_LUKS=y +CONFIG_FEATURE_VOLUMEID_MINIX=y +CONFIG_FEATURE_VOLUMEID_NILFS=y +CONFIG_FEATURE_VOLUMEID_NTFS=y +CONFIG_FEATURE_VOLUMEID_OCFS2=y +CONFIG_FEATURE_VOLUMEID_REISERFS=y +CONFIG_FEATURE_VOLUMEID_ROMFS=y +CONFIG_FEATURE_VOLUMEID_SQUASHFS=y +CONFIG_FEATURE_VOLUMEID_SYSV=y +CONFIG_FEATURE_VOLUMEID_UBIFS=y +CONFIG_FEATURE_VOLUMEID_UDF=y +CONFIG_FEATURE_VOLUMEID_XFS=y # # Miscellaneous Utilities # -# CONFIG_CONSPY is not set +# CONFIG_ADJTIMEX is not set +CONFIG_BBCONFIG=y +CONFIG_FEATURE_COMPRESS_BBCONFIG=y +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=4000 +CONFIG_FEATURE_BEEP_LENGTH_MS=30 +CONFIG_CHAT=y +CONFIG_FEATURE_CHAT_NOFAIL=y +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +CONFIG_FEATURE_CHAT_IMPLICIT_CR=y +CONFIG_FEATURE_CHAT_SWALLOW_OPTS=y +CONFIG_FEATURE_CHAT_SEND_ESCAPES=y +CONFIG_FEATURE_CHAT_VAR_ABORT_LEN=y +CONFIG_FEATURE_CHAT_CLR_ABORT=y +CONFIG_CONSPY=y +CONFIG_CROND=y +CONFIG_FEATURE_CROND_D=y +CONFIG_FEATURE_CROND_CALL_SENDMAIL=y +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=y +CONFIG_DC=y +CONFIG_FEATURE_DC_LIBM=y +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +CONFIG_DEVMEM=y +CONFIG_FBSPLASH=y +CONFIG_FLASH_ERASEALL=y +CONFIG_FLASH_LOCK=y +CONFIG_FLASH_UNLOCK=y +CONFIG_FLASHCP=y +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y +CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y +CONFIG_HEXEDIT=y +CONFIG_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +CONFIG_INOTIFYD=y CONFIG_LESS=y CONFIG_FEATURE_LESS_MAXLINES=9999999 CONFIG_FEATURE_LESS_BRACKETS=y CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y CONFIG_FEATURE_LESS_MARKS=y CONFIG_FEATURE_LESS_REGEXP=y # CONFIG_FEATURE_LESS_WINCH is not set # CONFIG_FEATURE_LESS_ASK_TERMINAL is not set # CONFIG_FEATURE_LESS_DASHCMD is not set # CONFIG_FEATURE_LESS_LINENUMS is not set -# CONFIG_NANDWRITE is not set -# CONFIG_NANDDUMP is not set -CONFIG_SETSERIAL=y -# CONFIG_UBIATTACH is not set -# CONFIG_UBIDETACH is not set -CONFIG_UBIMKVOL=y -CONFIG_UBIRMVOL=y -CONFIG_UBIRSVOL=y -CONFIG_UBIUPDATEVOL=y -# CONFIG_ADJTIMEX is not set -CONFIG_BBCONFIG=y -CONFIG_FEATURE_COMPRESS_BBCONFIG=y -# CONFIG_BEEP is not set -CONFIG_FEATURE_BEEP_FREQ=0 -CONFIG_FEATURE_BEEP_LENGTH_MS=0 -# CONFIG_CHAT is not set -# CONFIG_FEATURE_CHAT_NOFAIL is not set -# CONFIG_FEATURE_CHAT_TTY_HIFI is not set -# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set -# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set -# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set -# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set -# CONFIG_FEATURE_CHAT_CLR_ABORT is not set -# CONFIG_CHRT is not set -# CONFIG_CROND is not set -# CONFIG_FEATURE_CROND_D is not set -# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set -CONFIG_FEATURE_CROND_DIR="" -# CONFIG_CRONTAB is not set -# CONFIG_DC is not set -# CONFIG_FEATURE_DC_LIBM is not set -# CONFIG_DEVFSD is not set -# CONFIG_DEVFSD_MODLOAD is not set -# CONFIG_DEVFSD_FG_NP is not set -# CONFIG_DEVFSD_VERBOSE is not set -# CONFIG_FEATURE_DEVFS is not set -# CONFIG_DEVMEM is not set -CONFIG_EJECT=y -CONFIG_FEATURE_EJECT_SCSI=y -# CONFIG_FBSPLASH is not set -# CONFIG_FLASHCP is not set -# CONFIG_FLASH_LOCK is not set -# CONFIG_FLASH_UNLOCK is not set -# CONFIG_FLASH_ERASEALL is not set -CONFIG_IONICE=y -# CONFIG_INOTIFYD is not set -# CONFIG_LAST is not set -# CONFIG_FEATURE_LAST_SMALL is not set -# CONFIG_FEATURE_LAST_FANCY is not set -# CONFIG_HDPARM is not set -# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set -# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set -# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set -# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set -# CONFIG_MAKEDEVS is not set +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y # CONFIG_FEATURE_MAKEDEVS_LEAF is not set -# CONFIG_FEATURE_MAKEDEVS_TABLE is not set -# CONFIG_MAN is not set -# CONFIG_MICROCOM is not set -# CONFIG_MOUNTPOINT is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +CONFIG_MAN=y +CONFIG_MICROCOM=y CONFIG_MT=y +CONFIG_NANDWRITE=y +CONFIG_NANDDUMP=y +CONFIG_PARTPROBE=y CONFIG_RAIDAUTORUN=y -# CONFIG_READAHEAD is not set -# CONFIG_RFKILL is not set +CONFIG_READAHEAD=y +CONFIG_RFKILL=y CONFIG_RUNLEVEL=y -# CONFIG_RX is not set -# CONFIG_SETSID is not set -# CONFIG_STRINGS is not set -# CONFIG_TASKSET is not set -# CONFIG_FEATURE_TASKSET_FANCY is not set +CONFIG_RX=y +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y CONFIG_TIME=y -CONFIG_TIMEOUT=y CONFIG_TTYSIZE=y -# CONFIG_VOLNAME is not set -CONFIG_WALL=y -# CONFIG_WATCHDOG is not set +CONFIG_UBIATTACH=y +CONFIG_UBIDETACH=y +CONFIG_UBIMKVOL=y +CONFIG_UBIRMVOL=y +CONFIG_UBIRSVOL=y +CONFIG_UBIUPDATEVOL=y +CONFIG_UBIRENAME=y +CONFIG_VOLNAME=y +CONFIG_WATCHDOG=y # # Networking Utilities # -CONFIG_NAMEIF=y -# CONFIG_FEATURE_NAMEIF_EXTENDED is not set -CONFIG_NBDCLIENT=y -CONFIG_NC=y -CONFIG_NC_SERVER=y -CONFIG_NC_EXTRA=y -# CONFIG_NC_110_COMPAT is not set -CONFIG_PING=y -CONFIG_PING6=y -CONFIG_FEATURE_FANCY_PING=y -CONFIG_WHOIS=y CONFIG_FEATURE_IPV6=y # CONFIG_FEATURE_UNIX_LOCAL is not set CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y @@ -730,19 +822,19 @@ CONFIG_ARPING=y CONFIG_BRCTL=y # CONFIG_FEATURE_BRCTL_FANCY is not set # CONFIG_FEATURE_BRCTL_SHOW is not set -# CONFIG_DNSD is not set +CONFIG_DNSD=y CONFIG_ETHER_WAKE=y -# CONFIG_FAKEIDENTD is not set -# CONFIG_FTPD is not set -# CONFIG_FEATURE_FTP_WRITE is not set -# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +CONFIG_FTPD=y +CONFIG_FEATURE_FTPD_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y +CONFIG_FEATURE_FTPD_AUTHENTICATION=y CONFIG_FTPGET=y CONFIG_FTPPUT=y CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y CONFIG_HTTPD=y CONFIG_FEATURE_HTTPD_RANGES=y -CONFIG_FEATURE_HTTPD_USE_SENDFILE=y CONFIG_FEATURE_HTTPD_SETUID=y CONFIG_FEATURE_HTTPD_BASIC_AUTH=y CONFIG_FEATURE_HTTPD_AUTH_MD5=y @@ -760,57 +852,75 @@ CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y CONFIG_FEATURE_IFCONFIG_HW=y CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y CONFIG_IFENSLAVE=y -# CONFIG_IFPLUGD is not set -CONFIG_IFUPDOWN=y +CONFIG_IFPLUGD=y +CONFIG_IFUP=y +CONFIG_IFDOWN=y CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" -# CONFIG_FEATURE_IFUPDOWN_IP is not set -# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set -CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN=y +CONFIG_FEATURE_IFUPDOWN_IP=y CONFIG_FEATURE_IFUPDOWN_IPV4=y CONFIG_FEATURE_IFUPDOWN_IPV6=y CONFIG_FEATURE_IFUPDOWN_MAPPING=y CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y -# CONFIG_INETD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set -# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set -# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_INETD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y +CONFIG_FEATURE_INETD_RPC=y CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y CONFIG_FEATURE_IP_ADDRESS=y CONFIG_FEATURE_IP_LINK=y CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" CONFIG_FEATURE_IP_TUNNEL=y CONFIG_FEATURE_IP_RULE=y -CONFIG_FEATURE_IP_SHORT_FORMS=y +CONFIG_FEATURE_IP_NEIGH=y # CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set -CONFIG_IPADDR=y -CONFIG_IPLINK=y -CONFIG_IPROUTE=y -CONFIG_IPTUNNEL=y -CONFIG_IPRULE=y CONFIG_IPCALC=y -CONFIG_FEATURE_IPCALC_FANCY=y CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y +CONFIG_FEATURE_IPCALC_FANCY=y +CONFIG_FAKEIDENTD=y +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +CONFIG_NBDCLIENT=y +CONFIG_NC=y +# CONFIG_NETCAT is not set +CONFIG_NC_SERVER=y +CONFIG_NC_EXTRA=y +# CONFIG_NC_110_COMPAT is not set CONFIG_NETSTAT=y -# CONFIG_FEATURE_NETSTAT_WIDE is not set +CONFIG_FEATURE_NETSTAT_WIDE=y CONFIG_FEATURE_NETSTAT_PRG=y CONFIG_NSLOOKUP=y -# CONFIG_NTPD is not set -# CONFIG_FEATURE_NTPD_SERVER is not set +CONFIG_NTPD=y +CONFIG_FEATURE_NTPD_SERVER=y +CONFIG_FEATURE_NTPD_CONF=y +CONFIG_PING=y +CONFIG_PING6=y +CONFIG_FEATURE_FANCY_PING=y CONFIG_PSCAN=y CONFIG_ROUTE=y CONFIG_SLATTACH=y +CONFIG_SSL_CLIENT=y CONFIG_TCPSVD=y +CONFIG_UDPSVD=y CONFIG_TELNET=y CONFIG_FEATURE_TELNET_TTYPE=y CONFIG_FEATURE_TELNET_AUTOLOGIN=y -# CONFIG_TELNETD is not set -# CONFIG_FEATURE_TELNETD_STANDALONE is not set -# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_FEATURE_TELNET_WIDTH=y +CONFIG_TELNETD=y +CONFIG_FEATURE_TELNETD_STANDALONE=y +CONFIG_FEATURE_TELNETD_INETD_WAIT=y CONFIG_TFTP=y -# CONFIG_TFTPD is not set +CONFIG_FEATURE_TFTP_PROGRESS_BAR=y +CONFIG_TFTPD=y # # Common options for tftp/tftpd @@ -818,38 +928,48 @@ CONFIG_TFTP=y CONFIG_FEATURE_TFTP_GET=y CONFIG_FEATURE_TFTP_PUT=y CONFIG_FEATURE_TFTP_BLOCKSIZE=y -CONFIG_FEATURE_TFTP_PROGRESS_BAR=y # CONFIG_TFTP_DEBUG is not set +CONFIG_TLS=y CONFIG_TRACEROUTE=y CONFIG_TRACEROUTE6=y # CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set -# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set -# CONFIG_TUNCTL is not set -# CONFIG_FEATURE_TUNCTL_UG is not set -# CONFIG_UDHCPD is not set -# CONFIG_DHCPRELAY is not set -# CONFIG_DUMPLEASES is not set -# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set -# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set -CONFIG_DHCPD_LEASES_FILE="" -# CONFIG_UDHCPC is not set -# CONFIG_FEATURE_UDHCPC_ARPING is not set -# CONFIG_FEATURE_UDHCP_PORT is not set -CONFIG_UDHCP_DEBUG=0 -# CONFIG_FEATURE_UDHCP_RFC3397 is not set -# CONFIG_FEATURE_UDHCP_8021Q is not set -CONFIG_UDHCPC_DEFAULT_SCRIPT="" -CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0 -CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" -CONFIG_UDPSVD=y +CONFIG_TUNCTL=y +CONFIG_FEATURE_TUNCTL_UG=y CONFIG_VCONFIG=y CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_STATUSBAR=y CONFIG_FEATURE_WGET_AUTHENTICATION=y -CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_TIMEOUT=y +CONFIG_FEATURE_WGET_HTTPS=y +CONFIG_FEATURE_WGET_OPENSSL=y +CONFIG_WHOIS=y CONFIG_ZCIP=y +CONFIG_UDHCPD=y +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y +CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases" +CONFIG_DUMPLEASES=y +CONFIG_DHCPRELAY=y +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC6=y +CONFIG_FEATURE_UDHCPC6_RFC3646=y +CONFIG_FEATURE_UDHCPC6_RFC4704=y +CONFIG_FEATURE_UDHCPC6_RFC4833=y + +# +# Common options for DHCP applets +# +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=9 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_FEATURE_UDHCP_RFC3397=y +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" # # Print Utilities @@ -862,105 +982,114 @@ CONFIG_ZCIP=y # Mail Utilities # # CONFIG_MAKEMIME is not set -CONFIG_FEATURE_MIME_CHARSET="" # CONFIG_POPMAILDIR is not set # CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set # CONFIG_REFORMIME is not set # CONFIG_FEATURE_REFORMIME_COMPAT is not set # CONFIG_SENDMAIL is not set +CONFIG_FEATURE_MIME_CHARSET="" # # Process Utilities # -CONFIG_IOSTAT=y -CONFIG_MPSTAT=y -CONFIG_NMETER=y -CONFIG_PMAP=y -CONFIG_POWERTOP=y -CONFIG_PSTREE=y -CONFIG_PWDX=y -# CONFIG_SMEMCAP is not set -CONFIG_UPTIME=y -CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y CONFIG_FREE=y CONFIG_FUSER=y +CONFIG_IOSTAT=y CONFIG_KILL=y CONFIG_KILLALL=y CONFIG_KILLALL5=y +CONFIG_LSOF=y +CONFIG_MPSTAT=y +CONFIG_NMETER=y CONFIG_PGREP=y +CONFIG_PKILL=y CONFIG_PIDOF=y CONFIG_FEATURE_PIDOF_SINGLE=y CONFIG_FEATURE_PIDOF_OMIT=y -CONFIG_PKILL=y +CONFIG_PMAP=y +CONFIG_POWERTOP=y +CONFIG_FEATURE_POWERTOP_INTERACTIVE=y CONFIG_PS=y -CONFIG_FEATURE_PS_WIDE=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set CONFIG_FEATURE_PS_TIME=y -# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set # CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set -CONFIG_RENICE=y +CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y +CONFIG_PSTREE=y +CONFIG_PWDX=y +# CONFIG_SMEMCAP is not set CONFIG_BB_SYSCTL=y CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y -# CONFIG_FEATURE_TOP_SMP_CPU is not set +CONFIG_FEATURE_TOP_SMP_CPU=y CONFIG_FEATURE_TOP_DECIMALS=y -# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +CONFIG_FEATURE_TOP_SMP_PROCESS=y CONFIG_FEATURE_TOPMEM=y -CONFIG_FEATURE_SHOW_THREADS=y +CONFIG_UPTIME=y +CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y CONFIG_WATCH=y +CONFIG_FEATURE_SHOW_THREADS=y # # Runit Utilities # +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set # CONFIG_RUNSV is not set # CONFIG_RUNSVDIR is not set # CONFIG_FEATURE_RUNSVDIR_LOG is not set # CONFIG_SV is not set CONFIG_SV_DEFAULT_SERVICE_DIR="" +# CONFIG_SVC is not set # CONFIG_SVLOGD is not set -# CONFIG_CHPST is not set -# CONFIG_SETUIDGID is not set -# CONFIG_ENVUIDGID is not set -# CONFIG_ENVDIR is not set -# CONFIG_SOFTLIMIT is not set # CONFIG_CHCON is not set -# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set # CONFIG_GETENFORCE is not set # CONFIG_GETSEBOOL is not set # CONFIG_LOAD_POLICY is not set # CONFIG_MATCHPATHCON is not set -# CONFIG_RESTORECON is not set # CONFIG_RUNCON is not set -# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set # CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set # CONFIG_SETENFORCE is not set # CONFIG_SETFILES is not set # CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set # CONFIG_SETSEBOOL is not set -# CONFIG_SESTATUS is not set # # Shells # -# CONFIG_ASH is not set -# CONFIG_ASH_BASH_COMPAT is not set -# CONFIG_ASH_IDLE_TIMEOUT is not set -# CONFIG_ASH_JOB_CONTROL is not set -# CONFIG_ASH_ALIAS is not set -# CONFIG_ASH_GETOPTS is not set -# CONFIG_ASH_BUILTIN_ECHO is not set -# CONFIG_ASH_BUILTIN_PRINTF is not set -# CONFIG_ASH_BUILTIN_TEST is not set -# CONFIG_ASH_CMDCMD is not set -# CONFIG_ASH_MAIL is not set -# CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set -# CONFIG_ASH_RANDOM_SUPPORT is not set -# CONFIG_ASH_EXPAND_PRMT is not set +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +CONFIG_BASH_IS_ASH=y +# CONFIG_BASH_IS_HUSH is not set +# CONFIG_BASH_IS_NONE is not set +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +CONFIG_ASH_MAIL=y +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y CONFIG_CTTYHACK=y # CONFIG_HUSH is not set # CONFIG_HUSH_BASH_COMPAT is not set # CONFIG_HUSH_BRACE_EXPANSION is not set -# CONFIG_HUSH_HELP is not set # CONFIG_HUSH_INTERACTIVE is not set # CONFIG_HUSH_SAVEHISTORY is not set # CONFIG_HUSH_JOB is not set @@ -971,25 +1100,50 @@ CONFIG_CTTYHACK=y # CONFIG_HUSH_FUNCTIONS is not set # CONFIG_HUSH_LOCAL is not set # CONFIG_HUSH_RANDOM_SUPPORT is not set -# CONFIG_HUSH_EXPORT_N is not set # CONFIG_HUSH_MODE_X is not set -# CONFIG_MSH is not set -# CONFIG_FEATURE_SH_IS_ASH is not set -# CONFIG_FEATURE_SH_IS_HUSH is not set -CONFIG_FEATURE_SH_IS_NONE=y -# CONFIG_FEATURE_BASH_IS_ASH is not set -# CONFIG_FEATURE_BASH_IS_HUSH is not set -CONFIG_FEATURE_BASH_IS_NONE=y -# CONFIG_SH_MATH_SUPPORT is not set -# CONFIG_SH_MATH_SUPPORT_64 is not set -# CONFIG_FEATURE_SH_EXTRA_QUIET is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y # CONFIG_FEATURE_SH_STANDALONE is not set # CONFIG_FEATURE_SH_NOFORK is not set -# CONFIG_FEATURE_SH_HISTFILESIZE is not set +# CONFIG_FEATURE_SH_READ_FRAC is not set +CONFIG_FEATURE_SH_HISTFILESIZE=y # # System Logging Utilities # +CONFIG_KLOGD=y + +# +# klogd should not be used together with syslog to kernel printk buffer +# +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y CONFIG_SYSLOGD=y CONFIG_FEATURE_ROTATE_LOGFILE=y CONFIG_FEATURE_REMOTE_LOG=y @@ -998,8 +1152,4 @@ CONFIG_FEATURE_SYSLOGD_CFG=y CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 CONFIG_FEATURE_IPC_SYSLOG=y CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 -CONFIG_LOGREAD=y -CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y -CONFIG_KLOGD=y -CONFIG_FEATURE_KLOGD_KLOGCTL=y -# CONFIG_LOGGER is not set +CONFIG_FEATURE_KMSG_SYSLOG=y diff --git a/source/installer/dropbear/doinst.sh b/source/installer/sources/dropbear/doinst.sh index af326c6a..af326c6a 100644 --- a/source/installer/dropbear/doinst.sh +++ b/source/installer/sources/dropbear/doinst.sh diff --git a/source/installer/dropbear/dropbear.Slackbuild b/source/installer/sources/dropbear/dropbear.Slackbuild index 9cc78b3e..9cc78b3e 100755 --- a/source/installer/dropbear/dropbear.Slackbuild +++ b/source/installer/sources/dropbear/dropbear.Slackbuild diff --git a/source/installer/dropbear/dropbear.glibc.crypt.diff b/source/installer/sources/dropbear/dropbear.glibc.crypt.diff index 3184210d..3184210d 100644 --- a/source/installer/dropbear/dropbear.glibc.crypt.diff +++ b/source/installer/sources/dropbear/dropbear.glibc.crypt.diff diff --git a/source/installer/dropbear/dropbear.xauth.patch b/source/installer/sources/dropbear/dropbear.xauth.patch index e32f0c64..e32f0c64 100644 --- a/source/installer/dropbear/dropbear.xauth.patch +++ b/source/installer/sources/dropbear/dropbear.xauth.patch diff --git a/source/installer/dropbear/dropbear_dbclientpath.patch b/source/installer/sources/dropbear/dropbear_dbclientpath.patch index 781349f8..781349f8 100644 --- a/source/installer/dropbear/dropbear_dbclientpath.patch +++ b/source/installer/sources/dropbear/dropbear_dbclientpath.patch diff --git a/source/installer/dropbear/dropbear_emptypass.patch b/source/installer/sources/dropbear/dropbear_emptypass.patch index 25924008..25924008 100644 --- a/source/installer/dropbear/dropbear_emptypass.patch +++ b/source/installer/sources/dropbear/dropbear_emptypass.patch diff --git a/source/installer/dropbear/rc.dropbear.new b/source/installer/sources/dropbear/rc.dropbear.new index 3a695b81..3a695b81 100644 --- a/source/installer/dropbear/rc.dropbear.new +++ b/source/installer/sources/dropbear/rc.dropbear.new diff --git a/source/installer/dropbear/slack-desc b/source/installer/sources/dropbear/slack-desc index 94eeac05..ca261902 100644 --- a/source/installer/dropbear/slack-desc +++ b/source/installer/sources/dropbear/slack-desc @@ -1,8 +1,8 @@ # HOW TO EDIT THIS FILE: -# The "handy ruler" below makes it easier to edit a package description. Line +# The "handy ruler" below makes it easier to edit a package description. Line # up the first '|' above the ':' following the base package name, and the '|' -# on the right side marks the last column you can put a character in. You must -# make exactly 11 lines for the formatting to be correct. It's also +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also # customary to leave one space after the ':'. |-----handy-ruler------------------------------------------------------| diff --git a/source/installer/sources/efi.i586/EFI/BOOT/elilo.conf b/source/installer/sources/efi.i586/EFI/BOOT/elilo.conf new file mode 100755 index 00000000..9168ee71 --- /dev/null +++ b/source/installer/sources/efi.i586/EFI/BOOT/elilo.conf @@ -0,0 +1,25 @@ +chooser=simple +message=message.txt +delay=300 +timeout=300 +# +image=/hugesmp.s + label=hugesmp.s + initrd=/initrd.img + read-only + append="vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 nomodeset SLACK_KERNEL=hugesmp.s" +image=/huge.s + label=huge.s + initrd=/initrd.img + read-only + append="vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 nomodeset SLACK_KERNEL=huge.s" +image=/hugesmp.s + label=kmssmp.s + initrd=/initrd.img + read-only + append="vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 SLACK_KERNEL=hugesmp.s" +image=/huge.s + label=kms.s + initrd=/initrd.img + read-only + append="vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 SLACK_KERNEL=huge.s" diff --git a/source/installer/sources/efi.i586/EFI/BOOT/message.txt b/source/installer/sources/efi.i586/EFI/BOOT/message.txt new file mode 100755 index 00000000..7fb5b03c --- /dev/null +++ b/source/installer/sources/efi.i586/EFI/BOOT/message.txt @@ -0,0 +1,16 @@ + +Welcome to Slackware version 14.2 (Linux kernel 4.1.13)! + +If you need to pass extra parameters to the kernel, enter them at the prompt +below after the name of the kernel to boot (e.g., hugesmp.s). + +In a pinch, you can boot your system from here with a command like: + +boot: hugesmp.s root=/dev/sda1 rdinit= ro + +In the example above, /dev/sda1 is the / Linux partition. + +To enter extra parameters below, first press TAB to get a boot prompt. +If you don't need to enter any parameters, hit ENTER to boot the default +kernel "hugesmp.s" or wait 30 seconds for autoboot. + diff --git a/source/installer/sources/efi.x86_64/EFI/BOOT/elilo.conf b/source/installer/sources/efi.x86_64/EFI/BOOT/elilo.conf new file mode 100755 index 00000000..1168c71f --- /dev/null +++ b/source/installer/sources/efi.x86_64/EFI/BOOT/elilo.conf @@ -0,0 +1,15 @@ +chooser=simple +message=message.txt +delay=300 +timeout=300 +# +image=/huge.s + label=huge.s + initrd=/initrd.img + read-only + append="vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 nomodeset SLACK_KERNEL=huge.s" +image=/huge.s + label=kms.s + initrd=/initrd.img + read-only + append="vga=normal load_ramdisk=1 prompt_ramdisk=0 ro printk.time=0 SLACK_KERNEL=huge.s" diff --git a/source/installer/sources/efi.x86_64/EFI/BOOT/message.txt b/source/installer/sources/efi.x86_64/EFI/BOOT/message.txt new file mode 100755 index 00000000..69e6b4de --- /dev/null +++ b/source/installer/sources/efi.x86_64/EFI/BOOT/message.txt @@ -0,0 +1,16 @@ + +Welcome to Slackware64 version 14.2 (Linux kernel 4.1.13)! + +If you need to pass extra parameters to the kernel, enter them at the prompt +below after the name of the kernel to boot (e.g., huge.s). + +In a pinch, you can boot your system from here with a command like: + +boot: huge.s root=/dev/sda1 rdinit= ro + +In the example above, /dev/sda1 is the / Linux partition. + +To enter extra parameters below, first press TAB to get a boot prompt. +If you don't need to enter any parameters, hit ENTER to boot the default +kernel "huge.s" or wait 30 seconds for autoboot. + diff --git a/source/installer/usbimg2disk.sh b/source/installer/usbimg2disk.sh new file mode 100644 index 00000000..df3f574f --- /dev/null +++ b/source/installer/usbimg2disk.sh @@ -0,0 +1,501 @@ +#!/bin/bash +# $Id: usbimg2disk.sh,v 1.23 2012/09/03 20:52:31 eha Exp eha $ +# +# Copyright 2009, 2010, 2011, 2012 Eric Hameleers, Eindhoven, NL +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Paranoid as usual: +set -e + +# Define some variables ahead of time, so that cleanup knows about them: +MNTDIR1="" +MNTDIR2="" +MNTDIR3="" + +# Clean up in case of failure: +cleanup() { + # Clean up by unmounting our loopmounts, deleting tempfiles: + echo "--- Cleaning up the staging area..." + sync + [ ! -z "${MNTDIR1}" ] && ( umount -f ${MNTDIR1} ; rmdir $MNTDIR1 ) + [ ! -z "${MNTDIR2}" ] && ( umount -f ${MNTDIR2} ; rmdir $MNTDIR2 ) + [ ! -z "${MNTDIR3}" ] && rm -rf ${MNTDIR3} || true +} +trap 'echo "*** $0 FAILED at line $LINENO ***"; cleanup; exit 1' ERR INT TERM + +showhelp() { + echo "# " + echo "# Purpose #1: to use the content of Slackware's usbboot.img and" + echo "# transform a standard USB thumb drive with a single vfat partition" + echo "# into a bootable medium containing the Slackware Linux installer." + echo "# " + echo "# Purpose #2: to use the contents of a Slackware directory tree" + echo "# and transform a standard USB thumb drive with" + echo "# a single vfat partition and 2GB of free space into" + echo "# a self-contained USB installation medium for Slackware Linux." + echo "# " + echo "# " + echo "# Your USB thumb drive may contain data!" + echo "# This data will *not* be overwritten, unless you have" + echo "# explicitly chosen to format the drive by using the '-f' parameter." + echo "# " + echo "# $(basename $0) accepts the following parameters:" + echo "# -h|--help This help" + echo "# -f|--format Format the USB drive before use" + echo "# -i|--infile <filename> Full path to the usbboot.img file" + echo "# -l|--logfile <filename> Optional logfile to catch fdisk output" + echo "# -o|--outdev <filename> The device name of your USB drive" + echo "# -s|--slackdir <dir> Use 'dir' as the root of Slackware tree" + echo "# -u|--unattended Do not ask any questions" + echo "# -L|--label <labelname> FAT label when formatting the USB drive" + + echo "# " + echo "# Examples:" + echo "# " + echo "# $(basename $0) -i ~/download/usbboot.img -o /dev/sdX" + echo "# $(basename $0) -f -s /home/ftp/pub/slackware-13.0 -o /dev/sdX" + echo "# " + echo "# The second example shows how to create a fully functional Slackware" + echo "# installer on a USB stick (it needs a Slackware tree as the source)." + echo "# " +} + +reformat() { + # Commands to re-create a functional USB stick with VFAT partition: + # two parameters: + # (1) the name of the USB device to be formatted: + # (2) FAT label to use when formatting the USB device: + local TOWIPE="$1" + local THELABEL="$2" + + # Sanity checks: + if [ ! -b $TOWIPE ]; then + echo "*** Not a block device: '$TOWIPE' !" + exit 1 + fi + + # Wipe the MBR: + dd if=/dev/zero of=$TOWIPE bs=512 count=1 + + # Temporarily accept errors (so that we can examine them): + set +e + + # create a FAT32 partition (type 'b') + /sbin/fdisk $TOWIPE <<EOF +n +p +1 + + +t +b +w +EOF + + # Check if fdisk gave an error (like "error closing file"). + # Some desktop environments auto-mount the partition on sight...: + if [ $? -ne 0 ]; then + echo "*** The fdisk command had an error." + echo "*** Some desktop environments (KDE, GNOME) may automatically mount" + echo "*** the new FAT partition on your USB drive, causing the fdisk error." + if [ $UNATTENDED -eq 0 ]; then + # if we are running interactively, allow to chicken out now: + echo "*** Perhaps you want to format the device '$TOWIPE' yourself first?" + read -p "*** Press ENTER to continue anyway or Ctrl-C to quit now: " JUNK + fi + fi + + # Fail on errors again: + set -e + + if mount | grep -q ${TOWIPE}1 ; then + echo "--- Un-mounting ${TOWIPE}1 because your desktop auto-mounted it..." + umount -f ${TOWIPE}1 + fi + + # We set the fat label to '$THELABEL' when formatting. + # It will enable the installer to mount the fat partition automatically + # and pre-fill the correct pathname for the "SOURCE" dialog. + # Format with a vfat filesystem: + /sbin/mkdosfs -F32 -n ${THELABEL} ${TOWIPE}1 +} + +makebootable() { + # Only parameter: the name of the USB device to be set bootable: + USBDRV="$1" + + # Sanity checks: + if [ ! -b $USBDRV ]; then + echo "*** Not a block device: '$USBDRV' !" + exit 1 + fi + + # Set the bootable flag for the first partition: + /sbin/sfdisk -A $USBDRV 1 +} + +# Parse the commandline parameters: +if [ -z "$1" ]; then + showhelp + exit 1 +fi +while [ ! -z "$1" ]; do + case $1 in + -f|--format) + REFORMAT=1 + shift + ;; + -h|--help) + showhelp + exit + ;; + -i|--infile) + USBIMG="$(cd $(dirname $2); pwd)/$(basename $2)" + shift 2 + ;; + -l|--logfile) + LOGFILE="$(cd $(dirname $2); pwd)/$(basename $2)" + shift 2 + ;; + -o|--outdev) + TARGET="$2" + TARGETPART="${TARGET}1" + shift 2 + ;; + -s|--slackdir) + REPODIR="$2" + FULLINSTALLER="yes" + shift 2 + ;; + -u|--unattended) + UNATTENDED=1 + shift + ;; + -L|--label) + CUSTOMLABEL="$2" + shift 2 + ;; + *) + echo "*** Unknown parameter '$1'!" + exit 1 + ;; + esac +done + +# Before we start: +[ -x /bin/id ] && CMD_ID="/bin/id" || CMD_ID="/usr/bin/id" +if [ "$($CMD_ID -u)" != "0" ]; then + echo "*** You need to be root to run $(basename $0)." + exit 1 +fi + +# Check existence of the package repository if that was passed as a parameter: +if [ -n "$REPODIR" ]; then + if [ ! -d "$REPODIR" ]; then + echo "*** This is not a directory: '$REPODIR' !" + exit 1 + else + # This also takes care of stripping a trailing '/', which is required + # for the rsync command to work as intended: + REPOSROOT="$(cd $(dirname $REPODIR); pwd)/$(basename $REPODIR)" + fi +fi + +# Check FAT label: +if [ -n "${CUSTOMLABEL}" ]; then + if [ "x$(echo "${CUSTOMLABEL}"| tr -d '[:alnum:]._-')" != "x" ]; then + echo "*** FAT label '${CUSTOMLABEL}' is not an acceptible name!" + exit 1 + elif [ ${#CUSTOMLABEL} -gt 11 ]; then + echo "*** FAT label '${CUSTOMLABEL}' must be less than 12 characters!" + exit 1 + else + FATLABEL="${CUSTOMLABEL}" + fi +else + FATLABEL="USBSLACKINS" +fi + +# Prepare the environment: +MININSFREE=2200 # minimum in MB required for a Slackware tree +UNATTENDED=${UNATTENDED:-0} # unattended means: never ask questions. +REFORMAT=${REFORMAT:-0} # do not try to reformat by default +LOGFILE=${LOGFILE:-/dev/null} # silence by default +EXCLUDES=${EXCLUDES:-"--exclude=source \ + --exclude=extra/aspell-word-lists \ + --exclude=isolinux \ + --exclude=usb-and-pxe-installers \ + --exclude=pasture"} # not copied onto the stick + +# If we have been given a Slackware tree, we will create a full installer: +if [ -n "$REPOSROOT" ]; then + if [ -d "$REPOSROOT" -a -f "$REPOSROOT/PACKAGES.TXT" ]; then + USBIMG=${USBIMG:-"$REPOSROOT/usb-and-pxe-installers/usbboot.img"} + PKGDIR=$(head -40 $REPOSROOT/PACKAGES.TXT | grep 'PACKAGE LOCATION: ' |head -1 |cut -f2 -d/) + if [ -z "$PKGDIR" ]; then + echo "*** Could not find the package subdirectory in '$REPOSROOT'!" + exit 1 + fi + else + echo "*** Directory '$REPOSROOT' does not look like a Slackware tree!" + exit 1 + fi +fi + +# More sanity checks: +if [ -z "$TARGET" -o -z "$USBIMG" ]; then + echo "*** You must specify both the names of usbboot.img and the USB device!" + exit 1 +fi + +if [ ! -f $USBIMG ]; then + echo "*** This is not a useable file: '$USBIMG' !" + exit 1 +fi + +if [ ! -b $TARGET ]; then + echo "*** Not a block device: '$TARGET' !" + exit 1 +elif [ $REFORMAT -eq 0 ]; then + if ! /sbin/blkid -t TYPE=vfat $TARGETPART 1>/dev/null 2>/dev/null ; then + echo "*** I fail to find a 'vfat' partition: '$TARGETPART' !" + echo "*** If you want to format the USB thumb drive, add the '-f' parameter" + exit 1 + fi +fi + +if mount | grep -q $TARGETPART ; then + echo "*** Please un-mount $TARGETPART first, then re-run this script!" + exit 1 +fi + +# Do not croak if we have a Slackware tree without sources: +if [ ! $(readlink -f ${REPOSROOT}/extra/java ) ]; then + EXCLUDES="${EXCLUDES} --exclude=extra/java" +fi + +# Check for prerequisites which may not always be installed: +MISSBIN=0 +MBRBIN="/usr/lib/syslinux/mbr.bin" +if [ ! -r $MBRBIN ]; then MBRBIN="/usr/share/syslinux/mbr.bin"; fi +if [ ! -r $MBRBIN -o ! -x /usr/bin/syslinux ]; then + echo "*** This script requires that the 'syslinux' package is installed!" + MISSBIN=1 +fi +if [ ! -x /usr/bin/mtools ]; then + echo "*** This script requires that the 'floppy' (mtools) package is installed!" + MISSBIN=1 +fi +if [ ! -x /sbin/mkdosfs ]; then + echo "*** This script requires that the 'dosfstools' package is installed!" + MISSBIN=1 +fi +if [ ! -x /bin/cpio ]; then + echo "*** This script requires that the 'cpio' package is installed!" + MISSBIN=1 +fi +if [ $MISSBIN -eq 1 ]; then exit 1 ; fi + +# Show the USB device's information to the user: +if [ $UNATTENDED -eq 0 ]; then + [ $REFORMAT -eq 1 ] && DOFRMT="format and " || DOFRMT="" + + echo "" + echo "# We are going to ${DOFRMT}use this device - '$TARGET':" + echo "# Vendor : $(cat /sys/block/$(basename $TARGET)/device/vendor)" + echo "# Model : $(cat /sys/block/$(basename $TARGET)/device/model)" + echo "# Size : $(( $(cat /sys/block/$(basename $TARGET)/size) / 2048)) MB" + echo "# " + echo "# FDISK OUTPUT:" + /sbin/fdisk -l $TARGET | while read LINE ; do echo "# $LINE" ; done + echo "" + + echo "*** ***" + echo "*** If this is the wrong drive, then press CONTROL-C now! ***" + echo "*** ***" + + read -p "Or press ENTER to continue: " JUNK + # OK... the user was sure about the drive... +fi + +# Initialize the logfile: +cat /dev/null > $LOGFILE + +# If we need to format the USB drive, do it now: +if [ $REFORMAT -eq 1 ]; then + echo "--- Formatting $TARGET with VFAT partition label '${FATLABEL}'..." + if [ $UNATTENDED -eq 0 ]; then + echo "--- Last chance! Press CTRL-C to abort!" + read -p "Or press ENTER to continue: " JUNK + fi + ( reformat $TARGET ${FATLABEL} ) 1>>$LOGFILE 2>&1 +else + # We do not format the drive, but apply a FAT label if required. + + # Prepare for using mlabel to change the FAT label: + MTOOLSRCFILE=$(mktemp -p /tmp -t mtoolsrc.XXXXXX) + echo "drive s: file=\"$TARGETPART\"" > $MTOOLSRCFILE + echo "mtools_skip_check=1" >> $MTOOLSRCFILE + + if [ -n "$CUSTOMLABEL" ]; then + # User gave us a FAT label to use, so we will force that upon the drive: + echo "--- Setting FAT partition label to '$FATLABEL'" + MTOOLSRC=$MTOOLSRCFILE mlabel s:${FATLABEL} + elif [ -n "$(/sbin/blkid -t TYPE=vfat -s LABEL -o export $TARGETPART)" ] ; then + # User did not care, but the USB stick has a FAT label that we will use: + eval $(/sbin/blkid -t TYPE=vfat -s LABEL -o export $TARGETPART) + FATLABEL=$LABEL + echo "--- Using current FAT partition label '$FATLABEL'" + unset LABEL + else + # No user-supplied label, nor a drive label present. We apply our default: + echo "--- Setting FAT partition label to '$FATLABEL'" + MTOOLSRC=$MTOOLSRCFILE mlabel s:${FATLABEL} + fi + + # Cleanup: + rm -f $MTOOLSRCFILE +fi + +# Create a temporary mount point for the image file: +mkdir -p /mnt +MNTDIR1=$(mktemp -d -p /mnt -t img.XXXXXX) +if [ ! -d $MNTDIR1 ]; then + echo "*** Failed to create a temporary mount point for the image!" + exit 1 +else + chmod 711 $MNTDIR1 +fi + +# Create a temporary mount point for the USB thumb drive partition: +MNTDIR2=$(mktemp -d -p /mnt -t usb.XXXXXX) +if [ ! -d $MNTDIR2 ]; then + echo "*** Failed to create a temporary mount point for the usb thumb drive!" + exit 1 +else + chmod 711 $MNTDIR2 +fi + +# Create a temporary directory to extract the initrd if needed: +MNTDIR3=$(mktemp -d -p /mnt -t initrd.XXXXXX) +if [ ! -d $MNTDIR3 ]; then + echo "*** Failed to create a temporary directory to extract the initrd!" + exit 1 +else + chmod 711 $MNTDIR3 +fi + +# Mount the image file: +mount -o loop,ro $USBIMG $MNTDIR1 + +# Mount the vfat partition: +mount -t vfat -o shortname=mixed $TARGETPART $MNTDIR2 + +# Do we have space to create a full Slackware USB install medium? +if [ "$FULLINSTALLER" = "yes" ]; then + if [ $(df --block=1MB $TARGETPART |grep "^$TARGETPART" |tr -s ' ' |cut -f4 -d' ') -le $MININSFREE ]; then + echo "*** The partition '$TARGETPART' does not have enough" + echo "*** free space (${MININSFREE} MB) to create a Slackware installation medium!" + cleanup + exit 1 + fi +fi + +# Check available space for a Slackware USB setup bootdisk: +USBFREE=$(df -k $TARGETPART |grep "^$TARGETPART" |tr -s ' ' |cut -d' ' -f4) +IMGSIZE=$(du -k $USBIMG |cut -f1) +echo "--- Available free space on the the USB drive is $USBFREE KB" +echo "--- Required free space for installer: $IMGSIZE KB" + +# Exit when the installer image's size does not fit in available space: +if [ $IMGSIZE -gt $USBFREE ]; then + echo "*** The USB thumb drive does not have enough free space!" + # Cleanup and exit: + cleanup + exit 1 +fi + +if [ $UNATTENDED -eq 0 ]; then + # if we are running interactively, warn about overwriting files: + if [ -n "$REPOSROOT" ]; then + if [ -d $MNTDIR2/syslinux -o -d $MNTDIR2/$(basename $REPOSROOT) ]; then + echo "--- Your USB drive contains directories 'syslinux' and/or '$(basename $REPOSROOT)'" + echo "--- These will be overwritten. Press CTRL-C to abort now!" + read -p "Or press ENTER to continue: " JUNK + fi + else + if [ -d $MNTDIR2/syslinux ]; then + echo "--- Your USB drive contains directory 'syslinux'" + echo "--- This will be overwritten. Press CTRL-C to abort now!" + read -p "Or press ENTER to continue: " JUNK + fi + fi +fi + +# Copy boot image files to the USB disk in its own subdirectory '/syslinux': +echo "--- Copying boot files to the USB drive..." +mkdir -p $MNTDIR2/syslinux +cp -R $MNTDIR1/* $MNTDIR2/syslinux/ +rm -f $MNTDIR2/syslinux/ldlinux.sys + +# If we are creating a full Slackware installer, there is a lot more to do: +if [ "$FULLINSTALLER" = "yes" ]; then + # Extract the Slackware initrd for modifications we have to do: + echo "--- Extracting Slackware initrd.img..." + ( cd ${MNTDIR3}/ + gunzip -cd ${MNTDIR2}/syslinux/initrd.img | cpio -i -d -H newc --no-absolute-filenames + ) 2>>$LOGFILE + + # Modify installer files so that installing from USB stick will be easier: + echo "--- Modifying installer files..." + ( cd ${MNTDIR3}/ + # Try to automatically mount the installer partition: + mkdir usbinstall + echo "mount -t vfat -o ro,shortname=mixed \$(/sbin/blkid -t LABEL=$FATLABEL | cut -f1 -d:) /usbinstall 1>/dev/null 2>&1" >> etc/rc.d/rc.S + # Adapt the dialogs so that pressing [OK] will be all there is to it: + sed -i -e 's# --menu# --default-item 6 --menu#' usr/lib/setup/SeTmedia + sed -i -e "s# 2> \$TMP/sourcedir# /usbinstall/$(basename $REPOSROOT)/$PKGDIR 2> \$TMP/sourcedir#" usr/lib/setup/INSdir + FIXF=$(find usr/lib/setup -name SeTp*media) + sed -i -e 's# --menu# --default-item 3 --menu#' $FIXF + ) 2>>$LOGFILE + + # Recreate the initrd: + echo "--- Gzipping the initrd image again:" + chmod 0755 ${MNTDIR3} + ( cd ${MNTDIR3}/ + find . |cpio -o -H newc |gzip > ${MNTDIR2}/syslinux/initrd.img + ) 2>>$LOGFILE + + # Copy Slackware package tree (no sources) to the USB disk - + # we already made sure that ${REPOSROOT} does not end with a '/' + echo "--- Copying Slackware package tree to the USB drive..." + rsync -rpthDL --delete $EXCLUDES $REPOSROOT $MNTDIR2/ +fi + +# Unmount/remove stuff: +cleanup + +# Run syslinux and write a good MBR: +echo "--- Making the USB drive '$TARGET' bootable..." +( makebootable $TARGET ) 1>>$LOGFILE 2>&1 +/usr/bin/syslinux -s -d /syslinux $TARGETPART 1>>$LOGFILE 2>&1 +dd if=$MBRBIN of=$TARGET 1>>$LOGFILE 2>&1 + +# THE END |