L i n u x N e w s A summary of the goings-on in the Linux community Issue #10 Jan 1 to Jan 10 Unser Motto: "Hacken und Helfen" ***** Contents - My Two Cents ....... blah blah woof woof from the editor - Announcements ....... the week++ in c.o.l. and c.o.l.a. - How Jump Tables Work .. Eric Youngdale - Good Answers ....... to questions in and out of the FAQ ***** My Two Cents Well, it's been ~one week since my first issue of Linux News and I've received no exploding binaries or redirected output from "worms" or "rain" in my mailbox .. so here is another issue. In fact, all the mail I received was helpful and encouraging, particularly that from Arnd Gehrmann, who provided the German translation of "our motto", and Bernie, another German Linux Activist. Thanks guys and thanks to Eric for his short tutorial on jump tables. Because there are now many channels available for Announcements, I would like to include useful and informative "articles" in Linux News. If you have written, or would like to write, anything on the technical, theoretical, or practical nature of Linux ... send me mail! Success stories, porting sagas, interviews, "Where Were You When 0.10 Was Released", "How Hacking Made My Girl/Boy Friend Leave/Marry Me" ... all are welcome. I've also started a little section for answers to questions posted which seem as though they would be worth repeating; either because they are in the FAQ and are _STILL_ posted or because they are interesting and not answered in the FAQ. Special Request: Would readers in non-English speaking countries (like Denmark, Finland, Italy and Baltimore) please send me translations of "Our Motto: To hack and to serve"? - Denise Tree tree@midget.towson.edu tree@cs.jhu.edu ( a real special thank you to hometown Activist Bill Bogstad, at J.H.U., for this account, no more will "less" be my news reader)! ***** Announcements - Linux-0.99 patchlevel 2 kernel ready - Settime source and binary at sunsite - XpoolTable-1.2 at export.lcs.mit.edu - ANNOUNCE channel: New at Linux-Activists - New extended file system programs efsck and mkefs released - Dmalloc.taz (debugging malloc package) uploaded - New SLS expected soon - Seyon 1.7 - Glib and adagio (patch editor and score player for Soundblaster) at tsx-11 - Mailpak-1.4 is available - Lilo 0.8 released - Zip 1.9pl1 and Unzip 5.0 binaries at sunsite and tsx-11 - Ncurses ... new BETA curses library available for use - New alt newsgroup - alt.uu.comp.os.linux.questions - QIC -02 driver release 2d is out - Binary of Seyon 1.7 is available - Linux FAQ now in a Latex version! - Network suite new at sunsite - New curses lib expected soon from Ed Carp - BSD C shell for Linux - SUIT works with Linux! - SUIT is explained! ***** Announcements - January 1 Linus sent out the 0.99pl2 kernel today with the request: "Please try out 0.99.2: the more feedback (hopefully positive) I get on it, the faster 1.0 will be out". Linus lists the following changes: - pretty much rewritten low-level keyboard handling IO - this time actually trying to do it by the book. It now handles resend requests from the keyboard etc. - you can run executables from filesystems without bmap support. This mainly means NFS and msdos. Note that while it's possible, it's slower and less memory-efficient than using a "normal" linux filesystem, and should generally be avoided. - /proc filesystem changes: /proc/kmsg can be used to log the kernel messages under X11 (instead of using the older system call to do the same), and there are changes to the statistics routines (WCHAN). + various minor fixes (non-existent devices are handled better, some changes to socket bind behaviour etc). Linus - January 1 John Turnbull announced binaries and source for settime, a utility to set the system clock with the NIST clock in Boulder, CO. and display the time. Binaries compiled with jump tables and tested with libc 4.2. FTP:sunsite.unc.edu: pub/Linux/Incoming/settime.tar.Z - January 1 Arit Ismail has uploaded version 1.2 od XpoolTable to export.lcs.mit.edu and notes that it will compile out of the box for Linux FTP:export.lcs.mit.edu:/contrib/XPoolTable-1.2.tar.Z - January 2 Matt Welsh has created the ANNOUNCE channel on Linux-Activists to mirror comp.os.linux.announce. To join the channel send mail to linux-activists-request@niksula.hut.fi and put "X-Mn-Admin: join ANNOUNCE" in the message body. - January 2 Remy Card will make new versions of the extended file system utilities, efsck and mkefs, available at tsx-11. These versions are compatible with gcc 2.3.3 and libc 4.2. FTP: to be released soon as: efsprogs12.tar.Z - source and binaries efsprogs12.bin.tar.Z - binaries efsprogs12.src.tar.Z - source efsprogs.p12.Z - patch against ver. 11 - January 4 Peter MacDonald says that is "ironing out a few last wrinkles before I can cut a set of disks for a new version of SLS". From Peter's post: First though, I have had some reports of people with some SCSI drives still having to use an older kernel to boot, because they can not boot .99p[012] successfully. Anybody else? Now to the serial ttys. Unless someone comes up with the equivalant of a grand unified forces theory to explain why I can't, I plan on renaming the serial devices in the next SLS release to ttyS0, ttyS1 and ttyS2. This because between Xwindows, emacs, screen, and tcpip, psuedo ttys are getting pretty much in demand. I am not worried about running out of them, so much as I am about applications trying to grab ttys0, and do funny things with it. This came clear to me when I was revising the MAKEDEV script to generate the 64 pty pairs. No can do using pqrs. The ps2 mouse device will also be renamed back to ps2aux (as it is not a busmouse) from bmouseps2. I hate changing device names, but can't be helped. I also want to have a post install script in place, to be run after logging in the first time. This can set things to be a bit more generic. Like /dev/mouse. I noticed that the uugetty program in getty_ps2.04 does lose chars, but it does it for me sporadically. If I am using kermit, for example, I can usually fix it by exiting, and restarting kermit a few times. Also, when I am dialing from kermit, the first char is not echoed (ie, the 'a' from 'atdt'). There will be a very large number of changes to the next release, all of it in series 'a', 'b', and 'c'. So much so, that upgrading will not be practical. You will have to download the entire three series (16 disks). This will include the new compiler and libraries, and a number of new packages, as well as many fixed binaries and new versions. This upgrade will go smoother, because I will not release it until I am satisfied. So don't ask when. I will give a days notice (more if possible). Peter. - January 4 Muhammad Saggaf has updated Seyon, the X based communications package, to version 1.7. There are many changes, including: updated man page (note: FAQ is outdated), revised popup window location - no more "dangling" windows, new resource dialAutoClose - closes the dialing directory window after a succesful connection, case sensitive script commands and keywords, new configuration script, and much more. FTP:sipb.mit.edu:/pub/seyon/ - January 5 Greg Lee has made sound tools for the Soundblaster or compatible available at tsx-11. They are glib, a patch editor, and adagio, a music score player. FTP:tsx-11.mit.edu:/incoming/glib18.tar.Z and adagio01.tar.Z - January 7 Ed Carp has uploaded an abbreviated version of mailpak to sunsite which contains taylor-uucp-gamma 1.04,elm-2.4pl17 patches, uustatus, and sample uucp system files. As Ed explains, much of the functionality of mailpak-1.3 is now included in newspak-1.2. FTP:sunsite.unc.edu:/pub/Linux/Incoming/mailpak-1.4 - January 7 Werner Almsberger has announced the latest release of Lilo for Linux which includes: quick installation script, serial line operation, scsi disk parameter detection (except for Seagate and Ultrastore controllers). FTP:sunsite.unc.edu:/pub/Linux/Incoming/ and tsx-11.mit.edu:/pub/linux/packages/lilo:lilo.8.tar.Z and lilo.8.ps.Z (postscript docs) - January 7 Rick Sladkey has uploaded new networking programs to sunsite. New versions of ftp, ftpd, rshd, rlogin, rlogind, finger, fingerd, talk, ntalkd, tftp and tftpd are included. Libc 4.2 must be present to utilize these binaries and rlogind will only work with 0.99pl2 kernel. FTP:sunsite.unc.edu:/pub/Linux/Incoming/net-0.2README net-src-0.2.tar.Z net-bin-0.2.tar.Z - January 7 Greg Naber has put newest versions of Zip and Unzip at tsx-11 and sunsite FTP:tsx-11.mit.edu and sunsite.unc.edu: unzip50.tar.Z (source) unzip50.zip (source?) - January 7 A new BETA version of Curtis Pavel's ncurses has been uploaded to sunsite by Zeyd M. Ben-Halim. Ncurses is a SYSV com- patible curses which supports keypad and terminfo; Zeyd has also added ALPHA color support! This is a testing release and it is requested that people tinker, test, and make bugs and comments available for improvements. Docs are there too. FTP:sunsite.unc.edu:/pub/Linux/Incoming/ncurses.lzh - January 8 Jyrki Kuoppala announced the new Usenet University newsgroup alt.uu.comp.os.linux.questions - the Q&A column. For more info see the FAQ in alt.uu.announce and alt.uu.future - January 8 Hennus Bergman has uploaded the new QIC-02 tape driver. It requires ~0.99pl1 kernel to run. FTP:tsx-11.mit.edu:/pub/linux/ALPHA/QIC-02/tpqic02-2d.tar.Z - January 8 In order to make Seyon a little more accessable for those who are unfamiliar with X compilation/configuration, Muhammad Saggaf has put together a binary distribution with an install script for his version 1.7pl2 of the X comms program. The binaries are made with libc4.2 and X libs 2.1: these must be installed correctly on your system in order to use the binary. FTP:sunsite.unc.edu:/pub/Linux/Incoming/Seyon-1.7-linux-bin-tar.Z - January 8 Pepe Flores Peters has uploaded Latex source and .dvi file for the Linux FAQ. It's the most beautiful FAQ he's ever seen :). FTP:tsx-11.mit.edu:/pub/linux/docs/linux-faq.tex.Z linux-faq.dvi.Z - January 8 Ed Carp has announced that he is working on a pre-ALPHA release of the Linux curses library with support for function and arrow keys (hooray!) and ACS support (???). Send mail to Ed at erc@apple.com if you would like a source copy ( ~100k compressed). - January 8 Robert Chen has ported the standard BSD C shell to Linux for those who don't like bash, tcsh, zsh, rc, pdksh or ... FTP:sunsite.unc.edu:/pub/Linux/Incoming/csh526a.tar.Z - January 9 Bradley E. Smith announced that he was able to get SUIT up and running under Linux and asks if anyone is interested in having him upload it to a Linux site. - January 9 Bradley E. Smith posts README for SUIT - The Simple User Interface Toolkit (thanks Bradley!) "SUIT is a library of interface tools developed at the University of Virginia to help C programmers create sophisticated mouse based interfaces without the lengthy learning period associated with traditional user interface toolkits. Ease of learning and fast ramp up time is central to SUIT's design. The SUIT tutorial is designed to make the user productive in under two hours". /* ---- How Jump Tables Work, by Eric Youngdale ----- */ Question: What's the business with jump tables? I think jump tables refer to indirect addressing so that you can have fixed entry points to libraries while still be able to change the implementation. Why is there the other alternative, and is it still supported? The kernel reserves the address space from 0x60000000 to 0xc0000000 for shared libraries and each library is assigned an address ahead of time. At the start of each shared library is basically a series of jump instructions and these jump off to each of the routines within libc. When there is an upgrade to libc, the jump instructions remain at the same address even though the actual functions move around as required. Before we had the jump tables, programs were linked in such a way that you would call the function directly. The problem with this was that with each new version of the library the functions would be at different addresses, and you had to relink when you went to a new version of the library. These are called "Classic" libraries, and are still supported and used (X11 libraries for example). X was too hard to jumpify with the old library building tools, and the libraries change fairly infrequently so at the time it was decided that X remain a classic library. Question: What is the shared library resolution mechanism? I would think that at run time the the library with matching major number and highest minor number would be selected. Seeing people link and copy the libraries to different names and having had problems with programs that required 4.1, not 4.2, it seems this isn't the case. Why? What's the use of jump tables, if you cannot use old programs with newer libraries? How do I know, if a new library is compatible with an older one (modulo bugs)? Is there some internal version number in the library, or is it all in the name? Each library reference contains a couple of bits of info. First of all there is a filename that will be opened and is assumed to contain the library. Secondly, the version number of the library that the program was linked to is also stored. At startup time, kernel maps the image of the sharable library into your address space, and then it compares the version numbers to make sure that everything is compatible. For a jump table library, the startup code verifies that the major number is the same, and that the minor number is >= the minor number of the library that the program was linked to. If there are changes in the jump table library library that would make it impossible to have binary compatibility, then the major number should have been incremented and the minor number should be reset to 1 (0?). The filename to be opened is usually in the form /lib/libc.so.4 in the case of libc, and standard usage is that libc.so.4 be a symlink or a copy of the version of libc that you want to use. In the case of classic libraries the version number matching is a little different. Since there is no binary compatibility from one version to the next, both the major and number of the versions must match. If there are images out there that explicitly ask for /lib/libc.so.4.1 instead of /lib/libc.so.4, then I think that this is in error. The image was probably linked to some prototype version of libc before the final release. It turned out that there were some changes in libc 4.2 to regex which broke sed, recompiling sed seemed to fix the problem. The future of sharable libraries under linux looks rosy indeed. A new set of tools has been developed which makes the generation of a sharable library pretty foolproof, and it is possible that these will be used to jumpify the next version of the X libraries. Once this has been done you will simply be able to slip in a new version of the shared X library and you will still be able to run your old programs, except this time using the new library. Consideration is also being given to some form of dynamic linking, and It is possible that at some point in the future this will be a part of the standard linux libraries. There is a working prototype which is currently being evaluated which may be used, or it may take the form of some other scheme that has yet to be developed. With the prototype of dynamicly linked libraries, the changes are piggybacked on top of the existing jump table libraries, so it may be possible for old binaries to run with the new libraries (without any dynamic linking, however). ***** Good Answers I think that the MOST FREQUENTLY ASKED FREQUENTLY ASKED QUESTION is probably "Where is /usr/include/linux and /usr/include/asm?" or "Why won't my new kernel source compile without errors?", etc. Answer: These directories exist as symbolic links to the online linux kernel source found (usually) in /usr/src/linux/include/linux/* and /usr/src/linux/include/asm/*. Do: ln -fs /usr/src/linux/include/linux /usr/include/linux ln -fs /usr/src/linux/include/asm /usr/include/asm to create the symlinks. OR ELSE! It's a good idea to keep kernel source on your system because the header files are needed for compilations other than the kernel.