<> = Slackware = The original Linux distribution, geared towards power and stability. http://www.slackware.com == Vagrant on Slackware 14 32 bit == Ruby version: ruby 1.9.3p429 (2013-05-15 revision 40747) [x86_64-linux] VirtualBox version, Oracle VM VirtualBox Manager 4.2.8 === Install Vagrant from source === Based on [[https://github.com/mitchellh/vagrant/wiki/Installing-Vagrant-from-source]] As root run the following: {{{#!highlight sh cd /tmp mkdir gitVagrant cd gitVagrant git clone https://github.com/mitchellh/vagrant.git cd vagrant git pull origin master #get latest version #git reset a40522f5fabccb9ddabad03d836e120ff5d14093 --hard # reset to v1.3.5 git reset 7ec0ee1d00a916f80b109a298bab08e391945243 --hard #reset to v1.2.7 gem install bundle #it may not be installed bundle install rake install gem list gem uninstall vagrant #uninstall other old gems vagrant -v #check vagrant version }}} === Install VirtualBox on Slackware 14 32 bit === Get VirtualBox 4.2.8 for Linux, i386, all distributions [[http://download.virtualbox.org/virtualbox/4.2.8/VirtualBox-4.2.8-83876-Linux_x86.run]]. For 4.2.18 [[http://download.virtualbox.org/virtualbox/4.2.18/VirtualBox-4.2.18-88781-Linux_x86.run]] As root run the following commands: {{{#!highlight sh cd chmod 755 VirtualBox-4.2.8-83876-Linux_x86.run ./VirtualBox-4.2.8-83876-Linux_x86.run usermod -a -G vboxusers id #check user groups }}} As a normal user run the following: {{{#!highlight sh virtualbox --help # check the version and parameters virtualbox #start virtualbox }}} === Get and run a base box - Ubuntu Lucid32 === In [[http://www.vagrantbox.es/]] there is a list of available vagrant boxes. As normal user run the following {{{#!highlight sh mkdir -p /tmp/vgbox cd /tmp/vgbox wget http://files.vagrantup.com/lucid32.box #Ubuntu 10.04 LTS (big file with the whole VM) vagrant box add UbuntuLucid32 lucid32.box # associate the VM file with an alias vagrant init UbuntuLucid32 vagrant up vagrant ssh #access the VM through SSH ping www.sapo.pt #inside VM ... does not reply exit vagrant suspend }}} Run the following as stated in [[http://serverfault.com/questions/453185/vagrant-virtualbox-dns-10-0-2-3-not-working]]: {{{#!highlight sh VBoxManage list vms VBoxManage modifyvm "vgbox_1372194938" --natdnsproxy1 on VBoxManage modifyvm "vgbox_1372194938" --natdnshostresolver1 on vagrant resume vagrant ssh ping www.sapo.pt # OK ! it gets ping replies dpkg -l | more # show all installed packages }}} Running '''cat /etc/debian_version''' show its based on '''squeeze/sid'''. Running '''cat /etc/issue.net''' show it's '''Ubuntu 10.04.4 LTS''' [[http://releases.ubuntu.com/lucid/]]. Current user and pass for the lucid32 box is '''vagrant''' '''vagrant'''. To get superuser access run '''sudo bash'''. Inspecting the file '''/etc/shadow''' we can see that only the user vagrant has a password defined. In '''/etc/sudoers''' it is said that all users belonging to group can gain root privileges with supplying a password. In '''/etc/group''' it is stated that vagrant belongs to the admin group. === Ubuntu Precise32 === In [[http://www.vagrantbox.es/]] there is a list of available vagrant boxes. As normal user run the following {{{#!highlight sh mkdir -p ~/Downloads/vagrantBoxes/ cd ~/Downloads/vagrantBoxes/ wget http://files.vagrantup.com/precise32.box #Ubuntu 12.04 LTS mkdir -p /tmp/precise32 cd /tmp/precise32 vagrant box add UbuntuPrecise32 ~/Downloads/vagrantBoxes/precise32.box vagrant init UbuntuPrecise32 vagrant up vagrant ssh #access the VM through SSH ping www.sapo.pt exit vagrant suspend }}} == Slackware NAT router with Pen 3G == Configure Slackware PC to share a 3G internet connection (TMN portuguese ISP). === Internet connection === The used '''APN''' is '''internet'''. There is no PIN defined in the used SIM card. Edit '''/etc/ppp/peers/tmnpub''' {{{#!highlight sh /dev/ttyUSB0 460800 connect 'chat -v -f /etc/ppp/chat/tmnpub' defaultroute usepeerdns }}} Edit '''/etc/ppp/chat/tmnpub''' {{{#!highlight sh ABORT 'BUSY' ABORT 'NO CARRIER' ABORT 'ERROR' ABORT 'SIM PIN' ABORT 'SIM PUK' '' AT OK AT+CGDCONT=1,"IP","internet" OK AT+CPIN? READY ATDT*99# CONNECT }}} To connect to the internet we must use the command: * pppd call tmnpub Using the command '''ifconfig''' we should see the device '''ppp0''' in the output. Issuing a command '''ping www.google.com''' we should get a reply with the IP address from Google. === Configure NAT (Network Address Translation) router === Translate internal network addresses (source address) to a public/usable IP address given to the 3G modem. View the routing table: {{{#!highlight sh * route -n }}} It should appear the devices ppp0 and eth0, and based on the Destination and Netmask the destination interface. Enable IP forwarding: {{{#!highlight sh echo 1 > /proc/sys/net/ipv4/ip_forward }}} Configure iptables to translate the address after they are forwarded to the correct interface, from '''eth0''' to '''ppp0''': {{{#!highlight sh iptables -F iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE }}} To view the iptables configuration run the commands: {{{#!highlight sh iptables -L -t nat -v iptables -L -t filter -v }}} {{{#!highligth sh #script #Enable IP forwarding: echo 1 > /proc/sys/net/ipv4/ip_forward #Configure iptables to translate the address after they are forwarded to the correct interface, from eth0 to ppp0: iptables -F iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE }}} === Configure client computer === The routing table must be configure to use the NAT on Slackware, that will act as a router. Check the current default gateway: {{{#!highlight sh route -n }}} The line with destination equal to 0.0.0.0 and gateway 0.0.0.0, is the default router/gateway and must be deleted. We must run a command to do that, adapted to the current situation: {{{#!highlight sh route del -net 0.0.0.0 gw 192.168.1.1 }}} The previous command is to delete a route with destination 0.0.0.0 and gateway 192.168.1.1. If the NAT router have the IP 192.168.1.123 then the following command must be sent: {{{#!highlight sh route add default gw 192.168.1.123 route -n }}} After that running '''route -n''' should return a line with: {{{#!highlight sh Gateway: 192.168.1.123 Netmask: 0.0.0.0 Destination: 0.0.0.0 Iface: eth0 }}} Running a '''ping www.google.com''' from the client computer should return the IP address from Google. Running a '''traceroute www.google.com''' should show the IP address from the NAT router. === Windows === {{{#!highlight sh route print route delete 0.0.0.0 route add 0.0.0.0 192.168.1.123 }}} == Generic kernel == The “generic” kernel on the other hand, is a kernel which has virtually no drivers built in. All drivers will be loaded into RAM on demand. {{{#!highlight sh #/usr/share/mkinitrd/mkinitrd_command_generator.sh # # mkinitrd_command_generator.sh revision 1.45 # # This script will now make a recommendation about the command to use # in case you require an initrd image to boot a kernel that does not # have support for your storage or root filesystem built in # (such as the Slackware 'generic' kernels'). # A suitable 'mkinitrd' command will be: mkinitrd -c -k 3.2.45-smp -f ext4 -r /dev/sda1 -m usb-storage:ehci-hcd:usbhid:uhci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz # Add to /etc/lilo.conf image = /boot/vmlinuz-generic-smp-3.2.45-smp initrd = /boot/initrd.gz # add this line so that lilo sees initrd.gz root = /dev/sda1 label = SlackwareGeneric read-only # run lilo -v }}} == USB boot in VirtualBox == {{{#!highlight sh VBoxManage convertfromraw -format VDI usbboot.img usbboot.vdi }}} == Generic on Slackware64 14.0 == {{{#!highlight sh /usr/share/mkinitrd/mkinitrd_command_generator.sh mkinitrd -c -k 3.2.29 -f ext4 -r /dev/sda5 -m usbhid:ehci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz }}} Add to /etc/lilo.conf {{{#!highlight sh image = /boot/vmlinuz-generic-3.2.29 initrd = /boot/initrd.gz # add this line so that lilo sees initrd.gz root = /dev/sda5 label = SlackGen read-only }}} {{{#!highlight sh lilo -v }}} == System V (Sys V) init == Slackware since 7.0 also allows Sys V inits. Sample service /etc/init.d/blah: {{{#!highlight sh #! /bin/sh # /etc/init.d/blah # # Some things that run always touch /var/lock/blah # Carry out specific functions when asked to by the system case "$1" in start) echo "Starting script blah " echo "Could do more here" ;; stop) echo "Stopping script blah" echo "Could do more here" ;; *) echo "Usage: /etc/init.d/blah {start|stop}" exit 1 ;; esac exit 0 }}} Mark script as executable: {{{#!highlight sh chmod 755 /etc/init.d/blah }}} Default runlevels (2 3 4 5): {{{#!highlight sh ln -s /etc/init.d/blah /etc/rc2.d/S99blah ln -s /etc/init.d/blah /etc/rc2.d/K10blah ln -s /etc/init.d/blah /etc/rc3.d/S99blah ln -s /etc/init.d/blah /etc/rc3.d/K10blah ln -s /etc/init.d/blah /etc/rc4.d/S99blah ln -s /etc/init.d/blah /etc/rc4.d/K10blah ln -s /etc/init.d/blah /etc/rc5.d/S99blah ln -s /etc/init.d/blah /etc/rc5.d/K10blah }}} Check symbolic links: {{{#!highlight sh ls /etc/rc*.d }}} == Sys V init for Python script == Sample service /etc/init.d/blah: {{{#!highlight sh #! /bin/sh # /etc/init.d/blah # # Some things that run always touch /var/lock/blah # Carry out specific functions when asked to by the system case "$1" in start) logger "Starting beat.py" echo "Starting beat.py" /usr/bin/python /tmp/beat.py & ;; status) PID=`cat /var/run/beat.pid` logger "Process running with PID $PID" echo "Process running with PID $PID" ;; stop) PID=`cat /var/run/beat.pid` logger "Killing process with PID $PID" echo "Killing process with PID $PID" kill -9 $PID rm /var/run/beat.pid ;; *) echo "Usage: /etc/init.d/blah {start|status|stop}" exit 1 ;; esac exit 0 }}} Mark script as executable: {{{#!highlight sh chmod 755 /etc/init.d/blah }}} Default runlevels (2 3 4 5): {{{#!highlight sh ln -s /etc/init.d/blah /etc/rc2.d/S99blah ln -s /etc/init.d/blah /etc/rc2.d/K10blah ln -s /etc/init.d/blah /etc/rc3.d/S99blah ln -s /etc/init.d/blah /etc/rc3.d/K10blah ln -s /etc/init.d/blah /etc/rc4.d/S99blah ln -s /etc/init.d/blah /etc/rc4.d/K10blah ln -s /etc/init.d/blah /etc/rc5.d/S99blah ln -s /etc/init.d/blah /etc/rc5.d/K10blah }}} Check symbolic links: {{{#!highlight sh ls /etc/rc*.d }}} Python /tmp/beat.py code: {{{#!highlight python #!/usr/bin/python import threading import time import os import syslog import datetime class Beat(threading.Thread): def __init__(self): threading.Thread.__init__(self) #required def run(self): loop=True while loop: syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) ) time.sleep(5) if __name__=="__main__": f=open('/var/run/beat.pid','wa') f.write('%d'%(os.getpid())) f.close() os.getpid() b = Beat() b.start() }}} == Packages updates == Check patches/packages and patches/PACKAGES.TXT for the desired Slackware version. URL for Slackware 14.0 ftp://ftp.slackware.com/pub/slackware/slackware-14.0/patches/ === Get packages to be updated === {{{#!highlight sh cd ~/Downloads/slack14i386patches wget ftp://ftp.slackware.com/pub/slackware/slackware-14.0/patches/PACKAGES.TXT cat PACKAGES.TXT | grep "PACKAGE NAME" | awk '//{print $3}'| sed 's/.txz//g' | xargs -i ls /var/log/packages/{} &> /tmp/out.txt ;mkdir -p /tmp/packages;cd /tmp/packages; cat /tmp/out.txt | grep cannot | awk '//{print $4}' | sed 's/\/var\/log\/packages\///g' | sed 's/://g' | xargs -i wget ftp://ftp.slackware.com/pub/slackware/slackware-14.0/patches/packages/{}.txz }}} === Caching only nameserver/DNS server === {{{#!highlight sh * chmod 755 /etc/rc.d/rc.bind }}} * Check the configuration with '''named-checkconf'''. * Start the service with /etc/rc.d/rc.bind start Edit '''/etc/resolv.conf''' {{{ nameserver 127.0.0.1 }}} Edit '''/etc/named.conf''' {{{ options { directory "/var/named"; forwarders { 8.8.8.8; 8.8.4.4; }; }; // a caching only nameserver config zone "." IN { type hint; file "caching-example/named.root"; }; zone "localhost" IN { type master; file "caching-example/localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "caching-example/named.local"; allow-update { none; }; }; logging { channel my_named_channel { file "/tmp/named.log"; // syslog info; // Set the severity to dynamic to see all the debug messages. severity dynamic; print-time yes; print-severity yes; print-category yes; }; category queries { my_named_channel; }; category client { my_named_channel; }; category default { default_syslog; }; }; }}} == Update bash on Slackware64 14 == {{{#!highlight sh wget ftp://ftp.slackware.com/pub/slackware/slackware64-14.0/patches/packages/bash-4.2.048-x86_64-2_slack14.0.txz upgradepkg bash-4.2.048-x86_64-2_slack14.0.txz }}} == Upgrade from Slackware 14.0 to 14.1 == {{{#!highlight sh # ctrl+alt+f1 mount /dev/cdrom /mnt/cdrom cd /mnt/cdrom cp slackware /root/ -r cd /root telninit 1 # login as root cd /root/slackware upgradepkg a/glibc-solibs-*.t?z upgradepkg a/pkgtools-*.tgz upgradepkg a/tar-*.tgz upgradepkg a/xz-*.tgz upgradepkg a/findutils-*.txz upgradepkg --install-new /root/slackware/*/*.t?z removepkg Terminal aumix kdegames kdemultimedia ksecrets mysql printer-applet quanta rexima scim-bridge xxgdb # Check file /etc/lilo.conf to see which old kernel is used #/boot/vmlinuz-generic-smp-3.2.45-smp /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.10.17-smp | bash # In /etc/lilo.conf use image=/boot/vmlinuz-generic-smp-3.10.17-smp lilo -v telinit 3 reboot # After the reboot shows the kernel version 3.10.17 # In /etc/rc.d/rc.local add modprobe snd_mixer_oss }}} == Get patches for Slackware 14.1 == * Check patches/packages and patches/PACKAGES.TXT for the desired Slackware version. * URL for Slackware 14.1 ftp://ftp.slackware.com/pub/slackware/slackware-14.1/patches/ Get packages to be updated {{{#!highlight sh mkdir -p ~/Downloads/slack14_1i386patches cd ~/Downloads/slack14_1i386patches wget ftp://ftp.slackware.com/pub/slackware/slackware-14.1/patches/PACKAGES.TXT cat PACKAGES.TXT | grep "PACKAGE NAME" | awk '//{print $3}'| sed 's/.txz//g' | xargs -i ls /var/log/packages/{} &> /tmp/out.txt ;mkdir -p /tmp/packages;cd /tmp/packages; cat /tmp/out.txt | grep cannot | awk '//{print $4}' | sed 's/\/var\/log\/packages\///g' | sed 's/://g' | xargs -i wget ftp://ftp.slackware.com/pub/slackware/slackware-14.1/patches/packages/{}.txz cd /tmp/packages mv * ~/Downloads/slack14_1i386patches }}} == Upgrade from 14.1 to 14.2 == === Get and burn ISO === {{{#!highlight sh wget http://ftp.slackware.com/pub/slackware-iso/slackware-14.2-iso/slackware-14.2-install-dvd.iso modprobe sg # fpr cdrecord cdrecord -scanbus #identify the device DVDRAM LG GP08NU6B cdrecord -dev=6,0,0 -pad -data slackware-14.2-install-dvd.iso # eject the DVD after burning cd / mount /dev/sr0 /mnt/cdrom #check DVD cd /mnt/cdrom ls cd / umount /mnt/cdrom }}} === Upgrade script === {{{#!highlight sh #!/bin/sh #CURRDIR=`cd` CURRDIR=`pwd` URL=http://ftp.rnl.tecnico.ulisboa.pt/pub/slackware/slackware-14.2 PACKAGEURL=packagesUrl.txt LOCATIONS=locations.txt # get packages function getpackages { cd /tmp mkdir -p slack14_2 cd slack14_2 wget $URL/UPGRADE.TXT wget $URL/slackware/PACKAGES.TXT cat PACKAGES.TXT | grep 'NAME\|LOCATION' | tr -d '\n' | sed 's/PACKAGE NAME:/\n/g' | sed 's/PACKAGE LOCATION://g' | awk '/slackware/{print $2 , "/" , $1}' | sed 's/ \/ /\//g' | sort | sed "s/\.\/slack/http:\/\/ftp.rnl.tecnico.ulisboa.pt\/pub\/slackware\/slackware-14.2\/slack/g" > $PACKAGEURL cat PACKAGES.TXT | grep 'LOCATION' | sort | uniq | sed "s/PACKAGE LOCATION: \.//g" > $LOCATIONS cat $PACKAGEURL | xargs -i wget {} } # upgrade stuff function upgrade { # must be in single user mode !!! # telinit 1 cd /tmp/slack14_2 echo Backup /etc tar cvzf backetc14_3.tgz /etc echo Initial install upgradepkg glibc-solibs-*.txz upgradepkg pkgtools-*.txz upgradepkg tar-*.txz upgradepkg xz-*.txz upgradepkg findutils-*.txz echo Install other stuff upgradepkg --install-new *.t?z echo Remove old packages removepkg ConsoleKit apmd bluez-hcidump cxxlibs foomatic-filters gnome-icon-theme imlib kdeadmin kdenetwork kdesdk kdetoys kwallet lesstif libelf libjpeg libxfcegui4 networkmanagement obex-data-server obexfs open-cobol oxygen-gtk3 phonon-mplayer phonon-xine pil portmap procps qca-cyrus-sasl qca-gnupg qca-ossl udev xchat xf86-input-aiptek xf86-video-modesetting xfce4-mixer xfce4-volumed xfwm4-themes echo Configure kernel /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.14-smp | bash echo Check lilo.conf to point to 4.4.14-smp in image= cat /etc/lilo.conf | grep image echo Run lilo lilo echo Probable error above if image does not have the kernel 4.4.14-smp telinit 3 # reboot # in case of problems to get a login in lilo after '''boot: SlackwareGen single''' to start in single user mode # /etc/rc.d/rc.modules should point to rc.modules.new to use modules for 4.4.14 } upgrade echo $CURRDIR cd $CURRDIR }}} === Chromium === {{{#!highlight sh cd /tmp wget https://slackbuilds.org/slackbuilds/14.2/development/ninja.tar.gz tar xvzf ninja.tar.gz cd ninja wget https://github.com/ninja-build/ninja/archive/v1.7.1.tar.gz ./ninja.SlackBuild installpkg /tmp/ninja-1.7.1-i486-1_SBo.tgz cd .. wget https://slackbuilds.org/slackbuilds/14.2/network/chromium.tar.gz tar xvzf chromium.tar.gz cd chromium wget https://commondatastorage.googleapis.com/chromium-browser-official/chromium-48.0.2564.97.tar.xz #about 413MB ./chromium.SlackBuild }}} === VirtualBox === {{{#!highlight sh wget http://download.virtualbox.org/virtualbox/5.1.4/VirtualBox-5.1.4-110228-Linux_x86.run }}} As root run the following commands: {{{#!highlight sh cd chmod 755 VirtualBox-5.1.4-110228-Linux_x86.run ./VirtualBox-5.1.4-110228-Linux_x86.run usermod -a -G vboxusers id #check user groups }}} As a normal user run the following: {{{#!highlight sh virtualbox --help # check the version and parameters virtualbox #start virtualbox }}} == BSD init script == === /etc/rc.d/rc.beat === #chmod 755 rc.beat {{{#!highlight sh #! /bin/sh # /etc/rc.d/rc.beat # PROC_NAME=beat touch /var/lock/beat case "$1" in start) logger "Starting ${PROC_NAME}" echo "Starting ${PROC_NAME}" /usr/bin/python /tmp/${PROC_NAME}.py & ;; status) PID=$(cat /var/run/beat.pid) logger "${PROC_NAME} running with PID $PID" echo "${PROC_NAME} running with PID $PID" ;; stop) PID=$(cat /var/run/beat.pid) logger "Killing ${PROC_NAME} with PID $PID" echo "Killing ${PROC_NAME} with PID $PID" kill -9 $PID rm /var/run/beat.pid ;; *) echo "Usage: /etc/rc.d/beat {start|status|stop}" exit 1 ;; esac exit 0 }}} === /tmp/beat.py === {{{#!highlight python #!/usr/bin/python import threading import time import os import syslog import datetime class Beat(threading.Thread): def __init__(self): threading.Thread.__init__(self) #required def run(self): loop=True while loop: syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) ) time.sleep(5) if __name__=="__main__": f=open('/var/run/beat.pid','wa') f.write('%d'%(os.getpid())) f.close() os.getpid() b = Beat() b.start() }}} == Pidgin-sipe build for Slackware 14.2 == {{{#!highlight sh cd /tmp wget https://slackbuilds.org/slackbuilds/14.2/network/pidgin-sipe.tar.gz tar xvzf pidgin-sipe.tar.gz cd pidgin-sipe wget http://downloads.sourceforge.net/sipe/pidgin-sipe-1.21.1.tar.xz ./pidgin-sipe.SlackBuild installpkg /tmp/pidgin-sipe-1.21.1-i586-1_SBo.tgz }}} Slackbuild [[attachment:pidgin-sipe-1.21.1-i586-1_SBo.tgz]] == pidgin-skype slackbuild == {{{#!highlight sh cd /tmp wget https://slackbuilds.org/slackbuilds/14.2/libraries/json-glib.tar.gz tar xvzf json-glib.tar.gz cd json-glib wget http://ftp.acc.umu.se/pub/GNOME/sources/json-glib/1.0/json-glib-1.0.4.tar.xz ./json-glib.SlackBuild installpkg /tmp/json-glib-1.0.4-i486-1_SBo.tgz cd /tmp wget https://slackbuilds.org/slackbuilds/14.2/network/pidgin-skypeweb.tar.gz tar xvzf pidgin-skypeweb.tar.gz cd pidgin-skypeweb wget https://github.com/EionRobb/skype4pidgin/archive/1.1.tar.gz ./pidgin-skypeweb.SlackBuild installpkg /tmp/pidgin-skypeweb-1.1-i486-1_SBo.tgz }}} Slackbuils [[attachment:json-glib-1.0.4-i486-1_SBo.tgz]] [[attachment:pidgin-skypeweb-1.1-i486-1_SBo.tgz]] [[attachment:json-glib-1.0.4-x86_64-1_SBo.tgz]] [[attachment:pidgin-skypeweb-1.1-x86_64-1_SBo.tgz]] == Get patches for Slackware 14.2 == * Check patches/packages and patches/PACKAGES.TXT for the desired Slackware version. * URL for Slackware 14.2 ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/ Get packages to be updated {{{#!highlight sh URL_PATCHES=ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches mkdir -p ~/Downloads/slack14_2i386patches cd ~/Downloads/slack14_2i386patches rm PACKAGES.TXT wget $URL_PATCHES/PACKAGES.TXT head PACKAGES.TXT rm /tmp/packages/* cat PACKAGES.TXT | grep "PACKAGE NAME" | awk '//{print $3}'| sed 's/.txz//g' | xargs -i ls /var/log/packages/{} &> /tmp/outpatches.txt ;mkdir -p /tmp/packages;cd /tmp/packages; cat /tmp/outpatches.txt | grep cannot | awk '//{print $4}' | sed 's/\/var\/log\/packages\///g' | sed 's/://g' | sed "s/'//g" | xargs -i wget $URL_PATCHES/packages/{}.txz cd /tmp/packages su # run as root the upgradepkg # ls *.txz | xargs -i upgradepkg {} find /tmp/packages/*txz | xargs -i upgradepkg {} exit # return to normal user mv * ~/Downloads/slack14_2i386patches }}} == Update kernel (4.4.14 to 4.4.172) == {{{#!highlight sh function get_packages { cd /tmp/packages wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-firmware-20190118_a8b75ca-noarch-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-generic-4.4.172-i586-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-generic-smp-4.4.172_smp-i686-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-headers-4.4.172_smp-x86-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-huge-4.4.172-i586-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-huge-smp-4.4.172_smp-i686-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-modules-4.4.172-i586-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-modules-smp-4.4.172_smp-i686-1.txz wget ftp://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.172/kernel-source-4.4.172_smp-noarch-1.txz } function update { cp /etc/lilo.conf /etc/lilo.conf.old20190222 ls /boot cd /tmp/packages upgradepkg kernel-*.txz # uname -a says that it has a SMP kernel /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.172-smp | bash ls /boot cat /etc/lilo.conf | grep image echo "Check content, image should have kernel 4.4.172" read echo "Going to execute lilo" lilo mv *.txz /home/user/Downloads/slack14_2i386patches } #get_packages update }}} == /etc/dhclient.conf == {{{#!highlight sh # dhclient.conf # # Configuration file for ISC dhclient (see 'man dhclient.conf') # send host-name = "hostx" }}} == Toshiba NB200 and Samsung Monitor == Set nb200 monitor (LVDS1) on the left and Samsung on the right (VGA1) {{{#!highlight sh /usr/bin/xrandr --output LVDS1 --left-of VGA1 }}} == Slackware 15.0 == * http://www.slackware.com/announce/15.0.php (2022-02-02) * http://ftp.slackware.com/pub/slackware/slackware64-15.0/UPGRADE.TXT * http://ftp.slackware.com/pub/slackware/slackware-15.0/UPGRADE.TXT The links above are for the Slackware file tree. If you already have Slackware 14.2 installed, you can use these files and follow the instructions in the UPGRADE.TXT document to upgrade your system to Slackware 15.0. == Update kernel to 4.4.301 == * update_kernel_4_4_301.sh {{{#!highlight bash BASE_URL=http://ftp.slackware.com/pub/slackware/slackware-14.2/patches/packages/linux-4.4.301/ function get_packages { cd /tmp/packages wget $BASE_URL/kernel-generic-4.4.301-i586-1.txz wget $BASE_URL/kernel-generic-smp-4.4.301_smp-i686-1.txz wget $BASE_URL/kernel-headers-4.4.301_smp-x86-1.txz wget $BASE_URL/kernel-huge-4.4.301-i586-1.txz wget $BASE_URL/kernel-huge-smp-4.4.301_smp-i686-1.txz wget $BASE_URL/kernel-modules-4.4.301-i586-1.txz wget $BASE_URL/kernel-modules-smp-4.4.301_smp-i686-1.txz wget $BASE_URL/kernel-source-4.4.301_smp-noarch-1.txz } function update { cp /etc/lilo.conf /etc/lilo.conf.old20220213 ls /boot cd /tmp/packages upgradepkg kernel-*.txz # uname -a says that it has a SMP kernel /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 4.4.301-smp | bash ls /boot cat /etc/lilo.conf | grep image echo "Check content, image should have kernel 4.4.301" read echo "Going to execute lilo" lilo mv *.txz /home/vitor/Downloads/slack14_2i386patches } # get_packages # update }}} == Slackware docker image == * https://hub.docker.com/r/liveslak/slackware * https://slackonly.com/readme.html * http://slakfinder.org/slackpkg+.html {{{#!highlight sh docker run --rm -d -it --name slack15 liveslak/slackware cat docker exec -it slack15 bash # https://slackpkg.org/documentation.html slackpkg update slackpkg search python slackpkg install python3 nano python-pip # python3-3.9.16-x86_64-1_slack15.0.txz python3 -V cd /tmp/ wget https://slackbuilds.org/slackbuilds/15.0/development/amazon-corretto.tar.gz tar xvzf amazon-corretto.tar.gz cd amazon-corretto wget https://corretto.aws/downloads/resources/17.0.4.8.1/amazon-corretto-17.0.4.8.1-linux-x64.tar.gz sh amazon-corretto.SlackBuild installpkg /tmp/amazon-corretto-17.0.4.8.1-x86_64-1_SBo.tgz /usr/lib64/java/bin/java /usr/lib64/java/bin/javac PATH=$PATH:/usr/lib64/java/bin/ echo $PATH export PATH docker stop slack15 }}} === With slackpkg+ and slackonly (builds from slackbuilds) === {{{#!highlight sh docker run --rm -d -it --name slack15 liveslak/slackware cat docker exec -it slack15 bash wget https://sourceforge.net/projects/slackpkgplus/files/slackpkg%2B-1.8.0-noarch-7mt.txz/download mv download download.txz installpkg download.txz slackpkg update gpg slackpkg update #vi /etc/slackpkg/slackpkgplus.conf #REPOPLUS=( slackpkgplus slackonly ) #MIRRORPLUS['slackonly']=https://slackonly.com/pub/packages/15.0-x86_64/ sed -i 's/slackpkgplus /slackpkgplus slackonly /g' /etc/slackpkg/slackpkgplus.conf echo "MIRRORPLUS['slackonly']=https://slackonly.com/pub/packages/15.0-x86_64/" >> /etc/slackpkg/slackpkgplus.conf slackpkg update gpg slackpkg update slackpkg search deb2tgz # [unin] slackonly : deb2tgz-0.2-noarch-1_slonl slackpkg search jdk17 # [unin] slackonly : zulu-openjdk17-17.0.2-x86_64-1_slonly slackpkg install zulu-openjdk17-17.0.2-x86_64-1_slonly find . -name "java" ./etc/file/magic/java ./usr/lib64/zulu-openjdk17/bin/java ./usr/lib64/zulu-openjdk17/bin/java -version # openjdk version "17.0.2" 2022-01-18 LTS ./usr/lib64/zulu-openjdk17/bin/javac -version # javac 17.0.2 }}} == Slackware docker java environment == === Dockerfile === {{{ FROM liveslak/slackware RUN wget https://sourceforge.net/projects/slackpkgplus/files/slackpkg%2B-1.8.0-noarch-7mt.txz/download RUN mv download download.txz RUN installpkg download.txz RUN slackpkg update gpg RUN slackpkg update RUN sed -i 's/slackpkgplus /slackpkgplus slackonly /g' /etc/slackpkg/slackpkgplus.conf RUN echo "MIRRORPLUS['slackonly']=https://slackonly.com/pub/packages/15.0-x86_64/" >> /etc/slackpkg/slackpkgplus.conf RUN slackpkg update gpg RUN slackpkg update RUN slackpkg install zulu-openjdk17-17.0.2-x86_64-1_slonly RUN slackpkg install apache-maven git-2.35 htop ENV PATH=/bin:/sbin/:/usr/bin:/usr/sbin:/usr/lib64/zulu-openjdk17/bin/ RUN mkdir /app WORKDIR /app COPY . . CMD ["/bin/bash"] }}} === Steps === {{{#!highlight sh docker build -t slack-openjdk-image . docker run --rm -d -it --name slack15 slack-openjdk-image docker exec -it slack15 bash # inside the container git clone https://github.com/vborrego/springboot-test.git cd springboot-test/ mvn clean install nohup java -jar target/test-spring-boot-0.1.0.jar & curl localhost:8080/dummy curl http://localhost:8080/login exit # exit the container docker stop slack15 }}}