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:

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:

As a normal user run the following:

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

Run the following as stated in http://serverfault.com/questions/453185/vagrant-virtualbox-dns-10-0-2-3-not-working:

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

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

Edit /etc/ppp/chat/tmnpub

To connect to the internet we must use the command:

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:

It should appear the devices ppp0 and eth0, and based on the Destination and Netmask the destination interface.

Enable IP forwarding:

Configure iptables to translate the address after they are forwarded to the correct interface, from eth0 to ppp0:

To view the iptables configuration run the commands:

#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:

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:

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:

After that running route -n should return a line with:

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

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.

#/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

$VBoxManage convertfromraw -format VDI usbboot.img usbboot.vdi

Generic on Slackware64 14.0

Add to /etc/lilo.conf

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

System V (Sys V) init

Slackware since 7.0 also allows Sys V inits.

Sample service /etc/init.d/blah:

   1 #! /bin/sh
   2 # /etc/init.d/blah
   3 #
   4 
   5 # Some things that run always
   6 touch /var/lock/blah
   7 
   8 # Carry out specific functions when asked to by the system
   9 case "$1" in
  10   start)
  11     echo "Starting script blah "
  12     echo "Could do more here"
  13     ;;
  14   stop)
  15     echo "Stopping script blah"
  16     echo "Could do more here"
  17     ;;
  18   *)
  19     echo "Usage: /etc/init.d/blah {start|stop}"
  20     exit 1
  21     ;;
  22 esac
  23 
  24 exit 0

Mark script as executable:

Default runlevels (2 3 4 5):

Check symbolic links:

Sys V init for Python script

Sample service /etc/init.d/blah:

   1 #! /bin/sh
   2 # /etc/init.d/blah
   3 #
   4 
   5 # Some things that run always
   6 touch /var/lock/blah
   7 
   8 # Carry out specific functions when asked to by the system
   9 case "$1" in
  10   start)
  11     logger "Starting beat.py"     
  12     echo   "Starting beat.py"
  13     /usr/bin/python /tmp/beat.py &
  14     ;;
  15   status)
  16     PID=`cat /var/run/beat.pid`
  17     logger "Process running with PID $PID"
  18     echo   "Process running with PID $PID"
  19     ;;    
  20   stop)
  21     PID=`cat /var/run/beat.pid`
  22     logger "Killing process with PID $PID"
  23     echo   "Killing process with PID $PID"
  24     kill -9 $PID
  25     rm /var/run/beat.pid
  26     ;;
  27   *)
  28     echo "Usage: /etc/init.d/blah {start|status|stop}"
  29     exit 1
  30     ;;
  31 esac
  32 
  33 exit 0

Mark script as executable:

Default runlevels (2 3 4 5):

Check symbolic links:

Python /tmp/beat.py code:

   1 #!/usr/bin/python
   2 import threading
   3 import time
   4 import os
   5 import syslog
   6 import datetime
   7 
   8 class Beat(threading.Thread):
   9     def __init__(self):
  10         threading.Thread.__init__(self) #required
  11 
  12     def run(self):
  13         loop=True
  14         while loop:
  15             syslog.syslog(syslog.LOG_INFO, "Beat %s"%(datetime.datetime.now()) )
  16             time.sleep(5)
  17 
  18 if __name__=="__main__":
  19     f=open('/var/run/beat.pid','wa')
  20     f.write('%d'%(os.getpid()))
  21     f.close()
  22     os.getpid()
  23     b = Beat()
  24     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

Caching only nameserver/DNS server

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

Upgrade from Slackware 14.0 to 14.1

Slackware (last edited 2016-03-20 22:42:59 by localhost)