====== Technical Information: Slackware Topics ======
[[tech:linux:slackware:kernel:start|low-latency kernel]]
===== Zenteknix Standard Installation =====
* Plan out host name and IP address, configure DHCP server if relevant
* Install from DVD, choosing generic kernel (omitting "huge" kernel) - [[tech:linux:slackware:pkgskip|here]] is what packages I prefer to de-select (not install)
* Create initrd, using command generated by:chroot /mnt /usr/share/mkinitrd/mkinitrd_command_generator.sh
... a fairly commonly-generated command: chroot /mnt mkinitrd -c -k 3.10.17 -f ext4 -r /dev/sda1 -m usb-storage:ehci-hcd:ehci-pci:usbhid:hid_generic:uhci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz
* Edit /mnt/etc/lilo.conf to add initrd line, with a KVM-based VM using virtio, add:disk = /dev/vda
bios = 0x80
max-partitions = 7
* Install lilo:chroot /mnt lilo
* Make sure there's an /sbin/initscript for new system:cp /mnt/sbin/initscript.sample /mnt/sbin/initscript
* Populate a ulimit setting for file descriptors:ulimit -Hn 32768
* Make sure there's a link in /etc:ln -s /sbin/initscript /mnt/etc/initscript
... at this point, system can be booted, or some pre-emptive changes can be made:
* Add $HOME/bin to PATH in /etc/profile
* Change root shell to ksh: ''vi /mnt/etc/passwd''
* Make sure the wheel group is set up for sudo access: ''vi /mnt/etc/sudoers''
... Now, log in as root and:
* Correct and populate /etc/hosts
* Change root shell to ksh (if desired and not already done) with: ''chsh -s /bin/ksh root''
* Edit /etc/group to make sure user(s) are in groups as desired (especially the wheel group)
* Add user(s)
* Edit /etc/sudoers to make sure the wheel group is set up for access
* Change PermitRootLogin to no in /etc/ssh/sshd_config, then restart sshd with ''/etc/rc.d/rc.sshd restart''
* Populate the newterm script and accompanying symbolic links into /usr/local/bin
* Remove undesired packages
* ConsoleKit
* Add routing (if applicable) to /etc/rc.d/rc.inet2 for other subnets:# Add routing for WAN network on physical host
route add -host 24.159.210.154 eth0
route add -net 24.159.210.152 netmask 255.255.255.248 gw 24.159.210.154 eth0
* Configure NTP in /etc/ntp.conf and enable at startup with ''chmod 744 /etc/rc.d/rc.ntpd''
* ''server iburst''
* ''restrict default ignore''
* ''restrict mask 255.255.255.255 nomodify notrap noquery''
===== Trivia =====
==== Allow your login to reboot/shutdown from XFCE ====
Put your login in the ''wheel'' group, and in ''/etc/polkit-1/rules.d/50-default.rules'':
polkit.addRule(function(action, subject) {
if (subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
==== Python ''setuptools'' installation ====
See [[https://packaging.python.org/tutorials/installing-packages|official documentation ...]]
* Retrieve the ''get-pip.py'' script from the official documentation site
* Run ''python get-pip.py'', which will install ''pip'' as well as ''pysetuptools''
\\
\\
\\
===== Zenteknix "FreeSlack Live" Modifications =====
After installing slackware, and sanitizing it to FreeSlack, these steps can be used to convert the installation to an operationally "live" variant, which minimizes changes to disk during routine operation.
==== Migrate the ''/var'' footprint to a "live"-capable arrangement ====
* Create directory to house the memory-resident "live" portion of the ''/var'' footprint \\ ''mkdir /var/live''
* Initialize the "live" area: \\ ''mount -t tmpfs tmpfs /var/live -o nodev,uid=0,gid=0,size=100m''
* Migrate these ''/var'' subdirectories to under the live portion, one at a time, with: \\ ''cd /var ; mv subdirname live ; ln -s live/subdirname'' \\ Including: ''cache'', ''lib'', ''lock'', ''log'', ''run'', ''spool'', ''state'', ''tmp''
* Initialize the storage "layers" from the current "live" footprint
* The static layer: ''rsync -ai /var/live /var/static''
* The peristent layer: ''rsync -ai /var/live/ /opt/sys/var''
* Prune the respective storage layers to accommodate desired layering // (**Note:** see next section) //
==== Design and Prune the Storage Layers ====
* The /usr/share/mime directory is re-built at every boot, so migrating that into the "live" footprint makes sense: \\ ''mkdir -p /var/static/usr /var/live/usr/share'' \\ ''chmod 755 /var/static/usr /var/live/usr /var/live/usr/share'' \\ ''cd /usr/share'' \\ ''mv mime /var/live/usr/share'' \\ ''ln -s /var/live/usr/share/mime'' \\ ''rsync -ai /var/live/usr/ /var/static/usr/''
* The rationale behind the various things residing under the ''/var'' footprint can be a bit diverse, and there are some of these things that benefit from some persistence across a reboot. To accommodate this (as well as minimize in-memory space occupied by the "live" footprint), one can migrate selected subdirectories from the directory tree under ''/var/live'', in a rather "surgical" fashion, to a location designated as the "persistent storage layer" (I chose ''/opt/sys/var''), and populate the ''/var/live'' tree with the symbolic links to the respective locations. In doing this with a stock slackware installation, I start out with these links:/var/live/log/setup -> /opt/sys/var/log/setup
/var/live/log/scripts -> /opt/sys/var/log/scripts
/var/live/log/removed_scripts -> /opt/sys/var/log/removed_scripts
/var/live/log/removed_packages -> /opt/sys/var/log/removed_packages
/var/live/log/packages -> /opt/sys/var/log/packages
/var/live/lib/virtuoso -> /opt/sys/var/lib/virtuoso
/var/live/lib/rpm -> /opt/sys/var/lib/rpm
/var/live/cache/ldconfig -> /opt/sys/var/cache/ldconfig
/var/live/cache/fontconfig -> /opt/sys/var/cache/fontconfig
* After migrating subdirectories and populating the respective links under ''/var/live'', synchronizing to ''/var/static'' should be performed. This can either be done manually by repeating the process under ''/var/static'', or it can be scripted, or (if no other undesired changes have occurred under ''/var/live''): \\ ''rsync -ai /var/live/ /var/static/''
==== Adapt the startup scripts to engage the "live" footprint ====
* Add to ''/etc/rc.d/rc.S'' before loading loop device kernel module:# Mount the live filesystem
if [ -d /var/live/log ]; then
/sbin/mount -v -n -t tmpfs tmpfs /var/live -o nodev,uid=0,gid=0,size=100m
/sbin/mount -v -n -t tmpfs tmpfs /tmp -o nodev,uid=0,gid=0,size=256m
fi
* Add to ''/etc/rc.d/rc.S'' before Configure ISA Plug-n-Play devices:# Add /var/live to /etc/mtab, and sync from static:
/sbin/mount -f tmpfs /tmp -t tmpfs
/sbin/mount -f tmpfs /var/live -t tmpfs
/usr/bin/rsync -ai /var/static/ /var/live/
==== Packages needed for guitarix on slackware/FreeSlack ====
* celt-0.11.3-x86_64-1_SBo.tgz
* libwebp-0.4.3-x86_64-2_SBo.tgz
* pysetuptools-18.2-x86_64-1_SBo.tgz
* spice-protocol-0.12.11-noarch-1_SBo.tgz
* celt051-0.5.1.3-x86_64-1_SBo.tgz
* lilv-0.22.0-x86_64-1_SBo.tgz
* serd-0.22.0-x86_64-1_SBo.tgz
* sratom-0.4.6-x86_64-1_SBo.tgz
* guitarix-0.34.0-x86_64-1_SBo.tgz
* lv2-1.12.0-x86_64-1_SBo.tgz
* set_rlimits-1.3.0-x86_64-1_SBo.tgz
* tunctl-1.5-x86_64-2_SBo.tgz
* jack2-1.9.10-x86_64-1_SBo.tgz
* numpy-1.9.1-x86_64-1_SBo.tgz
* six-1.10.0-x86_64-1_SBo.tgz
* usbredir-0.7-x86_64-1_SBo.tgz
* ladspa_sdk-1.13-x86_64-4_SBo.tgz
* opus-1.1.2-x86_64-1_SBo.tgz
* sord-0.14.0-x86_64-1_SBo.tgz
* webkitgtk-2.4.11-x86_64-1_SBo.tgz
* liblrdf-0.5.0-x86_64-1_SBo.tgz
* pyparsing-2.0.3-x86_64-1_SBo.tgz
* spice-0.12.7-x86_64-1_SBo.tgz
\\
// Links: [[:tech:linux:start|Linux Info]] ... [[:tech:start|Tech Info]] //