My Slackware installation notes. Some old notes have been archived.
Do note that Slackware also has a great documentation site.
The official way to do this is, of course, to get it from slackware.com.
Personally, I have getslack, a bash script based on (more accurately, a trimmed-down version of) the excellent (he termed it infamous) mirror-slackware-current.sh by Alien Bob. When going down this path, the next step would be to prepare the installation media.
Note: I have removed a section on DE-less installation since my current slackware installations ARE, in fact, DE-less.
Note: I have also removed a section on hijacking other Linux system - this, here, turned out to be VERY similar to what needed to be done.
[LastUpdated20210620]
I need to use GTK3 version that is newer that the one on 14.2, so I tried the development version (slackware64-current). I have done the same once (pre-11), so I am aware that there can be some issues when doing this. I am happy to say that I AM writing this on a slackware64-current (15.0 beta?) installation on my laptop.
So, this is a little note to my future self (or anybody that may be find this useful DISCLAIMER: Use this at your own risk!). I am doing this while still using Devuan and I want to keep that for backup, in case things go wrong. (On a side note, the reason I use Devuan was because of the GTK3 version.) So, I have an extra partition that I have reformatted and prepared to download the stuffs I need.
getslack
)<mount-path>/home/share/slackware
.getslack
VERS=current
bzImage
in kernels/huge.s (rename to vmlinuz
)initrd.img
in isolinux/ (this has the slackware setup)gnuchess
and xaos
packages/usr/share/vim/vimrc
)dmesg
for user/etc/rc.d/rc.local
← echo 0 > /proc/sys/kernel/dmesg_restrict
nmcli r[adio] wifi nmcli r[adio] wifi on nmcli d[evice] wifi list nmcli d[evice] wifi connect <ssid> password <pass> ifname <wlan0> nmcli c[onnection] show nmcli c[onnection] down <ssid> nmcli c[onnection] up <ssid>
/etc/xdg/user-dirs.defaults
(standard default paths)/etc/elogind/logind.conf
loginctl suspend
instead of pm-suspend
)#!/bin/bash case "$1" in pre) upid=$(pgrep dbus-launch) user=$(ps -o user --no-headers $upid) export XAUTHORITY=/home/$user/.Xauthority export DISPLAY=":0.0" su $user -c 'xlock -mode matrix' & sleep 1 ;; esac
chmod a+x
)getslackpack
).getslackpack
getslackbuild
)To maintain:
note: my libmy1slack
library will detect current when /etc/slackware-version
has '+' suffix. this sign will disappear when -current is near to a stable release.
-current
going stable, use SLACKVERS=current slack-update
slackpatch
-current
going stable, use -f
switchSLACKVERS=current slackview find –alien
)
This is what I do for a lean
(not necessarily minimal, but trimmed to my liking) installation. Will continuously update this based on my latest experience.
LastUpdated20230322
getslack
) getslack
config file below)gnuchess, xaos, xsnow
joe, nano, vim-gvim, slackpkg
/usr/share/vim/vimrc
)vimstart
(from my1shell repo)/etc/rc.d/rc.local
← echo 0 > /proc/sys/kernel/dmesg_restrict
setup_slack
(from my1shell repo)getslackpack
)getslackbuild
)dmenu slock st wmname
slackware-xdm-theme
geany rox-filer pmount unrar
nss-mdns avahi libdaemon
To maintain:
getslack
,getslackpack
,getslackbuild
)Configuration file for getslack
Configuration file for getslackpack
Configuration file for slackpatch
Listing for my1live-root
…
20110621 I want to have a 32-bit system running in chroot environment on my Slackware64. I've used such system on Debian using schroot…
20110906 I managed to do this as published here…
20120518 Minor change to the fstab entry for dev, which needs an rbind option so that the pty inside can be valid! Discussed here.
20120524 This is now part of my slackstuff collection (now known as my1shell)… in form of a script called slackroot.
20121031 The path to the chroot installation MUST ALL BE owned by root - or else, users will get a Write failed: Broken pipe
error.
TODO A how-to on creating 32-bit chroot on 64-bit Slackware using slackroot
script.
- on my pure slack64 (maintained using getslack/getslackpack) $ ARCH=i686 getslack - create root filesystem using 32-bit packages # slackroot /opt/chroot32 --arch x86 --desk -x - copy user/group info from 64-bit system to chroot32 = will maintain its own login info! # preproot --init /opt/chroot32 - mount bind 'system' paths # preproot /opt/chroot32 - ssh into system to use 32-bit chroot # ssh user@127.0.0.1 - unmount bind 'system' paths # preproot --done /opt/chroot32
Some things to note…
20210620 Slackware's CPU frequency scaling works (checkout /etc/rc.d/rc.cpufreq
) - just to remind myself, no need to look into this!
To allow non-root users basic admin (poweroff,reboot,etc.), insert the following to /etc/sudoers
(obviously, through sudo
). Note: Actually, only to users in group power
.
%power ALL=(ALL) NOPASSWD:/sbin/poweroff %power ALL=(ALL) NOPASSWD:/sbin/reboot %power ALL=(ALL) NOPASSWD:/usr/sbin/pm-suspend %power ALL=(ALL) NOPASSWD:/usr/sbin/pm-hibernate %power ALL=(ALL) NOPASSWD:/usr/sbin/pm-powersave
Note: The pm-* binaries (pm-utils) are no longer available on Slackware 15.0
mv /etc/nsswitch.conf /etc/nsswitch.conf-orig
cp /etc/nsswitch.conf-mdns /etc/nsswitch.conf
script="/etc/rc.d/rc.avahidaemon" [ -x "$script" ] && $script start script="/etc/rc.d/rc.avahidnsconfd" [ -x "$script" ] && $script start
Main references are here and here.
getslackpack
to download required packages from Eric's multilib site. Install as instructed.getslack
which I use for my 32-bit chroot installation. I use massconvert32.sh
script on this tree. The massconvert32.sh
script can be used to update as well (built packages are not rebuilt). Install as instructed.slackpatch
script has been updated to handle 'blacklisted' 64-bit versions and 'upgraded' compat32 packagesUpdate20180903
Read here. I now have a more specific script to get multilib stuff (previously part of getslackpack script),
/usr/src/
(e.g. linux-4.4.199)/boot
# cp /boot/config-generic? > .config
# make oldconfig
# make menuconfig
# make -j4 bzImage
# make -j4 modules && make modules_install
modules_install
requires root, obviously!cp arch/x86/boot/bzImage /boot/vmlinuz-generic-4.14.12 cp System.map /boot/System.map-generic-4.14.12 cp .config /boot/config-generic-4.14.12
mkinitrd -c -k 4.14.12 -f ext4 -r /dev/sda3 -m ext4 -u -o /boot/initrd.gz
/usr/share/mkinitrd/mkinitrd_command_generator.sh
-P
option if requiredRun ls -l output on /var/log/packages
# ls -l /var/log/packages
Get package full name ONLY
# ls -l /var/log/packages | sed 's|^.* \(.*\)$|\1|g'
Get package name ONLY
# ls -l /var/log/packages | sed -e 's|^.* \(.*\)$|\1|g' -e 's|^\(.*\)-[^-]*-[^-]*-[^-]*$|\1|g'
Find package files for installed packages
for pkg in `ls /var/log/packages/` ; do pkg_file=`find /home/share/slackware/slackware64-14.2/ -name "${pkg}.txz"` ; [ -f "$pkg_file" ] && continue ; echo "Cannot find file for $pkg" ; done
Find installation log for standard packages
for pkg in `find /home/share/slackware/slackware64-14.2/slackware64 -name "*.txz" | sort` ; do base=`basename $pkg` ; name=${base%.*} ; test="/var/log/packages/$name" ; [ -f "$test" ] && continue ; echo "Cannot find file for $test" ; done
To list currently installed packages (to be used in my1live)
# slackview file --name pkgs.txt --installed --insert
# slackview file --name pkgs.txt --sort
slackview file --name pkgs.txt --dups curr.list
Little tips for better Slackware/Linux desktop experience.
Double-clicking in file manager (Thunar) shows no video (audio is ok, so program is running). Running mplayer from command line is fine. Turns out gui version is gmplayer - running from console shows this error message
Failed to open VDPAU backend libvdpau_va_gl.so
So, just edit ~/.mplayer/gui.conf
, find the line for vo_driver
and set it to gl
. Show be ok after that… at least in my case it is.
When using xdm, login fails sometimes with error message … Unable to establish ICE listener…
/etc/rc.d/rc.local
← rm -rf /tmp/.ICE-unix/*
Note: NOT tested… just found this
Although the mplayer setting to disable xscreensaver has been selected, xscreensaver still runs!
Possible Solution: Edit ~/.mplayer/config
heartbeat-cmd="xscreensaver-command -deactivate >/dev/null 2>&1"
The solution is here
aplay -D plughw:<card/slot#>,<device#> <WAV file>
to test/etc/asound.conf
or ~/.asoundrc
to fix this (sample below) pcm.!default { type hw card <card/slot#> } ctl.!default { type hw card <card/slot#> }
As seen here…
Check /etc/asound.conf
pcm.!default { type plug slave.pcm "softvol" } pcm.softvol { type softvol slave { pcm "dmix" } control { name "Pre-Amp" card 0 } min_dB -5.0 max_dB 20.0 resolution 6 }
Sometimes need type
in pcm.!default
to be hw
Setting up application(s) on Slackware… but, most are applicable to all distributions.
There are a couple (a few?)of applications that I thought have great features but relatively unknown (I only knew about them after looking for specific solution). Here they are:
xpaint -snapshot
)Editing /etc/httpd/httpd.conf
Setting up SSL: (for HTTPS!)
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
mysql_install_db
chown -R mysql:mysql /var/lib/mysql
sh /etc/rc.d/rc.mysqld start
/usr/bin/mysql_secure_installation
create database app_db;
grant all privileges on app_db.* to 'user_app'@'localhost' identified by 'pass_app';
flush privileges;
create user 'user_app'@'localhost' identified by 'pass_app';
# /etc/rc.d/rc.mysqld stop # mysqld_safe --skip-grant-tables & # mysql -u root $ mysql -uroot -p mysql> use mysql; mysql> update user set password=PASSWORD('<newpass>') where User='root'; mysql> flush privileges; mysql> exit
alter table my1vehicle AUTO_INCREMENT=1;
select table_name,auto_increment from information_schema.tables; alter table my1data_use drop foreign key my1data_use_ibfk_2;
mysqldump -p -u user userdb > userapp-`date +%Y%m%d%H%M%S`.sql
The default tetex is usable, but it is no longer maintained and some new packages are not available.
The recommended TeX distribution is TeXLive.
/home/share/tool/texlive
./install-tl -gui
/home/share/tool/texlive/YYYY
(currently, YYYY=2020)TL_VERS="2020" TL_PATH="/home/share/tool/texlive/${TL_VERS}" export PATH=${TL_PATH}/bin/x86_64-linux:$PATH export MANPATH=${TL_PATH}/texmf-dist/doc/man:$MANPATH export INFOPATH=${TL_PATH}/texmf-dist/doc/info:$INFOPATH
tlmgr --gui
tlmgr show <package>
/etc/rsyncd.conf
max connections = 2 log file = /var/log/rsync.log timeout = 300 [share] comment = Shared Stuff path = /home/share read only = yes list = yes hosts allow = 192.168.3.0/24 uid = nobody gid = nobody #auth users = pub #secrets file = /etc/rsyncd.secrets
/etc/inetd.conf
rsync stream tcp nowait root /usr/bin/rsync rsync --daemon
/etc/services
rsync 873/tcp
/etc/rsyncd.secrets
pub:pub
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
on an x86_64 machine,
Some personal notes…
unspecified application error
$ lspci -vv | sed -n '/VGA compatible/,/^$/ p'
export MESA_LOADER_DRIVER_OVERRIDE=i915