Walltop: Difference between revisions

From Wildsong
Jump to navigationJump to search
Brian Wilson (talk | contribs)
Brian Wilson (talk | contribs)
Line 114: Line 114:
* [http://live.debian.net/manual/html/ch03s03.html Building an USB/HDD image]
* [http://live.debian.net/manual/html/ch03s03.html Building an USB/HDD image]


=== Developer notes ===


I want a minimal server, with just the addition of packages that make life with Asterisk bearable. The server handles phones and faxes. It keeps its call log files on Kilchis via mysql. There are no modems, just a 4 port "Wildcard" to connect to the phone company. It needs to be able to send email notices.
Currently voicemail messages get stored on this server. I might change that by using an NFS filesystem on Kilchis. It would be nice to get Apache off of the phone server.
Hylafax has not been completely set up, we can receive faxes but there is no fancy Windows client to send faxes. There was some reason I had to build it from sources. See the [[Fax]] page. I think I should run the server portion on the phone server and the client(s) on Kilchis.
I included flite ("festival lite") to allow text-to-speech but have not used it yet. Should remove it if we're not going to use it.
==== Asterisk MySQL integration ====
The DebianLive setup uses all the Debian Asterisk packages, so for MySQL
the package is called asterisk-mysql. See /usr/share/doc/asterisk-mysql, especially the examples directory which contains setup files.
==== TODO LIST ====
I copied the /usr/local stuff from (the old) Roaring and need to make sure I can build it from scratch on the development server.


=== Build procedure ===
=== Build procedure ===

Revision as of 03:59, 14 February 2010

WallTop computers... recycle an old laptop by removing all the extraneous parts such as the cdrom drive, floppy drive, (dead) battery and then hanging it on the wall.

I am building one from an old Dell Inspiron 3700.

Operating system

I looked at using Debian, Damn Small Linux, Puppy Linux (which immediately panics on boot), and Movix. I decided I might as well stick with Ubuntu so I am building a custom Live CD. I will then transfer it to a Compact Flash card, which will be plugged into an IDE adapter and replace the incredibly noisy stock 4200 rpm hard drive.

See http://www.debuntu.org/how-to-customize-your-ubuntu-live-cd

Oh! This was a bad idea. Much stuff about Ubuntu live cd's has been deleted from this page!

Debian Live!

The way to do this is Debian Live!

Debian Live wiki

Building an USB/HDD image

FluxBox

Install the tools to build Debian Live! systems

apt-get install live-helper

Build an image.

lh_clean --binary
lh_config -b usb-hdd -k 686 --bootstrap-flavour minimal\
--packages-lists "stripped" --binary-indices disabled\
--memtest "disabled"\
--packages "x-window-system-core fluxbox\
openssh-server vlc gnash portmap nfs-common\
autofs debconf-english"\
--bootappend-live "nolocales" --syslinux-timeout 50

I build on a 64 bit machine so I have to say -k 686 to get the 32 bit kernel

Add scripts to config/chroot_local-hooks

02-fix_inittab.sh - changes runlevel to 5 and adds the tty7 login line so I have only one login running instead of default 5

40-bash_profile.sh - append or create a .bash_profile script that will run a script from nfs and then do a 'startx'.

50-windowmanager.sh - configures fluxbox startup files

99-make-export.sh - make the directories needed for autofs

Add files to config/chroot_local-includes I add the autofs.* files that I use to mount nfs servers.

Doing customizations, do this (as root)

lh_clean --binary
lh_config
lh_bootstrap
lh_chroot
lh_chroot_hosts install
lh_chroot_resolv install
lh_chroot_proc install
chroot chroot
 #do the hacks here, for example "apt-get install asterisk".
lh_chroot_hosts remove
lh_chroot_resolv remove
lh_chroot_proc remove
lh_binary
lh_build

Copy image to CF: dd if=binary.img of=${USBSTICK}

To test image, start in qemu or convert img file to a vmdk and use vmware

To use in walltop, transfer CF to laptop and boot it

Customization that I might want to do

other codecs???
emacs21-nox
libcurl3
realplayer?
firefox - use iceweasel, unless like me your laptop is puny, then forget it!
flash - use gnash??

I need something to do a slide show of pictures, driven from command line. Image-magick supports this.

Starting X / fluxbox without a window manager http://www.debianadmin.com/how-to-auto-login-and-startx-without-a-display-manager-in-debian.html

Debian Live operating system

Debian Live! is designed to run from read only media such as a CD, I am trying to install it on a USB flash device for ease of use.

The basic principles

To make (large) changes to the phone server, you build a new, complete USB image from scratch. You copy the new image to a stick, test on a spare machine, then when you are ready to switch over, you shut down the phone server, swap sticks, and reboot. If the new system fails, fall back to the old stick and try again.

The build process described below includes all configuration settings. There should not be any tweaking of the finished USB stick required. If you tweak it in the test phase, then make the changes permanent by updating the build settings and building a new stick before releasing it on the phone server.

Don't fiddle with the server while it's running. It's behind a firewall and it has no writable hard drive, so it is not too too prone to being hacked and if it is hacked they can't do much that can't be undone with a reboot.

The exception to this (of course there is always an exception) is the phone system settings in /etc/asterisk. These files change frequently, so you have to be able to edit them. TODO - make them "COW" files or save them in MySQL.

Useful links


Build procedure

First time around, install the live-cd packages the build host, "apt-get install live-cd"

  • This list does not include the hylafax support yet. I currently only included the generic hylafax package for testing.
  • I use Dev as the build host.
  • I work in a subdirectory on the RAID array, /mnt/stripe/DebianLive
  • I work su'ed to root, because the build stage requires it.
  • I might be building on a 64 bit machine so I have to say -k 686 to get the 32 bit kernel.
  • I used to include the minimal keyword but it left out things like networking and vi.

Clean out the build area.

lh_clean --binary

I used a script to configure and copy appropriate files around. See Configure.sh

Configure.sh has code something like this

lh_config -b usb-hdd -k 686 --bootstrap-flavour \
 --packages-lists "stripped" --binary-indices disabled\
 --memtest "none"\
 --packages "asterisk mysql-client libsox-fmt-mp3\
 hylafax-server iaxmodem\
 festival festvox-kallpc16k \
 apache2-mpm-prefork php5-mysql php-pear\
 openssh-server portmap nfs-common autofs\
 debconf-english"\
 --bootappend-live "nolocales" --syslinux-timeout 50

Next it copies files and scripts.

I add scripts to config/chroot_local-hooks. I keep backup copies of the scripts at the top level so that I can wipe the config/ directory and rebuild it from scratch. I keep copies of the files that will be included in MyConfigIncludes/

Create scripts to customize the images

nn-name.sh where 'nn' is a number to control execution order, and 'name' is a meaningful name, for example 01-password.sh would be used to install local user accounts and set user and root passwords.

The simple next step, the build. A complete build takes about 15 minutes on Dev.

lh_build

If the build succeeds there will be a file called binary.img in the top directory.

Testing

To test the image in a virtual machine, you can either start it in qemu or convert the img file to a vmdk and use vmware.

Of course, you can also the virtual machine to boot from the USB stick but testing the img file first means you don't have to keep copying the image to the stick.)

"Qemu" is installed on 'dev' already. You need to set up an X11 connection back to your desktop to use it, if you are burdened with a Windows machine see the Cygwin page. When you have an xterm window open on your desktop, type 'qemu binary.img' and wonder at the marvels of modern technology.

Once the Qemu window captures your mouse you can escape with Ctl-Alt. Thought you might want to know that.

Test plan

  1. Test the image in an emulator.
  2. Test the usb stick in the backup computer.
  3. Test on real hardware. (When ready to go live.)

Testing image in Qemu

There are clever ways to set up Qemu networking. It requires setting up a TAP interface on the host. Not sure if I am up to that. I think this is the proper way to do it but I don't want to accidentally shut down Dev right now.

Here is the command to start the image in qemu. This MAC number is one digit off from the real thing. (24 vs 25) (qemu networking hints)

qemu -net nic,model=rtl8139,vlan=1,macaddr=00:e0:29:93:3a:25 binary.img



Testing on the real hardware (with Wildcard in place)

Repeat all image and offline tests.

Test phone system.

  • Interoffice - Place a call from one extension to another
  • Place a test call to extension 100 to test the auto-attendant functions.
  • Call out using a local number
  • Call out using a long distance (VOIP call)
  • Call into the office from a cellphone.
  • Test the voicemail system (extension 85 or the voicemail button)
  • Try each incoming phone number including the fax line. (See Phone_Book)
  • Make sure the calls are being logged in the MySQL server.

Test fax system.

  • Generate a fax and see if it arrives on the server. (See Fax page.)
  • Make sure it forwarded the fax over to the email system. (Ask John or Brian)
  • Send a fax from the command line and see if it went out (check email notices too.)

Test UPS daemon

  • Does the apcupsd daemon work? (Should be able to ask it how the batteries are doing.)

Deployment

Copy the image to a USB stick, completely overwriting it: dd if=binary.img of=<devicename>. You can get the device name with dmesg, it will be buried in the last few messages after you insert the stick. Something like /dev/sda. Don't use the first partition (which would be /dev/sda1), use the whole drive, you have to overwrite everything there including the boot block and the partition table.

Note: If you select the wrong device name you can make the host system unbootable in about 250 mS. If you do this, don't come whining to me about it. Fix it.

To use in the target system, simply plug in the stick and reboot it. You have to set it to boot from USB in BIOS. If you can't set it, get a newer computer!

Incidentally installing Linux onto the USB stick makes it unusable in Windows. If you want to use it in Windows again ever you will need to partition it and create a FAT filesystem on it.