I think the tcp wrapper daemon (tcpd) should do the trick.
In /etc/hosts.allow and /etc/hosts.deny you can use constructs like daemon@host
that will accomplish what you need (sort of).
Subject: Direct Win05-Linux connection
michael@cimmj.freeserve.co.uk wrote in LG #42:
Just read issue 41 and read the great article about direct cable
connections between Win95 and Linux, I tried implementing this method
but came across a couple of problems running Windows 98. (4.10.1998)
I can get terminal emulation (using HyperTerminal) running at 38400
baud but 115200 crashes at the password prompt. (115200 works with
xon/xoff using kermit as the terminal program).
Can't figure out how to get Windows to dial out over the serial
line as in your article. I tried creating a new modem using the modems
wizard in the control panel using 'standard serial between 2 PC's' and
it goes through the process reporting success at the end but no device
appears anywhere.
The problem is in Win95/98. It does not come with a null modem
driver. Windows assumes that you are using a REAL modem complete
with AT commands, etc. If all you have is a null serial cable
between the Win95 box and the Linux PPP server, then Win95 cannot
be used because it cannot be set up unless you use a modem and a
phone line.
However, there IS a null modem driver. You install this driver
by copying it to c:\WINDOWS\INF (a hidden directory). You can
then install a new modem. Select not to detect, but you will
pick it from a list. When you get to the list, it will be at
the top of the list of manufacturers, and you can select the
generic null modem driver.
This driver has been around the internet for years, but I have
put it up on my ftp server.
ftp://ftp.nook.net/pub/unix/mdmcisco.inf
I have no problem then using my Win95 computers with terminal
servers such as my Livingstons. It works a LOT faster than
using a Modem, and communications is typically 115,200.
--
Ramon Gandia ================= Sysadmin ================ Nook Net
http://www.nook.net rfg@nook.net
Published in Linux Gazette Issue 43, July 1999
"Linux Gazette...making Linux just a little more fun!"
PLIP: Laplink Cable Install of Debian 2.1
This installs linux via the parallel port
Have you got a machine that is ready for linux but it has no CDROM drive? Is it also missing a modem or a network card? If you have a running linux box (with CDROM drive) available to you, then you can easily install linux via the good old laplink cable that plugs into the parallel port. Even old neglected machines come with a parallel port somewhere, so this method will guarantee that you can walk into any installing situation and be ready to roll.
Debian 2.1 can do this thing
Just about all linux distributions can do this little PLIP console connection. There is a lot of good information available for you as well, but if it is only for RedHat, then as a Debian user you may feel left out. Even worse, too many times an article will assume that you know what you are doing.
Heck, I do not know what I am doing, but I got this PLIP thing to install Debian 2.1 because I needed a good peer to peer network game player that fits on a small hard disk. Good old Debian has the small purposeful ".deb" packages that you can put in one at a time to make a very small yet powerful server. This article fires up Debian 2.1 and installs a PLIP peer to peer network system with X Windows so we can play netmaze head to head versus a small, bloodthirsty nephew or niece.
The target system is a "Frankenstein"; a 486/DX66 with no CDROM, no modem, no network card, 16 MB RAM, a 1.44 MB floppy and two tiny hard disks, 110 and 170 megabytes small.
We begin at the running linux box that will serve us our CD through the laplink cable.
Server for the PLIP
We need to login as root and edit these files:
Scripting is the mojo for linux
Those wacky HOWTO writers are always letting you copy their hard work by giving you a little script to run on your machine.
We need to create this little executable script:
#!/bin/sh
killall -HUP /usr/sbin/rpc.mountd
killall -HUP /usr/sbin/rpc.nfsd
echo re-exported file systems
Fire up mcedit (it comes with Midnight Commander. You do have it, yes?). Go to the NFS-HOWTO and block out the exportfs script with the F3 toggle and then F9 copy it to the ~/.cedit/cooledit.clip file. Exit with F10.
Then type mcedit your-new-file-name. It will give you a nice blank page to F9 insert the ~/.cedit/cooledit.clip file. Edit it in your personal way and F2 save it, or F9 save it as your-new-script-command-name.
Then type chmod 755 your-new-file-name to make it executable. Copy it to /usr/sbin just for fun, but also to make it live in the path.
For easy mnemonics and to honour the author, we should call it exportfs. Done.
Huh? What does it do? It exports the currently mountable NFS directories in case you make a change.
/etc/init.d/network
We simply need to tell the machine about the plip1 device and who it connects with via pointopoint networking.
#! /bin/sh
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
IPADDR=192.168.1.5
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=
#ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
#route add -net ${NETWORK}
[ "${GATEWAY}" ] && route add default gw ${GATEWAY} metric 1
ifconfig plip1 CHGUY pointopoint Salma up
route add -net ${NETWORK} netmask ${NETMASK} dev plip1
The networks your machine knows about:
loopback 127.0.0.0
localnet 192.168.1.0
Well? Who is on this network anyway?
127.0.0.1 localhost
192.168.1.5 CHGUY.chguy.net CHGUY
192.168.1.3 Salma.chguy.net Salma
Kind of like being doorman at 54, eh?
ALL: PARANOID: DENY
Salma gets in every time.
ALL: 192.168.1.3: ALLOW
The NFS server will only give out the directories in the exports file.
/cdrom *.chguy.net
This will let ordinary users mount the CDROM drive, which is not a problem at a home LAN (Local Area Network. Yes, that is right, your linux CD gives you a replacement for NT).
# (file system) (mount point) (type) (options) (dump) (pass)
/dev/cdrom /cdrom iso9660 users,exec,ro 0 0
Turn it on
Time to turn on PLIP on this CD server machine:
ifconfig plip1 CHGUY pointopoint Salma up
route add Salma dev plip1
All is ready for the installation.
- we will allow the new machine onto the system
- we have assigned a network address to each machine
- we will export the /cdrom directory when the installer mounts the CD
Client for the PLIP
The target for the installation is the client of your server. However, this is PLIP peer to peer networking, so both of the machines act as a server. For this installation we will refer to the target machine as the client, code named Salma.
Make two install diskettes
Back at the server, mount the B1 CD (B2 for a laptop) and make your two installation floppies.
Simply cd deep into the CD:
cd /debian/dists/slink/main/disks-i386/current
dd if=resc1440.bin of=/dev/fd0
dd if=drv1440.bin of=/dev/fd0
Salma Laptop
The resc1440.bin is the generic PC booter; resc1440tecra.bin is made for laptops.
Place your floppy in the drive and power up Salma for the installation.
She boots your machine
You get a nice menu of jobs with the Debian installer. Please read all of your options and stay loose!
The Debian installation will go through the usual motions of assigning mount points for "/" (root), "/swap", and your custom placements.
Now it is time to "Install Operating System Kernel and Modules" and that is how we will enable PLIP on Salma.
After the kernel is ready to PLIP we can install the base system, which is a nice little ten MB file that fits on seven floppies. Yes, that is right, you can just make seven more floppies and get it on, no need to use PLIP.
We are here to play netmaze and make a peer to peer network, so read on.
From the floppy
The installer will ask you how you are going to install the kernel and modules, and even though you are going to use the CD in a minute, you must tell it you are going to install from a floppy.
In almost every case you will be selecting /dev/fd0: it is the first floppy drive.
Then it will ask for the resc1440.bin diskette so that you can make a live file system to work from. It booted, so it is already in the drive.
Kernel Modules
You have landed on Community Chest: FOLLOW INSTRUCTIONS ON TOP CARD. Your card says a driver is a kernel module. You no longer will ask for drivers. You will now ask for kernel modules. Do not pass GO.
When the resc1440.bin diskette is done loading, the installer will ask you to place the Drivers floppy in the drive. It is the drv1440.bin diskette.
Configure for PLIP
Now the installer wants to jump ahead to Make Linux Bootable Directly From Hard Disk. This is a confounder and we need a volunteer to fix it.
You need to go down the menu and select "Configure Device Driver Modules". You need your set of modules to be installed in your kernel so that you can network to the CD server.
The set of modules
There is a basic set of modules needed for your machine. It varies from user to user of course, and the following list is only a suggestion.
Group Module
- block----no, you do not need paride right now. Compile it into your custom kernel in future if you want to use external devices, like CDROM drives, etc.
- cdrom---no, you will not be controlling the server's CDROM. Get the right one from here if you buy a proprietary CDROM drive in future.
- fs------YES, please get nfs so you can NFS and export files to your network.
- fs------YES, please get nls_iso8859_1 for the nice character set to read.
- fs------YES, please get vfat so you can muck about in the DOS file system and see long filenames.
- ipv4----YES, please get rarp just in case your network tools need it. I do not know; better safe than sorry.
- misc----no, you do not use lp right now. Compile it into your custom kernel in future if you want to switch from PLIP to printing. If you have two parallel ports then go ahead.
- misc----YES, please get serial so you can use the serial port for an external modem in future.
- misc----YES, please get psaux if you are trying to use USB and it craps out as usual. Then you can still use your ps/2 mouse.
- net-----YES, please get dummy just in case your network tools need it. I do not know; better safe than sorry.
- net-----YES, please get plip so that you can do pointopoint networking via the laplink cable.
- net-----YES, please get ppp for future hookups to your ISP.
- scsi----no, you might not have any scsi devices. Here is where you get that ppa module for your external Zip drive.
When you install the modules and the installer gives you a new screen for parameters, you can usually just press Enter to go ahead.
The plip module will already have the io port address and irq of the parallel port assigned to it, so just press Enter at the parameters page.
Configure the Network
The installer wants to make linux bootable again, but ignore it and select "Configure the Network".
It wants the host name of your system, so type in Salma to match the examples in this article.
Now it wants to know if you are on a network, so answer yes. The domain name is "chguy.net", just like in the examples.
The IP address
The IP address can be the default (automatic) numbers thrown up on the screen. These are the numbers for a Class C network, the type you have at home.
Your IP address, according to the examples, is 192.168.1.3 for your hostname of Salma.
The rest of the numbers are automatic and good ones to use for your network. We have used them for the example and it saves you a lot of typing and checking.
Netmask = 255.255.255.0
IP Broadcast address = 192.168.1.255
Gateway = whatever... If you have a modem on the other machine, then make a gateway. Or a Dell, or a Netwinder, your choice.
Normally from home you will be making a gateway to the internet through your ISP.
Domain Name Service = your ISP nameserver. Here at home, there is no modem on the two PLIP machines, so I have each machine look at its local address and also on the other nameserver.
So, for the example, all we put in the nameserver places are the two IP addresses of the two PLIP machines.
We tell the installer that "Another system will be the DNS server".
Nameserver = 127.0.0.1 192.168.1.5
Execute a Shell
A LeftAlt-F2 will light up a new console for you. A LeftAlt-F3 will show the error messages from your plip attempts. You could also just select "Execute a shell" from that wacky menu.
At the prompt you can immediately type in the ifconfig command to see what is running.
Again with the ifconfig, you set up PLIP on Salma with this:
ifconfig plip1 192.168.1.3 pointopoint 192.168.1.5 up
Wait, you are not set up yet. You better set a route to the CD server machine.
route add 192.168.1.5 dev plip1
Install the Base System
The menu wants to make linux bootable again. Please select "Install the Base System".
Choose Network Interface
Now we can select "plip: Parallel-line IP" from the menu of interfaces.
Yikes! The friendly installer now tells us that it will not create a complete PLIP configuration.
The installer does not know that you just did it with the ifconfig and route commands. Maybe we can get another volunteer to set up the script to see this step.
Now we are asked to select the installation medium. Yes, it is "nfs: NFS (network filesystem)".
The installer will ask you for the address of the server and the directory where the debian archive lives.
"push de button and make it go"
- the CD is going to be NFS mounted on Salma on /instmnt
- you have already mounted the CD on /cdrom on the server
- you have /cdrom listed in /etc/exports and now the installer can find it and use the CD.
Type in the IP address of the CD server with a colon and the NFS export directory of the mounted CDROM. The screen prompt says "Choose Debian NFS filesystem":
192.168.1.5:/cdrom/debian
We are going live to chguy.net
On your screen is a little window called "Choose Debian archive path". It only shows up when you are connected and online with the CD server machine. The installer is asking you for the location of the Debian archive directory in the mounted NFS filesystem.
The answer is /debian. Always is.
BootPrompt-HOWTO - required reading for all linuxians
PLIP-mini-HOWTO - you need the kernel configuration tips and troubleshooter
Kernel-HOWTO - you might need to make a custom kernel with a PLIP module
NFS-HOWTO - you absolutely need the exportfs script and this HOWTO
The Installation Guide for Debian 2.1 - good basic stuff here
"Loadlin.exe Installer", LG#34 - step by step for booting from a logical drive
Your CHGUY Debian 2.1 CD set is labeled B1, B2, S1 and S2. The B1 CD (#1 of 4) is the installer for a regular desktop machine. The B2 CD (#2 of 4) is slightly tweaked for installing Debian 2.1 on your laptop machine. For installing via dselect, either one can go in the CDROM drive. Those wacky hackers are ready for anything.
When you install the Standard Server package it only fills up 50 megabytes on your hard disk. Add in 32 megabytes for a swap partition and you have only used 80 megabytes from a small, old hard disk. That will leave you enough room for the xbase ".debs" plus your video-card-specific xserver and the rest of the XFree86 window system.
Both 486s have Apache webserver, anonymous FTP, the TrueType fontserver, full networking, full use of the video card, blazing fast ping times on the PLIP cable (5.2 milliseconds) plus my choice of hot window managers like AfterStep and the icewm.
Total installed ".deb" space taken up on either machine is 127 megabytes; including sharp little network games like Freeciv, netmaze and crossfire. Who needs bloated systems? Certainly not the linuxians.
You can make this into an executable script called plipon with:
chmod 755 plipon
This is the new command plipon:
#! /bin/sh
ifconfig plip1 CHGUY pointopoint Salma up
route add Salma dev plip1
The above script runs on the CD server CHGUY. Reverse it for Salma.
The new plipoff command:
#! /bin/sh
ifconfig plip1 down
You can copy it to /usr/sbin just for fun and so that it lives in the path.
My six years old nephew Brady "the Mighty Naturta" and his almost-twin cousin Jesse "the NO-baby" absolutely love to play netmaze. It installs in seconds through the laplink cable and it plays for hours. The package is called netmaze and all you do is run the server on one machine and the netmaze client on both. You can even add a few robots to chase you down. The players you see are smiley face spheres. Heaps of fun!
Please use GNU/linux fdisk to make your new primary partition for "/" (root). Too many of you are too excited to get going and you place linux on an extended partition. Just a reminder, the PC design allows you to get up to four primary partitions per hard disk drive, or three primary and one extended (which you can load up with lots of logical partitions). Do NOT use DOS fdisk if you have just one hard disk. DOS fdisk is disabled so that it will only make one primary partition if you only have one hard disk.
Get this: A recent advertisement for USB home networking between two machines was crowing over the fact that all you do is plug it in and you can enjoy full networking of two machines. It was "only" $85.00 for your set of newfangled doodads. *Limit of twelve feet of cable.
I began to think that this was madness! You can get a laplink cable and hook up your two machines for full network connection; plus it is probably a "free" cable that was paid for a long time ago. *Limit of fifty feet, unless you begin to pick up radio signals.
You plug the laplink cable into the parallel port of each machine; yes, the same place where your printer should go. Your laptop can use this PLIP method to share files with your desktop at work and at home. Plus it is hard-boiled, rock-solid networking through a cable; completely under your control. Methinks this USB thing was just a ploy to sell new machines.
made with mcedit on an i486
running Debian 2.1 Linux 2.0.36
No systems were frozen or crashed during the testing of these procedures.
All references to Salma Hayek are purely lascivious.
Copyright © 1999, Bill Bennet
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
An xdm Session
[Revised to fix a few HTML tags. Originally published in issue #42.]
So, you've got X Windows working on your system, you've
set your system to automatically start xdm by setting the default
run state to 5 and now you want to customize your personal windows session
by having certain applications start automatically after you log in.
At work, I like to log out of my system every evening before I go home
so that others may log in when I'm not there. It doesn't
happen often, but I don't want someone coming into my office and
using a window logged in as me. [You never know when someone gets curious
and starts wandering through my saved mail messages.] The problem is,
I have certain applications that I want brought up automatically, like
my list of things to do and my calendar program.
In this article, I'm going to explain an X Windows session,
how it is started and what you can do to customize it. It will show
you how to automatically start the window manager of your choice,
have applications start automatically and customize colors and fonts to
your liking. Since X Windows is pretty much identical on all platforms,
much of what I am going to explain can be used on other platforms that
use X Windows other than just XFree86 on Linux. As a matter of fact,
I will make some comparisons between the version of XFree86 that comes
with Red Hat 5.x and what comes with Silicon Graphics IRIX®. You may
note that the files I discuss on both systems have the same name but
are usually just in different directories.
I realize that other articles have been written about X Windows
configuration, for example Jay Ts' fine article in the December
issue entitled ``X Window System Administration.'' X Windows
is an extremely versatile windowing environment and, because of this,
can be very complex. For this reason, I believe it will require many
articles that might overlap but each will provide information from a
different perspective. This article is intended to be from a user's
perspective, rather than from an administrator's.
To start off with and to keep my article from becoming a book in itself,
this article is written with the following assumptions:
- That you are working with the default configuration of xdm as
it is installed by Red Hat (see Footnote). This means that you haven't
changed any of the files found in /etc/X11/xdm. (Since I don't
have an installation of any of the other Linux vendor releases, I'm
presuming their default configuration is identical or similar enough
that it won't cause any problems.)
With this in mind, I will refer to filenames that are used and
referenced by xdm (and their contents) as specified in the installed
configuration file. It should be noted, however, that almost all of
these filenames can be changed by modifying /etc/X11/xdm/xdm-config
or by specifying a different configuration file on the command
line when starting xdm. (On the SGI, the configuration file is
/var/X11/xdm/xdm-config and I have seen some installations use
/usr/lib/X11/xdm/xdm-config.)
- That you have a basic understanding of the server/client concept
used by X Windows. i.e. The X server handles the display and keyboard
and runs as an application. User's applications are clients that
request services from the X server to display things and provide input.
- That you have some familiarity with X resources and how they
are used in the X environment.
User Session Initialization and Termination
When the X server is started automatically via xdm, the user is
presented with a login screen. When a user successfully logs in via this
screen, xdm starts the ``user session''. This session is
a shell script which, when it terminates, ends the user's session
and xdm resets the X server and returns to the login screen.
Prior to starting a session, xdm runs a small startup script with
root privileges to perform any user initialization that may be required.
Currently, this file, /etc/X11/xdm/GiveConsole, changes the ownership of
/dev/console to that of the user so messages sent there can be displayed
on a window in the user's environment.
In like manner, when the session ends, xdm runs another small exit script
with root privileges to clean up anything that might have been set up by
the startup script. Currently, this script, /etc/X11/xdm/TakeConsole,
changes the ownership of /dev/console back to root.
Note that these two files are /var/X11/xdm/GiveConsole and
/var/X11/xdm/TakeConsole on the SGI.
The step of interest to this article is the actual starting of the user
session itself. Here, xdm starts a subprocess running the script
/etc/X11/xdm/Xsession (/var/X11/xdm/Xsession on SGI) and waits for it
to exit. When it does, xdm processes the exit script and returns
to the login screen. This session script is run with the user's
privileges.
A resource has been set for xdm which causes the parameter
``failsafe'' to be passed to the user session if the user uses
the F1 key rather than the Enter key to complete his/her login. This can
be very useful if the user makes a mistake in his or her customized
session script which makes it impossible to log in. How this feature
is taken advantage of is discussed below. It should be noted that I
found this resource defined for both Linux and SGI and is used in an
identical manner on both.
The Xsession File
The /etc/X11/xdm/Xsession file provided by Red Hat is quite simple,
especially when compared to the /var/X11/xdm/Xsession file provided with
the SGI. This file is a standard Bourne shell script which performs
all the user startup and initialization that the system administrator
wants done for all users.
As described above, if the user logs in and pressed F1 rather than
the Enter key, the parameter ``failsafe'' is passed to the
session file. The first thing the /etc/X11/xdm/Xsession file does is
check if this parameter exists and, if it does, exec's an xterm.
This bypasses all other initialization and provides the user with a
terminal window to work with. Notice that this is a good method of
logging in if the user has done something to his/her personal session
file that otherwise prevents logging in.
For those that don't understand the function of exec, this is a
builtin command provided by all the standard shell programs. It causes
the current running shell to be replaced by the exec'd program.
Thus, the current running shell never returns from an exec (unless the
program referenced fails to start for some reason) and the parent process
is not aware of any change in the child process. The exec'd
program retains the process ID of the shell and, when it terminates,
it is as if the shell terminated and the user session ends.
Presuming ``failsafe'' is not a parameter passed to Xsession,
the script continues by redirecting stderr to an error file. If it can
write to it, this file will be .xsession-errors in the user's home
directory. If the session can't write to the user's home
directory or this file is write protected for some reason, the script
will attempt to use /tmp/xses-$USER, where $USER is the user's
login name.
This error file is useful for determining problems during the user's
session. Any errors generated by applications that are started (including
the window manager or applications started by the window manager)
will be sent to this file. If the user has problems starting a user
session after logging in, he/she can perform a ``failsafe''
login (as described above) and look at this file. The error messages
may be of some help in determining the problem.
Finally, the standard Xsession file transfers control to one of a set of
shell scripts, depending on their existence and if they are executable.
It does this with the exec command which means that, whichever program is
run, it replaces the Xsession process and becomes the new user session.
The shell scripts are:
1. $HOME/.xsession
2. $HOME/.Xclients
3. /etc/X11/xinit/Xclients
Some interesting notes about this compared to the script used on an
SGI computer. SGI does not require the scripts to be executable but
will run /bin/sh against them if they aren``t. Also, SGI only looks
for $HOME/.xsession. If this file doesn't exist, the system Xsession
file sets up the default user environment provided by SGI. Red Hat
chose to break the default user session into two steps, since the
standard installation will provide /etc/X11/xinit/Xclients.
If none of the three files above exist or are executable, then the
user``s .Xresources file is loaded (if it exists) and the program
xsm is exec'd. xsm is one of the many window managers
provided with Red Hat Linux.
User Customized Xsession File
As you may have guessed from the above explanation of the
system's Xsession file, the user can create his/her own shell script
which will be processed as the user session. This is a very powerful
capability and provides each user the ability to do whatever processing
they want each time they log in via the X login. In this script,
the user can start various applications, set root window resources,
set one-time environment variables, change default keyboard definitions
and select a window manager.
The easiest way to set up your own personal Xsession file is to copy
the system /etc/X11/xinit/Xclients file into your home directory as
.xsession or .Xclients (what, in the future, I will refer to as the
user's Xsession file) and then edit it as desired. I'm not
going to step through the contents of the /etc/X11/xinit/Xclients file,
you can do this on your own. I'm going to just explain some of
the things one might want to do.
One important thing is to load desired resources into the root window.
This is usually done with the following commands:
resources=$HOME/.Xresources
if [ -f "$resources" ]; then
/usr/bin/X11/xrdb -load "$resources"
fi
Another thing that the user may wish to do is set the root
window background to something different. This is done with the
/usr/bin/X11/xsetroot command. For example, I have my background
defined as follows:
/usr/bin/X11/xsetroot -solid DarkSeaGreen4
Note that this command can also be used to set the default cursor
and cursor color for the root window, a two-tone plaid pattern for the
background or an X bitmap to be used as a pattern.
Also, the command /usr/bin/X11/xset can be used to set the
desired bell volume, key click, DPMS (energy saving) features and
mouse parameters. This command can also set autorepeat and screensaver
parameters.
If you want to define special keys, you can run /usr/bin/X11/xmodmap
from this script. For example, I like to be able to access the full
ISO 8859-1 character set and insert internationalized characters in
my documents. Also, Linux likes to define <Shft>F1 to be F11
and <Shft>F2 to be F12. Since my keyboard has an F11 and F12,
I prefer these keys to be set to F13 and F14 respectively. To handle
this, I have defined $HOME/.xmodmaprc to contain the following:
keycode 113 = Multi_key
keysym F1 = F1 F13
keysym F2 = F2 F14
keysym F3 = F3 F15
...
keysym F10 = F10 F22
keycode 95 = F11 F23
keycode 96 = F12 F24
Then, in my $HOME/.xsession file I have the following:
if [ -r $HOME/.xmodmaprc ]; then
/usr/bin/X11/xmodmap $HOME/.xmodmaprc
fi
Finally, the most important step is running a window manager.
Red Hat likes to run fvwm because it can be set up to look a lot
like Windows 95®. Since I use SGI computers a lot, I prefer Motif (which
costs money and doesn't come with Linux normally). There is also
xsm and twm available. You might want to read the man pages
for each to determine which window manager you prefer.
If it is desired, the user can exec the window manager as the last
thing in the Xsession file. This will mean that the user has to end
the window manager to end their session and return to the login screen.
I prefer to run the window manager as a background process and exec an
xterm as the last thing. This way, when I exit the xterm session, the
user session will end and the login screen will be brought up. Note that
the window manager and any window applications will be terminated because
the X display will be closed. Any non-window applications started as
a background process will not be terminated automatically and could
continue after the user's session ends.
I start the Motif window manager as follows:
/usr/bin/X11/mwm
I start the final xterm with:
exec nxterm -geometry 80x50+10+10 -ls
This creates a version of the xterm that supports color. It will be
80 characters wide and display 50 lines. The window will be positioned
in the upper left corner of the screen (at pixel position 10x10).
The last option forces nxterm to run the shell as a login shell.
>From within the user's Xsession file, you can run a number of
xterms, xclock or whatever, all of which will start automatically when
you login. Be sure to specify a geometry (with the -geometry option)
to get each application positioned on the screen where you want it.
Also, remember to run the applications in the background (by terminating
the line with ``&'') otherwise, the user Xsession file will
wait until that application terminates before continuing.
Important Tricks
Here I want to discuss some more interesting and important tricks
that can be done from the user's Xsession file.
All window managers can execute programs from a pulldown menu. Sometimes
these programs need special environment variables defined prior to
their execution (for example, Netscape may need SOCKS_NS to be defined).
Since the user's environment variables are not usually set until
a shell is started, the window manager and any programs started from
the window manager will not have the user's environment defined.
Trying to set them in $HOME/.cshrc, $HOME/.profile or $HOME/.login
won't do any good.
One trick is to define these environment variables in the user's
Xsession file. It is necessary to set these environment variables before
you start the window manager.
Another trick that I like to do is define XUSERFILESEARCHPATH in my user
Xsession file. Most applications look for and use a application resource
file, usually found in /usr/lib/X11/app-defaults. For example, Netscape
uses the file /usr/lib/X11/app-defaults/Netscape for its application
resource settings. If you want to change any of these settings for your
personal environment, you can copy this file into your home directory
and modify it. Next time you run Netscape, it will find the one in your
home directory first and use it.
I have found my home directory cluttered with application resource files
and wanted to put them into my own private app-defaults directory. I did
this by creating the directory and copying all the resource files into it.
Then, I set XUSERFILESEARCHPATH to the following in my user Xsession file:
/home/carlson/app-defaults/%N:/usr/lib/X11/%L/app-defaults/%N:/usr/lib/X11/app-defaults/%N
This makes the application search in /home/carlson/app-defaults
for application resource files before going to the default locations
under /usr/lib/X11.
One last trick is for those of you that have multiple computers all
running X servers. Here at home, I have an SGI O2 and my Linux machine.
When I log in remotely to my O2, I want to be able to run X applications
and have them use the display on my Linux box. In order to do this,
I need to run xhost each time I log in to my Linux box to allow
remote logins to access the X server.
As part of my user Xsession file, I have the following line:
/usr/bin/X11/xhost +moonlight
This sets the X server on my Linux box to allow access from
moonlight, the name of my O2.
Conclusion
I hope you have found this information useful and interesting.
I've tried to show you how to create your own user Xsession
file to start applications, set a special environment and run your own
window manager. I'm sure you can come up with many more ideas.
One useful tool that I wrote, based on a similar application provided
with SGI, is userenv. This application creates a login shell as
a child and has it print its environment. This environment is collected
and then printed to stdout in a form that can be executed to create the
same environment by a shell.
In my user Xsession file, I have the following line:
eval `userenv`
This computes my user environment and echos it in a form that
the shell can execute the output to create the same environment.
The eval command causes the output to be processed by the shell.
You are welcome to a copy of the source for this program from my web
site, http://members.home.net/cwcarlson/files/utilities.tar.gz.
Footnote
I am running Red Hat 5.1 but it appears that it
hasn't changed significantly for a few years. Also, I find the
configuration almost identical with other Unix platforms such as Silicon
Graphics IRIX®. The only differences appear to be in what directory
files are maintained.)
Copyright © 1999, Chris Carlson
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Getting Involved in Open Source
How to join and render help to the Linux community.
Linux has always been maintained by volunteers. In fact, the ``gift
culture'' of the Open Source community has always been one of its strong
points. However, the majority of users who would like to contribute do not
know how to get involved. This article will discuss aspects of becoming
active in the Open Source community and contributing to the Linux
kernel and other projects, including my experiences with becoming involved
in the Debian project.
The Kernel
The contributors file in /usr/src/linux on my home system is huge. My
linux-kernel mailing list folder is always full of mail from people,
eagerly discussing the ins and outs of improving this operating system. Many
people assume that Linus is the sole author of Linux. Not true, I tell
them. Linux is the prime example of the ``benevolent dictator'' model of
open-source development. A prospective developer submits code to Linus or
one of the few ``lieutenants'' such as Alan Cox. They decide what will go
into the kernel.
Another scenario is that certain parts of the kernel,
such as the kernel NFS system, have a maintainer.
Code is submited to them, and they decide what goes into their part
of the kernel. Occasionally, Linus or someone will ask for a person to take
over a part of the kernel. If you volunteer, make sure you know the code
and can handle the responsibility of maintaining it and accepting patches.
Be prepared to handle loads of mail if something breaks. Also, make sure
you are on the linux-kernel mailing list.
GNOME
One of the more exciting developments in the past year has been the effort
to provide Linux with an easy to use desktop. One of the two front-runners
in that effort has been GNOME: the GNU Network Object Model Environment.
Unlike the kernel, GNOME uses CVS, a version control system, to keep track
of code submitted by developers around the world. This eliminates the need
for someone to patch sources by hand to create an upgrade. To get CVS
access to GNOME, send mail to Miguel de Icaza (miguel@kernel.org). Include
a description of what code you will be writing, along with an encrypted
password. More information is available at
http://www.gnome.org/.
Debian
Debian GNU/Linux is unique in that unlike most other distributions, it is
maintained entirely by a team of volunteers from all over the world.
Becoming a Debian developer entails your maintaining a package;
that is, you will make sure the latest version is on the Debian FTP
site and that bugs get fixed as soon as possible fixes are done by you, if you
package your own software, or the upstream maintainer, if you package
someone else's software. or the software of a project such as GNOME or
Mozilla. Because developers can place packages into the distribution
tree, Debian is rather strict on security issues, especially when it comes
to letting new developers into the project. A PGP key, (or coming soon,
GNUPG) key is a must, and this key must be signed by another Debian
developer. This may seem Draconian, but it is imperative that they be sure
that the developers are who they say they are. After they receive your
PGP/GPG key (signed), someone may call you for a telephone interview. This
will consist of asking you a few questions, generally about the package(s)
you intend to maintain. The whole process takes time, but it ensures
the distribution is secure.
Wrapping It Up
The open-source development model allows talented people to collaborate on
projects from across the world. If someone feels they have something
useful to contribute, they can. This article only touches on three
projects. The Open Source movement is truly a ``gift culture''. You are
judged by what you have contributed and the quality of your code.
Countless projects are out there that can benefit from the
assistance of the community. With your help, they can flourish, and you
may be ``known by your initials''.
Resources
GNOME:
http://www.gnome.org/
Debian GNU/Linux:
http://www.debian.org/
http://www.debian.org/devel
(Developer Information)
The Linux Kernel Mailing List:
http://www.tux.org/hypermail/linux-kernel/ (archives)
To subscribe,
send mail to majordomo@vger.rutgers.edu with subscribe linux-kernel in
the body.
Copyright © 1999, Andrew Feinberg
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Better Web Page Design Under Linux
Note: The author does not have regular Internet access at this time and may be
slow in responding to e-mails.
Contents
Wysiwyg Editors
The Advantage of
Linux
Setting up Apache
Starting and
Testing Apache
Search Engines
SGML Support
Introduction
Recently an article was published in Linux Gazette entitled Web
Page Design Under Linux. This article produced some criticism in
later issues. The main criticism seems to have been of the authors
preference for hand coding HTML rather than using a HTML editor like
the Windows HotDog editor. This is an argument I do not really want
to get involved with. Neither do I want to spend much time on style.
Whilst in most cases users want simple fast loading, clear pages,
there will always be a place for garish eye candy, huge graphics and
all kinds of complexities that take forever to download on a 28k
modem. What I do want to address are the great things that linux
offers. Great things that are free and would cost a fortune to
implement on other operating systems. In particular I shall explain
how to set your linux box up to be your own intranet server, and
thereby fully exploit the abilities Linux offers for designing
applications for the Web.
One point I think needs making, and which does not fit in with the rest of this
article, is the Plugger Plug-in for Netscape Navigator. In the past
many people have complained that Netscape plug-ins are not generally available
for Linux. Plugger from http://www.infovav.se/=hubbe/plugger.html,
seeks to address this by providing support for many audio/video/image types.
[Ed. note: This domain name has disappeared. The author is looking for an
alternate URL.]
Wysiwyg Editors
By way of introduction though, I will put my two penny worth into
the 'editor argument'. I have never yet found a HTML editor that I
like! I am writing this article in StarOffice 5.0. I have never used
it to write HTML so this is something of a test. I expect I'll have
to edit the source when I finish writing. Another editor that seems
as good as any other I have tried is the composer part of Netscape
Communicator. I find this irritating, very very irritating. Why?
Because I like my text to be fully justified. OK I know that some
people think that full justification 'goes against the spirit of
HTML', but personally I would rather read text that is fully
justified than text which is not. I do not believe I am alone in this
preference.
What happens with Netscape is that after I have spent a couple of
hours designing some pages until I am happy with them, I load them
all into vi and change every occurrence of <P> into <P
align=justify>, which can take some time if I've written a lot
of text. Now a little later I want to make some changes, so I load
the pages into Netscape Composer and I make some changes. But whist
Communicator understands <P align=justify>, Composer
does not. In fact Composer does not allow <P align=justify>
and changes each occurrence back to <P>.... Bummer... I
have to re-edit all the source by hand again. If I thought there was
some advantage to using Composer, rather than hand writing my HTML I
guess I would write a little program to search HTML files for <P>
and replace with <P align=justify>. But this is not the
only short coming of HTML wysiwyg editors. They just don't seem able
to do exactly what I want, how I want.
OK in fairness I am now impressed with StarOffice! Although there
is no button to give full justification, it is easy to edit the Text
Body style so that full justification is automatic. It is also
easy to automatically indent the first line of a paragraph, set
double line spacing etc. etc. Maybe I will be converted to using a
wysiwyg editor for my HTML after all.
One feature that seems to be missing from StarOffice 5.0, is any
easy way to define lists. Tables are well supported, but lists are
not. I guess that it should be possible to define some new styles to
allow the use of different kinds of list, but one would have thought
that a button should be available for them. Also given the different
kinds of list available for HTML, one might find that the styles menu
becomes cumbersome and more difficult than it should be.
OK simple layouts are quicker with a HTML editor, but if you want
full control you have to hand edit at some point. So to my way of
thinking if you want to write good HTML you must learn HTML. It is a
very bad idea to to think you can skip learning HTML by getting an
editor that works like a word processor. You will not have the skills
you need to produce good web pages. HTML is very easy to learn. Once
you know it then you might find that Netscape or StarOffice provide
useful tools to help you. But please do not think such tools replace
the need to be able to hand code HTML.
The essential document to read if you want to produce great
Web-Pages efficiently is HTML
4.0 (W3C: HTML 4.0 Specification), this is the full Document Type
Definition for HTML and SGML. For once I have taken my own advice and
read it! The problems I mention above regarding text formatting have
all been solved for me! I look at the HTML source StarOffice has
given, whilst I am impressed, I am not happy. Again I think that an
editor like vi or emacs really is better and more
efficient than using a wysiwyg editor.
The reason is that HTML 4.0 allows the use of Style Sheets.
This article depends upon the use of a style sheet, special.css.
This is a document that says how a browser should render my document.
An important feature is that browsers that cannot display certain
things (e.g. graphics) are not disadvantaged. All browsers can access
this page in the way I intend them to. In the past authors have been
forced to use techniques to format their pages that cannot be
displayed correctly on all browsers. Propriety HTML extensions, the
conversion of text into graphics, the use of images for white space
control, the use of tables for layout and even the use of programs,
have all been used to format text, all these methods cause difficulty
for users and extra work for developers. The correct use of style
sheets avoids these problems.
Once you are familiar with the use of style sheets, it will
not matter how badly Netscape Composer performs, or how unfamiliar
you are with StarOffice, using an editor like vi, really can
be simpler than using something like Hotdog. Load my
style sheet into your favorite editor and see for yourself how
easy it is to change the look and feel of this document.
STOP PRESS.....
Even as I am writing this document, I have found yet another web browser
for linux! This one is worh some attention since it is produced by the W3
consortium, the same people who define the HTML specification. In fact
this is the browser they use to test their specification. The following text
is displayed when you start it for the first time:-
- Amaya
- is a Web client that acts both as a browser and as
an authoring tool. It has been designed with the primary purpose of
demonstrating new Web technologies in a WYSIWYG environment. The current
version implements HTML, MathML, CSS, and HTTP.
- Main Features
-
With Amaya, you can manipulate rich Web pages containing forms, tables and
the most advanced features from HTML. You can create and edit complex
mathematical expressions within Web pages. You can style your documents
using Cascading Style Sheets. You can publish documents on local or remote
servers with the HTTP Put method.
Browsing and authoring are integrated seamlessly. You can browse and edit
Web pages at the same time. For that reason, a simple click just moves the
caret to allow text editing; to follow a link, you have to double click.
- Online Manual
-
A User's Manual is available online. You can browse it with the Help menu,
which displays each section separately. You can also print it: just follow
the Online Manual link below. You'll get the front page. Then build the
whole book with the "Make book" entry from the Special menu and print the
result.
This browser certainly has some advantages. The version I have is still beta
(1.3b), so there are some short comings. I found that the File -
Open Document dialog can resize its file box so it is non-functional.
Also for some reason not all directories can appear in the directory box. At
least one can specify the required file in the URL box! The fact
that the manual does not come with the package is a definate minus for me.
What is nice about the browser is the pleasent way it renders pages. This
page, for instance, uses full text justification, Amaya can actually split
words in the traditional manner when required.
The really nice thing about this browser is the fact that you can edit files as you browse them. So if you are creating a document with many pages it is
easy to switch between them. The down side of this is that there seems to be
no way to to edit or view document source. Something that I would like to
see in other browsers is the ability to create a "Table of Contents", with
Amaya you can generate one based on the <H...> elements in your
document. This will pop up as a seperate window and allow you to easily
navigate through a document that has no links of its own.
At about 4.5 Megbytes, this is probably a very good alternative to
StarOffice if you do not have the disk space required for StarOffice. I
am certainly interested in seeing how this browser develops in the future.
If you want to give it a try you can obtain it from the Amaya homepage. Additionaly there was a review of an earlier
release of Amaya in Linux Gazette some years ago see issue 15. All I have to add to that review is that improvements must have been made. It seems the same in appearence as the screen shots show. Amaya displays the old style of Linux Gazette Contents pages quite well, but the new style in the last three or four issues is completey garbled. When Amaya starts up it no longer looks for a page on its home site, and
I have not seen it seg fault as described. On the whole it does a very good job.
The Advantage of Linux
Now I've got that out of my system I'll get on to my main point.
Drum roll please..... With linux it is simple to build a system you
can gain http access to. Trumpet fanfare please.
Why is http access to your machine important?
Even if, like me, you are a stand alone machine, with no kind of
network, it is easy to start up your favorite browser and http://
yourself. This means you can get into the wonderful worlds of cgi
scripts, client server applications, java. etc. etc. etc. Without the
need to access a 'real' network you can test any network application
you care to develop for the Internet. You can test every aspect of
your web design without wasting a phone bill. You can test
applications safe in the knowledge that no matter what mistakes are
in your code, only the machine you are using will be at risk, the
"real" network will be unaffected until you decide
your code is working correctly.
Web page design is not just about putting text/graphics and links
onto the Internet. Increasingly it is about providing good user
interfaces to network applications and providing an efficient means
of communication. In the past only the largest corporations could
afford to implement a WAN (Wide area network). Today anybody with a
modem and pc can join the Internet, or implement their own intranet
(a private network that acts in the same way as the Internet).
To illustrate my points consider the following scenario. You own a
small tobacconists and live in a village called Tiny. Because the
village is small you do not have many customers, so you don't sell
items in vast numbers. That means you do not buy in large quantities
from your suppliers and you cannot get the kind of discounts larger
shops would get. But you have many relations and friends in other,
similar villages who also run small tobacconists. If you all clubbed
together and ordered your supplies as one entity you could take the
discount advantages of bulk buying from your suppliers. The only
problem is knowing which shop needs what items at any given time. You
know that the discounts you would get would allow you to employ a van
driver to deliver to all the shops and still leave each shop a
significant saving.
How can web design under linux help you solve this problem?
The 'man with a van' needs information, what to buy in what
quantity and where to deliver it. This sounds like a classic database
application. Linux offers many sql database solutions. We want to
keep costs to a minimum, we also want to maximize security and
reliability. So good choices might be ingres or postgreSQL. If we
look at these DBMS's we find that postgreSQL comes with a java
interface. So lets say we design a suitable database with postgreSQL.
This database will be held on a box that will be our server.
What we need is the ability for each shop to communicate with the
server to tell it what stock we need to buy in. Shop keepers do not
have to be computer literate. They also do not want to spend much
money on computer systems. At least at this time it is unlikely that
they could be persuaded to learn a UNIX operating system like linux.
Cheap boxes already have Windows. An ideal solution is one where each
shop can dial into the server, the manager can start up his/her
favorite browser and use it to enter information to the server. It
should not matter what operating system each shop uses.
What does our server need to do?
The first thing is to get Apache set up and running. Apache is a
web server and comes with most if not all linux distributions as
standard. What is not always clear is how to set it up correctly.
This is something an installation program cannot do (easily) and
needs to be done by hand. It is Apache that allows us to http
ourselves. Of course, we will also need to allow remote machines to
dial into our server, but that is a matter outside the scope of this
document.
Once Apache is running we can design a java application to act as
a user interface to our database.
We can test both the client and the server parts of our
application on our server until we are certain it performs as
required.
Then all we need to do is allow the shopkeepers to be able to dial
into the server and gain access via their browsers to the java
database interface.
The wonderful thing is that at the test stage we only need to use
one linux box which acts as both client and server at the same time.
Setting up Apache
If you do not already know, then Apache is one of the most common
http servers in existence. A great many ISP's (Internet Service
Providers) use Apache to give their clients (i.e. You) access to the
world wide web.
This document does not attempt to address the requirements of a
true Internet or intranet server. All I am concerned with here is
getting Apache up and running on a standalone machine so that
client/server software can be tested. In particular I am not
concerned with security issues here. If you do not intend to have a
permanent network connection then all should be well. If you intend
other machines to have access to your http server then you should
read all the relevant documentation. Complete configuration of Apache
can be a very complex issue which does not fall within the scope of
this document.
Modern Linux distributions, such as S.u.S.E., have special
requirements for setting up Apache correctly. To avoid confusion
please read the documentation that came with both your linux
distribution and your Apache distribution. The following steps will
work for any Linux distribution, but be warned, if your distribution
has special requirements I cannot be responsible for getting your
system startup files in a mess.
For instance I shall describe how to start Apache automatically at
boot time by adding a line to your /etc/inittab. Whilst some
Slackware users will benefit from this approach S.u.S.E. users should
find that it is better to edit their /etc/rc.config file in the
appropriate manner.
Preparing your machine for Apache
These steps will prepare your machine for the installation of
Apache. You might find that Apache is already installed, following
the above steps will not hurt such installations.
- Make certain you have set your /etc/HOSTNAME
correctly. I call my machine Hawklord
- Create a new account for the httpd
administrator. I use the user wwwrun, whose primary group is
nogroup (65534).
- Edit your /etc/hosts to reflect the name
of your machine. I have the entries
127.0.0.1 localhost
127.0.0.2 Hawklord.Varteg Hawklord
- Edit your /etc/hosts.allow I have
ALL: 127.0.0.1
ALL: 0.0.0.0
ALL: localhost
ALL: Hawklord.Varteg
If Apache is not already installed, find a pre-compiled version
and install it as per the instructions. You should find that
configuration files are placed under /etc/httpd, and other
files are installed under /usr/local/httpd.
The directory /usr/local/httpd/htdocs should contain the
Apache user manual in html format. Actually this directory will
become the root directory of our http site, so you may want to move
this documentation elsewhere eg. /usr/doc/Apache.
Plan your http site
When you log into a http site, eg http://linux.org, you
find yourself at the root of what can be a very complicated directory
structure. You can think of a http site as being a file system just
like your own root file system. Whilst it is true that to a user the
http site will look like a regular file system, the reality on the
servers hard disk(s) can be very different. It is important to
understand the differences and use them to your advantage.
On my system the document root is at /usr/local/httpd/htdocs, and
this is the directory a user lands in when they access
http://Hawklord.Varteg. But there is only one file and no
sub-directories on my hard disk. I only keep index.html in the
physical location /usr/local/httpd/htdocs. All the documentation
users can access is held in other locations on my hard disks.
Looking again at /usr/local/httpd you should find other
sub-directories, in particular cgi-bin and icons. These directories
should seem to be located under your document root because they will
contain files that should be available to any html file on your site
that requires them. Though a user should not be able to directly
access these directories. Much of my documentation is under /usr/doc,
so I make that directory appear as /doc to the http server.
What this means is that you can store all your documentation on
the server in locations that seem logical to you, you do not need to
copy files or even make symbolic links to /usr/local/httpd/htdocs.
Instead plan how you want your documentation to appear to a user.
Also you can have directories that users cannot directly access, but
which html documents can access.
For instance, the directory /usr/doc/ contains
Linux_gazette Howto Ldp java-documentation
I also want to access files under /usr/hobbies/literature and
/usr/src/java/applets
I want my site to have the following structure:
/ ---> cgi-bin
docs ---> Linux_gazette
Howto
Ldp
java-documentation
literature
icons
java_applets
Planning your http site in this way will save you headaches in the
future!
httpd.conf
/etc/httpd/httpd.conf is the main configuration file for
Apache. Some versions of Apache and/or Linux distributions recommend
that all configuration information is kept in this file. Other
versions recommend that you use all three files I shall mention
below. If you want to keep all information in one file, simply put
all the information in one file, there is no real difference between
the two methods. You will find that the example files will contain
sufficient comments to enable you to make the best choices for your
system. I am only going to describe the changes you need to make to
get Apache to work for you. Careful reading of the files will let you
configure Apache better for your needs.
I am aware that a TCL configuration utility called Comanche exists for Apache.
However, this is still in an early stage of development, so I do not
recommend it for beginners. I found in practice the utility would not
function correctly if you use only httpd.conf to configure
your system. However it could prove useful for experimenting with different
configurations.
For each line in the configuration files you can assume that
your example file has a correct or sensible entry, unless I
specifically mention it. Back up the examples before you make any
changes!
- ServerType standalone.
-
Please use standalone unless you know exactly what you are doing.
-
Port 80
-
Unless you have changed something this is correct, so do not change
it.
-
HostnameLookups on
-
Again, it is probably a mistake to change this unless you know
otherwise.
-
User wwwrun
-
This entry should refer to the user we set up above to be the httpd
administrator.
-
Group
-
This entry should refer to the primary group you defined for the
httpd administrator.
-
ServerAdmin root@localhost
-
This is the address Apache will use to send e-mails with details
about problems with the server. Using localhost rather than
Hawklord.Varteg seems to be more reliable.
-
ServerRoot /usr/local/httpd
-
This should point to the location you installed Apache's main files.
By default this is /usr/local/httpd
-
ServerName Hawklord.Varteg
-
This should be the fully qualified domain name of the server. It
should be the same as the entry you made in /etc/hosts.allow
and /etc/hosts above.
-
Logs
-
Entries concerning log files should probably be left as they are
until you feel confident about changing them. Though you might want
to experiment with the loglevel entry if you
experience problems.
srm.conf
This file contains site specific information. It is where we
define how our site will look to a user.
- DocumentRoot
-
should refer to the directory on our hard disk that will be the root
directory of our site. For our example this is
/usr/local/httpd/htdocs
-
DirectoryIndex
-
is the name of the file that should be loaded by a browser when a
user enters a directory without specifying a filename, e.g.
http://Hawklord.Varteg/ or http://Hawklord.Varteg/docs/.
index.html is a sensible default.
-
Alias .....
-
Each line starting Alias will define a virtual directory on
our system. For the example above this should include:
Alias /cgi-bin/ /usr/local/httpd/cgi-bin/
Alias /docs/ /usr/doc/
Alias /docs/Linux_gazette/ /usr/doc/Linux_gazette/
Alias /docs/Howto/ /usr/doc/Howto/
Alias /docs/LDP/ /usr/doc/LDP/
Alias /docs/java-documentation/ /usr/doc/java-documentation/
Alias /docs/literature/ /usr/hobbies/literature/
Alias /icons/ /usr/local/httpd/icons/
Alias /java_applets/ /usr/src/java/compiled/
- ErrorDocument
-
Error documents are the response the server will give when the user
types a wrong URL, or tries to access a restricted file or
directory etc. Apache gives good default error documents, but you
can override this behavior and provide your own responses. I keep my
error documents in the directory /usr/local/httpd/error
access.conf
This file contains permissions for our sites directories. If. when
you test your configuration by starting httpd and pointing
your browser to (eg.) http://Hawklord, or http://localhost
(both will work for the above example), you get a file access error
you will need to alter this file. Each directory in your site should
have its own entry.
By default Apache has a very restricted set of permissions for the
root directory, I have found that changing to:
<Directory />
Options All
Order allow,deny
Allow from all
Options FollowSymLinks
</Directory>
solved some problems for me. It is important to realize that a
directory inherits its permissions from its parent directory. So if
you want to allow outside access to your site you need to take great
care when setting up your directory permissions.
Starting and Testing Apache
Once you are satisfied that you have correctly installed and
configured Apache, you will want to test it! Log into your machine as
root. At the prompt type:
#: httpd &
Now you can log into your machine as any user, start your favorite
browser and enter the URL http://localhost. If
all goes well you should load the Apache site file index.html.
That is unless you moved the Apache documentation and provided your
own index.html in /usr/local/httpd/htdocs
Once you ar satisfied that all is well, you will want to have
httpd start at system boot time. Some Linux distributions,
such as Red-Hat or S.u.S.E. will have a script to start Apache in
their init.d directory. If this is the case then you just need
to enable the script for sys V init in the normal manner.
As an alternative you can put the following line in your
/etc/inittab
ap:45:once:/bin/su --command=/usr/sbin/httpd
'ap' must be a unique identifier. '45' refers to the runlevels for
which the command will be executed. Once is probably safer to use
than 'respawn', since if there is a mistake in this line you will see
a lot of error messages ;-(
The final part of the line '/bin/su
--command=/usr/sbin/httpd', is intended to start up Apache as a
process owned by wwwrun. It would be wise to test this command before
you put it in your /etc/inittab.
Search Engines
If you have Apache running, and a large linux installation, then
you might want to consider implementing a search engine. S.u.S.E.
Linux provides htdig, in fact to
gain full benefit from the S.u.S.E. Help System you need to use
something like htdig. The only problem is the disk space you will
need. I have a 1Gig partition devoted to documentation, this may seem
a lot to many users! I have a lot of personal documentation, program
documentation (increasingly this is HTML), all issues of Linux
Gazette, Gimp documentation, java documentation etc. This takes about
500 Meg. The database htdig uses is between 200 - 300 Meg on my
system. To update the database I need 200 - 300 Meg spare under /tmp.
Actually when I update the database I change the location of /tmp
since I do not have enough space on my root partition. Now since I
have arranged all the documentation to be available to Apache, it is
all referenced in htdig's database. If I have a question about any
aspect of linux, or any of my personal subjects, all I have to do is
formulate a suitable search pattern. I cannot adequately describe the
savings in time this has given me! In the past I would have needed to
access newsgroups to find answers to my problems. With htdig I can
avoid this 99.9% of the time! Given the low cost of hard disk space,
the fact that current program documentation is usually given as html,
that most documentation of any kind is available as html, then it
makes good sense to use Apache in conjunction with a search engine in
order to have a most efficient information retrieval system.
Htdig may not be perfect, if you are used to Infoseek or lycos, it
is a bit annoying because you cannot search for a phrase e.g.
"starting the x server". Rather a document is searched for
that contains all the words you enter. An advantage is that related
words are searched for as well, e.g. if you search for 'god' you can
also get results for 'gods' and 'godly'. Once you get used to htdig
it becomes an indispensable tool. The time it saves you in looking
for information is well worth the cost in terms of disk space. (on my
system the real cost is about 250 Meg, though I need another
temporary 250Meg when re-building the database).
SGML Support
Finally I shall mention Linux's SGML (Standard Generalized Markup Language) support, this is not normally concidered part of web page design
since most home users will simpy want to be able to create their own
HTML home pages and have no other use for such documents.
However, a great many people will want to produce documents in many
formats. The same document might need to be available for publication as a book, or as an info page as well as being available as web pages. The linux
documentation project contains many documents that are available in different formats according to users needs.
SGML allows a single source to be used to produce many different kinds of
text format. The following package descriptions are taken directly from
the S.u.S.E. 6.0 distribution, though they should all be available for
other distributions:
Package "sgmltool"
SGML-Tools - a text-formatting package
SGML-Tools is a text-formatting package based on SGML (Standard Generalized Markup
Language), which allows you to produce LaTeX, HTML, GNU info, LyX, RTF, and plain ASCII (via
groff) from a single source.
This system is tailored for writing technical software documentation, an example of which are the Linux
HOWTO documents. It should be useful for all kinds of printed and online documentation.
SGML-Tools is not able to process arbitrary SGML documents; in such a case, give jade_dsl a try and
write your own DSSSL scripts (take the docbk30 package as an example).
Package "jade_dsl"
DSSSL-Engine for SGML documents
Jade is an implementation of DSSSL (Document Style, Semantics and Specification Language);
pronounce it as "dissl" -- it rimes with whistle.
It has backends for SGML, RTF, MIF, TeX, and HTML.
The parser "nsgmls" and helper tools like "sgmlnorm", "spam", "spent", and "sx" are now included in
the separate package "sp".
You'll find the documentation at /usr/doc/packages/jade_dsl/.
Package "sp"
SGML parser tools
The tools of this package provide the possibility to manage SGML and XML documents.
It contains the parser `nsgmls' and the supporting programs `sgmlnorm', `spam', `spent', and `sx'. `sx' is
useful as a converting tool from SGML to XML, the comming WWW standard. You'll find the
documentation for all the programs under /usr/doc/packages/sp/.
Package "sp_libs"
Libries required for sp and jade
Package "gf"
A "general formatter" for SGML documents
`gf' from Gary Houston is short for "general formatter", i.e., it can work on documents which use the
ISO "general" document type definition (DTD). It can convert SGML documents conforming to a small
number of DTDs into various output formats: LaTeX, ASCII, RTF and Texinfo. However not every
output format can be generated for every DTD.
Apart from the general DTD, gf supports the HTML DTD used in the WWW project and Gary's Snafu
DTD. `gf' is not intended as a flexible system for hacking up a formatter for a random DTD, but as a
usable document production system for a few DTDs.
Package "jadetex"
JadeTeX - LaTeX macros to process TeX output from Jade (jade_dsl)
With Sebastian Rahtz' macro package `jadetex' is is possible to process the output of the TeX backend
of Jade (jade_dsl). Resulting DVI files are viewable e.g., with `xdvi' or printable like any other DVI file.
I have no real experience with SGML so I will leave the appraisal of these packages to the reader. For some people these will prove indespensible tools for
producing HTML pages.
Copyright © 1999, Chris Gibbs
Published in Issue 43 of Linux Gazette, July 1999
THIS IS THE STYLE SHEET Special.css, with <PRE> tags around it
so the contents can be viewed in HTML.
P { text-indent: 1.00cm; text-align:justify }
H1 { border: solid green; background: blue; color: cyan; text-align: center }
H2 { border: solid brown; background: oldlace; text-align: left }
H2.name { border: none; background: white; text-align: center }
OL { border: solid orange; background: oldlace; list-style-type: lower-roman }
DL { font-style: bold; background: oldlace; border: solid orange }
END OF STYLE SHEET Special.css
"Linux Gazette...making Linux just a little more fun!"
Graphics Muse
|
muse:
-
v; to become absorbed in
thought
-
n; [ fr. Any of the nine
sister goddesses of learning and the arts in Greek Mythology ]: a source
of inspiration
© 1999 by mjh
|
I've
actually had a fun time putting this months column together. In the
past I had been trying to find technical issues to talk about from a layman's
point of view - graphics for the masses. This month, I just sat down
and thought about it the way I do things. I play. I find something
new and fiddle with it. If it's easy to learn and I can do something
useful with it in a few minutes, I keep fiddling. If not, I lose
interest and come back some other time, hopefully when the application
has evolved a bit more.
This month I started out
by looking for video editing software for Linux. Now, don't get your
hopes up. As with many good ideas, it started in one direction and
headed slightly off center - I didn't do a write up on video editing software.
Instead, I looked at video viewing software. This is something I
thought the average user might have real use for. But if you're still
hoping to find out what's in store for the video editing world, don't lose
hope. I plan on visiting that arena soon. We just need the
tools that are currently available to mature a little more, and we also
need a few more options to choose from for our video editing needs.
So, in this months column
you'll find:
-
Interactive Management of Image
Maps
-
Linux Video Choices: A review
of Xanim, MainView, MpegTV and RealVideo.
The companion site to
The
Artists' Guide To The Gimp.
edited by
The Graphics Muse - Michael
J. Hammel. |
|
|
|
|
Disclaimer:
Before I get too far into this I should note that any of the news items
I post in this section are just that - news. Either I happened to run across
them via some mailing list I was on, via some Usenet newsgroup, or via
email from someone. I'm not necessarily endorsing these products (some
of which may be commercial), I'm just letting you know I'd heard about
them in the past month.
|
|
NY Times: Linux Takes Prize
- In an Art Competition
"One of the top prizes in
a prestigious electronic art competition has been given to a deliberately
unusual choice: the Linux computer operating system." (free
registration required)
http://www.nytimes.com/library/tech/99/mo/cyber/articles/01linux.html |
ACIS First 3D Modeling
Engine To Offer LINUX Port
LinuxPR
Spatial Inc. a developer
of open, component 3D modeling technology and product data access, exchange,
and sharing solutions, today announced the availability of ACIS® 3D
Toolkit[tm] on Red Hat® Software, Inc.'s LINUX[tm] operating system.
This port will arrive in conjunction with Spatial's scheduled release of
ACIS 3D Toolkit 5.2 in mid June.
http://linuxpr.com/releases/32.html
XScreenSaver 3.16
jwz - June 20th 1999,
20:49 EST
XScreenSaver is a modular
screen saver and locker for the X Window System. It is highly customizable
and allows the use of any program that can draw on the root window as a
display mode. More than 100 display modes are included in this package.
Changes: Added new
demos webcollage and petri, and made it possible to use the
vidwhacker
demo in a pipeline.
New version of shadebobs,
improved image selection in webcollage, and sped it up slightly,
made configure find the right version of perl, `make clean' was deleting
some things it shouldn't and fixed a typo in the default programs list.
http://www.jwz.org/xscreensaver/
Swift Generator 0.9
Olivier Debon - June
20th 1999, 20:40 EST
Swift-Generator is a utility
'ala' Macromedia Generator. It aims at dynamically replacing texts, fonts,
sounds, images and movie clips in either Template Generator files or standard
Flash files. This allows Webmasters to create dynamic content such as stock
tickers, news tickers, weather forecasts and the like.
Changes: Text alignment support
has been added.
http://www.swift-tools.com/
gd 1.4
NevaLabs (Claudio
Neves) - June 20th 1999, 20:31 EST
gd is a library used to create
.GIF images. It has many nice features and can be used in scripts (e.g.
PHP) for dynamic image generation.
http://www.boutell.com/gd/
HP Introduces Linux based
HP VISUALIZE Personal Workstations
From NewsAlert
The HP VISUALIZE PL450 and
XL550 Personal Workstations will ship with Linux and deliver leading application
performance for popular Electronic Design Automation (EDA) software solutions
from Avant!, Mentor Graphics and Synopsys, as well as for other technical
applications.
Full
Story
tkxanim .43
AaronA - June 23rd
1999, 16:36 EST
tkxanim is a Tcl/Tk front
end to xanim which aims to provide a graphical interface that allows the
user to configure most, if not all, of xanim's options available from the
command line. Since the program is in early alpha development, only a handful
of xanim's options are present for configuration. However, more will
be added with each new release. Despite the lack of options at the time
being, the program is still very usable and visually appealing.
Changes: Added a couple minor
features (Debug Level and Animation Loops entry fields). Also cleaned up
the options box a bit.
http://members.yourlink.net/aaron/tkxanim.html
Wacom Driver for XFree86
alpha 7
Fred - June 22nd
1999, 17:01 EST
This is an XFree86 XInput
driver for Wacom tablets. It handles wacom IV and V protocols.
Changes: Corrected the init
problem on PenPartner models.
http://www.lepied.com/xfree86/
Did You Know?
...you can create
maps using an online tool? Check out Online
Map Creation (http://www.aquarius.geomar.de/omc/). You can generate
a map, download it's Postscript version and/or view and download it's GIF
version in your browser. Equidistant Cylindrical Projections are
reported to, after a little trimming, map very well to spheres.
...more information on map
projections can be found at http://www.ahand.unicamp.br/~furuti/ST/Cart/CartIndex/cartIndex.html.
...you can use the Iomega
Buz with Linux? Take a look at http://www.lysator.liu.se/~gz/buz/.
The Buz is a multimedia box that allows you to connect video and audio
inputs directly into your computer. At about $200, this is a pretty
inexpensive way to get into video editing. The bad news is that getting
it working on Linux requires some fairly technical understanding and willingness
to use command line tools (no graphical editing tools yet). This
is not for the faint of heart, the drivers required for this are somewhat
bleeding edge. You'll need to know how to compile kernels and install
drivers modules.
...there is a good
article on producing movies on LinuxPower.org. This article is
apparently going to be the start of a series of articles on producing movies
on Linux. I'll be interested to see what they say about transferring
the images to film/video (something I haven't figured out how to do on
Linux yet). This first article is fairly introductory and regular
readers of the Muse should be able to follow it quite easily. The
good news: it talks about all the tools we've talked about here in
the past - so you should already have the tools you need to get started!
...3D Life is a site devoted
to 3D character design and animation, linking many sites of artists who
deal in 3D characters. Very good gallery! http://www.danbbs.dk/~thomcold/3dlife/3dlife.htm
Q and A
Q: Anyway, I've been
experimenting with BMRT and it seems much slower than POVRay, even without
using radiosity. Using BMRT's area lights are really slow (but probably
more accurate) compared to POV's, although the difference doesn't seem
noticeable.
A: BMRT renders with
2x2 forced oversampling by default, the adaptive oversampling it uses is
not very useful except for very high numbers of samples, because it uses
stochastic sampling. 2x2 oversampling is usually sufficient, but
slows it down a lot. As to radiosity, you can start out by setting
rsamples to 1, and most of the times the 20 or less iterations are more
than enough. So try
rendrib -samples 1 1 -radio 10 -rsamples
1 -res 640 480
for a test image. Or use
the non-standard Options
Option "radiosity" "steps" [10]
and
Option "radiosity" "minpatchsamples" [1]
If you notice radiosity artifacts
(heavy banding) on large uniformly colored areas, increase the rsamples
value (this chops each face into at least this number squared patches).
If your modeller supports this you may also set the subdivision on a per
object basis using the non-standard attribute
Attribute "radiosity" "patchsize" ps "elemsize"
es "minsize" ms
For details see the BMRT documentation.
Bernd Sieker <bsieker@techfak.uni-bielefeld.de>
From the IRTC-L mailing
list
Q. I have a simple
image I made with BMRT and would like to see how it would look illuminated
with radiosity. Does anyone have any tips on using the radiosity
settings with BMRT?
For simple scenes radiosity
is quite quick, and remember that it's not dependent on the image size.
If it takes too long you can exclude certain objects from the radiosity
calculations using the non-standard attribute
Attribute "radiosity" "zonal" zonalval
Bernd Sieker <bsieker@techfak.uni-bielefeld.de>
From the IRTC-L mailing
list
Reader Mail
Seth Burgess wrote:
Regarding the user
question [in last months TheGimp.com],
there was one:
2. can the space [that Gimp
Swap files] consume be limited?
You answered:
2. Reduce the number of
levels of undo. I'm not sure if they can be turned off or not - check
the Preferences dialog.
However, if the user has
plenty of RAM, upping the tile cache size from 10MB to something larger
(say 64) should drastically reduce the swap file size as well.
And there's the obvious -
work on smaller images.
Seth
sjburges@gimp.org
'Muse:
Thanks Seth. I'm not sure why I didn't include that, but that's exactly
what I've done on my system. It's certainly faster working in memory
that with disk swap files.
Regarding the GRiNS port
to Linux (GRiNS is a Graphical SMIL editor - see Did You know in the June
1999 Muse), I asked Jack Jansen: are there any plans for a Linux
port at this time? I'd like to point my readers to resources on SMIL
for which they could make some use, and this would be an interesting start.
Jack replied:
There are definitely
plans for a Linux port, but no firm dates yet. The basic functionality
is indeed reasonably easy to port, but handling of audio and video is something
that still needs some investigation. And given that we have only
limited resources we have to prioritize the things we take on.
Jack Jansen
Jack.Jansen@oratrix.com
Paul
Took wrote
My name is paul
took, in Melbourne Australia. I recently started a course with interim
technology (formerly computer power) and came across Graphics Muse. I'm
considering doing a second course at another college which involves web
page design (HTML/Javascript etc.) and graphic design/animation (use of
Adobe, Photoshop etc.)
In your expert opinion: is
it worth doing a structured course like this or buying a couple of web
design books and learning at home??
'Muse:
This is highly dependent on your own motivation and learning habits.
I, personally, learn much more on my own than in a class, but often take
a class when just starting a new topic to get me pointed in the right direction
(like photography, which I just got into recently).
HTML is easy enough to learn
on your own - there really isn't that much too it. If you need to
learn a slew of specific applications it often helps to take a class (it's
often harder to learn to use the applications than just writing the HTML
yourself). Java is a language unto itself and I'm certain a structured
course would help. Design animation as a class covers a very broad
range of topics - colors, structures, paint and animation techniques, procedural
animation, etc. That's not a class, really - it's a whole degree.
Using Photoshop or some other specific tool is like what I said previously,
it helps to take a class if the tool is sufficiently complex. I don't
think Photoshop is hard to learn (the Gimp is easier - you could always
buy my book on how to use it, of course). But learning what buttons
do what functions in only a small part of the job. The bigger part
is how to use those buttons creatively to produce interesting effects,
sometimes to the point of being able to reproduce the effect quickly (like
drop shadows for logos, which is a very common requirement from clients)
and in the same manner each time.
If you're just learning web
design for fun, or even for your business, and are confident in your own
ability to teach yourself new topics, then skip the class. But if,
like me, you find a little push in the right direction helps, then take
the structured class.
Of course, if it makes any
difference, I've never taken any classes on HTML or computer graphics.
It's all self taught (except for some minor OpenGL experience, but I never
really used what I learned).
Hope that helps.
Now, on the subject of image
resolution and printing, I found this post from Brian Reynolds on one of
the Gimp mailing lists:
David Fokos has
written a very good paper on creating half-tone digital negatives for contact
printing. You can find it at Bostick & Sullivan's web site at:
http://www.bostick-sullivan.com/Technical%20papers/Digital%20Info/Dave_Fokos/davetech.htm
Besides discussing all the
details about making negatives for contact printing, this paper has a very
good explanation of the resolution metrics (dpi, ppi, lpi) for the various
types of equipment used for digital input and output and how they relate
to each other. The paper assumes you are using Photoshop, but gives
general enough descriptions that you aren't tied to it (as opposed to another
book on digital negatives that assumes Photoshop is the only software available).
Brian Reynolds
reynolds@panix.com
I read the paper and Brian is
right - you can apply the digital techniques David discusses to the Gimp
just fine. You might need a bit of background on photography for
this paper, but it's well worth the read.
Interactive Management of Image Maps
One of the tools lacking from
the Linux arsenal these days is a really good interactive Web page builder.
I use Netscape Composer for all my pages, but this lacks any sort of integrated
graphics editor. You can configure it to launch an external editor,
however, and this is where the ever popular Gimp
comes in.
The Gimp is, of course, the
best raster image editor on Linux. Not only does it have support
for many different effects and filters, it also has a dynamically extendable
interface through the use of plug-ins. One of the latest plug-ins
to gain popular attention is the Image
Map plug-in from Maurits Rijk.
|
The Image Map plug-in, shown with
a sample image and the
Areas List (the list of URL links)
window disabled.
|
Image Maps, for those unfamiliar
with their use, are an HTML construct that allows an Web page author to
specify regions within a single image to be used as links to different
URLs. Regions can be specified using rectangular, oval and polygonal
coordinates. Both server and client side maps are possible, although
client-side image maps are the more popular of the two types. This
column uses a client-side image map for navigation at the top of the page
(upper left corner of the page, just below the Graphics Muse logo).
By providing a method of mapping the single image into multiple links,
image maps reduce the overhead that multiple images positioned using tables
would require.
The current version of the
Image Map plug-in is 1.1.1. This version includes recent support
for HTML onBlur and onFocus tags. Although the interface
is fairly well designed, the program currently provides no documentation.
Building from source (which is how this plug-in is distributed) is simple
enough: just unpack it and type make. There shouldn't
be any editing of Makefiles or other configuration files necessary.
After compiling you can either do a make install or simply copy
the binary (named imagemap) to your
$HOME/.gimp/plug-ins
directory
and restart Gimp. Once installed, the plug-in can be accessed via
the Filters->Misc submenu of the Image Window menu.
The interface consists of
a scrollable window on the left and the set of URL links on the right.
The scrolled window is a full size copy of the original image. Two
menu bars are provided - one using traditional pull down text menus and
the other an icon based version of the same features. An additional
icon based menu of region shapes (rectangular, oval, polygonal and so forth)
runs along the left side. The icon menus are all detachable - you
can click on the rough edged left side of each and drag it out of the main
window, although what advantage this might provide I don't know.
|
Grid
Icon
|
In order to start specifying
regions for the image map, you might first consider turning on the grid
lines. This can be done quickly using the Grid icon in the icon menu
bar, but you'll probably also want to adjust the granularity of the grid.
This can only be done by selecting Goodies->Grid Settings from the text
menus. This will open a dialog box where you can specify the width
and height of the grid boxes, the method for displaying the grids (lines,
crosses or hidden), an offset from the upper left corner in which to begin
the grid and, most importantly, whether region shapes are snapped to grid
intersections. This last item is what will make creating your image
maps rather quick and painless.
[ More
Web Wonderings ]
Linux Video Choices: A review
of Xanim, MainView, MpegTV and RealVideo.
I don't do much video work on
Linux yet. I have a sufficiently fast box for it, I just haven't
had much more than a passing interest in it since there aren't many video
editing tools available yet. Still, viewing animation's (in something
other than GIF format on a browser) or streaming video has become an important
part of the Internet in the past few months. So I thought I should
at least take a look at what tools are available from a viewers perspective.
Now, there are a probably
a couple dozen projects underway for viewing video and animations on Linux.
I can't review all of these, there just isn't enough time in the day to
do them justice. So I've chosen four viewers that I think represent
varying aspects of digital video as well as varying support for different
video formats. The four tools are Xanim
by Mark Podlipec, MainView by MainConcept,
MpegTV
by MpegTV, and RealVideo from RealNetworks.
In order to test these I
decided to download a series of RealVideo, MPEG, and Quicktime files, both
with and without audio, and see how each tool that supports them performed.
For RealVideo and MpegTV, I used appropriate URLs. The test system
was configured with 256Mb of memory using a TrueColor
visual under the Xi Graphics Accelerated X server with a Matrox Mystique
4Mb video card and the commercial Open Sound System drivers for a Generic
MAD16 Pro (OPTi 82C929) soundcard. For animation's or streaming video/audio
which were used in these tests and for which I know a URL, I have provided
links to the test files. I can't post the video files here since
the Linux Gazette (which is the main location for the Muse column) gets
distributed to a lot of places that wouldn't be happy downloading 2Mb+
video files.
A note about file types
If you're not familiar with
the codec types, just look for animation files with suffices like .mov
and .anim( both are versions of Quicktime, I believe), .fli (FLI/FLC),
.ram, .rm and .rv (RealVideo files), and .mpg (MPEG animation's).
Xanim
Latest version: 2.80.1
Long before the others arrived
on the scene, Mark Podlipec's xanim was serving up video files to the masses.
Supporting AVI, Quicktime, FLI/FLC, Amiga, and JFIF file formats along
with GIF and DL Animation's as well as a number of audio formats, the X
Windows System based xanim can play just about any popular animation files
you might find on the Internet.
|
Xanim, playing an
E! Quicktime interview.
|
Xanim is provided in source
format for the main engine, with binary dynamically loadable libraries
(DLLs) provided for various codecs for which the copyright owner would
only provide information if Mark signed an NDA. In a sense, I think
Mark's solution to the proprietary vs. open problem is probably not a bad
compromise. In any case, the source is portable to many Unix (and
other) platforms. Building the source is fairly easy for Linux systems.
Unfortunately the package doesn't support autoconf based compilation,
but I'm not one to complain much about that (considering my own XNotesPlus
doesn't support it either - who has time to learn all these tools?).
Mark provides a build based around imake, which isn't too bad a substitute
for autoconf. The Imakefile only needs one modification for building
on Linux - in section IVb add this line:
EXTRA_DEFINES = -I/usr/X11R6/include/X11
This is necessary, even though
the Imakefile says it shouldn't be required, because Mark doesn't prefix
his use of the X header files with "X11/<header file>" but the standard
imake templates assume that applications do so. Since Mark apparently
does his builds on Linux too, the rest of the Imakefile should probably
work just fine as it is. You then run "xmkmf; make xanim"
to build the program. Then just copy it to an appropriate directory,
such as /usr/local/bin.
Installation, from build to running my first animation, took about 10 minutes.
The interface for xanim is
rather small, but it supports starting, stopping, rewinding and audio levels.
You can step through a video by clicking various mouse buttons in the display
window. Most of the options supported by xanim are accessible only
from the command line. You can find what options are available using
the traditional --help command
line option. There is a remote interface available that allows external
programs to control xanim and I believe there are GTK, TK and KDE based
front ends to xanim now, although I didn't specifically look for them.
Note that there is no built-in help facility to xanim. You'll need
to read the documentation or visit the Web site for details. But
for most animation's, especially on systems with TrueColor visuals (i.e.
16.7 million color displays), you simply run "xanim <filename>".
Pretty straight forward, really.
Xanim played all 14 of the
videos I tried with absolutely no problem. I tested Quicktime, MPEG,
FLI and IFF animation's. There was little jitter or no obviously
skipped frames and the sound was perfectly synchronized with the animation's
which came with audio (which, as it turns out, was just the Quicktime files).
Tests were run in both TrueColor and 256 color modes. Xanim had no
problems mapping the full color videos to the lower bit planes. In
fact, it did a better job of doing it than I could using various command
line color related options. By default xanim will loop through the
animation indefinitely. You can change this behavior using command
line options.
By supporting dynamic loading
of video codecs, Mark has made it easier for end users to add support for
any new codecs that might come along. Now you can simply download
the appropriate binary codec from his site, unpack it, and restart xanim.
Recompilation is no longer necessary. Despite it's apparent visible
simplicity, xanim is still the best all around video player for Linux.
MainView
Version 2.06
In trying to figure out a
topic for this month's Musings, I started to look around for video editing
software. I'd heard a few packages were available, but had never
tried any of them. One package I did run across was a new commercial
package (currently freely available as a beta distribution) from a German
company called MainConcept. This package included a video display
tool called MainView.
|
MainView, running an MTV
sponsored clip of a Garbage
video for their single "Happy".
|
MainView is actually an external
viewer application to the larger MainActor Video Editing system.
It can, however, be run independently of MainActor. The interface
is even more sparse than xanim's, but doesn't appear as cramped.
Run time options can be accessed through a menu which you can open by right
button clicking with your mouse over the animation window. Options
include changing the speed of the animation and various audio options.
Audio, unfortunately, didn't work at all on any of the animation's I tried.
It always played very loud and completely distorted audio. I ended
up turning audio off after testing it on all the files for audio support
so I could continue testing video playback.
Video support is much better
than audio, fortunately. All 14 of the animation's I tried played
flawlessly under a TrueColor display. When I started MainView the
very first time, I noticed that it complained about requiring the XFree86
DGA (Direct Graphics Extension) extension, but still started anyway.
The extension, it turns out, is only needed if you want to run in full
screen mode. As long as you're not trying to do that, the video portion
of MainView works fairly well.
One nice feature of MainView
is that it remembers the last directory you were in between sessions.
I like this because I can launch MainView from my FVWM2 GoodStuff bar and
have it be in a directory where I save animation files. MainView
will start by providing a file browser window from which you can select
an animation to view. It then closes the file browser and starts
the video playback window. There doesn't appear to be a way to return
to the file browser, however. That sure would make it easier to browse
through multiple video files without having to restart MainView each time.
MainView also doesn't automatically loop through videos. In fact,
I couldn't find a way from within MainView itself to get a video to loop.
MainActor does allow you to set a repeat count, but not an infinite loop.
|
The test frame displayed by
xanim. The picture here
is
a little less grainy than the
MainView display. |
MainView's version
of the test frame. The contrast is a little better
here - you can make out more
detail, but at the expense of image
quality, I'd say. |
MainActor, the Video Editor
package for which MainView works, does attempt to provide online help which
it tries to launch in a Netscape Window. The HTML help files had
been installed with the RPM distribution, but MainActor failed to get Netscape
to open the HTML files. It simply started a new instance of Netscape
(even if you already had a version of Netscape running). I had to
give a file: URL to open the
files manually.
Comparing MainView and Xanim under a
256 color display
Here are screenshots of both
xanim and MainView displaying the same frame of the Garbage video under
a 256 color display. The xanim version appears to have a little better
dithering than MainView, but if you watch the entire video with both players
you can hardly tell the difference.
Although you can currently
download this product for free, MainView and MainActor are commercial products.
The price for the product listed on the company's Web site could only be
found under a Press Release - $80US for the package without documentation,
$115US with documentation plus some other extras. The current version
is distributed in binary and is available for Linux on x86 platforms only
and only in RPM format. Recently, MainConcept announced that MainActor
would be bundled with the Linux
Media Labs LML33 Video Capture Card. To my knowledge, this
is the first bundling of a Linux oriented hardware peripheral with a Linux
specific application. Things are looking up for off-the-shelf solutions.
MpegTV
Version 1.0.9.4
As the name implies, MpegTV
only plays MPEG animation files. However, unlike the previous two
applications, MpegTV can handle both static and streaming files, both locally
and across a network. This program actually comes in two pieces -
the command line oriented mtvp program and it's GUI interface, mtv.
The latter requires the XForms library, which is not shipped with any Linux
platforms currently but is free for private use and can be downloaded from
the XForms Web site. For certain features you may also need the SDL
library as well. Both can be found via links on the MpegTV download
page. Installation instructions are not included with the downloaded
package. You have to go to the MpegTV web site to get them.
|
|
The MpegTV UI. The
control panel's volume
controls work well with
the OSS sound system I
have installed. The video
playback, however, was
a bit grainy. This was
probably the fault of the
recording and not the
player, since the other
MPEG files I tried didn't
seem to have this
problem. |
MpegTV is shareware for personal
use, with a shareware price of $10. It requires a commercial license
for commercial use. The version I downloaded would pop up the usual
annoying "please register" window common for shareware applications.
Personally, this doesn't bug me much since I don't have any problem with
people trying to sell their software. If it's worth it, I pay for
it.
Unfortunately for MpegTV,
this dialog did pose a problem. Half way through the Star Wars trailer
(which I downloaded from their site as part of my testing) the Registration
dialog popped up. At that point the sound quit and the main control
window wasn't redrawn and no longer accepted user input. The video,
however, kept playing. The only way to exit the program after this
was to use "kill -9" on the mtv and mtvp processes. Since I had to
run the program multiple times to try to get screen shots and try various
features, this bug became a real annoyance. I'm hoping that the registered
version doesn't do this (since you should never see the registration screen).
SDL - Simple
Direct Media Layer - is the same library used by Loki for their
port of Civilization: Call To Power. It provides a layer between
X applications and various low level multimedia API's, including XFree86's
DGA extension. I suspect you'll be seeing this library being used,
and required by, quite a few applications in the future. For MpegTV,
SDL is only required to run MpegTV in full screen mode. One problem
I had with this was that the SDL installation tool installs the library
under /usr/local/lib by default (you can change this during the installation
process). MpegTV requires that the library be installed under /usr/X11R6/lib.
I installed the library under /usr/local/lib and added symbolic links under
/usr/X11R6/lib. This should have worked, but for some reason MpegTV
failed to load the libraries. As far as I can tell, there is nothing
wrong with the symbolic links so I suspect that the library
must
really be under /usr/X11R6/lib in order to work with MpegTV.
the company's Web site offered
two test animation's, a short animation of bouncing boxes and an old Star
Wars trailer. Both of these played just fine. There is also
a link to a site with more links to MPEG animation's on the net.
I bounced around a few of those but couldn't find anything more interesting
than the 3 other MPEG animation's I already had. MpegTV played them
all just fine (if you ignore the Registration dialog problem). Additionally,
MpegTV can also play Video CDs, such as the video portion of music CDs.
It doesn't play DVD, however. Although my RH 5.2 system appears to
have the VCD patch applied, and xreadvcd does appear to read the video
cd contents, I couldn't get MpegTV to read the CD nor could I get xreadvcd
to write the MPEG stream to a file. There is something wrong with
my kernel configuration, apparently, so I couldn't really test the Video
CD support in MpegTV.
Interestingly enough, after
downloading the two test MPEG files from the MpegTV site and trying them
with mtv, I then went back and tried them with xanim. I couldn't
play either of them correctly with xanim. I then tried some of the
other mpg files I had used with xanim under mtv. They all played
about the same except for one - monopoly.mpg. Under xanim this played
rather slow, with distinct stoppage between frames. Under mtv this
played just fine. The frames flowed by seamlessly. So, mtv
appears to deal with MPEG files better than xanim, although mtv appears
to have some nasty bugs, at least in the unregistered version.
MpegTV will play MPEG streams
direct from the Internet if you supply a URL on the command line or through
the Play From URL option from
the File menu in the control window. I tried this with one site but
found the stream to be too slow to play interactively. After the
20 minute download, which did play while it was being downloaded even though
it looked like only one frame every so often was playing, I tried to replay
it and save it. I could do neither. I don't know if this is
a limitation in the unregistered version or not, however.
RealVideo
Linux
G2 Beta version
One of my favorite tools
to be ported to Linux is the RealVideo G2 player from RealNetworks.
While working for Samsung in Dallas, and forced to use an NT box for email,
I got hooked watching and listening to Bloomberg TV financial reports.
I was able to do this only because I was stuck with that NT box (which
sat to one side and collected dust most of the time) and G2 didn't run
on my Solaris box. Now that I'm working from home, I'm thrilled to
be able to view this same content from my Linux box.
|
The G2 Player, running a clip from
the Wild, Wild West. Note that the video
window includes links to other movies.
These are all part of the new SMIL
(Synchronized Multimedia Integration
Language) page design supported by the G2.
|
The G2 player can play any
of the streaming video and audio formats from RealNetworks. This
includes the older .ram and .rm audio files as well as the new Synchronized
Multimedia Integration Language - SMIL, yet another of the HTML-style formatting
languages - files, suffixed with .smi.
It doesn't play MPEG or any of the formats the other players support, however.
So you need to find sites that support the RealNetworks formats.
Fortunately, these sites abound on the Internet. RealNetworks was
one of the first to provide a usable streaming media format for the Internet
and it caught on very fast. Many news sites support RealVideo these
days.
The Linux version is still
in beta, at least to my knowledge. I've had no serious problems with
it although sometimes the video window can get visual artifacts when you
switch sites. It also had a few problems with refreshing the video
window when another window had partially hidden the G2 player, and then
the other window was moved away. These problems only happened with
static parts of the video window - any animation's forced window updates
and so they appeared to work just fine.
Playing of the streams has
been pretty good. I think I have more problems with network delays
than with playing the streams. The G2 player comes with a host of
options to configure the player for best performance. It can work
behind firewalls if you're network administrator permits passing the right
port numbers.
The player itself is made
up of a primary video display window surrounded by associated controls.
The NT version includes a scrolling icon-based playlist on the left of
the video window but the Linux version lacks this currently. I don't
think there are any serious technical reason they can't add it in the future,
though. Information about the clip currently playing can be scrolled
through the Clip Info window, or this can be disabled to help increase
performance just a bit. The audio support is very good - RealNetworks
chose to allow skipped video frames in exchange for a fluid audio performance.
I find that appealing as I often just listen to the streams while doing
other work.
Streaming video is still
a jumpy affair. You don't get the smooth frame-by-frame animation's
you get when playing an MPEG or Quicktime file directly from your hard
disk. But the format does support moving anywhere within the stream
at any time. I can jump to the middle and pick up playing from that
point if I choose. Or I can rewind or start over at any point within
the currently playing stream. And I don't have to wait for the entire
file to download in order to do this. I still think streaming audio
is a better media for this technology due to general limitations in bandwidth
to the user, but once we all have higher speed connections, streaming video
will offer choices that TV and cable never could.
Other tools
One other player I tried
was XMovie.
This is a program that runs off of a library built to run Quicktime movies.
It's part of a series of tools that include another video editor called
BCast2000. However, there are licensing limitations with Quicktime
that XMovie can't get around. I don't know if that was the reason
or not, but XMovie couldn't play any of the animation's I tried.
Whatever codecs it supports, it's not the ones being used in the video
files I found on the Internet.
Places to find video files online
You can always check many
of the entertainment sites online, such as E!
Online, and Comedy
Central's download site. Additionally, you can find clips and
links to other online sources of video files at Jesse's
Movies, and Yahoo!'s
set of movie clip links. Streaming MPEG and MPEG files sites
can be found at MPEG.org's
MPEG Bitstreams page. RealVideo clips can be found at the
RealVideo
Showcase site and a their Real
Guide site.
Keep in mind that playing
movies like this doesn't require huge amounts of hardware - a 32Mb Pentium
133 should work just fine, although some animation's may play a little
slow and audio might not sync all that well. But you certainly don't
need the 256Mb of memory I used, nor do you need the latest CPU.
And you certainly don't need a 3D accelerated video card. These animation's
are basically all just a series of individual raster images played very
fast. It's like using a flip book of pictures - the faster you can
flip through the pages, the faster the animation appears to work.
Except on computers and with the right player, you have more control over
the speed.
I have to admit, I'm still
a big fan of xanim over any of the other players I've tried. For
95% of the animation's out there it's just the right tool for the job.
But it doesn't, to my knowledge, support streaming video/audio. Since
I don't have cable television anymore (what a waste of money that is),
I get my news and information online. I find myself listening and
even watching streaming audio and video with RealVideo quite often these
days. Since the information streams, I can leave it running while
I work and just listen to the bits and pieces of what ever interests me.
Like whether or not my shares
of Disney are ever going to go back into positive territory. Maybe
if they released all their films as streaming MPEGs....
Since I've always been a
fan of visual media, I find the opportunity to build my own webcasts rather
enticing. Streaming video and audio are the best future for online
video because they don't require the user to download the entire file to
play it. At some point in the future, I hope to be able to put together
some live interviews for webcasting, but I have to investigate what that
will cost and where it can be hosted. In the mean time, at least
I have the right tools to view other webcasts and online video.
[ More
Musings ]
A
TrueColor Visual is just the X Windows System terminology for a display
that can handle up to 16.7 million colors. Most modern video cards
can handle this, especially if you have 2Mb or more of video memory on
the card.
The following links are
just starting points for finding more information about computer graphics
and multimedia in general for Linux systems. If you have some application
specific information for me, I'll add them to my other pages or you can
contact the maintainer of some other web site. I'll consider adding other
general references here, but application or site specific information needs
to go into one of the following general references and not listed here.
Future Directions
Next Month: A return to
3D Modellers.
Let
me know what you'd like to hear about!
Copyright © 1999, Michael Hammel
Published in Issue 43 of Linux Gazette, July 1999
|
|
Disclaimer:
Before I get too far into this I should note that any of the news items
I post in this section are just that - news. Either I happened to run across
them via some mailing list I was on, via some Usenet newsgroup, or via
email from someone. I'm not necessarily endorsing these products (some
of which may be commercial), I'm just letting you know I'd heard about
them in the past month. |
|
|
Recent
Blender News from June 6 1999
- Blender at SIGGRAPH 1999
NaN will give the first
public presentation of Blender at the world's most famous CG show, this
year in LA, august 10-11-12. Visitors will get a sneak preview
of the 2.0 Game-Blender.
http:/www.siggraph.org/s99/
- Complete Key features
Blender 1.63 now has radiosity,
environment mapping and DXF output included as C-key features. Version
1.64 will have a text editor (free versions too). We expect to introduce
Python scripting in V 1.65.
Check out http:/www.blender.nl/complete/
- Linux 3D h/w acceleration
coming?
We hope to demonstrate the
first accelerated Linux Blenders at Sig '99. There's still not a
working version here... patience!
-Ton-
MpegTV
Player (mtv) 1.0.9.8
Kerberos - June 27th
1999, 15:06 EST
MpegTV Player (mtv) is a
real-time software MPEG-1 Video+Audio Player and VCD Player. It supports
full screen mode, can play from file, pipe, network URL, or Video CD.
http://www.mpegtv.com/download.html
gPhoto
0.3.3
Paul S Jenner - June
28th 1999, 12:40 EST
gPhoto enables you to take
a photo from any digital camera, load it onto your PC running a free operating
system like GNU/Linux, print it, email it, put it on your web site, save
it on your storage media in popular graphics formats or just view it on
your monitor. gPhoto sports a new HTML engine that allows the creation
of gallery themes (HTML templates with special tags) making publishing
images to the world wide web a snap. A directory browse mode is implemented
making it easy to create an HTML gallery from images already on your computer.
Changes: Various bug fixes
http://www.gphoto.org/
GIMP
Imagemap plug-in 1.1.1
Maurits Rijk - June
28th 1999, 12:38 EST
The GIMP Imagemap plug-in
enables The GIMP (GNU Image Manipulation Program) to create clickable imagemaps
in CSIM, CERN or NCSA format.
Changes: Fixed serious bug
that made version 1.1 segfault at start-up.
http://home-2.consunet.nl/~cb007736/imagemap.html
Impress
Follow-up
Chris Cox dropped me a note
to clarify a few points from my Impress article last month:
My permanent email is cjcox@acm.org,
not ccox@acm.org (hope ccox@acm.org doesn't get too much mail).
The Dinosaur is Steve Cowden's
dinosaur he did using Aldus Freehand. It's copyrighted....I tried
to contact him about using it....hope there's no problem. In the
impress_complete package there's a tool called epsfilt and one called pstoedit
(you can actually download the latest copy from its home site....it has
my mods already). You can take EPS to Tk using these tools:
$ epsfilt <myfile.ai >myfile.eps
# imperfect tool, may have to hand edit!
$ pstoedit -f tk myfile.eps myfile.tk
Then just open the myfile.tk
in ImPress. ImPress doesn't handle clipping regions though....so
the neat dithering stuff you find in commercial packages won't work.
Larry Ewing's penguin was
converted to Postscript by somebody (?). I have since imported a
better one by using Adobe Streamline running under Wine to convert the
actual raster penguin to vector format. The postscript one scales
better than the one converted from the raster image though.
Another thing you might want
to try (though people question its practical implications) is to download
the Tcl/Tk plugin from www.scriptics.com
and
install it into a Netscape browser under Linux. Then edit the plugin.cfg
file as indicated in the documentation to allow you to load a tclet from
www.ntlug.org
and
you can then execute the demo showing a document being retrieved off the
web for editing inside a web browser. It can be saved to any local
disk (which could be a samba mounted area for example). (there are
some Netscape bugs which prevent "saving" from working real well)
Thanks for taking the time
to look at it,
Chris Cox
With the grid turned on you
can create rectangular, oval or polygonal areas that are snapped to the
grid. With any of these shaped areas you can edit the attributes
of the area using the Edit->Edit Area Info menu option. This option
opens a dialog with three pages: Link, Shape, and JavaScript.
The Link page allows you to specify what URL the region should link to.
With the 1.1 release, you can now drag from Netscape's Location icon directly
into the URL field of this page and the link will be dropped in for you.
|
The Selection portion
of the main
dialog. Notice
the URL #'s. The
higher the number, the
higher the
precedence that area
takes for
regions that overlap.
|
The Shape page will allow you
to edit attributes of the shape itself - height, width, location of vertices,
radius and so forth. The JavaScript page allows you to specify 4
types of JavaScript event handlers: onBlur, onFocus, onMouseOver
and onMouseOut. The text input regions for these is a little small
- only one text line. But the line can go on (apparently) indefinitely.
To create a new rectangular
or circular shaped area, click once to drag the shape then click again
to anchor it. Doing this opens the area settings dialog so you can
specify the URL to associate with the area. The polygonal area shape
works similarly, except that a double click is required to end the shape
and open the attributes dialog. Additionally, with polygonal shapes
a left mouse button click will anchor a new vertices for the shape.
A right mouse button click will delete the vertices in reverse order.
To edit the shapes, click
on their URLs in the Selection window or click on the shapes outline while
the Select Existing Area button (the button with the arrow along the left
side of the dialog window) is enabled. Note that when you edit the
shapes size by dragging one of the handles on the shapes outline that the
snap to grid function is no longer in effect. I don't know if this
was intentional or not, however. Don't be suprised to see this change
to match the current grid settings in later releases.
Once you've set the URLs
for shapes, you can change their positions in the map. The lower
in the list the higher precedence that area takes. This is important
for areas which overlap. Notice in the example of the Selection window
that there are 4 areas defined. Area 4 will take precedence over
area 3 any place the two areas overlap.
Now that you have a number
of areas defined, what does the HTML code for this image map look like?
Here is the source for the example at left:
<IMG SRC="/home/mjhammel/src/graphics/scenes/stock/ttu-ontour-97.pnm"
WIDTH=300 HEIGHT=359 BORDER=0 USEMAP="#">
<MAP NAME="">
<!-- #$-:Image Map file created by GIMP Imagemap
Plugin -->
<!-- #$-:GIMP Imagemap Plugin by Maurits Rijk
-->
<!-- #$-:Please do not edit lines starting with
"#$" -->
<!-- #$VERSION:1.1 -->
<!-- #$AUTHOR:Michael J. Hammel -->
<AREA SHAPE="RECT" COORDS="15,15,285,135" HREF="mailto:thisguy@home.org">
<AREA SHAPE="CIRCLE" COORDS="75,135,67" HREF="http://blah.org">
<AREA SHAPE="RECT" COORDS="60,285,255,345" HREF="http://blah.blah.net">
<AREA SHAPE="POLY" COORDS="285,15,195,15,195,60"
HREF="ftp://somewhere.com">
<AREA SHAPE="DEFAULT" HREF="http://www.graphics-muse.org/blah/ttu-ontour-98.jpg">
</MAP>
Notice that the source images
URL is taken to be the path to the image I've opened in the Gimp.
I looked around the plug-in but couldn't find a way to change this.
You apparently have to edit the HTML code manually. There is an option
to set a default URL, using the Info icon, but you can't change the source
reference for the image. One you have this HTML output to a
file you'll need to find some way of importing it into your real HTML file.
The Image Map plug-in does not currently allow you to place this code directly
into an existing HTML file.
Unfortunately, I found, along
with quite a few bugs with the 1.1.1 release, that the Image Map plug-in
doesn't do many of the things I would like. First, the polygonal
area tool is really difficult to use. For some reason, it won't accept
my double clicks to end a polygon shape definition unless I double click
and don't move my mouse for a split second afterwards. If I double
click and move too quickly I get all sorts of line drawings from the last
vertices created to the current mouse location. It looks something
like a star burst shape. In any case, it's not what was expected.
The unwanted star burst design will go away if you cover and then uncover
the Image Map window with another window (forcing a window update for the
Image Map plug-in). However, getting out of that mode seems to require
backing completely out of the polygon by right mouse clicking until all
vertices have been removed. At this point, the extra line drawing
seems to stop.
Another nit pick of mine
is that the up and down buttons for URLs moves the selected item to the
top or bottom of the list, not up or down one list item. I feel a
little like I'm playing the Towers of Hanoi trying to arrange the URLs.
And I can't specify the path to the image source without hand editing the
saved HTML that the plug-in outputs to file.
Zoom takes a little while
to work - it zooms the whole image and doesn't appear to let you specify
the area to focus in on. I suspect it uses it's own zooming algorithm
and not the Gimp's since the Gimp's zoom is considerably faster.
Or maybe it just takes longer to recompute image map area shapes.
I also don't like the fact that changes to width, height or other shape
attributes don't automatically update the display. I think automatic
updates should probably be a user configurable preference.
As for bugs, there were a
number that were difficult to recreate. Aside from the problem with
the polygons and double clicking, I noticed at one point that the
height of my first rectangular selection, as displayed in the settings
dialog, was only 1 pixel high. But most of the bugs I found were
minor and self correcting. None seemed to cause the final HTML output
to be corrupted in any way.
Although I might prefer changes
to certain aspects of the interface, I find Maurits' Image Map plug-in
for the Gimp to be stable, easy to use and produces syntactically correct
HTML. If you do a fair amount of image map work, or even if you'd
just like to create one just for grins, you owe it to yourself to take
a look at this plug-in. It may just easy your life just a bit.
"Linux Gazette...making Linux just a little more fun!"
Into the Belly of the Beast
ESR goes to Microsoft ... and lives to tell about it!
It was not a normal day here in Seattle. Eggs were balancing on
end. The city was shrouded in a most un-summerlike mist and fog. And
ESR was speaking at Microsoft.
That's right. Eric S. Raymond was the invited guest of Microsoft
Corporation, and gave a speech to their research group. June 21st was
indeed a freaky Summer Solstice day here in the Northwest.
Eric went into the belly of the beast ... and lives to tell about
it. He was kind enough to share his impressions of what went on, via
this e-mail interview.
Q: Can you give us a general overview of how and why you came to
be invited to speak at Microsoft's Redmond campus?
A: I was invited there by a member of one of Microsoft's research
groups that I met at PC Forum 99. She seemed OK, and offered an
inducement far more interesting than a speaker's fee (about which more
below) so I accepted.
Q: Were you offered a tour of the campus, and/or were you
introduced to any of the "big name" executives of Microsoft?
A: No campus tour, no big names. Though I suppose they might have been
watching the video feed....
Q: What was the venue like, and how many people showed up for the
event?
A: It was a small auditorium. It looked to me like about 200 people
showed up; it was standing room only, with people stacked against the
walls and sitting in the aisles.
Q: What were the general themes of your speech/presentation? How
were they received?
A: All the usual ones for anyone who has heard my talks. Better
reliability through peer review, how Linux beat Brook's Law, open-source
project ownership customs and the reputation incentive, the eight
open-source business models, scaling and complexity effects.
Q: A confidential informant tells me the event was broadcast to
all 20,000-plus Redmond employees of Microsoft over their internal
network.
This same informant also says a fair percentage of those in actual
attendance became somewhat belligerent towards you and your Open Source
message. Is this true? If so, would you mind elaborating on which parts
of your presentation they took issue with? For example, were they most
perturbed at the insinuation that Open Source products like Linux are
better in the long run than proprietary systems like MS Windows 2000?
A: Yes, there were a few belligerent types. Typical was one guy who
observed that Oracle has a partial open-source strategy, then
triumphantly announced that Microsoft's earnings per employee are
several times Oracle's, as though this were a conclusive argument on the
technical issues.
It was kind of amusing, really, fielding brickbats from
testosterone-pumped twentysomethings for whom money and Microsoft's
survival are so central that they have trouble grokking that anyone
can truly think outside that box. On some subjects, their brains just
shut down -- the style reminded me a lot of the anonymous cowards on
Slashdot.
One of the Microsoft people, who knew the faces in the audience,
observed to me afterwards that the people from the NT 2000 development
group were particularly defensive. So, yes, I think my insinuations
were perturbing.
Q: Did you notice an overall "mood" or general level of
receptivity held by attendees towards what you had to say?
A: More positive than I had expected. The flamers were a minority, and
they occasionally got stepped on by other audience members.
Q: Anything else interesting to report from your Microsoft
visit?
A: Yes. One of its co-authors gave me an autographed copy of
"The Unix-Hater's Handbook" :-) But that doesn't quite mean
what you think it does -- I had been one of the manuscript reviewers.
Q: Of course, many may gather that perhaps the most fun and
exciting aspect of your visit was your dinner with science/speculative
fiction authors Greg Bear and Neal Stephenson. Was that as fun as it
sounds to the rest of us?
A: Sure was. Those dinner plans were what seduced me into going to
Redmond, and I wasn't disappointed. George Dyson (author of "Darwin
Among the Machines", and Esther Dyson's brother) was there too. We
spoke
of many things; science fiction and AI and Turing-computability and
cryptography. Oh, and Neal solicited my advice on the proper firearm
for dealing with cougars while hiking with his kids.
Belligerent Win2k developers. An outspoken advocate of Open Source.
Put them together in a room, and what do you get? Rumor has it there
were fireworks. Who knows what galactic alignments were knocked off
kilter -- it was the Solstice, after all. We'll never know exactly what
happened over there, at least until a sympathetic mole over in Redmond
e-mails us a RealVideo/MPEG copy of ESR's speech. Illiad's
User Friendly offers us some food for thought.
Thanks very much to Eric
S. Raymond for sharing his Microsoft experience with the Linux/Open Source
community.
Update!
Matthew Dockrey
offers his eyewitness account of ESR's Microsoft speech.
Monday morning, a friend of mine at Microsoft mentioned he got a
mailing about the ESR presentation and thought he would swing by. Being
an opportunist, I convinced him to sneak me in. Luckily, they weren't
checking badges at any point. Considering how much they value trade
secrets, their security is really quite lax.
The presentation was in a conference room in Building 31 (Research).
It was far too small for the turnout, although my friend reminded me that
this was supposed to be for just the research group. Getting there 20
minutes late after missing the bus, we were left trying to catch a peek
through the crowd. There was a live video feed as well, and we ended up
watching the first half from 10 meters down the hall on someone's
computer.
The audience was a very odd mix. Most of the people seemed very
serious and were even taking notes. I did notice someone with a KMFMS
t-shirt, though. Some were very obviously hostile towards the Open
Source approach, but not all. (Not everyone who works at Microsoft
actually uses their products at home, remember.) On the way to the
presentation, I saw an office with Linux Journals and
O'Reilly Linux manuals laying about, so not everyone there is ignoring us.
Overall, it was a good presentation. I was generally impressed with
ESR's skills as an orator. He spent most of the time giving a
sociological explanation for why OSS works, or exists at all. Nothing
all that revolutionary (to us): Open Source is a variant of the
"gift-culture" that often forms when groups of people are not
greatly
bounded by material limitations (such as coastal Pacific Native
Americans and really rich people) and therefore take to giving away
wealth as demonstration of their worth. He also detailed the culture of
Open Source projects, the general patterns and taboos (a project is
owned by someone; you don't fork the project unless you have very good
reasons, etc.) and compared this to territoriality, especially the way we
view land ownership. You can homestead land (start a project), buy
land (have the previous project owner give it to you) or squat on unused
land (take over a long-idle project).
I felt the presentation lost a bit of its focus when he moved from
the abstract sociological viewpoint to actual justification for Open
Source in a business model. I think this was largely because he based
some of his arguments on sweeping claims about OSS being generally
better than proprietary, and the audience challenged this. His point
would probably have been better made without being quite so
confrontational here.
He did make a very good point that 95% of software development is for
internal use only, although there was an amusing moment when his survey of
this particular audience did not reflect this. He also touched on the
fact that most revenue from software is based in support, not the
original sale. He mentioned what happened with Zope, but failed to
pursue it. Of all the business arguments for OSS (and I admit I lean
towards RMS's moralism over ESR's practicality), this seems to be the
most relevant.
Overall, it was a very good presentation, and the audience seemed
generally receptive to his ideas. There were some good-natured laughs on
both sides, such as ESR admitting that most of the gift cultures had been
destroyed by disease, or ESR stating a desire to live in a world "where
software doesn't suck" as a valid reason for working on an OSS project. I
found it particularly amusing when, halfway through the presentation, someone
started handing out freshly printed copies of Sunday's
User Friendly comic.
Copyright © 1999, Norman M. Jacobowitz
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
XFce3: Now 100% Free Software!
The long-awaited and much-needed "third choice" in Desktop
Environments for X ...
One of the biggest debates in the Free/Open Source Software community
over the past year has been over KDE and GNOME. Perhaps the major
bone of contention between the two camps was the issue of licensing,
specifically the proprietary nature of the Qt library used by KDE.
During these debates and outright flame wars, an alternative was
lurking in the background. Called XFce, it was a lighter-weight
desktop environment. One could reasonably consider it a middle-ground
solution: more configurable than running a window manager such as
FVWM, but not the behemoth of KDE or the then-nascent GNOME.
Unfortunately, XFce suffered from the same flaw -- a fatal flaw in the
eyes of many -- as KDE: XFce was based on the Xforms library, a
proprietary widget set for the X Window System.
Well, there is now some very good news for Free Software enthusiasts!
Olivier Fourdan, author of XFce, has taken the dramatic step of
rewriting the whole project, using the GIMP toolkit. Finally, we have
what many consider the "holy grail" of desktop environments for X:
a lightweight, highly configurable, reliable, attractive and
100% free alternative to KDE and GNOME.
Recently, Olivier was kind enough to agree to an e-mail interview
and discuss these important developments.
Q: When and why did you first decide to write XFce?
A: In late 1996, I started to work as a help desk analyst. As part of
this job, I was working with HP X terms running CDE. I really loved that
environment, and tried to find something similar on Linux.
Unfortunately, the only thing I found was the commercial port of the
real CDE to Linux, and it was really much too expensive for me.
Then in early 1997, I started to play with XForms and fdesign, the
GUI designer. One real cool thing about fdesign is its ability to
generate compilable C code from scratch. The XFce project had started,
but as usual, I really didn't think it could go that far! I just started
coding a very basic toolbar with Xforms, and when I released the first
version on SunSITE (now called Metalab), people started asking for more
and more features.
Initially, XFce was just the toolbar, without the window manager and
all the goodies. In 1998, I released XFce 2.x with xfwm, the window
manager. The rest of the goodies came from release to release ...
Q: What compelled you to rewrite XFce using the GIMP toolkit? Was
it for technical reasons, licensing reasons, or some mix of both?
A: I was thinking of porting XFce to GTK+ (the GIMP toolkit) for a long
time. When the GNOME project started, somebody from the team sent me a
mail from Mexico telling me they were starting a new desktop project
with the GIMP toolkit and were looking for such a toolbar.
Unfortunately, I did not know anything about GTK+ at that time and my
skills in X programming were not as good as they are today.
Last year, when I released XFce 2.x, I talked with the people from
Red Hat to see if they could use XFce in their distribution, but they
did not want Xforms-based applications because of the license the
library uses (it's free for private use and free applications, but the
source code is not available).
As time passed, more and more projects were being based on the GIMP
toolkit. I had to make something really new with XFce, include drag and
drop, native language support, improve configurability, etc. So, at the
end of March 1999, I decided to start XFce 3.0 and rewrite it entirely
from scratch with GTK+.
Now I'm really glad I did that, XFce 3.0 is still fast and stable,
and it features all I wanted for XFce, under the GNU General Public
License, based exclusively on GNU tools (NLS, autoconf, automake, etc.)
Q: Do you know which Linux distributions ship with XFce? And do
you know of any that will now ship with XFce3?
A: I think Red Hat and SuSE both ship XFce 2.x on their additional
software packages, and Kevin Donnely has made a package for Debian. But
still, as XFce 2.x was based on Xforms, none of these distributions
include XFce in their base system. I know FreeBSD also provides XFce 2.x
as an additional package.
XFce 3.0 is now all GPL, but I guess it is still much too recent
to be included in any distribution -- although I really hope some
distribution will include XFce 3.0 in their base packages, among other
choices for the user.
Q: What do you think of GNOME and KDE, in general? Can you briefly
summarize the relative merits of each versus XFce3?
A: KDE is the first attempt to provide Linux with a fully integrated
desktop environment. I've been impressed by KDE 1.1! Unfortunately, KDE
is too close to Microsoft Windows; I really don't like the "Start
menu" style. Sometimes you have to go through several submenus to
launch what you want (but this is a matter of taste). Moreover, KDE uses a
lot of system resources. For example, I was not able to use KDE on an X
terminal through a 10MB local network, whereas XFce works like a charm in
such a configuration.
I don't know much about GNOME, as I could not make it work on my
computer. But what I saw from it was very close to KDE, so the same
remarks apply to GNOME. It seems to be so close to KDE that I don't
understand what the need was for two similar environments on Linux.
I believe the desktop environment should be made to increase
user productivity. Therefore, the goal is to keep most system resources for
the applications, and not to consume all memory and CPU usage with the
desktop environment. For example, does KDE or GNOME fit on a 1.44 MB
floppy?
GNOME and KDE both provide a lot more integrated tools than XFce
(although most of the time, separate tools are more powerful than the
integrated ones; for example, I believe NEdit is better than any
other Kedit or whatever). The exception is KFM, the KDE File Manager,
which is far ahead the best program of all in KDE, in my opinion.
Some people say XFce is for the little systems, while GNOME and KDE
are for bigger ones. I don't agree; the more memory and CPU you save for
your applications, the better it is. And if you still want to use KDE
and GNOME tools, because they are convenient for you, you can use them
under XFce, as its window manager is supposed to be compatible with
these applications, too.
Q: XFce3 -- could it be your new desktop environment?
A: If you are looking for an alternative to KDE or GNOME, I strongly
recommend investigating XFce3. It's small and efficient. It's
functional and attractive. And now, it's 100% GPL software. Olivier
has just completed an upgrade to the XFce main page. It includes links
for downloading mirrors and the HTML on-line manual for XFce3.
Hopefully, all of the distributions will start shipping XFce as an
optional desktop environment. It would be even better if at least one
of the distributions would ship XFce3 as the default option. The Free
Software community is famous for giving users a choice. XFce3 is now a
fantastic choice for people who want a free option other than KDE or
GNOME. By shipping XFce3 as a default desktop, perhaps one of the
smaller, more up-and-coming distributions could make itself stand out
from the KDE/GNOME crowd. XFce is a natural fit for any distribution
trying to make itself known as a faster, lighter-weight Linux option.
In any case, XFce3 is worth a look.
XFce3 Resources
Olivier Fourdan's XFce3 home page,
with the download section and on-line manual. Available are sources and
pre-compiled platforms for Linux and other platforms.
The GIMP Tool Kit home page, with
important information about this free library.
Special thanks go to Chuck Mead of Moongroup Consulting, who hosts and
maintains XFCE.org and the XFce Mailing List. Highly recommended
whether you are a novice or expert user. To subscribe, email
xfce-list-request@xfce.org
with the word "subscribe" (no quotes) in the subject line. Chuck Mead
is also a board member of the Linux
Professional Institute.
Copyright © 1999, Norman M. Jacobowitz
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Mark's Kickstart Examples
If this document changes, it will be available at
The Computer Underground:
http://www.tcu-inc.com/mark/articles/Kickstart.html.
- Resources.
- What is kickstart?
- Gripes and Complaints
- Cdrom upgrade example.
- Advanced -- Ftp example
- Conclusion -- it is good
- My perl script
Resources.
The Kickstart HOWTO is very very good.
- On the Redhat 6.0 cdrom, look at /doc/README.ks
- man mkkickstart
-
http://www.redhat.com/corp/support/manuals/RHL-6.0-Manual/install-guide/manual/doc129.html
-
http://www.redhat.com/mirrors/LDP/HOWTO/KickStart-HOWTO-6.html
-
http://redhat.google.com/redhat?q=kickstart&search=redhat
What is Kickstart?
One note,
I think it would be a good
if someone made a follow-up article for other Linux distributions. I would
be more than happy to help.
KickStart for RedHat makes it so you can do a quick installation of RedHat 6.0
without having to go through all the installation menus. It automates it
for you from start to finish (assuming nothing goofs up in between). This
is handy for multiple installations.
All
you have to do is create a "ks.cfg" file on the RedHat 6.0 boot disk. Then
boot off of the disk, type in the command "linux ks=floppy" on the first screen,
and if you are lucky, when it starts the installation process, it should
be able to grab that file and do the whole installation for you.
Here are the key points you need to be aware of,
- If you don't have a bootdisk for RedHat 6.0, you need to make one.
Either use "rawrite" that comes on a RedHat 6.0 cd while in DOS, or mount the
cd in Linux and assuming you mounted the cd at /mnt/cdrom and you have
a floppy disk in (that doesn't have anything important on it),
cd /mnt/cdrom/images
dd if=boot.img of=/dev/fd0
## OR if you are installing off the net
dd if=bootnet.img of=/dev/fd0
- The RedHat 6.0 boot disk is formatted as an msdos disk, thus you can
copy the "ks.cfg" file to it in Windoze or in Linux. If you need to
mount the floppy disk in Linux, try,
mkdir -p /mnt/floppy
mount -t msdos /dev/fd0 /mnt/floppy
- Kickstart can be installed using a cdrom, over the net through
ftp or nfs, and for multiple computers you can use DHCP. It has other features
as well. For this example, we will use a static ip addresses.
- It is assumed we are using standard IDE hard drives and cdroms. If you
have SCSI devices, or other weird devices, you will have to modify the
kickstart file so that it will work.
- Something weird happened on one of my installs. After installing
RedHat 60, I tried to do an upgrade and somehow it found over 100 megs
of programs to install as an upgrade even though I didn't do anything to
the system. Weird. I did it again, and it installed 115 packages which
had a total of 112 megs. I don't think it had to install those rpms again,
but that it was an automatic thing with the upgrade option , whether or
not you have those
rpms installed.
Gripes and Complaints
Well, I have some gripes and complaints. Overall, the kickstart disk is pretty
cool and has improved since 5.2, but still, it seems a little braindead
or it doesn't give you the absolute power you need sometimes.
I want the ability to shoot myself in the foot if I want to. It might sound
weird, but here are my points:
- I couldn't find a "select all rpms" option. This makes it annoying
since I have to list all the rpms. Perhaps I was blind, but I
didn't find that option.
- I can't tell it to force a graphics card and monitor settings with
a certain resolution. This is annoying. Xconfigurator doesn't work
for me half the time, and I need to configure Xwindows after an
installation. An easy way to do this, in a manual installation,
is to set the computer to
VGA 16 and to install the drivers for the true card later. If you
set it to VGA 16 and it thinks it is something else, kickstart will
error and stop the installation process and ask you for more info.
- I wish I could force the name of the computer so that it doesn't
stop and ask you what the name of the computer should be if it doesn't
find it in the DNS server. I would like the ability to shoot myself
in the foot and put in incorrect settings just because I want to.
- It is pretty stupid about making Linux partitions. It only wants
to see one primary partition and to put everything else into
logical partitions. This is silly especially in multi-boot systems.
It just grabs the rest of the hard drive space after the primary
partition and puts it all into one extended partition. I would like
the ability to specify primary or logical partitions.
It would be
nice if someone were to help make it so you can create a script
which would automate the commands for fdisk. Perhaps there is
and I just don't know about it.
- Is there a way to tell it to use a partition that is already defined?
It seems as though it only can use the partitions that it creates. It
would be nice if I could define the partitions ahead of time,
and in the kickstart disk tell it which partitions go to which
directories.
Don't get me wrong, kickstart is a cool way of doing things, I just would
like to see it brought to a different level where it is "very" cool. Cool =
give me all the power to shoot myself in the foot just so I can see what
happens. A little bit of pain never hurts anyone. Also, I am not a real
expert at Kickstart, so perhaps I just didn't catch some of the options I
am griping about. I have only been using it for about 2 months at the time
of this document.
Cdrom upgrade example
Copy what is between the lines to a file called "ks.cfg" to your boot disk.
Then, when you get to the
first screen of the Linux installation, type "linux ks=floppy". Also,
before you do this, make sure the BIOS in your computer is set to boot
off of the floppy drive.
# Copy this file as "ks.cfg" to the boot disk that comes with
# RedHat 6.0. Or make your own boot disk. Anyways, the
# bootdisk is formatted msdos, so you can use a Windows
# computer to copy this file to it. Also, when the prompt
# comes up after you boot off of the floppy disk, type
# linux ks=floppy
# and press enter.
# This is just the configuration you need to do an upgrade using a cdrom.
#
#
### Choose the most popular language in the world.
### This always upsets the French.
lang en
### Tell it to use the cdrom to get the rpms
cdrom
### Tell it to use a us keyboard
keyboard us
### Tell it this is an upgrade and not a regular install
upgrade
### Tell it to install Lilo at the master boot record
lilo --location mbr
%post
echo "Hey dude, this is an example of a post install command using echo."
echo "You probably won't be able to see it though if perl isn't executed."
PATH=$PATH;/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
export PATH
ldconfig
perl -e '$A = 50; print "\nSleeping for 20 seconds. Test variable = $A\n"'
perl -e 'sleep 20'
An installation over ftp
Well, this configuration uses ftp, and if you wanted to use nfs,
you could comment
the ftp option and uncomment the nfs option. All you need is a floppy
drive and a network card. Makes things a little easier if you can cut
out a cdrom drive in each of your computers. Also, use a 100 mbit network.
My installations using ftp were actually faster than installing off of
the cdrom when I had a 100 mbit network. A 40 speed cdrom still isn't as
good as a fast network with a few computers. A 100 mbit hub is really
cheap these days.
#----------
# Copy this file as "ks.cfg" to the boot disk that comes with
# RedHat 6.0. Or make your own boot disk. Anyways, the
# bootdisk is formatted msdos, so you can use a Windows
# computer to copy this file to it. Also, when the prompt
# comes up after you boot off of the floppy disk, type
# linux ks=floppy
# and press enter.
### Choose the most popular language in the world.
### This always upsets the French.
lang en
### Tell it what the ethernet cards settings should be
### If your nameserver 10.0.1.15 doesn't exist or doesn't
### have 10.0.1.21 listed in it, it will ask you for a name.
network --bootproto static --ip 10.0.1.10 --netmask 255.255.255.0 --gateway 10.0.1.15 --nameserver 10.0.1.15
### Uncomment this if you have nfs setup on the server
### If so, comment the "url" line.
### If you decide to use an nfs server, make sure you
### put "/home/ftp/RedHat60" in your /etc/exports file.
# nfs --server 10.0.1.15 --dir /home/ftp/RedHat60
### Make sure /home/ftp/RedHat60 exists on the server
### Also, have the cdrom mounted to /home/ftp/RedHat60 on the server.
### You can do this with
### mkdir -p /home/ftp/RedHat60
### mount /dev/cdrom /home/ftp/RedHat60
### In case you don't have a nameserver, use numbers for the url
url --url ftp://10.0.1.15/RedHat60
### Tell it to use the cdrom to get the rpms
# cdrom
### Tell it to use an Intel 10/100 EtherExpress ethernet Card
device ethernet eepro100
### Tell it to use a us keyboard
keyboard us
### Tell it to blow away the master boot record on the hard drive
zerombr yes
### Tell it to do a dumb move and blow away all partitions
clearpart --all
### Make a swap partition, and unfortunately, this will go on a
### logical partition.
part swap --size 100
### It will make a primary partition for root, 2 gigs
### I couldn't find a command to check for bad sectors. Is there one?
### I don't think "grow" will work here, unfortunately
part / --size 2000
### Make a directory /OtherDir which is at least 1 gig and grows
### to fill out the rest of the hard drive
### Since "Kickstart" is literally an unintelligent program,
### it will put this partition on a logical partition
### even though there are plenty of primary partitions to use.
part /Backups --size 1000 --grow
### Tell it to use a MicroSoft compatible mouse
mouse --kickstart microsoft --device ttyS1
### Let it know we are doing an install and not an upgrade
install
### Tell the timezone we are in
timezone --utc US/Eastern
### Tell it to use standard VGA 16, but sometimes it croaks
### at this point and asks you anyways to select a card
### I really wish you could force to install for a particular
### card so that you can "configure" Xwindows after installation
### Xconfigurator gets it wrong %50 of the time for my cards
xconfig --server XF86_VGA16
#### Give it a dumb root password
rootpw MyPassword
#### Tell it to use shadow passwording
auth --useshadow
### Tell it to install Lilo at the master boot record
lilo --location mbr
### Now let us install packages, is there a simple command for all?
%packages
### Select the packages to install, I think this is all of them
### Unlike the installation program which only installs one X Server,
### my options installs all of them in case you switch video cards,
### which I do a lot.
@ Base
@ Printer Support
@ X Window System
@ GNOME
@ KDE
@ Mail/WWW/News Tools
@ DOS/Windows Connectivity
@ File Managers
@ Graphics Manipulation
@ Console Games
@ X Games
@ Console Multimedia
@ X multimedia support
@ Networked Workstation
@ Dialup Workstation
@ News Server
@ NFS Server
@ SMB (Samba) Connectivity
@ IPX/Netware(tm) Connectivity
@ Anonymous FTP Server
@ Web Server
@ DNS Name Server
@ Postgres (SQL) Server
@ Network Management Workstation
@ TeX Document Formatting
@ Emacs
@ Emacs with X windows
@ C Development
@ Development Libraries
@ C++ Development
@ X Development
@ GNOME Development
@ Kernel Development
@ Extra Documentation
AfterStep
AfterStep-APPS
AnotherLevel
ElectricFence
GXedit
ImageMagick
ImageMagick-devel
MAKEDEV
ORBit
ORBit-devel
SVGATextMode
SysVinit
WindowMaker
X11R6-contrib
XFree86-100dpi-fonts
XFree86
XFree86-3DLabs
XFree86-75dpi-fonts
XFree86-8514
XFree86-AGX
XFree86-FBDev
XFree86-I128
XFree86-ISO8859-2
XFree86-ISO8859-2-100dpi-fonts
XFree86-ISO8859-2-75dpi-fonts
XFree86-ISO8859-2-Type1-fonts
XFree86-ISO8859-9-100dpi-fonts
XFree86-ISO8859-9
XFree86-ISO8859-9-75dpi-fonts
XFree86-Mach32
XFree86-Mach64
XFree86-Mach8
XFree86-Mono
XFree86-P9000
XFree86-S3
XFree86-S3V
XFree86-SVGA
XFree86-VGA16
XFree86-W32
XFree86-XF86Setup
XFree86-Xnest
XFree86-Xvfb
XFree86-cyrillic-fonts
XFree86-devel
XFree86-doc
XFree86-libs
XFree86-xfs
Xaw3d
Xaw3d-devel
Xconfigurator
adjtimex
aktion
am-utils
anonftp
apache
apache-devel
apmd
arpwatch
ash
at
audiofile
audiofile-devel
aumix
authconfig
autoconf
autofs
automake
awesfx
basesystem
bash
bash2
bash2-doc
bc
bdflush
bin86
bind
bind-devel
bind-utils
binutils
bison
blt
bootparamd
byacc
bzip2
caching-nameserver
cdecl
cdp
chkconfig
chkfontpath
cleanfeed
comanche
compat-binutils
compat-egcs
compat-egcs-c++
compat-egcs-g77
compat-egcs-objc
compat-glibc
compat-libs
comsat
console-tools
control-center
control-center-devel
control-panel
cpio
cpp
cproto
cracklib
cracklib-dicts
crontabs
ctags
cvs
cxhextris
desktop-backgrounds
dev
dhcp
dhcpcd
dialog
diffstat
diffutils
dip
dosemu
dosemu-freedos
dump
e2fsprogs
e2fsprogs-devel
ed
ee
efax
egcs
egcs-c++
egcs-g77
egcs-objc
eject
elm
emacs
emacs-X11
emacs-el
emacs-leim
emacs-nox
enlightenment
enlightenment-conf
enscript
esound
esound-devel
etcskel
exmh
expect
ext2ed
faces
faces-devel
faces-xface
faq
fbset
fetchmail
fetchmailconf
file
filesystem
fileutils
findutils
finger
flex
fnlib
fnlib-devel
fortune-mod
freetype
freetype-devel
ftp
fvwm
fvwm2
fvwm2-icons
fwhois
gated
gawk
gd
gd-devel
gdb
gdbm
gdbm-devel
gdm
gedit
gedit-devel
genromfs
gettext
getty_ps
gftp
ghostscript
ghostscript-fonts
giftrans
gimp
gimp-data-extras
gimp-devel
gimp-libgimp
gimp-manual
git
glib
glib-devel
glib10
glibc
glibc-devel
glibc-profile
gmc
gmp
gmp-devel
gnome-audio
gnome-audio-extra
gnome-core
gnome-core-devel
gnome-games
gnome-games-devel
gnome-libs
gnome-libs-devel
gnome-linuxconf
gnome-media
gnome-objc
gnome-objc-devel
gnome-pim
gnome-pim-devel
gnome-users-guide
gnome-utils
gnorpm
gnotepad+
gnuchess
gnumeric
gnuplot
gperf
gpm
gpm-devel
gqview
grep
groff
groff-gxditview
gsl
gtk+
gtk+-devel
gtk+10
gtk-engines
gtop
guavac
guile
guile-devel
gv
gzip
gzip
hdparm
helptool
howto
howto-chinese
howto-croatian
howto-french
howto-german
howto-greek
howto-html
howto-indonesian
howto-italian
howto-japanese
howto-korean
howto-polish
howto-serbian
howto-sgml
howto-slovenian
howto-spanish
howto-swedish
howto-turkish
ical
imap
imlib
imlib-cfgeditor
imlib-devel
indent
indexhtml
inews
info
initscripts
inn
inn-devel
install-guide
intimed
ipchains
ipxutils
ircii
isapnptools
isicom
ispell
itcl
jed
jed-common
jed-xjed
joe
kaffe
kbdconfig
kdeadmin
kdebase
kdegames
kdegraphics
kdelibs
kdemultimedia
kdenetwork
kdesupport
kdeutils
kernel
kernel
kernel
kernel-BOOT
kernel-doc
kernel-headers
kernel-ibcs
kernel-pcmcia-cs
kernel-smp
kernel-smp
kernel-smp
kernel-source
kernelcfg
knfsd
knfsd-clients
korganizer
kpilot
kpppload
kterm
ld.so
ldconfig
less
lha
libPropList
libc
libelf
libghttp
libghttp-devel
libgr
libgr-devel
libgr-progs
libgtop
libgtop-devel
libgtop-examples
libjpeg
libjpeg-devel
libjpeg6a
libpcap
libpng
libpng-devel
libstdc++
libtermcap
libtermcap-devel
libtiff
libtiff-devel
libtool
libungif
libungif-devel
libungif-progs
libxml
libxml-devel
lilo
linuxconf
linuxconf-devel
logrotate
losetup
lout
lout-doc
lpg
lpr
lrzsz
lslk
lsof
ltrace
lynx
m4
macutils
mailcap
mailx
make
man
man-pages
mars-nwe
mawk
mc
mcserv
metamail
mgetty
mgetty-sendfax
mgetty-viewfax
mgetty-voice
mikmod
mingetty
minicom
mkbootdisk
mkdosfs-ygg
mkinitrd
mkisofs
mkkickstart
mktemp
mkxauth
mod_perl
mod_php
mod_php3
modemtool
modutils
mount
mouseconfig
mpage
mpg123
mt-st
mtools
multimedia
mutt
mxp
nag
nc
ncftp
ncompress
ncpfs
ncurses
ncurses-devel
ncurses3
net-tools
netcfg
netkit-base
netscape-common
netscape-communicator
netscape-navigator
newt
newt-devel
nmh
nscd
ntsysv
open
p2c
p2c-devel
pam
passwd
patch
pciutils
pdksh
perl
perl-MD5
pidentd
pilot-link
pilot-link-devel
pine
playmidi
playmidi-X11
pmake
pmake-customs
popt
portmap
postgresql
postgresql-clients
postgresql-devel
ppp
printtool
procinfo
procmail
procps
procps-X11
psacct
psmisc
pump
pwdb
pygnome
pygtk
python
python-devel
python-docs
pythonlib
qt
qt-devel
quota
raidtools
rcs
rdate
rdist
readline
readline-devel
redhat-logos
redhat-release
rgrep
rhl-alpha-install-addend-en
rhl-getting-started-guide-en
rhl-install-guide-en
rhmask
rhs-hwdiag
rhs-printfilters
rhsound
rmt
rootfiles
routed
rpm
rpm-devel
rsh
rsync
rusers
rwall
rwho
rxvt
sag
samba
sash
screen
sed
sendmail
sendmail-cf
sendmail-doc
setconsole
setserial
setup
setuptool
sgml-tools
sh-utils
shadow-utils
shapecfg
sharutils
slang
slang-devel
sliplogin
slocate
slrn
slrn-pull
sndconfig
sox
sox-devel
specspo
squid
stat
statserial
strace
svgalib
svgalib-devel
swatch
switchdesk
switchdesk-gnome
switchdesk-kde
symlinks
sysklogd
talk
taper
tar
tcl
tclx
tcp_wrappers
tcpdump
tcsh
telnet
termcap
tetex
tetex-afm
tetex-doc
tetex-dvilj
tetex-dvips
tetex-latex
tetex-xdvi
texinfo
textutils
tftp
time
timeconfig
timed
timetool
tin
tix
tk
tkinter
tksysv
tmpwatch
traceroute
transfig
tree
trn
trojka
tunelp
ucd-snmp
ucd-snmp-devel
ucd-snmp-utils
umb-scheme
unarj
units
unzip
urlview
urw-fonts
usermode
usernet
utempter
util-linux
uucp
vim-X11
vim-common
vim-enhanced
vim-minimal
vixie-cron
vlock
w3c-libwww
w3c-libwww-apps
w3c-libwww-devel
wget
which
wmakerconf
wmconfig
words
wu-ftpd
x11amp
x11amp-devel
x3270
xanim
xbanner
xbill
xboard
xboing
xchat
xcpustate
xdaliclock
xdosemu
xearth
xfig
xfishtank
xfm
xgammon
xinitrc
xjewel
xlispstat
xloadimage
xlockmore
xmailbox
xmorph
xntp3
xosview
xpaint
xpat2
xpdf
xpilot
xpm
xpm-devel
xpuzzles
xrn
xscreensaver
xsysinfo
xtoolwait
xtrojka
xwpick
xxgdb
yp-tools
ypbind
ypserv
ytalk
zgv
zip
zlib
zlib-devel
zsh
### Anything after %post gets interpreted as a post install command
### and will be chrooted to the mount point of "/" for the
### new installation
%post
# add another nameserver
echo "nameserver 10.0.1.10" >> /etc/resolv.conf
echo "10.0.1.10 server.local server" >> /etc/resolv.conf
Conclusion -- it is good
I think the RedHat Kickstart stuff is good. I never did find out if the
other distributions have it, didn't have enough time. Oh well. It still needs
a lot of work to make it a really cool way of doing installations. The
problem is, instead of just bitching about it, if it needs work, and you like
it, contribute to the cause and help develop kickstart for RedHat or for
any other Linux distribution. I wrote this article, now, you
help out and contact the RedHat folks or other people to make the process
even more cool!
Overall, I give Kickstart method a "B" for 6.0, and a "C" for the 5.2
version. It is cool compared to the corrupted commercial alternative which
forces you to reboot 10 times before it is done installing. The potential
for Linux is amazing compared to commercial closed sourced alternatives.
When software is written not because of profit but because it is cool
and/or because people want it done right,
the long term potential far outweighs the short-term
profit-minded mentality of people who cannot write good software
or who just
want things done "just to get it to work". Kickstart has the potential to
reduce the overall cost of consulting and the time it takes to install Linux
systems on a mass scale (which benefits the novice and expert
computer consultant). It is funny to watch commercial companies who are
trying to emulate what Linux and other UNIX systems can do. I see commercial
products out there which attempt to do mass installations for closed
sourced corrupted operating systems and I laugh at all the hard work they
have to do. I want to stress something, this method I have shown today
is not the easiest method to install Linux. I will explain this in
another article someday. It will make any commercial or closed sourced
operating system look like garbage compared to Linux.
My perl script
I used this perl script to extract a list of rpms from the /RedHat/RPMS
directory on the cdrom. I only had about 6 corrections to make and figured
it would take me longer to fix the perl script that it would be to fix
the list. There has to be a simpler way of getting the list with exact
results, but often
it is just a decision between what you know works, and taking the time
to figure out a better way. It only took me 5 minutes to write this
script. Most of the time wasted was booting off of the kickstart disk
to see how many errors I got.
#!/usr/bin/perl
my @RPMS = </home/ftp/RedHat60/RedHat/RPMS/*.rpm>;
my $Dest = "/tmp/List_2.txt";
open(FILE,">$Dest");
foreach $Rpm (@RPMS)
{
## Would be easier if I had used ? instead of /
$Rpm =~ s/\/home\/ftp\/RedHat60\/RedHat\/RPMS\///;
if ($Rpm =~ /\-[0-9]+\-[0-9]+\./)
{($Rpm,$Junk) = split(/\-[0-9]+\-[0-9]\./, $Rpm,2);}
elsif ($Rpm =~ /\-[0-9]+\./)
{($Rpm,$Junk) = split(/\-[0-9]+\./, $Rpm,2);}
else {($Rpm,$Junk) = split(/\-[0-9]/, $Rpm,2);}
print FILE "$Rpm\n";
}
Mark
works as JALG hardware assistant (shorts and tee-shirt)
under Mike Hunter at
The Computer Underground
and as a professional (suit and tie) consultant at
800linux.com. In his spare time, he does volunteer stuff, like writing
these documents.
Copyright © 1999, Mark Nielsen
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Configuring XDM -- a graphical login interface for Linux or UNIX
If this document changes, it will be available at
The Computer Underground:
http://www.tcu-inc.com/mark/articles/Kickstart.html.
CHANGES:
- Changed XServers File located at /etc/X11/xdm/Xservers by adding
these lines to get 4 xdm sessions running so that 4 different people
can log in. It seems like all the neat stuff only happened on the last
session. It is probably easy to fix this. Perhaps I will mention it in
the next article.
:0 A local /usr/X11R6/bin/X :0
:1 B local /usr/X11R6/bin/X :1
:2 C local /usr/X11R6/bin/X :2
:3 D local /usr/X11R6/bin/X :3
- Resources
- What is XDM? -- the graphical login interface
- My configurations
- Conclusion
Resources
-
Chris Carlson's article in the Linux Gazette.
- man xdm
-
My old xdm cheat sheet back in 12/1996 when I was just a hacker (in the
good sense). I guess this was around right when the Gazette got started?
How time flies. I should have posted this there at that time.
What is XDM?
To put it simply, xdm is just a graphical login screen so that you
can impress your boss or friends that you don't have some boring
console to look at when your computer starts up.
It just makes Linux a little bit more cool than
someone might have previously thought.
In theory, most of configurations here should work for any Linux
distribution. This is configured for RedHat 6.0 though. RedHat 6.0 uses
gdm instead of xdm when it starts its graphical login screen. However,
I haven't got gdm to work in the exact way I want it, even though it
seems much better than xdm. Once I figure out a few things, I will
write a brief article on gdm also.
Here are some things to note ,
- If you want xdm (or gdm) to start when you computer starts, you need
to make sure this line
id:3:initdefault:
Looks like this
id:5:initdefault:
in the file "/etc/inittab". Please, whatever you do, get
Xwindows working before you set xdm to start at bootup. If Xwindows
doesn't work, xdm won't work, and that can cause problems.
- RedHat 6.0 switched to gdm instead of using xdm
which is apparent at the bottom of the
/etc/inittab with the line
x:5:respawn:/etc/X11/prefdm -nodaemon
thus, change that line to this,
x:5:respawn:/usr/bin/X11/xdm -nodaemon
- All the files I am changing are in "/etc/X11/xdm".
My config files
I am only interested in a few files, namely
/etc/X11/xdm/Xsetup_0
/etc/X11/xdm/Xresources
/etc/X11/xdm/GiveConsole
/etc/rc.d/rc.change_graphic
/etc/rc.d/rc.local
/etc/inittab <-- this was explained above
and the gif files in /etc/X11/xdm/graphics/
Here is the goal, I want to change xdm to make it so it has xeyes,
santa, a clock, a graphics image, and my choice of background color
on the desktop before someone logs in. After they log in, I want santa
to die. Cruel huh?
Okay, let us do this in order:
- Copy my graphics perl script to
"/etc/rc.d/rc.change_graphic". This changes the image which appears on
the screen. Images are stored in /etc/X11/xdm/graphics as gif files.
- Copy my kill santa perl script to
"/etc/X11/xdm/KillXsnow". This kills santa. Santa slows down the desktop.
- Copy my Xsetup script to
"/etc/X11/xdm/Xsetup_0". Programs to run with the graphical
login screen.
- Copy my Xresources script to
"/etc/X11/xdm/Xresources". How the setup of xdm should look like.
- Copy my GiveConsole script to
"/etc/X11/xdm/GiveConsole". Stuff to get executed before Xwindows
is handed over to the user. Also, changes the background image for
xdm.
- Add this command to "/etc/rc.d/rc.local".
Make sure we get a graphics image to look at when we boot up.
- Copy my
gif files to
"/etc/X11/xdm/graphics/" and issue this command on the file
tar -C / -zxvf xdm.tgz
These are just my silly images I use.
Here are the rest of my config files:
Change graphics perl script
Located at "/etc/rc.d/rc.change_graphic".
Issue the command "chmod 755 /etc/rc.d/rc.change_graphic" after it is
copied.
#!/usr/bin/perl
@Files = </etc/X11/xdm/graphics/*.gif>;
#print @Files;
$Length = @Files;
$Seconds = `date +%S`;
chomp $Second;
$Frac = $Seconds/60;
if (!($Frac > 0)) {$Frac=1}
$Random = $Frac*$Length;
($Random,$Junk) = split(/\./, $Random,2);
if (($Random < 1) || ($Random > $Length -1)) {$Random = 1}
$File = $Files[$Random];
$Rand2 = rand $Length;
($Rand2,$Junk) = split(/\./, $Rand2,2);
$Random = $Random + $Rand2;
if ($Random > $Length - 1) {$Random = $Random - $Length + 1;}
#print "$Length $Random $File\n";
if (-e "/etc/X11/xdm/xdm_front.gif") {system "rm /etc/X11/xdm/xdm_front.gif"}
if (@Files < 1)
{
## Some sort of error messege should be here.
}
else
{system "ln -s $File /etc/X11/xdm/xdm_front.gif";}
Kill Santa perl script
Located at "/etc/X11/xdm/KillXsnow".
Issue the command "chmod 755 /etc/X11/xdm/KillXsnow" after it is
copied.
#!/usr/bin/perl
### I had to add the -a option between RH 5.2 and 6.0
@Temp = `cd /proc; grep -a ^/usr/X11R6/bin/xsnow /proc/[0-9]*/cmdline`;
if (@Temp > 0)
{
$Xsnow = shift @Temp;
($Junk,$ProcJunk,$No,$RestOfJunk) = split(?/?,$Xsnow);
## I am really paranoid that I want to kill the right pid
if (($No > 0) && ($Xsnow =~ ?^/proc/$No/cmdline:/usr/X11R6/bin/xsnow?))
{
# system "echo \"Killing pid $No for Xsnow.\n\" > /tmp/1.txt\n";
system "kill $No";
}
}
Xsetup_0 script
Located at "/etc/X11/xdm/Xsetup_0".
Issue the command "chmod 755 /etc/X11/xdm/Xsetup_0". after it is
copied.
#!/bin/sh
# $XConsortium: Xsetup_0,v 1.3 93/09/28 14:30:31 gildea Exp $
/usr/X11R6/bin/xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail
#/usr/X11R6/bin/xbanner
### Santa and snowflakes
### On some installs, I am missing xsnow for some reason.
/usr/X11R6/bin/xsnow -snowflakes 50 -santa 2 -unsmooth &
### Load the random image
/usr/bin/X11/xloadimage -onroot -at 1,210 /etc/X11/xdm/xdm_front.gif -border brown &
### A clock would be nice to see
/usr/X11R6/bin/xclock -digital -update 1 -fn -adobe-times-medium-i-normal--34-240-100-100-p-168-iso8859-1 -geometry +410+1 &
### Let us turn on xeyes
/usr/X11R6/bin/xeyes -geometry +410+100 &
Xrsources file
Located at "/etc/X11/xdm/Xresources".
Issue the command "chmod 755 /etc/X11/xdm/Xresources" after it is
copied.
! $XConsortium: Xresources /main/8 1996/11/11 09:24:46 swick $
xlogin*login.translations: #override\
CtrlR: abort-display()\n\
F1: set-session-argument(failsafe) finish-field()\n\
CtrlReturn: set-session-argument(failsafe) finish-field()\n\
Return: set-session-argument() finish-field()
xlogin*borderWidth: 3
xlogin*geometry: 400x200+1+1
xlogin*greeting: CLIENTHOST
xlogin*namePrompt: login:\040
xlogin*fail: Login incorrect
#ifdef COLOR
xlogin*greetColor: CadetBlue
xlogin*failColor: red
*Foreground: black
*Background: #fffff0
#else
xlogin*Foreground: black
xlogin*Background: white
#endif
XConsole.text.geometry: 480x130
XConsole.verbose: true
XConsole*iconic: true
XConsole*font: fixed
Chooser*geometry: 700x500+100+100
Chooser*allowShellResize: false
Chooser*viewport.forceBars: true
Chooser*label.font: *-new century schoolbook-bold-i-normal-*-240-*
Chooser*label.label: XDMCP Host Menu from CLIENTHOST
Chooser*list.font: -*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
Chooser*Command.font: *-new century schoolbook-bold-r-normal-*-180-*
GiveConsole file
Located at "/etc/X11/xdm/GiveConsole".
All you have to do is add "/etc/X11/xdm/KillXsnow & " as the first command
in the file. Mine looks like this,
#!/bin/sh
# Assign ownership of the console to the invoking user
# $XConsortium: GiveConsole,v 1.2 93/09/28 14:29:20 gildea Exp $
# By convention, both xconsole and xterm -C check that the
# console is owned by the invoking user and is readable before attaching
# the console output. This way a random user can invoke xterm -C without
# causing serious grief.
/etc/rc.d/rc.change_graphic &
/etc/X11/xdm/KillXsnow &
chown $USER /dev/console
/usr/X11R6/bin/sessreg -a -w "/var/log/wtmp" -u "/var/run/utmp" \
-x "/etc/X11/xdm/Xservers" -l $DISPLAY -h "" $USER
/etc/rc.d/rc.local file
Add this to the /etc/rc.d/rc.local file.
/etc/rc.d/rc.change_graphic
Conclusion
XDM is pretty cool. This is the old way of doing things. I recommend
going to gdm or something else. For XDM, I give it a B-. It just lacks
some of the stuff I always wanted to see that gdm has.
I will explain GDM next time. Gdm has
the nice capability of letting you choose which desktop environment
you want. In RedHat 6.0, you can choose KDE, GNOME, or other desktop
environments when you login, which is pretty cool. Overall, I give gdm
a B+, and if it becomes better documented, an A. Again, I hope to make
an article about gdm for the August issue.
Mark
works as a receptionist (shorts and tee-shirt)
under Mike Hunter at
The Computer Underground
and as a professional (suit and tie) consultant at
800linux.com. In his spare time, he does volunteer stuff, like writing
these documents.
Copyright © 1999, Mark Nielsen
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Syslog-ng
1. Introduction
One of the most neglected area of Unix is handling system events. Daily
checks for system messages is crucial for the security and health conditions
of a computer system.
System logs contain much "noise" - messages which have no importance - and
on the contrary important events, which should not be lost in the load of
messages. With current tools it's difficult to select which messages we are
interested in.
A message is sent to different destinations based on the assigned
facility/priority pair. There are 12+8 (12 real and 8 local) predefined
facilities (mail, news, auth etc.), and 8 different priorities (ranging from
alert to debug).
One problem is that there are facilities which are too general (daemon),
and these facilities are used by many programs, even if they do not relate
each other. It is difficult to find the interesting bits from the enourmous
amount of messages.
A second problem is that there are very few programs which allow setting
their "facility code" to log under. It's at best a compile time parameter.
So using facilities as a means of filtering is not the best way. For it
to be a good solution would require runtime option for all applications, which
specifies the log facility to log under, and the ability to create new
facilities in syslogd. Neither of these are available, and the first is neither
feasible.
One of the design principles of syslog-ng was to make message filtering
much more fine-grained. syslog-ng is able to filter messages based on the
contents of messages in addition to the priority/facility pair. This way only
the messages we are really interested in get to a specific destination. Another
design principle was to make logforwarding between firewalled segments easier:
long hostname format, which makes it easy to find the originating and chain of
forwarding hosts even if a log message traverses several computers. And last
principle was a clean and powerful configuration file format.
This article tries to give you an overview on syslog-ng's internals, for
more detailed information see
http://www.balabit.hu/products/syslog-ng
and select the documentation link.
2. Message paths
In syslog-ng a message path (or message route) consist of one or more
sources, one or more filtering rules and one or more destinations (sinks).
A message is entered to syslog-ng in one of its sources, if that message
matches the filtering rules it goes out using one of the destinations.
2.1. Sources
A source is a collection of source drivers, which collect messages using a
given method. For instance there's a source driver for AF_UNIX, SOCK_STREAM
style sockets, which is used by the Linux syslog() call.
Different platforms use different means of sending log messages to the
logging daemon, and to be useful on all operating systems, syslog-ng has
support for the most common methods. Tested support exists for Linux, BSDi,
experimental support exists for Solaris (as of version 1.1.22)
2.2. Destinations
A destination is a message sink, where log is sent if filtering rules match.
Similarly to sources, destinations may include several drivers which define
how messages are dispatched.
For instance there's a file driver, which writes messages to the given file,
but support exists to send messages to unix, udp and tcp sockets as well.
2.3. Filters
Filters perform log routing inside syslog-ng. You can write a boolean
expression using internal functions, which has to evaluate to true for the
message to pass.
An expression may contain the operators "and", "or" and "not", and the
following functions:
- facility()
- level()
- program()
- host()
- match()
Each of the above functions check the corresponding field of a log message
for matching (e.g. program() checks whether the given program sent the message,
or not). You can use extended regular expressions for matching.
2.4. Log statements
Now you have sources, destinations and filters. To connect these together
you need the log statement:
log { source s1; source s2; ...
filter f1; filter f2; ...
destination d1; destination d2; ... };
Messages coming from any of the listed sources, and matching against all
the listed filters (which effectively ANDs them) are sent to all of the listed
destinations.
3. Example configuration
This configuration file shows the possibilities and features of syslog-ng.
It receives messages from the network, and also handles local messages. Three
distinct output files are used: one for the messages from sendmail, a second
for messages coming from host1, and a third for messages coming from host2.
options { long_hostnames(on); sync(0); };
source src { udp 0.0.0.0,514; unix-stream /dev/log; internal; };
filter f_sendmail { program("sendmail"); };
filter f_host1 { host("host1"); };
filter f_host2 { host("host2"); };
destination sendmail { file /var/log/sendmail; };
destination host1 { file /var/log/host1; };
destination host2 { file /var/log/host2; };
log { source src; filter f_sendmail; destination sendmail; };
log { source src; filter f_host1; destination host1; };
log { source src; filter f_host2; destination host2; };
4. References
Syslog-ng is a product of BalaBit Computing, and is distributed under the
GPL. If you are interested, please visit
http://www.balabit.hu.
Copyright © 1999, Balazs Scheidler
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Artificial Intelligence on Linux
Artificial Intelligence is a very controversial subject, but the
way I will approach it in this article is simple and fast. The
way I have been approaching AI is not through the philosophical
or biological aspect, but just as a computational subject.
When humans want to fly, they don't need to study the birds to
learn how to do it, they just get into an airplane. This is my
way of approaching AI. We want to solve puzzles and games through
a computer without really comparing the way a human accomplishes
tasks differently from a computer.
For the first time in the history of my school, there was going
to be offered an Artificial Intelligence (AI) class. I was very
excited about this class because you hear a lot about AI, but you
don't really see a lot of material for it on magazines and online
articles.
Probably the greatest example of an AI application is Turing's
Test. The test consists in a person being a room with a computer
terminal, and this person would start to chat with the computer.
At the end the person would have to figure out if he talked to a
real person on the other end of the terminal or with a computer
program. And if the user confuses the person with the computer
then we would have reached AI.
At, LU we chose Prolog to be the implementation tool for AI. Our
labs at school are Windows NT based and we have only one linux
machine which is designated to students. But I have been a linux
user for almost 2 years, and I wanted to implement all my Prolog
assignments in Linux.
I did some research on the web and I found a great Prolog
compiler for linux. Prolog is like linux in a certain way, there
are several flavors that you can pick from. The one I chose was
SWI Prolog (http://www.hio.hen.nl/faq/SWI-Prolog.html).
Prolog is a very flexible language. Unlike other languages like
C, C++ or Java, Prolog is based on formal mathematical logic, in
this case: Predicate Calculus. A Prolog program is normally made
of facts with a set of rules. To reach the final solution
it has to satisfy this set of rules. Interpreting these rules
allows the computer to deduce the solution by itself. In Prolog
the facts are normally stored on a separate file called
the knowledge base, and rules on another file that is the actual
program.
Allow me to show a very basic search algorithm known as the
Depth First Search (click for image).
The Program below is the representation of the graph above in
Prolog.
% Name: Anderson Silva
% Date: March 10, 1999
% ================================
% A graph that will be used for a
% Depth First Search Algorithm
% Knowlodge Base.
% ================================
% linked/2
% A nodes and its children
linked(a, [b,c,d]).
linked(b, [e,f]).
linked(c, [g,h]).
linked(d, [i,j]).
linked(e, [k,l]).
linked(f, [l,m]).
linked(g, [n]).
linked(h, [o,p]).
linked(i, [p,q]).
linked(j, [r]).
linked(k, [s]).
linked(l, [t]).
linked(m, []).
linked(n, []).
linked(o, []).
linked(p, [u]).
linked(q, []).
linked(r, []).
linked(s, []).
linked(t, []).
linked(u, []).
% arc/2
% A rule that checks to see if
% there is an arc between two given nodes.
arc(X,Y):- linked(X,L), member(Y,L).
The algorthim that searches the graph for a specific goal:
% Name: Anderson Silva
% Date: March 10, 1999
% ================================
% This is the Depth First Algorithm
% implemented in Prolog that will
% use the graph.pl knowlodge base
% ================================
% reverse_write/1
% Inverts the order of the stack.
reverse_write([]).
reverse_write([H|T]):-reverse_write(T), write(H), nl.
% solve/2
% Gives the path in the reverse
% order since dfs is implemented as
% a stack
solve(INode, Solution):- consult('graph.pl'),
query_goal,
dfs([], INode, Solution),
reverse_write(Solution).
% query_goal/0
% Creates the goal to be reached
% during execution
% We start with abolish, so if solve is ran more
% than once, it will make sure it
% forgets the old goals and only look for the
% new on.
query_goal :- abolish(goal(Node)),
write('Goal? [Followed by a period]'),
nl,
read(Node),
assert(goal(Node)).
% goal/1
% When the program runs for the frist time
% query_goal needs to abolish at least one goal
% and that is why goal(standard) is used.
goal(standard).
% dfs/3
% The Actual recursive algorithm for the
% Depth First Search
dfs(Path, Node, [Node|Path]):- goal(Node).
dfs(Path, Node, Sol):- arc(Node, Node1),
Copyright © 1999, Anderson Silva
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
IP MASQ Setup with Ipchains Quick Start
Last Month, my brother and I decided that we
were going to setup a small network at my house, so that we could connect
more than one computer to the internet with only one modem and one phone
line. My machine is the one with the modem and it is also running
Linux (server) . My brother's machine is running Windows 95 (Client).
I did some research and found some documentation about private networking
on the web. I decided to try the technique of IP Masquerading with our
little network at home.
IP Masquerading is the technique to assign
your computers internal IP addresses (in my case 10.0.0.1 for the server
and 10.0.0.2 for the client) and share your machines internet connection
with the other clients without having to assign them a external IP address.
I read a lot of the documentation and I did actually understand the whole
process, but I could not get it running right on my computer. So, I entered
the #Linux IRC channel on Undernet.org and found a guy nicknamed Mongoose
to help me.
He gave me a link to a quick tutorial he had
written to get IP MASQ running with ipchains* in no time.
* Ipchains is a program that is bundled with RedHat 6.0 and is used
to set up firewalls and ip masquerading.
After reading Mongoose's tutorial I had my
private network running in less than 10 minutes. That is why I got in touch
with him and he agreed to let me publish his tutorial to the Linux Gazette.
Bellow is the Tutorial:
----------------------------------------
NOTES
----------------------------------------
The following example has:
0.0.0.0 the IP of the gateway to the internet.
10.0.0.1 the IP of the ip masq gateway's eth0.
10.0.0.2 the IP of the ip masq client0's eth0.
10.0.0.3 the IP of the ip masq client1's eth0.
NETWORK IP MASQ GATEWAY SETUP
----------------------------------------
1. Load ethernet card modules ( if needed ).
/sbin/modprobe ne2k-pci
(each card has a specific name)
2. Bring up the device.
( add to /etc/rc.d/rc.local if you don't have standard
interface scripts)
/sbin/ifconfig eth0 10.0.0.1
netmask 255.255.255.0 up
/sbin/route add -net 10.0.0.0
netmask 255.255.255.0 eth0
/sbin/route add default
gw 0.0.0.0 eth0
3. Allow your IP MASQ clients to use your inet.
A. Add this to /etc/hosts.allow at the end:
ALL:10.0.0.2
ALL:10.0.0.3
B. Add the ips to any other configs it requires.
i. I suggest you use the squid ftp/http
proxy for speed.
NETWORK CLIENT SETUP ( 10.0.0.2 client0 )
----------------------------------------
1. Load ethernet card modules ( if needed ).
/sbin/modprobe ne2k-pci
2. Bring up the device. ( add this to /etc/rc.d/rc.local if you don't
have standard interface scripts)
/sbin/ifconfig eth0 10.0.0.2
netmask 255.255.255.0 up
/sbin/route add -net 10.0.0.0
netmask 255.255.255.0 eth0
/sbin/route add default
gw 10.0.0.1 eth0
TESTING NETWORK
----------------------------------------
1. Ping 10.0.0.1 from the the clients and vice versa.
2. Use /sbin/ifconfig to see packet traffic from each host.
3. You should be able to use telnet/ftp between machines now.
A. If you can't telnet from clients to gateway, then check
hosts.allow.
IP MASQ GATEWAY IP MASQ SETUP
----------------------------------------
1. IP forwarding setup.
A. Enable ip forwarding for the IP MASQ gateway.
echo "1" > proc/sys/net/ipv4/ip_forward
B. Make ip forwarding enabled every boot:
i. For RedHat modify /etc/sysconfig/network
as follows:
FORWARD_IPV4=true
ii. For other distros add this to /etc/rc.d/rc.local
at the end:
echo "1" > proc/sys/net/ipv4/ip_forward
C. To make sure no one smurfs your network add this to
rc.local:
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
2. Now setup routing. You can add these to rc.local to load every
time.
A. Deny all ip forwarding by default.
/sbin/ipchains -P forward
DENY
B. Allow ip forwarding for your IP MASQ machines 10.0.0.2
and 10.0.0.3.
/sbin/ipchains -A forward
-s 10.0.0.2/24 -j MASQ
/sbin/ipchains -A
forward -s 10.0.0.3/24 -j MASQ
C. Add any masq modules you'll need.
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_raudio
...
If you follow this tutorial your network should
work just fine. One other problem that I encountered after setting up my
IP MASQ was that my client could only access servers on the net with their
IP addresses. So, I set up DNS on my linux box, so my clents could do a
domain lookup. All you need to do is to set /etc/resolv.conf with
your nameservers, and make sure that you have the named daemon is
activated. And that should solve the problem.
And if you have done all of these steps
you should be all set to run your private network. If you want to learn
more about IP MASQ and Firewalling please refer to the HOWTOs Documentation
at: http://metalab.unc.edu/linux/HOWTO/HOWTO-INDEX-3.html#ss3.1
Copyright © 1999, Terry 'Mongoose' Hendrix II and Anderson Silva
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Using Linux to Teach Kids How to Program
I was in 5th Grade when I took my first computer class in Rio de
Janeiro, Brazil. I was going to start taking a course in LOGO running on
Commodore 64. Soon enough LOGO was known to us as the "turtle
game".
LOGO is a programming language developed at the MIT labs in the late-60's, and
its main purpose is to make a programming language for children. LOGO has its
own syntax and semantics, but what really makes it fun for kids is its
Graphical Environment.
LOGO has a "programmable" cursor that draws on the screen whatever
you programmed it to do. That cursor is known as the turtle. With the
turtle you can make animation, draw houses, cars, or any of the primitive
geometrical figures.
|
For example: To make the turtle go forward 10 pixels you would
give the command: FD 10
To make the turtle go
backwards 120 pixels: BK 120
To turn turn right
or left on a 90 degree angle: RT 90 LT 90
To make a simple
arc or circle use the command arc and the degrees of the
circumference and the radius. ARC 360 120
To set the color
of the background and of the drawing of the turtle: SETBG
Color# - (The color number
varies from system to system) SETPC Color# - (It
sets the color of the turtle's drawing)
To clean (=clear) the
screen: CLEAN
|
Today I am 21 years old, and I still like playing around
with LOGO. And I will use it to teach my son a little bit about
programming and discrete math concepts. Now, my challenge was to
find a version of LOGO for Linux. I have been using Linux for
about 2 years now, and just a couple of weeks ago I started
searching the web for a free version of LOGO for Linux. It took
me about 30 minutes, but I was able to find the Berkeley LOGO
version, which is really good. It runs in many Unix flavors and
works with MS Operating Systems as well.
I was able to compile it with Red Hat 5.2 pretty fast and
it worked great, but I did encounter several errors with Red Hat
6.0, and i am still trying to figure out some incompatibilities.
The Berkeley distribution of LOGO can be downloaded it at:
ftp://anarres.cs.berkeley.edu/pub/ucblogo/
The distribution comes with a pretty good user manual,
and it has at least 3 different versions available for download.
I do encourage any programmers that have children to download
LOGO and start having fun with your children, they will have a
blast, and you can even take the opportunity to teach them some
basic Linux tasks.
|
Copyright © 1999, Anderson Silva
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Setting Up Mail for a Home Network Using Exim
[Revised at author's request. Originally published in issue #42.]
1 Introduction
Setting up a home network with Linux and Win95, using Samba, IP
Masquerading, and diald has been described many times, also in the Linux
Gazette, but so far I have not found a recipe for setting up mail on
a small network with only one dial-up e-mail account. In this article I want
to explain how I did it. With this system:
- users on the network can send local mail to each other, and
reply to it, also locally.
- outgoing mail has a proper From: address, so the outside world can
reply to it.
- the e-mail account is shared by the users, but each only receives
his/her personal mail.
- users on the network receive a notification (a pop-up window) when
personal mail for them arrives.
This is realized on my system (running Debian Linux 2.1) using the
following programs:
- exim as the mail transfer agent (it is
much easier to configure than sendmail).
- fetchmail for collecting the mail from the ISP.
- pine as the mail client on the Linux side (but other clients can be
used as well, including mail).
- Microsoft Internet Mail on the Windows side (but other clients can be
used as well).
- qpopper as the POP3 server, for moving mail from the Linux system to
the Win95 machine.
- smbclient and Winpopup for mail notification.
I have this set up for two machines (1 Linux + 1 Win95) but it will
probably also work for a somewhat larger network, and may be sufficient for
a small office. Note: this article is Debian-oriented. If you use another
distribution, change where appropriate!
2 The network and the names
For this article I assume the following names (change these to
correspond with your own situation):
- the owner / system administrator is called Joe Bloggs.
- the Linux machine is called heaven.
- the Win95 machine is called earth. It is mostly used by Emily
Bloggs.
- Joe's user name on heaven is joe.
- Emily's user name on heaven is emi.
- Emily's user name on earth is also emi; her Linux password on
heaven and her 'password for Microsoft networking' on earth are the
same.
- Joe has a dialup account (dynamic IP address) with an ISP called
isp.com. Mail from the ISP can be collected using POP3.
- Joe's account name at the ISP is jbloggs.
- Joe's e-mail address (also used by Emily) is
joe.bloggs@isp.com.
- Joe's password for collecting POP3 mail is zaphod.
- The ISP's mail server (for sending mail) is smtp.isp.com.
- The ISP's POP3 server (for collecting mail) is pop3.isp.com.
- heaven and earth belong to a domain called home. This domain
name is meant for use only inside the home network; Joe has not registered
his domain name and it cannot be recognized by the outside world.
I also assume that the local networking works, and that there is on-demand
dialup access using diald. There is no name server on heaven.
/etc/resolv.conf contains the addresses of two name servers supplied by the
ISP. These same addresses are entered into the TCP/IP configuration on
earth.
/etc/hostname on heaven is
heaven
/etc/hosts on heaven is
127.0.0.1 localhost
192.168.1.1 heaven.home heaven
192.168.1.2 earth.home earth
On earth there is a file c:\windows\hosts with the same contents
as /etc/hosts.
3 Mail addresses
Mail messages can have more than just the address in the 'To:' and 'From:'
lines, for instance :
To: Emily Bloggs <joe.bloggs@isp.com>
'Emily Bloggs' in the above example is the 'real-name part'. It is set in
the e-mail program which composes the message. This 'real-name part' can be
used for delivering Emily's mail to her. Note: if the 'real-name part' has
dots in it, it must be quoted using " characters ("Joe C. Bloggs"). See also
man mailaddr.
4 Configuring exim
On a Debian system this is done by running eximconfig. It asks a
number of questions which you can answer as follows:
- your system is an Internet site using smarthost.
- the 'visible mail domain' is home
- other names apart from home and heaven.home: answer
heaven:localhost
- you don't want to relay for any non-local domains.
- you want to relay for the local network 192.168.1.0/16
- RBL (spam filter database): whatever you like. I said n
- The smarthost, handling outgoing mail, is smtp.isp.com
- System administrator mail should go to joe (not to
root!)
In MS Internet Mail (or whatever mail client you use on Win95) heaven
must be entered both as the SMTP server and as the POP3 server. Under 'pop3
account' and 'pop3 password', enter the username emi and her Linux
password. Enter the the name, Emily Bloggs, and the e-mail address, emi@home,
in the appropriate place. Note that the e-mail address must be in the local
domain!
On the Linux side, nothing special has to be set. /etc/pine/conf and
the users' ~/.pinerc can be used 'out of the box'. The mail client (pine)
constructs local addresses using the hostname together with user information
from /etc/passwd.
With the above setup, local users can happily send mail to each other
and reply to it. For instance, in pine at heaven, user joe sends
mail to user emi. Automatically, pine changes this to:
To: Emily Bloggs <emi@heaven.home>
The message is delivered immediately (as you can see if you run eximon,
the exim monitoring utility). emi (should she log in to heaven)
would see the message as coming from
From: Joe Bloggs <joe@home>
So home really functions like a local domain within which messages
can be exchanged. The problem is sending messages to the outside world.
A From: address like <joe@home> is no good because nobody on
the outside could reply to an address in the non-existent domain home.
5 Fixing the From: address
We must change the local From: address into a valid e-mail address (the
e-mail account at the ISP), but only in the case of outgoing messages.
With exim, we can do this by means of a 'transport filter'. The outgoing
mail passes through this filter, and the From: address is changed. Local
mail will not be affected.
The following filter will do the trick, provided we are sure that
the address that we want to change is always between < and > signs. This
is not guaranteed, but very common: pine, mutt, and
mail, as well as MS Internet Mail all generate such addresses.
#!/usr/bin/perl
$address = 'joe.bloggs@isp.com';
while (<>) {
if (/^From: /) { s/<.*>/<$address>/; print; last; }
print; }
while (<>) { print; }
Don't forget to change the e-mail address to yours! Call this program
outfilt, do chmod +x outfilt and put it in
/usr/local/bin. Now we must add a line to /etc/exim.conf, so the
last lines of the TRANSPORTS CONFIGURATION section read:
remote_smtp:
driver = smtp
headers_remove = "sender"
transport_filter = "/usr/local/bin/outfilt"
end
Actually, we added two lines. The headers_remove line is
also new. This prevents exim from adding a Sender: header to the message (as
it would do with this setup, if you use pine). The Sender: line can cause
trouble with some (badly configured) mail destinations.
With these changes to /etc/exim.conf, whenever anyone sends an e-mail
message to the outside world it is now delivered properly by exim. Exim
(through diald) opens the outside line at once. In a home situation this is
probably what you want. In a small office, with a lot of e-mail traffic, you
may want to defer messages and send them as a bunch at certain times, to
save phone costs. This is possible, but I don't need it myself and have not
looked into it. You could look at the 'Linux Mail-Queue mini-HOWTO'.
6 Fetchmail configuration
At the command fetchmail diald opens the line and the mail from the
ISP is collected (and passed to exim for local delivery). Only users who
have a .fetchmailrc, owned by themselves, in their home directory
can run fetchmail. This file can be created using the configuration tool
fetchmailconf. You get something like:
# Configuration created Sun Mar 28 03:15:20 1999 by fetchmailconf
set postmaster "postmaster"
poll pop3.isp.com with proto POP3
user "jbloggs" there with password "zaphod" is joe here options fetchall warnings 3600
The .fetchmailrc files belonging to the various users could all be
copies of each other, but with the ownership set to the user concerned. It
is not so nice that every user has the password in plain view. Maybe there
is a better way, but in a home situation it does not matter.
The main point is that whoever runs fetchmail, the mail must always
be delivered to the same user mailbox (joe's mailbox in
this case).
7 Removing exim's delivery limit
Exim by default does not deliver more than 10 messages at a time. I am sure
there are circumstances where this makes perfect sense, but having a dialup
account is not one of them. To get rid of this restriction, you must put
into the MAIN CONFIGURATION section of /etc/exim.conf,
before the end statement, a line
smtp_accept_queue_per_connection = 0
8 Delivering personal mail
Through fetchmail and exim, all mail from the outside
is by default delivered to Joe's mailbox (var/spool/mail/joe)
at heaven. In Joe's home directory he puts a file called .forward,
containing the following text:
# Exim filter
if $header_to: contains Emily then deliver emi endif
The .forward file must have permissions -rw-r--r--. If
you're not sure, give the command chmod 644 .forward.
If mail contains 'Emily' in (the 'real name part' of) the To: address
(and this will almost always be the case when her friends send her mail) it
will now go into her mail account on heaven, not into Joe's. She can
move the mail to her own machine using POP3 (see below).
Delivery to other users than Emily can be arranged with elif ...
then clauses in the .forward file. Actually, exim's
.forward files can perform a lot of complicated functions. See the
text "Exim's user interface to mail filtering" which comes with the exim
doc's.
9 Transferring mail with qpopper
To let heaven act as POP3 server for earth, qpopper can be installed. I
installed the Debian package qpopper_2.3-4.deb. Installation is
automatic; no configuration is necessary. If Emily presses 'get/send
messages' in MS Internet Mail, the contents of her mailbox on heaven get
transferred to earth (and all mail, local or outside, which she has written
gets delivered).
10 Automatic mail notification
Emily likes to be notified if mail arrives for her at heaven. If Samba
is installed on heaven and Winpopup on earth, this is easy. Mail
notification on earth can be done using smbclient (a program which comes
with Samba).
Joe (as root) has put a Perl program called mailwarn into
usr/local/bin:
#!/usr/bin/perl
open POPUP, "| smbclient -M $ARGV[0] >/dev/null 2>&1";
print POPUP "YOU'VE GOT MAIL! GO AND CHECK IT!\n";
print POPUP "It's from $ARGV[1]";
close POPUP;
This file was, of course, first made executable using chmod +x
mailwarn.
In Emily's home directory at heaven there is now also also a
.forward file (emi is the owner; permissions are 644):
# Exim filter
unseen pipe "/usr/local/bin/mailwarn earth $header_from:"
If mail (local or from the outside) for Emily arrives at heaven, a window
will now pop up on earth telling her this.
11 Manually collecting the outside mail
Thanks to a 'shortcut' on earth's Win95 'desktop', which does a telnet to
heaven, Emily can log into heaven and start fetchmail by hand. That
is, if she does not want to wait for the scheduled cron times when
fetchmail runs. After the mail has been transferred from the ISP, she can
press 'get/send messages' to move any mail from her heaven mailbox into the
earth one.
Copyright © 1999, Jan Stumpel
Published in Issue 43 of Linux Gazette, July 1999
"Linux Gazette...making Linux just a little more fun!"
Creating A Linux Certification Program, Part
6
It's been quite a crazy ride during the last weeks within the community
effort to build a certification program known as the Linux Professional
Institute (LPI). There are a great many news items to pass along. This
month's article will address:
If you are interested in reading previous articles in this series, please
see the links at the bottom of the page.
There are a great number of ways you can help make the LPI project a
reality. Here is a quick list:
1. HELP ANALYZE DIFFERENCES BETWEEN LINUX DISTRIBUTIONS
We need some more help documenting the detailed characteristics and
differences between the distributions of Linux. Faber Fedor
<revf2@interactive.net> has agreed to coordinate a project to document the
distributions. In particular we are looking for someone to complete and
maintain the SuSE document, and an additional few hands to help complete the
Slackware document are welcome too. Visit:
http://userweb.interactive.net/~revf2/LPI/
to see the work that has been done to date by Faber and other volunteers.
Please send any feedback you can to Faber (preferably as an edited HTML
document, with the changes highlighted). You can also visit the archives for
the "linux-cert-program" list at:
http://lists.linuxcare.com/linux-cert-program/threads.html
to see messages relating to the project. All of this work will go into
creating the distribution-specific exams that are part of our first level of
certification.
2. WRITE QUESTIONS FOR OUR EXAMS
Very shortly, Scott Murray, our director of exam development, will be
putting out a call for "item writers" to write questions for our first level
exams. Item writers will receive some instruction in the types of questions
we are seeking and then will write items that will be submitted to an
extensive technical review and evaluation process. Writers of items that
survive the initial screening and alpha testing will receive compensation for
their work.
If you have ever had concerns that people who completed other certification
programs weren't really qualified, then please join with us and help make sure
our program is of the appropriate quality.
Please contact Scott Murray (scott@lpi.org) now if you would be interested
in being an item writer when we begin the process.
3. HELP FIND FINANCIAL SPONSORS
Creating a high-quality certification program such as this costs a
significant amount of money. We recently unveiled our sponsorship program for
both businesses and individuals at:
http://www.lpi.org/sponsorship.html
We've already had several major sponsors come on board (Caldera Systems,
Linuxcare and SuSE are the largest) and we are actively speaking with
others. If either your company or you individually would be interested in
donating, we would certainly be interested to talk to you. If you think your
company might be interested, but are uncomfortable bringing the matter up,
please feel free to contact us and we'll be glad to make the approach.
Please direct all sponsorship inquiries to either myself (dan@lpi.org) or Chuck Mead (chuck@lpi.org).
Please note that while we are incorporating as a nonprofit corporation, we
are not (yet, anyway) a "tax-exempt" entity by U.S. IRS tax guidelines.
Donations to LPI are not tax-deductible in the U.S. as charitable
contributions. (But there may be other ways to deduct such contributions -
contact an accountant for details - and hey, it's for a good cause
anyway!)
4. HELP DEVELOP A COURSEWARE APPROVAL POLICY
As we've had a great number of courseware vendors come to us asking about
"approving" their materials, we are considering implementing such a program.
Chuck Mead has just kicked off a discussion in our Corporate Relations
committee. Join the list, or view the web archive at:
http://lists.linuxcare.com/linux-cert-corprel/threads.html
The CorpRel committee will be working on a proposal to send to the
Board.
5. HELP WITH OUR PUBLICITY WATCH
With so many information technology publications out there - both in print
and on the web, it's next-to-impossible to stay up-to-date on what's being
said all over the place about Linux certification. We'd like your help.
When you see an article (either in print or online) about Linux certification,
can you please send us the info (article title, publication, date, URL if on
the web). Either send it directly to "linux-cert-pr" if you are a member of
that list (if not, consider joining!) or email it to Evan (evan@lpi.org)
You can see the list of what has been posted at:
http://lists.linuxcare.com/linux-cert-pr/threads.html
Messages sent to linux-cert-pr appear on the archive within an hour.
6. WRITE OR SPEAK ABOUT LPI AND LINUX CERTIFICATION
To date, much of the writing and speaking about LPI and our efforts to
create a Linux certification program has been by members of the Steering
Committee such as Evan and I. But please know that we are not at all
exclusive about that and would encourage others to help out with writing
and/or speaking about LPI and Linux certification.
Many web sites are looking for people to write articles and we'd love to
see more articles out there about Linux certification and LPI. If you know of
a site looking for articles, please go ahead and write one. We'll be glad
to provide some information or assistance if you need it. Also, if you'd
like to write articles, drop us a note and we may be able to steer you to
places where they are looking for writers (usually the online sites are
looking for writers who will write for free).
Print publications are good, too. For instance, I had an article in the
June ";login:" published by USENIX and then an article in the July "Linux
Journal." Scott Murray & Alan Mead are planning to submit an article on
their survey process to a psychometrics journal. Articles might be
appropriate for local or regional newsletters for training organizations, user
groups, etc.
Also, if you're interested in speaking to local groups, we will soon be
making some presentations available online (in Applixware format so far,
probably HTML, too) that you could use. For instance, Faber Fedor recently
spoke to a local association of technical educators in his state.
If you are interested in writing or speaking, please feel free to contact
either Evan (evan@lpi.org) or I (dan@lpi.org). Feel free, too, to go ahead and
just write... we'll be glad to look over articles if you'd like us,
too.
7. IF IN GERMANY, HELP WITH THE NEW GERMAN "CHAPTER"
As described further down in this article, there is now an effort underway
to create a German "Chapter" of LPI that would help translate informational
materials into German and also write/speak about LPI certification within
Germany and in the German language. More details will be available soon, but
in the meantime, please contact Mark Semmler at: mark.semmler@frontsite.de
Please read the text below for more information.
8. JOIN OUR MAILING LISTS
If you haven't joined one of our committee mailing lists, where more of the
work is going on, visit:
http://www.lpi.org/involved.html
and sign up to help us out!
After being on our Steering Committee list since its formation, Josh Arnold
recently indicated he needed to step aside because of other committments. He
intends to stay subscribed to the mailing lists and hopes to be able to
contribute to the Program Committee on an ongoing basis. We thank Josh for
his willingness to step forward and help lead, and we do hope he can continue
to be involved as our efforts move on.
With Josh's departure, the Steering Committee/Board took some time to
identify what roles we needed to fill. We next considered who had contributed
to the LPI effort in some meaningful way and spoke to a couple of people
about joining the Board. At this time, we are pleased to announce Jared
Buckley's addition to the LPI Board. Jared stepped forward to lead the
Naming committee and has been an active contributor to several of our mailing
lists. During the day, Jared works for Texas Instruments in Dallas, TX, where
he supports the WAN and administers several covert Linux servers.
Please join us in welcoming Jared to the Board. His new responsibilities
will include helping create newsletters such as this and generally helping to
coordinate volunteer participation. He may be reached online at
"jaredb@ti.com". (He will soon have an "lpi.org" address as well.)
Over the last month, a dedicated group of participants worked to finalize
the objectives for the first exam (T1) and the generic portion of the second
group of exams (T2). These objectives were finalized in early June, allowing
courseware developers and publishers to know what they should orient their
materials toward.
We will soon have a web page online providing a simple list of the final
objectives. In the meantime, you can visit our management system at:
http://www.lpi.org/cgi-bin/poms.py
We are pleased to announce our expanded Advisory Council. We continue to
receive great interest from a wide range of organizations. Our current
Advisory Council membership includes (listed alphabetically by company,
asterisk (*) indicates recent addition):
Jim Higgins, Caldera Systems, Director of Education Services
*Chris Tyler, Canadian Linux Users' Exchange, Certification Representative
*Jim Lacey, CompUSA, Director of Operations
*Fiaaz Walji, Corel, Certification Program Manager
*Stephen Solomon, Course Technology, Senior Acquisitions Editor
*Phil Carlson, ExecuTrain, VP of Business Development
*Katalin Wolcott, IBM, Mgr of Linux Services Development, IBM Global
Services
*R.J. Bornhofen, Global Knowledge Network, Linux/Web Curriculum Manager
David Mandala, Linuxcare, VP of Education and Certification
Mark Bolzern, LinuxMall, President
Jim Dennis, Linux Gazette, "The Answer Guy"
Jon "maddog" Hall, Linux International, Executive Director
Phil Hughes, Linux Journal, Publisher
*Stuart Trusty, Linux Labs, President
*Julie Rowe, New Horizons Computer Learning Centers, VP of Products &
Programs
Nancy Maragioglio, New Riders Publishing, Editor
Lonn Johnston, Pacific HiTech, VP North America
Donnie Barnes, Red Hat Software, Director of Technical Programs
*David Conran, SAGE (USENIX) Certification Committee
*Anita Booker, SGI, Global Customer Education Manager
Patrick Volkerding, Slackware, principal developer
Marc Torres, SuSE, Inc., President
*Dr. Lindsay F. Marshall, UK Unix User Group, Chairman
Deb Murray, UniForum, VP Professional Training & Development
Ken Kousky, Wave Technologies, CEO
We keep this list up-to-date on our web site at:
http://www.lpi.org/ac.html
We had a great meeting with our Advisory Council members at LinuxExpo (you
can see the pictures at http://www.lpi.org/expopix.html ) and appreciate all
their support!
When I knew I was going to be in Munich teaching some classes, (yes,
Linuxcare expects me to actually do some work for them, too, and not just work
on LPI!) I sent out a note asking if anyone would be interested in meeting.
Juergen Off from frontsite AG contacted me and we arranged to meet.
Juergen and his colleague Mark Semmler brought me to the Biergarten in the
beautiful Englisher Garten part of Munich and we had a very enjoyable evening
eating, drinking beer and flipping somewhat randomly between talking in
English and German.
Along the way, Juergen and Mark commented that there really wasn't much
discussion of Linux certification within the German media and Linux community.
They asked "what can we do to help spread the word here in Germany?" As we
talked, Juergen suggested the idea of having a local German "chapter" of
LPI... all three of us were intrigued by the idea and discussed the idea at
length.
After that night, we exchanged more email and also shared the idea with
others we knew in Germany. The others at frontsite AG were quite interested,
as were the folks at SuSE with whom I communicated.
The LPI Board considered the subject and we, too, thought it was a great
idea and gave the go-ahead to the frontsite AG folks to start a discussion and
make it happen. Since there was so much interest, we thought this German
chapter would be a great pilot program to see how this idea can work.
Mark Semmler wasted little time and sent off a note to the "linux-cert"
mailing list asking if people would be interested. His full message, which
includes his German text, can be found at:
http://lists.linuxcare.com/linux-cert/msg00038.html
Since this newsletter is going to a global audience and is written in
English, I'm including only Mark's English text below so that you get a sense
of what he and the others are proposing.
I know already there is great interest in meeting at the upcoming LinuxTag
in Kaiserslautern, Germany on June 26th & 27th. It will be great to see
what comes out of discussions there.
Please contact Mark at "mark.semmler@frontsite.de" if you
are interested in becoming involved with this effort.
------ Begin Included Message ------
Subject: LPI Germany?!
Date: Thu, 24 Jun 1999 01:32:19 +0200
From: Mark Semmler <mark.semmler@frontsite.de>
<German text snipped>
Hello everybody!
We are tracking very interested since a couple of weeks the mailinglists of
the LPI and we are just fascinated by the thoughts and the dynamic of this project.
During a meeting with Dan York early this month in Munich, the thought was born,
to create a german-speaking chapter of the LPI.
The goals of this "chapter" should be:
- promote the idea of LPI Linux certification through local
media, conferences, publications, etc.
- maintain German-language mailing lists and a web site
(in German) to promote discussion of Linux certification issues
- translate English LPI marketing and information materials into
German for distribution within Germany
- assist in identifying people/companies that can perform
the translation of exam items (questions) into German
- organize discussion groups and local meetings that bring
together key players within the German training and larger
information technology industry to move Linux certification
forward
- communicate ideas from the German-language discussion groups/lists
back to the English-language discussion groups/lists
- translate LPI news releases into German and distribute them
to appropriate German news media
I'm sure there will be other tasks which develop as well.
This chapter should be organized like the LPI.
Means: non-profit and independent.
We offer to host and to maintain the mailinglists and the webspace for
such a project on our servers. The domainname could be "(www.)de.lpi.org" and/or "(www.)german.lpi.org".
Who is interested?
Juergen Off, Mark Semmler, Jens Kiefer, Heiko Franssen, Thorsten Linstead
------ End Included Message ------