Mar 112010
 

If you visit the Custom kernel article on the CentOS wiki, you will see lots of warnings including the fact custom kernels are not supported by CentOS. If in doubt, just mention “custom…” in the centos IRC channel, you would be told to go away (if you are lucky enough to not get banned :-D).

In the CentOS forums, things are a little more relaxed. After usual warnings, you will receive some (or even extensive) help. As someone put it in a recent post, “… but there are *some* situations, where it [custom kernel] is desirable (usage on notebooks with HW that’s not supported by native kernels – which is e.g. my case or curious minds of young and restless geeks etc. )”.

I am far from ‘young and restless’ and I am not a geek. However, I did compile the latest mainline kernel — in an attempt to help those encountering trouble with installing newer kernels. The error was “mount: could not find filesystem”. I could reproduce it on my CentOS system.

As always, Alan and Ned engaged their brains and we tried several things to find a solution. We were getting nowhere when vanecka posted a fix in this forum thread.

Fix:
Enable CONFIG_SYSFS_DEPRECATED_V2 in the kernel source configuration.
If you run “make menuconfig”, browse to:
General Setup —> enable deprecated sysfs features which may confuse old usersp, and enable this option.
—OR—
Edit your .config file with a text editor and add/modify entry:
CONFIG_SYSFS_DEPRECATED_V2=y

Genius! If you are interested in learning more details about this option, head for this web page.

Jan 312010
 

CentOS aims at being 100% binary compatible with the upstream vendor (including bugs). To accommodate users needs, the CentOS team offers the centosplus kernel which includes features that are not in the distro kernel. It has a number of options (mostly device drivers) enabled and also has patches that correct known issues.

Recently, it was reported that the centosplus kernel had a problem with certain versions of VMware products as seen in this CentOS forum thread.

Specifically, building the vmnet module on a host fails with the error:

/tmp/vmware-config2/vmnet-only/compat_netdevice.h:273: error: redefinition of ‘struct napi_struct’

Apparently, somewhere in the kernel source that was added in the centosplus kernel, there is that definition and it is conflicting with the VMware code.

It turned out that the problem exists in the VM guest as well: building of the vmxnet modules fails with the same error. The fix, in both cases, is to untar:

/usr/lib/vmware/modules/source/vmnet.tar (host)
/usr/lib/vmware-tools/modules/source/vmxnet.tar (guest)

and comment out the following block in compat_netdevice.h:

struct napi_struct {
    int dummy;
 };

More details can be found in the CentOS bug tracker.

Aug 062009
 

Not long ago, Steve, one of the founders of the ELRepo project, built new systems with the AMD II X4 Phenom processor. After hearing his positive comments, I replaced my old desktop with a new one equipped with a Phenom cpu.

Steve soon noticed that the machine consumed more power when it was running CentOS compared to when running Fedora. Turns out that, in CentOS, there is no per-core control — meaning when the system needs a higher processor power, all cores will shoot up to the maximum frequency. In Fedora, each core gets attenuated independently.

This issue was noted by a CentOS forum user, AlexAT, here. He not only reported it in the upstream bugzilla but came up with a fix later.

Using the patch provided by AlexAT, we built a kernel module kmod-powernow-k8 and released it through ELRepo. After installing kmod-powernow-k8, Steve saw that the system was now measured drawing ~110W at idle from the wall outlet, similar to the power consumption observed under Fedora 10 and under CentOS 4.7. So without kmod-powernow-k8 installed, the system was consuming ~40W (36%) more power at idle and the core temperature was running 8-10°C hotter than with kmod-powernow-k8 installed, making this a very environmentally friendly kmod.

So, if you have newer Opterons, the Phenoms or Phenoms II (or Kuma core Athlons X2), you should give this driver a try. Also, you would want a backported AMD K10 core temperature monitor driver module (kmod-k10temp) from ELRepo.

Let’s go green!

Jun 302009
 

It all started in the CentOS forums.

CentOS, being an Enterprise Class Linux distro, may not have support for new hardware, especially those found in desktops and laptops. CentOS forums get many postings from users who are looking for drivers that are needed for their network device, webcam, etc. In fact, googling for “driver” and “centos” yields much more hits from the forums than the mailing list as shown in my earlier blog.

Alan Bartlett who has been actively helping in the forum has strong background in the kernel and its modules and has been building, whenever possible, a driver module each time he sees a cry for help. In a fairly short period of time, quite an impressive number of such kernel modules were built this way and it was growing.

Because these drivers were designed to be independent of the kernel version (kABI-tracking, kABI = kernel application binary interface), they survive kernel updates. Also, they can be used in RHEL and all its rebuilds, not just CentOS. So, it was a good idea to make them available to wider communities. NedSlider proposed to establish a repository for that purpose. The ELRepo project was thus started by five members of the CentOS / Scientific Linux community.

A little more details of ELRepo can be found in the Ned’s recent blog.

May 292009
 

One of the most commonly asked questions in the CentOS forums is concerned with 3rd party repositories. In addition to referring to the Repositories wiki article, we need to make sure people use the yum priorities plugin appropriately.

Often times, we want to know how they set up the priority scores but there is no easy way to display them. yum repolist all does not include this info. A forum helper jlehtone posted a one-liner that does just that:

