Help - Search - Members - Calendar
Full Version: Help Editing Kernal
Linuxhelp > Support > Technical Support
Hiya i've moved this topic from my Error loading GUI's to this one as the topic title is no longer relevant.

I'm getting this error.

(WW) System lacks support for changing MTRRs

This should not happen!
An unresolved function was called!

Fatal server error:


I'm assuming that there's a kernal to edit to get this to work, but i've never edited a kernal. I'm PC literate but just not linux literate.

Any help would be warmly welcome

If you want to compile your very own kernel, you're gonna want to download a kernel source. There are about 3 or 4 kernel source branches, each maintained by different people, and different minor numbers as well. The official kernel source is kept at Alan Cox makes his own little variations, these are denoted with a "-ac".
For now, what you'll probably want to do is go to, and dive into the public linux repository, then kernel, then the 2.4 series. 2.4 is the stable series, 2.5 is testing. Get the latest 2.4 (linux-2.4.20.tar.bz2 or linux-2.4.20.tar.gz). Untar this file into /usr/src. You'll get a folder, /usr/src/linux-2.4.20. cd into this directory, and run make menuconfig. Now you get a bunch of choices about your hardware - if there's something you don't understand, read the help. They're usually pretty short, and very helpful. For hardware drivers, you get to choose to compile them into the kernel (the "*") or use them as modules (the "M") or leave them out (" "). Modules can be added and removed, so they only take up memory when they're needed (sort of), also, they promote a little bit of flexibility, and on-the-fly parameter setting. I usually do some core things compiled in (MTRRs, APIC, USB-OHCI) but most hardware devices as modules (sound cards, ide-scsi, all my USB devices). When you're done configuring, you'll go to exit, and save your new configuration. Now do:

make dep && make bzImage && make modules && make modules_install

If you don't get any errors, you've successfully done the first step - you have a compiled kernel. Now you just have to boot it. What you're gonna do is something like

cp arch/i386/boot/bzImage /boot/mykernel-2.4.20
cp /boot

You also might want to do
depmod -ae 2.4.20
to make sure your modules are set up before you boot

Now, you have to get your bootloader to boot your kernel. If it's lilo, you'll have to edit /etc/lilo.conf and add something like


Follow the pattern of the other entries, if they specify a root, you should as well, if they don't, leave it out.

For GRUB, I don't know very much. My best advice would be a "man grub.conf" or looking at the GRUB HOWTO.

