Linux Kernel Documentation

Within every release of the official kernel source from kernel.org there is a provided /Documentation directory. This directory contains various notes, guides, tips, documentation, explanations and otherwise useful information. Majority of this content is provided in pure text format.

I thought it would be convenient if I could navigate through this infomation on the internet. So I decided to host it myself.

Information on my Kernel Documentation pages

Linux Kernel Documentation

I converted every file into web formatted pages with the following features:

  • All URL’s are converted to clickable links (anchors). (There are some bugs)
  • All email addresses have been (simply) obfuscated.
  • Every page is connected to the directory in which it resides.
  • All files have line numbers to easily point to specific content.
  • Line numbers can be temporarily disabled to allow for east cut-and-paste without numbers. (Javascript required)

I know that others have done this before, but I wanted to do this for my own personal usage and convenience. I wanted to be able to link to content easily from my own Linux Resources guides and documentation.

I tried to put in as many features as I thought would be helpful for myself as well as others. However I wouldn’t mind adding more features for others.

I will try to update with every new kernel release that has updated documentation files.

Finally I want to express my appreciation and respect for every person who has contributed to the Linux kernel and to open source projects in general. The content provided is from the official kernel source and copyrighted its respective authors.

Moving a Fedora Installation

With the recent purchase of a new harddrive I did not want to re-install every operating system on my previous drive. Since I dual boot with Windows, I first attempted to copy Windows. I tried multiple solutions and Norton Ghost met my requirements however a problem in 48bit LBA (Logical Block Addressing) in Windows 2000 caused too many problems. In the end I re-installed Windows. (Note: Linux does not have this problem). After Windows, I continued to my Fedora Core 5 installation.

Linux can be just “copied” and should work. I decided to test that out!

  1. First I made sure that through the Windows installation I left the required space on the new harddrive for Linux.
  2. I booted with FC5 CD 1 and selected linux rescue. This should provide enough tools. It gives a prompt to mount an existing Fedora installation. However I selected “Skip”.
  3. I created all the partitions I wanted for the new harddrive (see the previous post for my layout). I used fdisk to partition and mkfs to format the partitions to EXT3. It is important to remember to create a SWAP partition!.

    Note: Most people will only have 1 or 2 partitions: the main / and /home.
    Note: It is much easier to use a LiveCD with a graphical tool (gparted or Knoppix) to create the partitions.

  4. After the partitions were created, I had to copy – which takes the longest time. I needed to mount both old and new partitions to copy. My new 300GB drive is /dev/hda and previous 120GB drive will be /dev/hdb (mounted read-only). It is important to note the proper partition numbers for each drive!
    # cd /mnt
    # mkdir fc5.old
    # mkdir fc5.new
    # mount -t ext3 -o ro /dev/hdb10 fc5.old
    # mount -t ext3 -o rw /dev/hda7 fc5.new
    # cp -a /mnt/fc5.old /mnt/fc5.new
    

    I had to repeat the copying step for each additional partition I copied (i.e. /home)

  5. Next I had to edit (using nano) the grub booting setup (/boot/grub/grub.conf) and the filesystem mounting information (/etc/fstab). (See update note below.) This was the trickiest part.

    Edit grub:

    # nano /mnt/fc5.new/boot/grub/grub.conf

    Grub requires the root and kernel lines to be modified:
    Since /dev/hda7 is (hd0,6) I changed root (hd0,9) to root (hd0,6).
    The kernel also requires a root= parameter which can take a label or device. Previously my root device was /. So the change I made was from:

    kernel /boot/vmlinuz-2.6.16-1.2080_FC5 ro root=LABEL=/

    to:

    kernel /boot/vmlinuz-2.6.16-1.2080_FC5 ro root=/dev/hda7

    Edit fstab:

    # nano /mnt/fc5.new/etc/fstab

    The filesystem list (fstab) is similar to grub. I needed to make a change for 3 partitions: /, /home and SWAP. (Any NTFS or FAT32 partitions can also be listed here).

    Changed from:

    LABEL=/       /            ext3    defaults   1 1
    /dev/hda13    swap         swap    defaults   0 0
    LABEL=/home   /home        ext3    defaults   1 2

    to:

    /dev/hda7     /            ext3    defaults   1 1
    /dev/hda15    swap         swap    defaults   0 0
    /dev/hda13    /home        ext3    defaults   1 2
  6. The final step was to re-install grub so that the partition can actually boot. I have grub on the / partition (/dev/hda7) instead of the MBR (/dev/hda). To install grub I did the following:
    # chroot /mnt/fc5.new/
    # grub-install /dev/hda7
  7. I rebooted and I went to Windows and proceeded to install bootpart to use the NTLDR to boot grub as stated in my FC5 Install Guide. (However had I installed to the MBR, this wouldn’t be needed.) Once setup in Windows, rebooted again and booted into Fedora!

