Top Level Contents

Setting up a server

Configure apt-get

/etc/apt/sources.list contains a list of archives which contain Debian packages for installing.

Tips

see tips

The following edit is required to allow apt-get to find the lessdisks archive

file:/etc/apt/sources.list
add:deb http://lessdisks.sourceforge.net/debian/current ./

Update apt-get

The following command will update the local apt-get information

user:root
command:apt-get update

Download lessdisks

fetch the lessdisks package from the archive

user:root
command:apt-get install lessdisks

There may be a couple warning dialogs about kernel linking and statd/tcpwrappers. Read them, or not, and continue.

Install lessdisks

run the script which does the actual install

user:root
command:lessdisks-install

You will be shown a menu which allows checking and changing

  • packages
  • disk-server
  • diskserver-ip
  • ArchiveMenu?
  • DisplayValues?
  • BeginInstall?
  • AdvandedMenu?
  • Exit

The default values should work, check them, change them, or not: select;

  • BeginInstall?

You will see a dialog:

about to install lessdisks...

==ok==

Dialog:archive location... what kind of debian archive would you like to install from?
select:web

message:

Installation method chosen as web
setting archive to default: http.us.debian.org/debian
proceeding with installation ... 
(this will also check for missing or incomplete files again)

Lessdisks is downloading lots of stuff, the messages don't change for quite a while.

I find it comforting to switch to another terminal (ALT-F2) and running:

$ top

top shows running processes. You will see that wget and debootstrap are busy fetching what you need.

Next will be a report on what packages will be installed, and the prompt:

Need to get 13.9MB of archives. After unpacking 42.5MB will be used.
Do you want to continue? [Y/n]?

Might as well.

Another message like the previous:

....
Do you want to continue? [Y/n]?
dialog:Add a mime handler for "application/*" ?
response:Default
dialog:Manage X server wrapper configuration with debconf?
response:No
dialog:Manage XFree86 server configuration file with debconf?
response:No
dialog:Would you like to run thttpd in a chroot 'jail'?
response:Default
activity:lots of progress messages scrolling by

Add user to lessdisks group

user:root
command:adduser $username lessdisks

Configure /etc/exports

examine:/usr/share/doc/lessdisks/examples/exports
user:root
edit:make required changes and save to /etc/exports
command:/etc/init.d/portmap restart
command:/etc/init.d/nfs-common restart
command:/etc/init.d/nfs-kernel-server restart

Install dhcp

user:root
command:apt-get install dhcp

Configure /etc/dhcpd.conf

examine:/usr/share/doc/lessdisks/examples/dhcpd.conf
user:root
edit:make required changes and save to /etc/dhcpd.conf
restart:/etc/init.d/dhcp restart

==At this point you should be able to boot a terminal machine==

If you boot a machine on the network from floppy which has a properly configured http://rom-o-matic.net image, it should find the server's DHCP server, load the kernel image on the server.

Enable remote logging

This would be a good time to turn on remote syslogging, so that the messages generated by terminals will appear in /var/log/syslog

Install sdm

sdm is a secure login manager, using ssh. (as an alternative to xdm/kdm/gdm/wdm or other xdmcp server)

user:root
command:apt-get install sdm

Configuring Ssh dialogs

dialog:

Configuring Ssh

type:choice, Do you want to allow SSH protocol 2 only
response:Yes
dialog:

Configuring Ssh

type:informative, problems interacting with PAM
dialog:

Configuring Ssh

type:choice, Do you want /usr/lib/ssh-keysigns to be installed SUID root?
default:Yes
choice:Yes
dialog:

Configuring Ssh

type:choice, Do you want to run the sshd server ?
default:Yes
choice:Yes

Apt-get now installs sdm, ssh and a few other things.

Configure ssh

user:root
file:/etc/ssh/sshd_config
edit:X11Forwarding yes
restart:/etc/init.d/ssh restart
task:create /var/lib/lessdisks/root/.ssh/known_hosts 1

known_hosts is a file with the following structure:

(replace [servername]? with the name of your server)
(<key> is a long string of random characters)