If your system uses initrd (you'll see initrd files in /boot) then you have to do a mkinitrd. I think all you should have to do is mkinitrd 2.4.20 /boot/myinitrd-2.4.20 and then specify it in LILO or GRUB, but I don't use initrd.

The kernel comes with these instructions too, under the "Documentation" directory, and in the README also. A self-compiled kernel will allow you to get rid of the kruft that packagers ship, and tune your system for what you want it to do.

Sounds very complix! I think i'll be up half the nite trying to do this!

I'll let you know how i get on.

a few fundamental question,
which distro u r trying..which version of kernel and xfree86 u have..i don't think that compiling the kernel will solve ur problem unless u r using a really old kernel.

though u have talked lot of hardware but just tell me how u tried to fix this x problem.u tried xconfigurator or xfreeconfig or u opted for manual editing of xfreeconfig file.
Originally i opted for using

dpkg-reconfigure xserver-xfree86

put once i was aware of what was wrong I manually changed it, and it worked in the sense of getting rid of the

"no screen error"

But now it finds it and has the above error.

Would compiling a kernal sort this problem out?

Probably not. The kernel would allow you to enable MTRRs if they aren't already, which they probably are. Kernel compiling is a good way to explore anyways, but obviously, this X problem is more urgent to you. Sorry I misled you down the kernel path. I'd stick to editing XF86Config until that works before changing the kernel. Try this:

grep "EE" /var/log/XFree86.0.log

This will print out all the error lines from the X logfile. Post them here and maybe somebody can help out.
grep "EE" /var/log/Xfree86.0.log


(EE) CIRRUS(0): Cannot use accelerations in less than 8bpp
(EE) CIRRUS(0): I2C Initialization failed"

grep "WW" /var/log/XFree86.0.log

shows one for fonts that's i'm not worried about yet and

(WW) System lacks support for changing MTRRs


From kernel docs:
I2C (pronounce: I squared C) is a protocol developed by Philips. It is a
slow two-wire protocol (10-100 kHz), but it suffices for many types of

I don't think this is important to you (unless you have an I2C keyboard?), so we won't worry about that.

The accelerations one is probably closer - it mentions less than 8bpp. If you're using less than 8bpp, you are either initializing monochrome or 16 color (not 16 bit, buto nly 16 colors). Well, not you. X is deciding that you want less than 8bpp, probably because it can't get your video card to work, so its defaulting to some sort of VGA failsafe setting that's just gonna suck.

have you looked at the XFree86 Cirrus documentation?
X 3.3.6 supports more cards than the 4.0 series, perhaps yours is one of these unsupported cards? If so, you could try going back to X3.3.6 (you can still keep GNOME 2 or KDE or whatever the same). X4 has better support for DRI, AGP, GLX and graphics tablets and the like, but many many people still use X3.

Also, there's a page at berkeley of working Cirrus Logic XF86Configs here. But, these are all for X3.2 or X3.3. You can't just copy and paste because the config format changed between X3 and X4, but you can translate portions pretty easily, assuming that your card wasn't orphaned from X3 to X4.

If X won't support your cirrus card, you can try using it as a framebuffer device. This is how I got my KYRO II card to work. I could get full resolution (1024x768 on my monitor), do Mozilla, XMMS, all of that, but I couldn't ever play quake3. This might be suitable for you, but its a pain, it involves not only kernel compiling but also device modification and some more X tweaking.
I fixed it . . . got yet more errors but i'm nearly there.

All I needed to do was #out the video ram in the XF86Config files.

When I use startx it loads up. Some boxes appears in the top left while they are presumably loading up.

I'm still get errors but the major symptom is that startx hangs properly and i can't ctrl+alt+backspace out.

X loads, but i can't tell if it's hanging or not, i can't switch consoles (alt+1-6, or alt+leftarr/rightarr). But i can ctrl+alt+backspace out.

Any ideas, this is getting simpler and simpler i know but it's really really irratating.

Hmmm. Maybe gnome isn't starting correctly or something. Since you can't switch back to the console to get the errors, you can't see what the problem is. And, since X appears to be loading at least somewhat properly, the error probably isn't in the XFree86.0.log logfile.

If you want to record all the messages that appear on your console, try

startx &> ~/my_x_log

Then, all the output of X (and GNOME/KDE and all the subprograms) will be recorded in ~/my_x_log. If it hangs, wait about 30 seconds, then reboot, you should be able to open my_x_log and see the last thing it was doing before it hung. It might not be X that's hanging - X might be trying to start GNOME and GNOME is misconfigured, so it's hanging there. This happens to me when I don't have /etc/hosts set up properly, but your distro should have done that for you.

It'll probably help to increase X server verbosity. Try opening up /usr/X11R6/bin/startx, you should hopefully see the line:
Change this to:

This will make X tell you more of what its doing before it hangs. If you don't get interesting results, add another -v right after it, I think you can have up to 5 levels of verbosity, but at some point, you're just seeing crap that won't help at all.
I think one of the problems with X is that I don't think my keyboard is set up properly in the Config . . . thing is, it's stupid I know but I don't know what to put in the config, its a laptop keyboard but other than that I don't know

Unless it's foreign, it shouldn't be too strange. Here's some of my XF86Config (for X4), a Dell Latitude CPxJ laptop:

Section "ServerLayout"
Identifier "Anaconda Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Mouse1" "SendCoreEvents"
InputDevice "Keyboard0" "CoreKeyboard"


Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
# Option "XkbOptions" "ctrl:swapcaps"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
#Option "XkbVariant" ""
#Option "XkbOptions" ""


Is it possible your mouse isn't set up right? This plagued me for a while - built-in laptop mice have bizarre protocols. This configuration allows me to use the touchpad (as Mouse1) and a hot-pluggable USB mouse (as Mouse0):
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
#Option "Emulate3Buttons" "yes"

Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "NetMousePS/2"
Option "Emulate3Buttons" "no"
# Option "ZAxisMapping" "4 5"

Good luck. It seems you're so close.
I'm assuming that it would pick up the fact i'm using a laptop keyboard, which I am. However when I change the setting to "uk" which is where i am, things don't seem to work well. I'm already aware that i got some funny settings as the characters displayed on the console don't match up to those on my keyboard, but i'm assuming thats something to do with the kernal on boot, and I don't know what to change their either.

When i load X up with uk keyboard cfg and three finger it, i get a non fatal error

Can't find the file "uk" for symbols

The mouse works fine, no problems, moves around the screen nicely anyway. (So I assume it's working okay)

I have very little experience with internationalization (mostly trying to de-internationalize SuSE once). How to setup international keyboard in X Window with Xmodmap and XKB available at TLDP might help with internationalization. If you remove the uk variantness, does X start? Obviously, your keyboard won't work right this way, but then you'd know for sure that i18n is the problem.
I'm guessing that my keyboard layout in X is the same as in the console, there's no reason for it not to be, therefore I can deal with it as it's mostly the same, but if I can't change console i'm still stuck, and I can change console in console, so it's not that.

then i grep (ww) the log file i'm still getting the warning about lacking support for the changing MTRRs, could this still be the problem? I've gotten rid of all the other (ww).

When i grep (ee) i'm still getting an I2C init. failed? Could it be due to that?

Just to say that you're being an absolute star today, helpin' me out like this!

I don't know. Debian says:
The i2c bus is used by many modern motherboards to provide hardware health monitoring data, like temperature and fan speed...
So I don't know why X cares about I2C. In your XF86Config file, in the section titled "Modules" is there a line concerning I2C or MTRRs? If there are, what happens when you add a "#" before them?

MTRRs shouldn't be necessary for X though - maybe accelerated X, but not like this. I can help you add them if that is the problem, I'm just not sure that it is. What happens when you do

cat /proc/mtrr

I get:
[root@x1-6-00-10-7a-69-e3-23 root]# cat /proc/mtrr
reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1
reg01: base=0x10000000 ( 256MB), size= 64MB: write-back, count=1
reg02: base=0xfd000000 (4048MB), size= 8MB: write-combining, count=2

Basically, if you get any output aside from an error, you have MTRRs enabled. It's possible your machine doesn't have MTRRs, even if they're supported in the kernel, your motherboard might just not have them. In this case, X should leave them alone, maybe it refuses?
When I typed in cat /proc/mtrr i got an error, no such file or directory, so i went into the proc directory just to check, and there's nout there that has any connection to mtrr

ok well you either don't have MTRRs or you don't have MTRR support enabled in the kernel.

dmesg | grep "mtrr"

This will tell you if the kernel has MTRR support. you could try to add in support if it isn't already there by

modprobe mtrr

as root.

If yo udon't get anything from dmesg, and modprobe doesn't work, then it's likely that you don't have MTRR support inthe kernel, so you'll have to recompile the kernel if you want to add MTRR support.
both modprobe and dmesg | grep "mttr" produced nothing.

How hard is it to compile a kernal? I'm happy to give it a go, you only learn by doing or watchin' and as i can't see what your doing i'll have to be doin'!


It's not impossibly difficult, probably slightly easier than installing. And, it's something you probably will have to do sooner or later, it'd teach you a whole lot about the process.

The Linux Kernel HOWTO will give you great instructions on how, my previous post has a summary of what your steps are going to be. In the "Processor Type and Features" section of the config, you can enable MTRRs. I'm kind of surprised that your distro doesn't support MTRRs to begin with, and I'm still not sure this will fix the problem. It is something to try though.
Thanks mate, I'll let you know how I get on with it, I mite not tackle it tonight (its now 2.30am, and I got an assignment due soon) but I'll do tomorrow 1st thing if not tonight!


Hrrm . . . the light goes on, but nothing's there!

Every HowTo that i've seen so far points me to


my /usr/src is empty!

Now the question . . . how do i get what I need in that file?!?!?! It's a 6mg file, floppy won't do . . . I don't have a dial up . . . and i'm sat in halls at uni, with only one IP address . . . But I won't give up!

Will my linux machine be able to see my HD on this puter considering i'm only running 98(se) on it? If so, is it just as simple as setting my ip add, subnet in 98 and my address, netmas, network, broadcast, gateway in /etc/network/interfaces

You could try to get the kernel source package from your distro CDs, but this might not be 2.4.20. Either way, it's likely it'll have MTRRs as an option.

I'm thinking you're describing two computers, one with linux, and another with 98. It is possible to communicate between them. You could download the file on your 98 machine, then set it up to allow file and printer sharing, share the folder with the kernel in it, and then use the linux machine's SMBCLIENT to connect to the 98 machine and get the file. This is a difficult process, though.

I think there's an easier way. Your linux machine has a NIC, right, and you only have one IP. Obviously since you can't get X working you can't just open up netscape (or mozilla) and go get the file, but what you can do is use wget.

You're gonna have to set up the networking on your linux box.
First, get the info from your windows machine (run winipcfg) - it'll give you a DNS server, and then make sure your Win98 NIC is selected, it'll tell you 1) An IP for the NIC 2) A subnet mask 3) A default gateway. With these four (DNS, IP, subnet, default gateway) you can connect your linux box to the internet. As root type:

