Home Server Basic Installation Finish.

Index.

02-Jan-2013: initial release.

 

Finish syslinux setup.

During the installation we created a very basic syslinux menu system for our home server. The system now boots only with the huge kernel. We need to add an entry for the regular generic kernel with a initrd, and make the menu look nicer and add some other possible useful menu entries. For the nicer look, a 640×480 8 bit color png file is used and placed in the /boot/syslinux directory. The syslinux.cfg file is extended with new choices and now looks like this:

# /boot/syslinux/syslinux.cfg.
#
# Comboot modules:
#   * menu.c32 - provides a text menu
#   * vesamenu.c32 - provides a graphical menu
#   * chain.c32 - chainload MBRs, partition boot sectors, Windows bootloaders
#   * hdt.c32 - hardware detection tool
#   * reboot.c32 - reboots the system
#   * poweroff.com - shutdown the system
#
DEFAULT slack
PROMPT 0
TIMEOUT 100
UI vesamenu.c32

# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
MENU TITLE Slackware at homsrv.wpl.ym
MENU BACKGROUND slacksplash.png
MENU COLOR border       30;44   #40ffffff #a0000000 std
MENU COLOR title        1;36;44 #9033ccff #a0000000 std
MENU COLOR sel          7;37;40 #e0ffffff #20ffffff all
MENU COLOR unsel        37;44   #50ffffff #a0000000 std
MENU COLOR help         37;40   #c0ffffff #a0000000 std
MENU COLOR timeout_msg  37;40   #80ffffff #00000000 std
MENU COLOR timeout      1;37;40 #c0ffffff #00000000 std
MENU COLOR msg07        37;40   #90ffffff #a0000000 std
MENU COLOR tabmsg       31;40   #30ffffff #00000000 std
MENU VSHIFT             12
MENU ROWS               6
MENU TIMEOUTROW         12
MENU TABMSGROW          13
MENU CMDLINEROW         13
MENU HELPMSGROW         15

LABEL slack
        MENU LABEL Slackware Generic Kernel
        LINUX ../vmlinuz-generic-smp-3.2.29-smp
        APPEND vt.default_utf8=0 root=/dev/md1 ro
        INITRD ../initrd.gz

LABEL huge
        MENU LABEL Slackware Huge Kernel
        LINUX ../vmlinuz
        APPEND vt.default_utf8=0 root=/dev/md1 ro

LABEL single         
        MENU LABEL Slackware Single user mode
        LINUX ../vmlinuz
        APPEND vt.default_utf8=0 root=/dev/md1 ro single

LABEL emergency         
        MENU LABEL Slackware Emergency mode
        LINUX ../vmlinuz
        APPEND vt.default_utf8=0 root=/dev/md1 ro emergency

LABEL hdt
        MENU LABEL Hardware Detection Tool
        COM32 hdt.c32

LABEL off
        MENU LABEL Power Off
        COMBOOT poweroff.com

 

The finished boot menu looks like this:

Syslinux boot

Syslinux boot

 

Using a generic kernel.

To create a initrd for the generic kernel that supports raid and LVM do the following:

root@homsrv:~# mkinitrd -c -k 3.2.29-smp -m ext4 -f ext4 -r /dev/md1 -L -R
OK: /lib/modules/3.2.29-smp/kernel/fs/mbcache.ko added.
OK: /lib/modules/3.2.29-smp/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/3.2.29-smp/kernel/fs/ext4/ext4.ko added.
22583 blocks
/boot/initrd.gz created.
Be sure to run lilo again if you use it.
root@homsrv:~#

 

Profile extension.

To make your life as sysadmin a bit more comfortable, you can add some useful things to the global system profile. Create the file /etc/profile.d/local.sh with the following contents:

#-------------------------------------------------------------
# Automatic setting of $DISPLAY (if not set already)
# This works for linux and solaris - your mileage may vary....
#-------------------------------------------------------------

if [ -z ${DISPLAY:-""} ]; then
    DISPLAY=`LANG=en_US.UTF-8 who am i --lookup | awk '{ print $5 }' | tr -d \( 
| tr -d \)`
    if [ -n "$DISPLAY" ] && [ "$DISPLAY" != ":0.0" ]; then
        export DISPLAY=$DISPLAY:0.0
    else
        export DISPLAY=":0.0"  # fallback
    fi
fi

#-----------------------
# Greeting, motd etc...
#-----------------------

# Define some colors first:
red='\e[0;31m'
RED='\e[1;31m'
green='\e[0;32m'
GREEN='\e[1;32m'
blue='\e[0;34m'
BLUE='\e[1;34m'
cyan='\e[0;36m'
CYAN='\e[1;36m'
NC='\e[0m'              # No Color
# --> Nice. Has the same effect as using "ansi.sys" in DOS.

# Looks best on a black background.....
echo -e "${CYAN}Welcome at ${RED}`hostname -f`${CYAN} - DISPLAY on ${RED}$DISPLA
Y${NC}\n"
date
if [ -x /usr/games/fortune ]; then 
    /usr/games/fortune -s     # makes our day a bit more fun.... :-)
fi

function ii()   # get current host related info
{
    echo -e "\nYou are logged on ${RED}`hostname`"
    echo -e "\nAdditionnal information:$NC " ; uname -a
    echo -e "\n${RED}Users logged on:$NC " ; w -h
    echo -e "\n${RED}Current date :$NC " ; date
    echo -e "\n${RED}Machine stats :$NC " ; uptime
    echo -e "\n${RED}Memory stats :$NC " ; free
    echo
}

function datetime()
{
    if [ -z $1 ]; then
        echo ""
        echo "      Usage: datetime <timestamp>"
        echo ""
        echo "Timestamp is the integer time in seconds since the epoch"
    else
        echo `date -d "1970-01-01 $1 sec" +"%d-%m-%Y %T"`
    fi
}

#
# Use vim
alias vi='vim'
alias du='du -ch'
alias df='df -khT'

#
# ls
alias ls='ls --color=auto --format=vertical'
alias ll='ls -l'
#
# X Terminals
alias xterm='xterm -ls -bg black -fg white -sb -sl 500 -j -fn 9x15'
alias xterm132='xterm -ls -bg black -fg white -sb -sl 500 -j -fn 9x15 -geometry 
160x30'
alias xtermbbs='xterm -ls -bg black -fg white -sb -sl 500 -j -fn 9x18 -geometry 
80x30'
alias ansi_xterm='ansi_xterm -ls -fn vga -rv -fg white -bg black'
alias ct='datetime'

# New prompt
if [ "$(id -un)" = "root" ]; then
  PS1='\[\033[01;31m\]\u@\h:\[\033[01;34m\]\w\$ \[\033[00m\]'
else
  PS1='\[\033[01;32m\]\u@\h:\[\033[01;34m\]\w\$ \[\033[00m\]'
fi

 

Not everything is useful on a server, but I simply copy the same file to every system I have.

 

Download.

See the download page for the configuration files.