LJ Archive



In my article “Security Features in Ubuntu” (LJ, March 2008), I incorrectly characterized Novell AppArmor as “an implementation of Type Enforcement”. But, as I myself explained in my earlier article “An Introduction to Novell AppArmor” (LJ, August 2006), AppArmor represents an approach to mandatory access controls that is fundamentally and deliberately different from Type Enforcement's, though they serve very similar purposes. I apologize both for the mistake and the self-contradiction.

Mick Bauer

Wine Recommendation

I especially enjoyed Marcel Gagné's March 2008 Cooking with Linux column. My wife and I discovered the Collavini Villa Canlungo Pinot Grigio on a trip to Italy, and it has become one of our favorites. I went to the cellar recently only to discover that we had finished the last of our Villa Canlungo, but we did have a few bottles of 1998 Torciano Baldassarre. I was able to finish the article while savoring a glass of Baldassarre instead. A glass of fine wine makes the Linux even smoother.

Glenn A. Scherb

Floating-Point Simplicity

Joao Macedo wrote a letter, published in the January 2008 issue of LJ, in which the following one-liner was presented:

$ echo 'scale=4^J11/7' | bc

Joao explained that, “the ^J is obtained by issuing Ctrl-V + Ctrl-J.”

^J is the keystroke that produces the ASCII LF (line feed) character, which UNIX (and, thus, Linux) uses as a line terminator. Rather than embed LF in the text, I'd like to suggest the following as a better alternative:

$ echo -e 'scale=4\n11/7' | bc

David Newall

Why on Earth?

I'm writing in connection with the article “The Best of Both Worlds”, by Dashamir Hoxha, which appeared in the February 2008 issue of LJ. As the author says Linux is his favorite operating system, I can't clearly see why he chooses to run it in a virtual machine running on Windows XP. Why should Linux have its performance undermined by running on a VM? Why is Linux stability conditioned by Windows XP's stability? And finally, what's the reason for the title of the article? Is this combination really the best of both worlds for a Linux user? I have been working with UNIX environments and then also Linux environments for more than 20 years, and honestly, I use Windows only when I have no other choice.

Exactly in the same situation, some years ago when I bought a 1GB RAM Lenovo T60P notebook with preinstalled Windows XP, I kept Windows only for the time necessary to check that all the hardware was working correctly. Then, I installed my favorite distribution, which is Kubuntu, and then I installed QEMU (with kqemu) to run Windows XP, in order to be able to test software for my clients or access some home banking site that works only with Internet Explorer.

Setting aside the fact that I do not understand the choice for a Linux user of running Linux over Windows, the development of the article was very interesting and illustrative, especially in connection with the networking configuration.

A last remark, if my friends or colleagues want to use my notebook, they know they have to use Linux. This has discouraged some and has revealed a very attractive environment for others.


A More Elegant Solution

In the Letters section of the April 2008 issue of LJ, Mike Henders gave three possible shell scripting solutions for Dave Taylor's use of inline Perl to get the ordinal value of a letter [see Dave's January 2008 Work the Shell column]. Well, I don't have much use for ordinal values in my daily life, but I found his examples interesting. However, I didn't care for the loop he used in Solution 1, nor did I like the math he resorted to in Solution 3 in order to deal with the spaces in the string.

But, Mike's use of an array in Solution 1 and his use of a variable length string in Solution 3 gave me the idea to combine the two—create a variable length array and, thus, a more elegant solution (my opinion).

First, initialize the array like before, but leave out Mike's place holder (he used a 0). At the same time, make it a variable length array by letting the value of $letter determine the last element of the array:

LETTERS=($(eval echo {a..$letter}))

Now the ordinal value (of the letter in $letter) is equal to the number of elements in the array:


Francois Visser

Not Just Canadian

I'm a Canuck living in the great white north and have to respond to the mention of tonne as Canadian for ton in James Gray's article “Go Green, Save Green with Linux” in the April 2008 issue of LJ. Here in Canada, we use the metric system, which is international and to which a vast majority of countries subscribe. A tonne is equal to 2,200 lbs. (Umm, American pounds, that is.) I enjoy reading LJ, and keep up the good work.

Rick Martin

Always a Learning Experience

I enjoyed reading the April 2008 issue of LJ. I particularly wanted to check out Kyle Rankin's article “PXE Magic: Flexible Network Booting with Menus”.

I have a Fedora 8 server that I use as my main SOHO server. I wanted to try the steps from the article so I could have the advantage of the utilities and the experience of doing it. So far as the doing, I guess I succeeded, because figuring out someone else's errors/omissions is always a good teacher.

Kyle Rankin wrote a great article that is certainly foundational and even inspirational, but it is missing essential information. It was easy to set up TFTP and NFS, tweak my dhcpd.conf file, and open the firewall suitably to get this working. I now have a crude PXE bootable menu that lets me select a local disk boot (in case I don't want the PXE boot) and a memtest86+ and a Knoppix 5.1 network boot. I look forward to exploring other options to add to this, so that I can network boot disk imaging software for backups and Linux network install tools, such as Kickstart and more.

Where Kyle fell terribly, terribly short was that for a Knoppix rescue load, he tells you to go to the Knoppix CD-ROM and fetch the minirt.gz and vmlinuz files from the boot/isolinux directories. Put them in your /tftpboot directory and you're golden! Not! Major omission! After many hours of only partial boots with Knoppix (it never would find/mount the Knoppix NFS share), I came to realize that Knoppix cannot finish its boot, because it cannot NFS-mount the Knoppix CD-ROM files from the boot server, because the kernel loaded via PXE is not network-enabled! The basic kernel fetched from the CD-ROM merely loads, and lets the rest of the system startup load and start the network. When network booting, the NIC card needs to be enabled during the processing of minirt.gz (it has NIC card modules therein and can load them and enable the network). Hence, it then can mount the NFS filesystem and find the Knoppix CD-ROM files and finish booting as expected.

The solution is, you get the “network-enabled” vmlinuz and miniroot.gz files by first booting to Knoppix and then drilling into the menu to start the Knoppix Terminal Server where it provides a setup dialog. You select (take the defaults) various NIC card drivers to include and let it configure the service. Apparently, Knoppix generates these files based on your selections. Then, you start a shell window and cd to /tftpboot and use scp to copy the generated miniroot.gz and vmlinuz files off to your boot server, replacing the ones Kyle initially tells you to fetch. Once I got those files and put them into my boot server, my HP laptop network booted, and I selected Knoppix, and it proceeded to boot as fast as I could have expected. Applications seem to load and operate very responsively, etc. The system behaves just like it booted from the CD-ROM, but faster.

Although I would have liked to perform the steps accurately from the article to get this working, no such luck! However, I learned a lot along the way. I hope this feedback helps any other readers that had the same failures as I did and wanted to benefit from this article.

Keith Schneider

Kyle Rankin replies: You are absolutely right. The miniroot.gz and kernel from the isolinux directory on the CD-ROM do not match the files in the /tftpboot directory. Traditionally, when I have added Knoppix to my PXE boot environment, it has been via the files the Knoppix Terminal Server created (I even mention grabbing the files from /tftpboot in my book Knoppix Hacks), but in this article, I was trying to save the reader the extra steps of booting Knoppix and running the script, so I made the mistaken assumption that Knoppix used the same miniroot and kernel from the isolinux directory for its Terminal Server. I'm really sorry my mistake made you jump through a lot of extra hoops. Thanks for the feedback.

LJ Archive