ipconfig eth0 NICIPNUMBER netmask SUBNETMASK
route add default gw DEFAULTGATEWAYIP
then, add the dns to /etc/resolv.conf by adding the line:
nameserver DNSIP

Now, your linux box can use the internet. Try ping - you should get a response. Terrific. Now to get the kernel file.

First try typing in "lynx" at the prompt - if it works, you'll get LYNX, the command line web browser. Press "g" (as in go) and you can type in an address to go to ( then use the arrow keys to highlight the link you want and hit enter, keep doing this and then you'll eventually be highlighting linux-2.4.20.tar.bz2. Press "d" (as in download) to download the kernel.

OK, assuming lynx doesn't work and you can't or don't want to bother installing it. You have to get the exact URL for the kernel file and then type in:
wget (whatever the rest is)
and you'll download the kernel to the current directory. Now you've got it. You might want to copy it to /usr/src.

Most of this process will have to be done as root.
I can't seem to find the right kernal to d/l

I couldn't get my network to work . . . but i'll sort that out. It's now 5:45 my time, the sun's up . . . i'm turning to assignments now. I'm going to be away over the w'end, I mite take my laptop with me when I go, I'll let you know how I get on!

Thank you soo much for the time you've put in trying to solve my problems. . . .

I'd recommend:
does it matter that when i do uname -r i get 2.4.18-586 and the kernal your suggesting is different?

uname -r is telling you that you're currently running 2.4.18-586 (2.4.18, possibly your distro's modification #586?). We are intentionally upgrading to 2.4.20 - upgrading kernels within a minor branch (2.4) is o.k. - however, if you were currently in 2.2 or 2.3, the process would be different. I should have made sure, my mistake. But yes - 2.4.18 to 2.4.20 should be (relatively!) painless.
Thanks, getting the kernal onto the laptop is going to be non-trivial, but I got a couple of ideas. I'll let you know when I get it on there and start compiling, i had to leave it at uni and i'm a good 100 miles away from it now.

Thanks again

Hiya, right i've got the file "linux-2.4.20.tar.bz2" in "/usr/src"

What's next, i'm trying to follow the steps on the Howto link that you gave me, but I can't work it out.

Could someone please help me?

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2017 Invision Power Services, Inc.