cat /etc/yum.repos.d/*.repo | sed -n -e "/^\[/h; /priority *=/{ G; s/\n/ /; s/ity=/ity = /; p }"  | sort -k3n

The output may look like this:

priority = 10 [base]
priority = 10 [updates]
priority = 30 [extras]
priority = 50 [centosplus]
priority = 60 [c5-testing]
priority = 70 [rpmforge]
priority = 75 [kbs-CentOS-Testing]
priority = 90 [kbs-CentOS-Misc-Testing]
priority = 94 [epel]

Almost immediately after the above post, Alan the perfectionist, a cat person himself, opposed the use of over-working cats and came up with his version of the one-liner:

sed -n -e "/^\[/h; /priority *=/{ G; s/\n/ /; s/ity=/ity = /; p }" /etc/yum.repos.d/*.repo | sort -k3n

Personally ... I want to see the cats working for the community ... :-D

May 292009
 

A while ago, I was talking with my buddies and the subject was about installing / updating a package using yum.  yum did not find the package that had just been added.  No problem, either yum clean metadata or yum clean all will do.  Err … it didn’t. 

As it turned out, it didn’t work because the repository in question was disabled by default.  The man page for yum clearly states:

Note that "all files" in the commands below means "all files in 
currently enabled repositories".   If you  want  to  also clean  any 
(temporarily)  disabled  repositories you need to use --enablerepo=’*’ 
option.
Apr 122009
 

For some reason, my desktop gnome menu had a “Suspend” option.  It was right under the “Log out …” option in the System dropdown menu.  One day, when I meant to click on the “Log out” option, my mouse went too far and I ended up selecting this “Suspend” option.

After struggling for the next few minutes, I gave up and rebooted the machine to come out of the suspended state.

The Suspend option should not have been there to begin with.  Anyway, it was time to remove it.  Fortunately, that was as easy as typing [1]:

gconftool-2 --type boolean --set /apps/gnome-power-manager/can_suspend false

Likewise, if you want to get rid of the Hybernate option,

gconftool-2 --type boolean --set /apps/gnome-power-manager/can_hibernate false

[1] http://magazine.redhat.com/2008/05/30/tips-and-tricks-how-do-i-remove-the-suspendhibernate-entries-from-the-system-menu-in-the-gnome-panel/

Mar 192009
 

My first encounter with kernel modules was when my systems running Fedora Core 5 started crashing after the kernel update to 2.6.18.  Long story short, it was due to a bug in the cifs kernel module which was fixed after more than 100 e-mail exchanges with samba developers.  The problem was solved, but there was something I never understood; the patched cifs module I built was much larger than the distro’s.  This is always true.  A custom-built version can be more than 10-times larger than its counter part in the distro kernel.

I never pursued this issue until the other day when wolfy and Ned started a conversation on IRC about this size difference.  It is not due to stripping because the distro version is “not stripped” and, in fact, if you strip it the module no longer loads.

Then later, Alan asked in his clever voice, “have you checked the options to strip?  It might be that a total strip is verboten but a selective strip works?”

That was it! :-)

I tried a strip --strip-unneeded command and that reduced the size of my module file to something close to the distro’s AND the file remained “not stripped“.  Soon after, Ned found the --strip-debug option does the trick, too.  This is probably what is used when the kernel is built and modules compiled.

Mystery solved.

Feb 272009
 

There are several ways of getting help in CentOS as summarized on the Wiki Help page. The most commonly used CentOS-provided venues are the mailing lists and the forums. However, when people encounter problems or simply want to find out some information, they most likely just go to google.

I performed some searches on google for commonly used terms with the “site:centos.org” added and then counted the number of hits that pointed to the mailing lists (M/L) and did the same for the forums.  The result is summarized below. Assuming most people will not go through many pages, I collected the results from the first 50 links (that’s 5 pages with the default of 10 per page).


Search term   M/L Forums
============  === ======
install         0   21
installation    0    4
kernel         10   11
driver(s)       3   24
DNS            11   29
postfix        19   20
sendmail       22   16
selinux         5   10
apache          0   23
httpd           6   30
xen            38    7
kickstart      20   12
crash          16   11
panic          10   19

While I do not claim this is a representative result, I do notice that the forum posts tend to be found more often than the M/L posts. One notable exception (among this small set of searches) was “xen” — most of them were from the centos-virt mailing list (what else do you expect? :-) ).

Also, I am not trying to compare the significance/importance of the two help channels, either. I only want to emphasize the fact that, in the age of google everything, many users come to read those posts and, therefore, we need to maintain the contents of the posts as accurate as we can.

I’ve heard about a plan to merge postings from both channels into a single database.  That would become a valuable souce for all CentOS users.

Jan 142009
 

Last year, we saw many people who migrated to CentOS. There is no doubt we have many more CentOS “newcomers” this year. There are basically two types of CentOS newbies.

One is former/current Windows users who just want to see what Linux looks like or who are seriously considering saying goodbye to the blasted OS. These people need a lot of help but, as far as they are eager to learn, it’s not difficult to provide assistance.

The other type is those who have been using other distros for some time. They tend to demand the latest and the greatest version of everything. It is often necessary to explain all about an enterprise-class distro, stability and backporting. A recent post in the CentOS forum is from a person of such type:

“I guess I will go with a more updated and modern O/S.
Centos must be years behind other O/S”

Another concept that is often not so obvious among the CentOS newcomers is the package-based management. As soon as they find out their favorite application is not available or obsolete, they want to install it from source. Let me pull some example again from a recent post in the forums (with a slight adjustment):

“I was thinking removing the original version (e.g. yum remove glibc) and install the new version using /usr/local as the root path could be a better solution for the system stability.”

This poster is even talking about the stability ! However, this is not a laughing matter. We should all get busy and provide proper guidance to people who are serious about doing the migration.

Welcome to the CentOS community !