Now this took a little tinkering. I accidentally made some mistakes on partition sizes when formatting and accidentally set the wrong values in both grub and fstab. So I had to go back and forth a few times. Luckily I had the old harddrive with a perfect backup.

This was an interesting experience. It did save me the time to do a full re-install of Fedora and to install all the updates and additional configuration. This time it took a few hours to get correct, but next time I imagine I could do it in 30 minutes or so.

Hopefully someone else can learn from this.

Update: Step 5. above can be simplified if the e2label command properly is properly used. Example:

# e2label /dev/hda7  /
# e2label /dev/hda13 /home

This should allow for the new drive to use the same labels as the old drive. However using the physical device partition numbers (/dev/hdX) is gauranteed to work, whereas sometimes labels can get confusing (or fail).

To Deutschland

When I started this blog it was a “fork of thoughts” from my main blog with a focus on software and linux. So how does a trip to Germany fit it? I decided I would try to take note of the basic differences I observed in computing. Granted Windows is used in far more public places that people realize (i.e. flight status monitors), but people don’t realize that Linux is used in just as many in on different scales.

Curious experience with in flight movie service.

When I flew to India in 2004 the airline carrier I flew provided a service similar to television. There were several “channels” which one could browse through and select, so that everyone viewing that same channel would be watching the same thing. However on this trip, the airline carrier had entertainment on demand service. There were several options: Movies, Music, Information and Games. Using your hand control you could watch any movie (fast forward, pause, stop) or select through hundred of songs or a few games. So the network in place had to provide 250 or more(?) unique feeds to passengers. How was this accomplished? Linux of course.

Sadly, I wish I did not know that. Why? The only reason I was able to determine this, was because the in-seat displays would reboot. Often! For a breif moment you could see the Linux penguin on the kernel boot information and then if you knew what you were seeing, there was a flash of the “X” cursor (which is part of the X-server) before the navigation system launched. Once running it was very nice but stabilty is just as nice. My system as well as the person next to me, infront of me and 2 of the 3 main public screens rebooted at least once.

Of course, this is all really irrelevant. A poorly configured system really has nothing to do with its components, but for a multi-million dollar (possibly global) deployment, the bugs should be out of the system! Glad to see Linux out there, but people might get a bad impression. That is … if they knew.

Mozilla SeaMonkey and More Confusion

I just downloaded Mozilla SeaMonkey to test out. For the interested, I have some instructions and commands near the end of this post. However this post is more about confusion in Mozilla’s choice of naming for their products.

I don’t care to re-tell the whole story about Netscape, Mozilla and Firefox, but let me be clear that these folks have had the most abysmal track record when it comes to names. Currently the Mozilla project claims the following for SeaMonkey:

The SeaMonkey project is a community effort to deliver production-quality releases of code derived from the application formerly known as “Mozilla Application Suite”. Whereas the main focus of the Mozilla Foundation is on Mozilla Firefox and Mozilla Thunderbird, our group of dedicated volunteers works to ensure that you can have “everything but the kitchen sink” — and have it stable enough for corporate use.

The truth is that sometimes for corporate users and maybe more-so for personal users stability may not be as valuable as name recognition. Simply put a web browser should be known as just that, not code names or monikers. Before the “Mozilla Application Suite”, it was known as just Mozilla. And Firefox (technically Mozilla Firefox) is living on its third name designation (prev. Firebird, prev. Pheonix). I understand the issue with trademarks and branding, but I question if so many names is healthy for Mozilla’s wider adoption. Additionally Firefox and Thunderbird are available through mozilla.COM – the Mozilla Corporation, not to be confused with mozilla.org – the Mozilla Foundation. Of course this move was necessary if any of these groups wanted commercial success of their products.