disk ssh-rsa <key>= root@[servername]?
disk ssh-dss <key>= root@[servername]?
xdm1 ssh-rsa <key>= root@[servername]?
xdm1 ssh-dss <key>= root@[servername]?
[<servername]? ssh-rsa <key>= root@[servername]?
[servername]? ssh-dsa <key>= root@[servername]?

ssh-rsa <key>= root@[servername]? is the contents of the file:

/etc/ssh/ssh_host_rsa_key.pub

ssh-dss <key>= root@[servername]? is the contents of the file:

/etc/ssh/ssh_host_dsa_key.pub

Follow these steps to create the required file:

  • create the directory /var/lib/lessdisks/root/.ssh
  • create the file /var/lib/lesssisks/root/.ssh/known_hosts
  • read into the file the contents of /etc/ssh/ssh_host_rsa_key.pub and /etc/ssh/ssh_host_dsa_key.pub
  • copy these two lines and paste twice so that there are 3 copies of the 2 lines
  • add to the beginning of the first 2 "disk"
  • add to the beginning of the second 2 "xdm1"
  • add to the beginning of the third 2 "<servername>"
  • save the new /var/lib/lessdisks/root/.ssh/known_hosts

One way to do this using the "vi" (or "Vim") editor is as follows:

$ mkdir /var/lib/lessdisks/root/.ssh
$ vi /var/lib/lessdisks/root/.ssh/known_hosts
<vi> :r /etc/ssh/ssh_host_rsa_key.pub (the colon puts you in command mode,
                                      the 'r' command reads a file into the current document)
<vi> :r /etc/ssh/ssh_host_dsa_key.pub 
<vi> [up arrow]? (put the cursor at the beginning of the file)
<vi>  2dd (the 2 executes the 'dd' (delete line) 2 times, the file should now be empty)
<vi> 3p (the 3 executes the 'p' command (put) 3 times, the file should now contain the 
         keys repeated 3 times)
<vi> i ('i' puts vi in insert mode, which is regular edit mode)

add disk, xdm1 and [servername]? to each set of keys.

<vi> <ESC> (<ESC> returns to normal mode from insert mode)
<vi> :wq (the 'w' writes (saves) the file, the 'q' quits)

Install sdm-terminal

user:root
command:chroot /var/lib/lessdisks apt-get install sdm-terminal

displays the Configuring Ssh dialogs ...

Configure sdm-terminal

note:this step is not needed for recent version of sdm
file:/var/lib/lessdisks/etc/inittab
edit:comment out x5:5:respawn:/usr/X11R6/bin/X-lessdisks -query xdm2
insert:sdm5:5:respawn:/usr/sbin/sdm

Install an X server for your video card

In the following example the terminal has a Mach 64 video card installed

user:root
command:chroot /var/lib/lessdisks apt-get install xserver-mach64

Install xdialog on the server and terminal

user:root
command:apt-get install xdialog
user:root
command:chroot /var/lib/lessdisks apt-get install xdialog

Install dialog on the terminal

user:root
command:chroot /var/lib/lessdisks apt-get install dialog

Install xdm (instead of sdm)

A basic login manager

user:root
command:apt-get install xdm
edit:/etc/X11/xdm/Xaccess
restart:/etc/init.d/xdm restart

other alternatives to xdm include kdm, gdm and wdm.

Install xfs and xfonts

the X font server is used to access and maintain fonts in a single place

user:root
command:apt-get install xfs xfonts-base xfonts-100dpi xfonts-75dpi xfonts-scalable

Configure xfs

user:root
file:/etc/X11/fs/config
edit:comment out no-listen = tcp
restart:/etc/init.d/xfs restart

Install a window manager

At least 1 window manager is required, icewm is a nice small one.

user:root
command:apt-get install icewm

Other choices for window manager include;

  • kde
  • gnome
  • blackbox
  • xfce
  • afterstep
  • and so many more

Install an X terminal emulator

Required to get a command line in X

user:root
command:apt-get install rxvt

Other choices for terminal programs include:

  • xterm
  • others

Install swiftx

The intended replacement for freex is called swiftx

user:root
command:chroot /var/lib/lessdisks apt-get install swiftx

swiftx is an X configuration script for detecting video and mouse settings. A couple of edits are required when using swiftx from a lessdisks terminal;

edit file /var/lib/lessdisks/etc/swiftx/swiftx.conf

