I don't know if this is a 2 cent tip or what, and since it's distribution specific, it's applicability is limited, but I still thought it was worth sharing.
The shutdown command accepts a -F switch to force a fsck when the system is rebooted. This switch just writes a flag file /forcefsck, it is up to the initialization scripts do do something about it. In Red Hat 5.1 ( I don't know about 5.2 ) the rc.sysinit script uses a different method to force a fsck.
It checks for the existence of /fsckoptions and if it exists uses it's contents as a switch when calling fsck. The command "echo -n '-f' > /fsckoptions" will create a file, /fsckoptions, with "-f" in it and will force a fsck the next time the system is booted. The rc.sysinit script removes the /fsckoptions file after remounting the drive read-write, so that the fsck won't be forced every time the system is booted.
If you want the -F switch from the shutdown command to work, a little editing of the /etc/rc.d/rc.sysinit file will do it.
near the beginning of the rc.sysinit file is the following:
if [ -f /fsckoptions ]; then fsckoptions=`cat /fsckoptions` else fsckoptions='' fiThis is where it checks for the /fsckoptions file and reads its contents into a variable for later use. We add an elif to check for the /forcefsck file and set the variable accordingly:
if [ -f /fsckoptions ]; then fsckoptions=`cat /fsckoptions` elif [ -f /forcefsck ]; then fsckoptions='-f' else fsckoptions='' fiNow the /forcefsck flag file created by using the -F switch with shutdown will force a fsck on reboot. Now we need to get rid of the /forcefsck file, or it will force the check every time the system is started. Further down in the rc.sysinit file, after the disk is remounted read-write, is the following line which removes any existing /fsckoptions file:
rm -f /etc/mtab~ /fastboot /fsckoptionsWe just add /forcefsck to the list of files to delete:
rm -f /etc/mtab~ /fastboot /fsckoptions /forcefsckNow we have two ways to force the fsck, we can use the -F switch when running shutdown, or we can put specific flags in a /fsckoptions file.
CAUTION!
The rc.sysinit file is critical to system startup. A silly typo in it
can make the system hang when it boots. ( I've been there! ) Make a
backup before you edit it. Edit it carefully. If you do blotch it, you
can recover by rebooting and using the -b switch after the image name on
the lilo command line. This brings you up in maintenance mode without
running the rc.sysininit script. The disk is in read-only mode.
mount -n -o remount,rw /will get you to read-write mode so you can fix the problem.
mount -n -o remount,ro /after fixing the problem to prepare the system for continuing startup.
exit or ctl-d to exit the maintenance shell and continue on to the default runlevel.
Hope this is of some use to someone.
--
Jim
An often unused feature of "sendmail" is it's "plussed user feature" which makes mails to "user+testlist@localhost" match "user@localhost". I will show you how to use this to implement personal mailing lists.
First, you have to set up "procmail" to act as a filter on your incoming mails. This could be done inside sendmail by setting it up as your local mailer, or simply via your "~/.forward" file.
Now, you should get a mailing list program. I prefer BeroList, because it's easy to configure. Compile it (don't forget to adjust the paths!) and install it somewhere in your home directory.
Done that, you have to tell procmail what mails are to be passed to the mailing list program. This is done inside "~/.procmailrc" and should contain something like the following for every list (in this example, the list is called "testlist", the mailname of the user is "username"):
:0 * ^To:.*username\+testlist | path/to/the/listprogram testlistThe last step is to prepare the configuration files for the mailing list. As this is specific to the program you use, I can't tell you here.
For a german description see:
http://www.simprovement.com/linux/listserver.html
--
Soenke Jan Peters
From: Anthony Baldwin:A good idea as far as it goes, but there is one gotcha. If lightning or some other power surge takes out one drive, it might take out the on-line backup as well.
Disk space is relatively cheap, so why not buy a small drive say 500Meg which is used for holding just the root /lib /bin /sbin directories. Then setup a job to automatically back this up to another drive using "cp -ax" (and possibly pipe it through gzip and tar). This way when the unthinkable happens and you loose something vital, all you have to do is boot from floppy mount the 2 drives and do a copy. This has just saved my bacon while installing gnu-libc2
I use a very similar method where each night, on each machine, I have a cron job back up vital information to another HD in another machine on my home network.
In addition to the nightly back-ups, I do a weekly backup to removable media, which I keep in a separate building (my workshop at the back of my lot). That way if lightning takes out everything on the network, I have lost a weeks or less work. The separate building part might be paranoia, but I really recommend at least weekly off-line back ups.
--
Jim Buchanan
Richard wrote:Your modem sounded familiar from a past search I had done, so I went to Red Hat's www site (http://www.redhat.com/) and followed the support | hardware link. You will find this reference in the modem category:
I have a PII (350MHz) running with an AGP ATI 3DRage graphics card (which works fine) and a Sound Blaster 16 PnP (which also works fine). But, I can't get my internal SupraExpress 56k modem to work.
Modems that require software drivers for compression, error correction,
high-speed operation, etc.
PCI Memory Mapped Modems (these do not act like serial ports)
Internal SupraExpress 56k & also the Internal SupraSonic 56k
It appears that your modem is inherently not compatible with Linux. I use an inexpensive clone modem called the E-Tech Bullet, pc336rvp model - paid $28 for it and it operates with no problems at all. Good luck in finding a compatible modem!
--
Bill
To: [email protected]
There are a few choices for a single floppy Linux (O.K. some are more
than one floppy). I haven't tried them, but I will be doing a Unix
presentation next month and plan to demo and handout a single or double
floppy sets for hands-on.
muLinux (micro linux):
http://www4.pisoft.it/~andreoli/mulinux.html
tomsrtbt:
http://www.toms.net/rb/
Linux Router Project:
http://www.linuxrouter.org/
Trinux:
http://www.trinux.org/
Good Luck,
--
Ken
The amazing Al Goldstein wrote:First, you should be able to tell your BIOS where to boot from. Just set it to SCSI first and all should be ok.
I have only linux on a scsi disk. I want to add an ide disk and want to continue to boot from the scsi which has scsi id=0. Redhat installation says this is possible. Is that true? If so how is it done?
If that isn't an option, just configure LILO (/etc/lilo.conf) so that it resides on the MBR of the IDE disk (probably /dev/hda) but boots Linux from where it lives on the SCSI disk.
--
Phil
To: [email protected]Here's a bit of code I found while searching the documentation for "numlock" It turns numlock on for all terminals at startup! The bolded code is the added code in the /etc/rc.d/rc file of my Redhat 5.1 Linux:
Is there an rc directory for this new runlevel? if [ -d /etc/rc.d/rc$runlevel.d ]; then # First, run the KILL scripts. for i in /etc/rc.d/rc$runlevel.d/K*; do # Check if the script is there. [ ! -f $i ] && continue # Check if the subsystem is already up. subsys=${i#/etc/rc.d/rc$runlevel.d/K??} [ ! -f /var/lock/subsys/$subsys ] && \ [ ! -f /var/lock/subsys/${subsys}.init ] && continue # Bring the subsystem down. $i stop done # Now run the START scripts. for i in /etc/rc.d/rc$runlevel.d/S*; do # Check if the script is there. [ ! -f $i ] && continue # Check if the subsystem is already up. subsys=${i#/etc/rc.d/rc$runlevel.d/S??} [ -f /var/lock/subsys/$subsys ] || \ [ -f /var/lock/subsys/${subsys}.init ] && continue # Bring the subsystem up. $i start done # Turn the NumLock key on at startup INITTY=/dev/tty[1-8] for tty in $INITTY; do setleds -D +num < $tty done fi
In a previous message, Pierre LAURIER says: - control of the pointer device with the keyboardYou can do it with any windowmanager. It's a XFree86 feature (v3.2, don't know of older versions). You only have to use the XKB extension. You enable it hiting the Control+Shift+NumLock. You should hear a beep here. Now you use the numerical keypad to:
Numbers (cursors) -> Move pointer. /,*,- -> l,r&m buttons. 5 -> Click selected button. + -> Doubleclick selected button. 0(ins) -> Click&Hold selected button. .(del) -> Release holded button.Read the XFree86 docs to get details.
--
Enrique I.R.
Re. the question "Updating Web Site" in the Jan 1999 Linux Journal, p. 61 ...Haven't tried the mirror package - might be good, but you can also use GNU wget (prep.ai.mit.edu). Below is the script I use to keep the University of Maryland LUG's Slackware mirror up-to-date. "Crude but effective".
#!/bin/bash # # Update slackware # # JM 7/1998 # usage: slackware.wget [anything] # any argument at all skips mirroring, moves right to cleanup. site=ftp://sunsite.unc.edu sitedir=pub/Linux/distributions/slackware-3.6; cutdirs=3 localdir=`basename $sitedir` log=slackware.log excludes="" for exclude in bootdsks.12 source slaktest live kernels; do [ "$excludes" ] && excludes="${excludes}," excludes="${excludes}${sitedir}/${exclude}" done # Do the mirroring: if [ ! "$*" ]; then echo -n "Mirroring from $site (see $log) ... " wget -w 5 --mirror $site/$sitedir -o $log -nH --cut-dirs=$cutdirs -X"$excludes" echo "done." fi # Remove old stuff # (important, but wipes out extra stuff you might have added) echo "Removing old stuff ..." for d in `find $localdir -depth -type d`; do pushd $d > /dev/null for f in *; do grep -q "$f" .listing || { rm -rf "$f" && echo $d/$f; } done popd > /dev/null done echo "Done."--
This is an answer to one of the letters in the December '98 issue.
Date: Wed, 04 Nov 1998 19:01:02 +0000 From: Roberto Urban, [email protected] Subject: Help Wanted - Installation On Single Floppy
My problem seems to be very simple yet I am struggling to solve it. I am trying to have a very basic installation of Linux on a single 1.44MB floppy disk and I cannot find any documents on how to do that. My goal is to have just one floppy with the kernel, TCP/IP, network driver for 3COM PCMCIA card, Telnet daemon, so I could demonstrate our RF products (which have a wireless Ethernet interface - 802.11 in case you are interested) with just a laptop PC and this floppy. I have found several suggestions on how to create a compressed image on a diskette but the problem is how to create and install a _working_ system on the same diskette, either through a RAM disk or an unused partition. The distribution I am currently using is Slackware 3.5.Making a "boot-root" disk is not too difficult and there is information and and examples available: http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html http://www.linuxrouter.org/
Maybe the new LDP site should have a link from every page of Linux Gazett: http://metalab.unc.edu/LDP/
I build boot-root disks quite regularly and they have lots of uses Eg:
Having said that you are putting yourself up against some additional problems here. Laptops are notorious for being only PC compatable with drivers which are only available for Windows. Even here there is some support: http://www.cs.utexas.edu/users/kharker/linux-laptop/ but you should realise that not all PCMCIA chip sets are supported and that is before you get onto support for the card itself. Obvioulsy if the card is your own product you have some advantages as far as getting access to technical information :-) but in general if the laptop and card manufacturers are unwilling to give information you can end up wasting a lot of time on reverse engineering and sometimes still fail.
--
Ian
Last month, Ms. Richardson published a short letter I wrote that asked some questions about the differences among the terminology of GUIs, window managers, desktops, interfaces, and a bit about the differences among GNOME, KDE, and Windows. These matters came to mind as I switched from Windows 95 to Linux, with its multiple choices of window managers.
Several people were kind enough to send long replies. I'm forwarding them to you in case you would like to consider using one as an article, or editing them into one. I suppose the title could be something like "A Vocabulary Primer to GUI's, Window Managers, Desktops, Interfaces, and All That".
I'm leaving all this to your judgment. It would be an article for newbies, but I found most of the replies very informative for this migrant from Windows 95.
--
Sergio E. Martinez
I don't have time to write a full article, but I can answer your questions. Unfortunately, I'm using MS Outlook to do so (I'm at work and I have to )-: ) so sorry if this comes out formatted funny in your mailer.
Terminology: The differences (if any) among a GUI, a window manager, a desktop, and an interface. How do they differ from X windows?In the X world, things tend to be split up into multiple components, whereas in other systems, everything is just part of the "OS". Here are some definitions:
Interface is a general term which really just means a connection between two somewhat independent components -- a bridge. It is often used to mean "user interface" which is just the component of a computer system which interacts with the user.
GUI is another general term, and stands for graphical user interface. It's pretty much just what it sounds like; a user interface that is primarily graphical in nature. Mac OS and Windows are both GUIs. In fact, pretty much everything intended for desktop machines is these days.
On Mac OS and Windows, capabilities for building a graphical interface are built into the OS, and you just use those. It's pretty simple that way, but not very flexible. Unix and Unix-like OSes don't have these built in capabilities -- to use a GUI, you have to have a "windowing system." X is one of them -- the only one that sees much use these days.
All X provides is a way to make boxes on the screen (windows) and draw stuff in them. It doesn't provide a) ways to move windows around, resize them, or close them, b) standard controls like buttons and menus, c) standards or guidelines for designing user interfaces for programs, or for interoperating between programs (e.g., via drag and drop or a standard help system).
A window manager is a program which lets you move windows around and resize them. It also usually provides a way to shrink a window into an icon or a taskbar, and often has some kind of a program launcher. The user can use any window manager that he or she wants -- any X application is supposed to work with any window manager, but you can only run one at a time. That is, you can switch between window managers as much as you want, but at most one can be running at a time, and all programs on screen are managed by whichever one is running (if any).
A widget set is a library of routines that programmers can use to make standard controls like buttons and menus (which are called widgets by X programmers). The widget set that an application uses is chosen by the *programmer* (not the user). Most people have multiple widget sets installed, and can run multiple programs using different widget sets at the same time.
Finally, there's the desktop environment. This is the newest and most nebulous X term. It basically means "the things that the Mac OS and Windows GUIs have that X doesn't but should" which generally consists a set of interacting applications with a common look and feel, and libraries and guidelines for creating new applications that "fit in" with the rest of the environment. For example, all KDE applications use the same widget set (Qt) and help program, and you can drag and drop between them. You can have multiple desktop environments installed at the same time, and you can run programs written for a different environment than the one you're running without having to switch, as long as you have it installed. That is, if you use GNOME, but like the KDE word processor KLyX, you can run KLyX without running any other KDE programs, but it won't necessarily interoperate well with your GNOME programs. You can even run the GNOME core programs and the KDE core programs at the same time, thought it doesn't really make much sense to, as you would just end up with two file managers, two panels, etc.
Do all window managers (like GNOME or KDE or FVWM95) run on top of X windows?Yes, though GNOME and KDE aren't window managers (they're desktop environments). KDE comes with a windowmanager (called KWM). GNOME doesn't come with a window manager -- you can use whichever one you want, though some have been specifically written to interoperate well with GNOME programs (Enlightenment being the furthest along). But yes, they all require X to be running.
What exactly does it mean for an application to be GNOME or KDE aware? What happens if it's not? Can you still run it?It just means that it was written using the GNOME or KDE libraries. This means a few things: 1) programs will probably *not* be both GNOME *and* KDE aware, 2) you have to have the GNOME libraries installed to run GNOME-aware applications, 3) you can run GNOME applications and KDE applications side-by-side, and to answer your question, 4) you can always run non-aware applications if you use either environment.
What exactly do the GTK+ (for GNOME) or Troll (for KDE) libraries do?GTK+ and Qt (which is the name of the product by Troll Tech that KDE uses) are both widget sets. That is, they provide buttons, menus, scrollbars, and that sort of thing to application developers. Note that applications can use GTK+ or Qt without being GNOME or KDE aware, but *all* GNOME apps use GTK+ and *all* KDE apps use Qt.
How does the history of Linux (or UNIX) window managers compare to that of say, the desktop given to Win98/95 users? How, specifically, does Microsoft limit consumer's choices by giving them just one kind of desktop, supposedly one designed for ease of use?This is a much more complicated question. In essence, Windows provides a built in windowing system, window manager, widget set, and desktop environment, so everybody uses those instead of being able to chose the one they like.
What's happening with Common Desktop Environment? Is it correct that it's not widely adopted among Linux users because it's a resource hog, or not open source?Yes. Also, it costs a lot of money. You can get it from Red Hat, though.
--
Tim
I read your mail today in the Linux Gazette and decided to answer (or try to) your questions.
Here it goes:
X-Windows is designed as a client-server system. Advantage is that you can run the server on another machine then the machine your monitor is connected to. Then you need a client. This can be a program or a window manager. A window manager communicates with the server by asking it to create a window. When the server fullfilled the requests the windowmanager ads a nice titlebar to it and lets the application create its interface. Basicly the window manager stand between the server and the application, but that is not necessary. It is possible to run an application on a X server without a window manager but the only thing you are able to do is run that specific application, close it and kill the X server.
A GUI is a Graphical User Interface, which means all of the information presented on the screen is done by windows, menus, buttons etc... Just like Windows. Also all the interaction, the interface is based upon those windows and buttons. The main goal of a GUI is to provide a uniform system of presenting windows and gathering information. A good example in MS Windows is the Alt+F4 keystroke, with this keystroke you can close any window on your screen. A window manager can be part of this system. This is what happens with KDE and CDE. They both feature their own window manager and then you are able to bring this same uniformity to your desktop. Basicly what I see as a desktop is the set of applications which are availeble on a certain system. A uniform GUI can bring also features like drag and drop and "point and shoot", associate applications to a certain filetype. One question you ask about the awareness for GNOME or KDE, this means, that a program that is designed for those environment is (or should be) able to communicate with other programs that are designed for those environments. This brings you for example drag and drop. Some programs can indeed not run without the desktop environment for which they are designed, but some can. For example I use KDE programs, but I do not like their window manager so I use Window Maker, which is not designed for use in the KDE environment, therefore I have to lack some features.
The libraries: GTK+ and Qt (Troll, as you mentioned it) are toolkits. What they basicly do is draw windows, buttons and menus. These are tour Legos with which you build your interface. And yes, if you want to run applications designed for a specif environment, say GNOME, you need atleast the GNOME libaries, like GTK+ and a few others.
As I mentioned before, the client-server design of X-Windows gives the user the flexibility to choose a window manager they like, but basicly they do the same as the win95/98 system. Win95/98 limits you to one look and feel (yeah you can change the color of your background, but that is about it), but manages also windows. But it does not give the user the freedom to experiment with other looks and feels. Most modern window managers permits you to define other keybindings and such. And if you don't like GNOME you can use KDE and vice versa (there are a few others btw).
All I know about CDE is that it is based on the Motif toolkit (compare GTK+ and Qt) and this toolkit is not free (better say GPLed software) like GTK+. I think that is the main reason why it is not used very much on Linux. But if it is a resource hog I do not know. Personally the main reason why I will not use it is because it looks ugly :-)
Well that is about it, I hope this information is a bit usefull. If you have questions, do not hesitate...
--
Hans Nieuwenhuis
I thought I would take the time to send you some information about the questions you have posted on Linux Gazette. From your question I can tell that even though you are new to Linux you have seen some of the fundamental differences in the interface workings. I currently work for Intel where I administrate Unix Cad tools, and am having to explain these differences to management everyday... I think you will understand far better than they do :)
1.Terminology: The differences (if any) among a GUI, a window manager, a desktop, and an interface. How do they differ from X windows?X windows is a method by which things get drawn on your screen. All x windows clients (the part drawing in front of you) have to know how to respond to certain commands, like 'draw a green box', 'Draw a pixel' allocate memory for client images... This in itself is NOT what you think of as "Windows". All applications send these commands to your client. This is done through tcp/ip, even if your application and your client are both on the machine in front of you. This is VERY VERY important. The #1 design flaw in MS Windows is the lack of this network layer in the windows system. Every X application (any window... xterm netscape xclock) looks at your "DISPLAY" environment variable to find out who it should tell to draw itself. IF your DISPLAY is set to computer1:0.0 and you are on computer2 and you type 'xterm' it will pop up on computer1's screen (Provided you have permission) This is why on my computer at work I have windows open from HP's RS6000's Sun's... Linux(when I'm sneeky) and they all work just fine together.
2.Do all window managers (like GNOME or KDE or FVWM95) run on top of X windows?Well, yes. Given the above you should now know that X is the thing that draws. Anything that needs to draw has to run "on" X.
BUT, we need to get a better understanding of the window manager because I didn't tel you about that yet. In MS Windows when a program hangs it sits on your screen until you can kill it. There is usually no way to move it, or minimize it. This is design flaw #2 in windows. Every MS Windows program has to have some code for the title bar, close, maximize, and minimize buttons. This code is in shared libs so you don't have to write it yourself but never the less it IS there. In X windows the program knows nothing about its titlebar, or the buttons on it. The program just keeps telling X to draw whatever it needs. Another program, the window manager does those things (It 'Manages windows') The window manager draws the title bars and the buttons. The window manager also 'hides' a window from you when it is minimized and replaces it with an icon. The program has NO say so in the matter. This means that even is a program is totally locked up it can be moved, minimized, and killed. (Sometimes not killed unless you window manager is set to send a kill -9)
That being said here is the bad news. KDE and gnome and NOT window managers. They do not draw title bars, allow you to resize windows and stuff like that. They are just a program that does things like provide a button bar (which some window managers do too) and the stuff like telling programs how they should look.
3.What exactly does it mean for an application to be GNOME or KDE aware? What happens if it's not? Can you still run it?gnome aware applications do what I was just about to mention. They pay attention to gnome when it tells them how to look and act. If gnome says 'you should have a red background' they do it. Also there will be some advanced things like an app can ask gnome if it can have a spell checker and gnome can supply it with one (See CORBA stuff) KDE is the same way minus the CORBA (I think)
4.What exactly do the GTK+ (for GNOME) or Troll (for KDE) libraries do?This is a hidden layer called widgets. It allows you do say 'draw a button' rather than 'draw a box, draw an edge on that box so it looks 3d, put some text in that box, make sure this box looks for mouse clicks, if a click happens remove that 3d stuff and put it back pretty quick'. It would not be a good idea to try to program complex things without a widget set.
5.How does the history of Linux (or UNIX) window managers compare to that of say, the desktop given to Win98/95 users? How, specifically, does Microsoft limit consumer's choices by giving them just one kind of desktop, supposedly one designed for ease of use?I think you can get this from the other answers. really the limit are...
6.What's happening with Common Desktop Environment? Is it correct that it's not widely adopted among Linux users because it's a resource hog, or not open source?CDE what a thing driven by big Unix verdors for their own needs. Things that start that way get re-invented to suit everyones needs, hence Gnome and KDE.
Well, when I get going I can sure waste some time. I hope I haven't taken up too much of you time with this. I'll leave you with just 1 thing.
I know hundreds of world class programmers, and administrators who are gods on BOTH NT and Unix. I know not a single one who prefers NT. Keep learning until you agree, I know you will.
--
SOTTEK
desktop, and an interface. How do they differ from X windows?X windows is what sits behind it all. More or less, it controls the access to your hardware and provides the basic functionality that is needed by the wm. The wm controls windows, and how the user interacts with them. A desktop, such as KDE or GNOME, provides more services than a wm. For instance, drag 'n drop is a feature of a desktop, not a wm.
Do all window managers (like GNOME or KDE or FVWM95) run on top of X windows?Yes.
What exactly does it mean for an application to be GNOME or KDE aware? What happens if it's not? Can you still run it?They use the functions provided by GNOME or KDE, not just X.
What exactly do the GTK+ (for GNOME) or Troll (for KDE) libraries do?GTK+ and Qt (KDE) provide the basic foundation for the desktops. For instance, Qt provides the code to actually create a ListBox (a list of items a user can choose). KDE just uses this code to do it's thing. Note that Qt can be used for console apps just as well as for X apps. I'm not familiar with GTK+, so I can't comment.
What's happening with Common Desktop Environment? Is it correct that it's not widely adopted among Linux users because it's a resource hog, or not open source?Well, Red Hat used CDE for a while (I think). However, they could not actually fix anything with it since it's was closed source. They have since moved to GNOME. However, there are some CDE clones out there.
--
Dustin
Hope this helps:
1.Terminology: The differences (if any) among a GUI, a window manager, a desktop, and an interface. How do they differ from X windows?A GUI (Graphical User Interface) is a general term that refers to the basic idea of using a graphical representation to communicate with the user (as opposed to a text based interface such as the command line).
A window manager is an idea that is really specific to X windows. In X windows the policy for how windows are arranged and controlled is separated from the core system, the window manager is a special program that does this. This allows people to choose a window manager that has a policy that is good for them, and allows new window managers to be created that have different policies. The window manager draws window borders, minimise/maximise buttons etc. You can mix and match window managers, but most GUI toolkits for UNIX will provide one as standard.
A desktop is a metaphor used by many GUIs it is basically an attempt to make computers fit in with the way people would work in an office. The hope is that this will make it easy for people to operate the system. The term is also used more generally to refer to a combination of window manager, toolkit (the box of parts used by the programmers of the system), and other 'standard' applications. If a set of tools is referred to as a desktop, it generally means that it will provide all of these things, and that they will be designed to work together in an integrated fashion. An example would be KDE (http://www.kde.org/).
An 'interface' is just an abbreviation for a user interface. This is the view that a program presents to the user, and (for a graphical user interface) is usually composed of widgets such as menus, checkboxes, push buttons etc.
Finally X windows is a toolkit for actually getting all of the widgets etc. onto your screen. It provides routines for drawing lines, circles etc. and these are used to draw everything you see. X windows is a lot more complicated and powerful than this really, but it would take a book to explain why. If you want this level of detail then look at the O'Reilly X windows programming series.
2.Do all window managers (like GNOME or KDE or FVWM95) run on top of X windows?Yes, though neither Gnome nor KDE is a window manager. Both of these are complete desktops and though they provide window managers, there is much more to them than just that. The window manager in KDE is called kwm.
3.What exactly does it mean for an application to be GNOME or KDE aware? What happens if it's not? Can you still run it?It means the app will talk to the window manager to get support for special features of that environment, and that it will use the standard look and feel of the desktop. If the app is not compliant then it should still work fine, but the special features will be unavailable. The other situation is using a compliant app with a nonstandard window manager, in this case too the app should work fine (but some feature may be unavailable). It is possible for window managers other than the standard ones to be compliant, for example there is now a KDE-Compliant version of the BlackBox WM.
4.What exactly do the GTK+ (for GNOME) or Troll (for KDE) libraries do?They provide tools such as edit widgets, menus etc. in a form that makes them easy to reuse. The library used by KDE (called Qt, see http://www.troll.no/qt) is written in a language called C++ and also provides tools for programmers such as routines for platform independent access to files and directories etc. GTK+ is similar though it has narrower scope and is written in C.
5.How does the history of Linux (or UNIX) window managers compare to that of say, the desktop given to Win98/95 users?Badly :-(
How, specifically, does Microsoft limit consumer's choices by giving them just one kind of desktop, supposedly one designed for ease of use?They restrict the system to a single view which may not be the best one for the job. Allowing people the choice means people can choose the best for them, even if it is nonstandard. The downside of this is that if everyone uses a different window manager then supporting and managing the system becomes difficult. In between these two options is the choice made by most UNIX toolkits - have a standard window window manager, but allow people to use another if they want.
6.What's happening with Common Desktop Environment? Is it correct that it's not widely adopted among Linux users because it's a resource hog, or not open source?CDE is based on Motif which is an old C toolkit that is (IMHO) looking rather dated. Motif is very slow, and as you say is very resource hungry. In the past linux versions have often been buggy, though this situation may have improved. I found CDE itself to be quite poor, it works fine if you spend all your time in a single application (such as emacs), but using the drag and drop, and some of the built in tools was generally problematic. IMHO It is unlikely to take off on linux because it it pricey and of lower quality than the free alternatives.
--
Rich