The way I see it (objections welcome) is that the Mozilla “People” want everyone to think in terms of their flagship products: Firefox Browser and Thunderbird Mail Client. Ideally they would hope the Firefox would somehow imply “web browser” and a similar effect for Thunderbird even though for most people this would not be blatantly obvious (ie. can you guess the purpose of Microsoft Internet Explorer?). The Mozilla folks wouldn’t mind if people forget that Mozilla is (was) also a browser and mail client, so naming it to some funny project code-name (that they really don’t care if people use) would be logical.

Of course this is all just a lot of time wasted (mine included) instead of focusing on better products. I’ll keep using Mozilla whatever-the-hell-you-want-to-call-it, but if they want a true corporate presense this is one of the many factors they need to overcome.

I hope this will be one of the last names thrown around from this group.


SeaMonkey Installation to /opt

This assumes you have either the mozilla or the firefox RPM installed. These commands are for FC4, but should apply to all distributions.

Note: SeaMonkey will properly work with your ~/.mozilla profile directory.

All commands executed as root of course, start with: su -

Installation

# wget http://ftp.mozilla.org/pub/mozilla.org/seamonkey/releases/1.0/seamonkey-1.0.en-US.linux-i686.tar.gz
# gunzip -c seamonkey-1.0.en-US.linux-i686.tar.gz | tar xf - -C /opt/
# ln -s /opt/seamonkey/seamonkey /usr/local/bin/seamonkey
# cd /opt/seamonkey/
# mv plugins plugins_seamonkey_default
# ln -s /usr/lib/mozilla/plugins plugins

Removal

# rm /usr/local/bin/seamonkey
# cd /opt/
# rm -rf seamonkey

Usage

As your own user (not root):

# cp -ar ~/.mozilla ~/mozbkp_pre_seamonkey
# seamonkey &

Currently using, it seems significantly faster than Mozilla 1.7.8 and much more responsive than my Firefox installation in FC4. Usability seems the same, however I have not validated added memory or resource consumption (knowing Mozilla, I know it will be a bigger resource hog).

The VPS Search

After using shared hosting services on Linux servers for the past few years, I was thinking about experimenting with a VPS (virtual private servers). Currently shared hosting services are highly competitive. If you shop around you can find great deals to host a simple website most with a comprehensive feature set. However these are all very limited. My basis for a VPS was to acquire a server that had room to grow but yet more manageable and more affordable than a dedicated server. These were some of my considerations.

Cost
There are VPS solutions as cheap as $30/month for a fairly basic setup. By basic I’ve seen: 5GB disk space, 100GB transfer bandwidth and CPanel service. However availability and/or reliability of the cheaper service tend to make them a poorer choice. Through my research I found that a fairly typical price was between $40-60/month. And some competitive features were 7-10GB disk, with 100-150GB. Even then, the typical “step-up” options were almost doubled features with a price of $100/month. Logically this doesn’t seem very practical as you can obtain some dedicated servers for $100 or even do a co-location server for less. Hence my target was $50/month.

Reliability
The more I read, the more I realized that reliability is a serious concern with VPS’s. Apparently many people have experienced considerable downtime or hard to diagnose problems. My guess would be poor technical support as it is very easy to misconfigure or corrupt a virtualized operating system. I came to accept that some VPS providers may have more downtime compared to shared hosting providers. Again this is only preliminary research.

Many providers do offer some sort of monitoring service (either free or extra charge). These can vary from simple ping commands from an external server at timed intervals. Or significantly more complex tools, however they all seem to imply that monitoring is in your best interest.

Linux
Almost all VPS providers will use some distribution of Linux. Technically, it could be another form of Unix (or even Windows with “Remote Desktop”). Additionaly most will have a preference to a Redhat variation (Redhat 9.0, Fedora Core, CentOS, RHEL). The benefit here is that I can duplicate a great deal of testing at home before I deploy a complex setup on the VPS.