edit:change x_config_dir to "/var/state/lessdisks/etc/"

there's a couple lines you'll want to add to the fonts section in /var/lib/lessdisks/etc/swiftx/XF86Config-*.template:

FontPath     "tcp/xdm1:7110"
FontPath     "tcp/xdm2:7110"
FontPath     "tcp/xdm1:7101"
FontPath     "tcp/xdm2:7101"
FontPath     "tcp/xdm1:7100"
FontPath     "tcp/xdm2:7100"

if you're just using plain ol' xfs, which uses port 7100, you'll just need those lines. you probably won't really need any lines with xdm2, either. the true-type font servers xfs-xtt and xfstt use ports 7110 and 7101, respectively. purportedly the true-type fonts are better, but you have to get true-type fonts installed.

Setting up a terminal

Identify NIC card

file:/proc/pci
examine:NIC card info
alternate command:
 lspci

Download boot floppy image

URL:http://rom-o-matic.org
download:boot image for the specific NIC, with DOWNLOAD_PROTO_NFS specified

Login to terminal

user:root
note:empty password

Configure X

user:root
command:freex

Test X

user:root
command:if sdm: init 5, if xdm/kdm/gdm, init 4

Configure Terminal from X

user:user added to lessdisks group on server
graphical login:
 sdm, xdm, kdm, gdm, etc.
command:/usr/sbin/lessdisks-setup

Configure Terminal from console

user:root
command:lessdisks-setup

Transcripts of irc chats with vagrant

ChatTranscript20030429

ChatTranscript20030508

ChatTranscript20030622

ChatTranscript20031113

[1]?in an email from vagrant
and copy /etc/ssh_host_*.pub to a common file, like so:
#!/bin/sh
# ooooh, i finally got around to writing a script to handle this stuff!
# bugfixes 7/21/03
for name in xdm1 disk $(hostname); do
  for type in rsa dsa; do
    echo "$name" $(cat /etc/ssh/ssh_host_$type\_key.pub) >> /tmp/known_hosts
  done
done
cd /var/lib/lessdisks/root
mkdir -p .ssh
chmod og-rwx .ssh
cp /tmp/known_hosts .ssh/known_hosts
exit $?

Other Tips

terminal boot boot messages

Etherboot:

.000041.0000 done
ROM sebment 0x0800 length 0x8000 reloc 0x9400
Etherboot 5.0.9 (GPL) Tagged ELF for [Tulip]?

dmesg

Linux version 2.4.18ld (root@nero) (gcc version 2.95.4 (Debian prerelease)) #2 Tue Apr 9 11:21:26 PDT 2002
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 0000000008000000 (usable)
 BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
On node 0 totalpages: 32768
zone(0): 4096 pages.
zone(1): 28672 pages.
zone(2): 0 pages.
Kernel command line: rw root=/dev/nfs ip=dhcp 
Initializing CPU#0
Console: colour VGA+ 80x25
Calibrating delay loop... 119.60 BogoMIPS?
Memory: 126956k/131072k available (900k kernel code, 3732k reserved, 252k data, 196k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Dentry-cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode-cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
Buffer-cache hash table entries: 8192 (order: 3, 32768 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
Enabling CPUID on Cyrix processor.
CPU: Before vendor init, caps: 00000001 00000000 00000000, vendor = 1
CPU: After vendor init, caps: 00000001 00000000 00000000 00000004
CPU:     After generic, caps: 00000001 00000000 00000000 00000004
CPU:             Common caps: 00000001 00000000 00000000 00000004
CPU: Cyrix 6x86 2x Core/Bus Clock stepping 07
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
PCI: PCI BIOS revision 2.10 entry at 0xfb5d0, last bus=0
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Cannot allocate resource region 1 of device 00:09.0
Limiting direct PCI/PCI transfers.
Activating ISA DMA hang workarounds.
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
devfs: v1.10 (20020120) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
Detected PS/2 Mouse Port.
pty: 256 Unix98 ptys configured
Real Time Clock Driver v1.10e
block: 128 slots per queue, batch=32
0 3c515 cards found.
loop: loaded (max 8 devices)
Linux Tulip driver version 0.9.15-pre9 (Nov 6, 2001)
eth0: ADMtek? Comet rev 17 at 0x6200, 00:04:E2:3E:25:46, IRQ 10.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 8192)
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 192.168.1.2, my address is 192.168.1.200
IP-Config: Complete:
      device=eth0, addr=192.168.1.200, mask=255.255.255.0, gw=192.168.1.1,
     host=192.168.1.200, domain=, nis-domain=(none),
     bootserver=192.168.1.2, rootserver=192.168.1.2, rootpath=/var/lib/lessdisks/
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Looking up port of RPC 100003/2 on 192.168.1.2
Looking up port of RPC 100005/1 on 192.168.1.2
VFS: Mounted root (nfs filesystem).
Mounted devfs on /dev
Freeing unused kernel memory: 196k freed
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS03 at 0x02e8 (irq = 3) is a 16550A
inserting floppy driver for 2.4.18ld
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077

Turn on remote syslogging

one thing that can help a good deal is turning remote
syslogging on...

on the server, edit /etc/init.d/sysklogd

SYSLOGD="-r"

then restart it:

/etc/init.d/sysklogd restart

and then, add to /var/lib/lessdisks/etc/syslog.conf:

*.* @disk

then syslog messages from the terminal should hopefully appear
in the server's log files too, distinguished by ip address or
host name...

Configuring Exim

  • run 'eximconfig'
  • choose 3, Satellite system, if your ISP handles mail for you.
  • What is this system's name?
  • select default, the host name of the computer
  • Where will your users read their mail?
  • enter the domain you want to appear after @ in the "From:" field
  • Which accounts should the system administrator mail go to?
  • select a user name
  • You may already have an /etc/aliases file, do you want to replace it?
  • might as well
  • Exim lists the changes it will make, and asks for confirmation

Web access to a terminal

Each terminal runs a Web server on port 8080

http://xxx.xxx.xxx.xxx:8080 should list the /var/state/lessdisks/etc directory on the terminal, where xxx.xxx.xxx.xxx is the IP address of the terminal

More Informtion

Glossary

xdmcp
X Display Manager Control Protocol

Installing Debian

Choosing which kernel to install

Using the 'Woody' install disk, I found that things worked better if I entered:

bf24

at the original:

boot: 

prompt.

This installs a 2.4 kernel, and offers journaling filesystems, EXT3 and ReiserFS? in addition to EXT2.

Configuring network during install

Sometimes I neglect to:

Configure Device Driver Modules
Configure the Hostname
Configure the Network

Which causes:

Install the Base System

to fail with debootstrap errors. The errors are about configuring, but not specific about what is causing the failure.

Determining NIC card

ALT-F2 will give a console during the install process. From the ALT-F2 console;

See if you can ping a host:

# ping ssc.com

If that fails, try:

# lsmod

and see if there's an ethernet module loaded.

If not, try:

# more /proc/pci
or
# dmesg | more

and look for mention of a type of NIC card which was identified at boot time.

Select:

Configure Device Driver Modules -> kernel/drivers/net

choose the driver which most closely matches the card name found with:

# more /proc/pci 
or
# dmesg | more

If successful, running:

# lsmod

from the ALT-F2 console should list the NIC module, and in the list of modules on the install screen, there will be a "+" instead of "-" next to the module name.

If the install is unsuccessful, figure out what driver your card needs.

Other tips and reminders

Debian base-config script

The script which runs the first time the new install boots is:

/usr/sbin/base-config

Floppy drive configuration

The command:

/usr/sbin/superformat /dev/fd0 hd

checks the floppy drive and reports a value to put in:

/etc/driveprm

such as:

drive0: deviation=400

Finding changed files

I like this trick to determine what what files an operation effects;

  • create a file which is used as a timestamp
  • perform an operation
  • report the files which are newer than the timestamp

Example:

# touch apt-get_update.pre
# apt-get update
# find / ! -path "/proc*" -newer apt-get_update.pre

The <! -path "/proc*"> part of the command is required to prevent all the files in the /proc tree from being listed, they report their timestamp as current time.

Setting su timeout

I usually login as myself, then 'su' to do rootly things, and forget to logout of root.

setting TMOUT in /etc/bash.bashrc to number of seconds of inactivity is a good thing:

TMOUT=600 # a su session ends after 10 minutes of inaction