Virtuozzo (the VPS management software in Linux) relies on some tweaking done to the virtuallized booting kernel in VPS. Hence when I saw Fedora Core 2 available, I blindly assumed it used a 2.6 based kernel, when in fact it was a 2.4 variant. On other VPS’s running CentOS, I’ve seen similar characteristics. — The bottom line is that it is beneficial to have a more up to date distribution even if you really shouldn’t modify it too heavily (i.e. Redhat 9.0 is almost 3 years old).

Software on the distributions will be fairly typical to any Linux: apache, database, mail, etc. However for management there are some options such as CPanel or Plesk or even perhaps a service specific option. If you want to save money (between $7-20/month) you can forgo the specialized options and even elect Webmin. However I doubt that it is nicely geared to be helpful for webhosting on a VPS or for running multiple shared websites.

Growth
This is final most significant factor. Depending on the partitioning of the VPS on the host machine, the VPS may or may not be able to grow. Example: If a 100GB disk layout was cut up in to 10 separate 10GB partitions and 1 user required an upgrade, this would not be possible!. They would have to buy a new VPS or transfer to another physical host. Hence it is very important that you understand your growth. Keep in mind that 1GB of disk space already goes to the Linux installed. Basic upgrades like software packages and bandwidth may be available, but physical resources may be fixed upon setup. Know these facts in advance.

Conclusion
Getting a VPS took me a little more time than I expected, but the research was much less than when I learned shared hosting in 2002. I plan to be up and running with my selection in the next few days.

From what Rob mentioned from his VPS experience, selection was probably the easy part!

Kernel 2.6.15 Released with NTFS Write

For the average user, a new kernel release usually makes no difference. If everything is already working fine, there there typically only 2 major reasons anyone should update their kernel. The first is for necessary or critical security problems (most people aren’t affected by every vulnerability). The second is the need for new features or hardware support, which is probably my primary reason to test a new kernel.

The release of 2.6.15 mentions a limited form of NTFS Write support.

NTFS write support: NTFS finally implements write support so “vim /ntfs/foo.txt” works. You can write(2) to a file even beyond the end of the existing file. Resident non-resident files and are supported. Sparse files can also be written and holes will be filed appropriately. truncate(2), ftruncate(2) and open(2) with O_TRUNC flag also works. There’re some limitations with heavily fragmented files which you won’t be allowed to change. Also, notice that creation/deletion of files and directories is still not supported and mmap(2) based writes is still not complete

Previously write support was incredibly “experimental” which means risky. I am still not willing to try this, but it seems very useful for me. However in the end, I am still not able to freely utilize the gigabytes of free NTFS disk space in Linux, which is what I require.

The standard kernel works perfectly with NTFS read. There is the Captive FS project which uses Windows XP files to read and write NTFS. I’ve used this with some success. Additionally there is the commercial Paragon NTFS which works somewhat better than Captive, but costs $70.

Merry Christmas from Macromedia Flash

The most current version of Flash for Linux is version 7.0 while Windows users are already on 8.0. However Macromedia has officially stated that there will be an upcoming version 8.5 for Linux. However it will be shipped after the Windows version becomes available. Even though that post states that no 64bit version is being planned, another engineer has stated that there is some work being done towards a 64bit version.

In the end, it’s good news to see Macromedia/Adobe putting forth some effort to support Linux .

Nvidia Linux Drivers

Nvidia recently released an update (1.0-8174) to their high performance Linux video card drivers. Usually driver releases are done to support new hardware. In this case SLI series video cards and others such as the GeForce 6100, GeForce 6150 and GeForce 7800 GTX 512. Other than the driver itself, there were some significant changes made.

  • There is finally an HTML Readme. Previously the text based file was very hard to navigate. (BUT these HTML files do not work in Mozilla or Firefox due to improper mimetypes!!! )
  • This a nvidia-xconfig application included. The installer will properly configure your xorg.conf file. No need to do it manually.

From my installation it appears as though the installer has become more sophisticated, which is welcomed. Many Linux newbies have had frustrations with installing the Nvidia driver.

My FC4 Installation Guide has been updated to reflect this new release.

EDIT: Dec 23, 2005 There was an incremental update 1.0-8178. If everything worked from 8174, no upgrade is required.