Custom kernel 3.2.10 problems
I'm officially stumped. I want to get Linux 3.2, but my distribution uses 2.6. So, I'm trying to compile my own kernel.
This is the first time I've tried anything of the sort. I've used Linux for a few years, but I'm no programmer. My computer is 64-bit, if it makes a difference. When I try to boot my newly compiled kernel, I get some errors. I forget what it says exactly, but it's along the lines of this: Kernel panic! Unable to mount root filesystem. Something about not syncing V-something. I need to take a picture of the screen, but my camera is AWOL. Booting the kernel that came with my distro works fine, otherwise I wouldn't be able to post this without a LiveCD or something. But my 3.2.10 kernel is at the top of the boot order, so I have to watch out while booting. Any ideas on how to fix this? I've verified that it's trying to mount the right partition, /dev/sda6. I've run update-grub as root, and no change. Do I need to compile a new kernel? Version 3.2.11 came out since I started, too. After all, I might have messed up the configuration. Any help is greatly appreciated. |
You either left out some important modules or support or something else is wrong. Exact error messages though are helpful. Just write down the error message if you can't take a picture and post it.
Also, edit your grub to default back to your good working kernel so you don't have to keep selecting it at reboot. |
Quote:
The problem isn't fixed by upgrading to version 3.2.11. That supports the missing module theory. Yeah, I should write the error message down. I'll reboot and do that after posting this, and I'll edit this message with the result. I did locate my camera, and took a picture, but I could only fit so much of the message on it. So, I zoomed in on what I thought the most important: http://i43.servimg.com/u/f43/16/73/49/25/panic10.jpg Is it possible to add modules to the kernel? Or will I have to compile again? For that matter, which modules do I need to add? Grub Customizer doesn't work on my system for some reason, and I don't know of any other way of editing boot order. But I don't reboot my computer too much, so it won't be much of a problem, for now at least. Thanks for your help. :) |
Quote:
If it is for "various" google "How to compile a kernel for {distibution}". |
Quote:
Sorry about not providing enough information... I'm new to custom kernels, so I have no idea what you need to know... so, here's a bunch of information, I'm not sure what's relevant, hopefully it will help: It's a Dell Inspiron N5040 laptop, dual booting Ubuntu 10.04 (with Linux 2.6) and Linux Mint 12 (with Linux 3.0). I have gcc installed on both OSes, because I'm learning C. The computer has an Intel Core i3 four core processor. Four gigs of RAM. Here's the error message: Code:
Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0) Code:
Pid: 1, comm: swapper/0 not tainted 3.2.11 EDIT: I did some research, armed with the error codes. Here's the most relevant I've found: Quote:
Quote:
|
Read this blog post on how to compile your own kernel, be sure to also read the comments.
|
Some module is missing for your root filesystem. Are you using initramfs? One option is to get get a copy of a config file from a working live cd / working installed linux for that computer: Try /proc/config.gz or /boot/config.xx. Once you have a configuration that works, you could slowly start removing modules that is not required. Another is to use lsmod on a working live cd to see which modules are used.
From memory you should have the correct modules selected in at least these areas: SCSI disk support Serial ATA and Parallel ATA drivers Files systems: ext2,3,4 +PCI support Regards, Stefan |
Quote:
I'm not sure I understand your proposed solution. Are you saying that I should copy modules from /lib/modules? I think that would work, only problem would be compatibility with a certain version of Linux. The LiveCD idea is a good one... find a Linux 3.2.11-running CD somewhere, and copy modules from it. Quote:
I'm really only trying to get the latest kernel to geek out, and for bragging rights. I think a LiveCD with a 3.2.11 kernel would be hard to find... I'm going to try compiling it again using the steps in the above link. And if I get it done by six tonight, I can tell my friends all about it. Thanks for your help so far, guys. I would have never figured this out, even with Google. |
You can also usually go back and add missing modules without recompiling from the beginning as well. I've gone back to my config, added what modules I needed and then started at the make modules steps to compile the missing ones I needed, etc.
You may want to start from scratch though to get more familiar with it all. The first time I did a kernel compile manually, I went through every single option, if I wasn't sure what it was for, I googled it to understand more. Some are dead obvious, others aren't. |
Quote:
I recompiled using the aforementioned link's steps. They didn't work, so I used my method again, this time paying more attention to module settings. It worked a lot better this time. I got the Ubuntu boot splash, but it still couldn't mount the root fs. So, looks like I just change the settings and recompile and install the modules... Edit: Changing the configuration and recompiling and installing the modules didn't do it. I think I need to recompile the kernel specifically with support for everything. At least I have plenty of time.. Edit: Same problem. It says, "Unable to mount /dev/sda6, unsupported optional features". Looks like I need to go module hunting. I went through every option before compiling the kernel, and I selected every "optional feature" I could find when it came to filesystem support. |
Quote:
Alternatively, get a copy of the config file for that particular kernel from the live cd (eg /proc/config.gz). Copy this file to the build folder of your new kernel as '.config'. Then do 'make oldconfig'. Regards, Stefan |
Quote:
|
Quote:
|
Quote:
By the way, I used apt-get to upgrade to the 3.0 kernel, at least until I can get 3.2. I've already noticed a lot of improvements. For one thing, the internal speakers work. They didn't in version 2.6. So, I'm optimistic. :D |
Quote:
If you have never done this before you should use the native config as a basis to start with. |
Quote:
Another build is in progress. I'm going to figure this out yet. Thanks for everyone's help so far. :) |
Okay, update time...
I've been gone for a while, so I haven't been able to work on this until now. Even using a previous config file, no change in status. So, I'm wondering, might it be that there's no /boot/initrd.img-3.2.11-custom file on my drive? In fact, there's no mention of init or initrd anywhere in the process of building and installing the kernel... I'm starting to wonder if there could be an issue with that. From what I know about init, off the top of my head, I think this file looks like something that would tell init how to load the kernel or modules. Is this correct? If so, maybe init isn't loading everything. So, how would I get an initrd image for my kernel? |
Quote:
Can you post a step by step of how you are trying to do this? It may help to see if you are missing any important steps. |
Okay, here's how I'm trying to do this:
1. Download and extract the source tarball. If I'm compiling source that I already have, I skip this step. 2. In a terminal, start the configuration with make menuconfig. I go around, selecting anything that might apply. When using a previous config file, I ran make menuconfig and used the "Load alternate configuration file" to load the file I needed. I then fine tuned it. 3. I then run make to compile the kernel. 4. Then I run the command "make modules && sudo make modules_install" to compile and install the modules. 5. Then, to install the kernel, I run make install. I then have three new files in /boot for my kernel. 6. To let the boot loader know there's a new kernel on my hard drive, I run sudo update-grub. I then reboot into my not-exactly-functioning kernel. |
Quote:
For step 3 try this. fakeroot make-kpkg --jobs=2 --initrd --append-to-version=-custom --revision=insertdatehere kernel_image kernel_headers modules_image At this stage I would just try and let it compile with the old config in place. If that doesn't work then try adding features. I suspect that what is happening is you are changing the config and either accidently removing something or not applying the old config correctly. Let us know how you go. |
Quote:
Code:
checking for directory with ALSA kernel sources... ./configure: line 4715: cd: ../alsa-kmirror: No such file or directory |
I'll do a compile on my system and see what happens. If it works ok I'll post a complete step by step for you. It may take a while so don't expect anything until the end of the weekend.
|
Quote:
|
I should be working but the tv is showing a repeat of motor racing from a few weeks ago is on TV so I'm watching the v8 utes racing while I compiled 3.2.11 :cool:
OK here is the process I followed. 1. cd into the extracted folder. 2. cp /boot/config-3.2.0-2-amd64 .config 3. make menuconfig 4. select exit on make menuconfig, unless you need to enable things like non-free drivers etc in which case you will need to go through the lists and select the things you need. Make sure you save the config after enabling anything. 5. fakeroot make-kpkg --jobs=2 --initrd --append-to-version=-custom --revision=yyyymmdd kernel_image kernel_headers modules_image Change the bold to suit your purpose, append-to-version=-custom is what you want to call it mine is called cobber make sure you keep the - infront of the name. revision= is the date you compile on write it in this order year month date yyyymmdd. 6. let it work through the process and if there are no errors listed at the end install the debs. I just went through this with 3.2.11 and it works a treat apart from the fact I didn't do my wireless driver which I will do now. |
Quote:
So, I guess I have a problem. If that jobs option is important, the Alsa module won't work without it. But nothing works when I do use it. |
The jobs just means if you have a dual core you can do 2 jobs, if you have a quad core yo can do 4 jobs.
I'm at a loss as to why alsa is failing, unless I see a complete (and they are extremely long) log for the job I doubt I can offer any more help. |
Quote:
|
ok save the log and post the link, I'll look at it when I can
|
I've been a bit slow with remembering something. From memory Ubuntu doesn't use alsa anymore it uses Pulse Audio. You may be able to use the new debs anyway.
|
Quote:
I'll report back when done... Edit: Exact same error as before. I'm starting to think the build method is irrelevant here, I think I need to check the configuration a little more. However, because I'm using the same configuration as a known working kernel, I'm not sure. It's getting late, so I guess I'll have to think up a solution in the morning. But I will find a solution. Maybe I need to go at this a different way. I mean, what if it's Ubuntu that is the problem? Perhaps I should install Debian on this free space I have on my hard drive left over from a Linux Mint installation, and then build MATE and Linux 3.2 on top of that. |
Quote:
One other thing: remember to clean up with make mrproper before starting a new build. This also deletes the ".config" file, so make a backup of it outside the source directory and then copy it back afterwards. |
Quote:
|
Quote:
|
Quote:
I've made no major breakthroughs on Google... best I can tell, what I've been trying would work on another distro. |
I don't know why I missed it but I have only just seen your edit to yesterdays post. It is possible that Ubuntu is the problem, they have a lot of added extras in the kernel but I'm not sure how you would be able to prove it. Give Debian a go if you feel like it, I prefer Debian now, and I started with Ubuntu in 2007, because it is actually easier to work with after it has been setup.
|
Quote:
|
That's fine Ryan, I'll help where I can. Ubuntu shouldn't be a problem but it is looking as though we have covered all the bases that are the usual suspects.
|
Quote:
|
You can pretty much follow the debian way to do it.
To use your working kernel config: Code:
cp /boot/config-$(uname -r) ./.config Code:
export CONCURRENCY_LEVEL=2 Here the Ubuntu page about it: https://help.ubuntu.com/community/Kernel/Compile Regards |
Quote:
|
Okay, I've got good news.
I tried compiling Linux 2.6.32 (the version Ubuntu 10.04 uses out of the box these days), and I got to the login screen. After login, though, the computer crashes. But at least it boots. Also, while working on it, I figured out how to make an initrd image. Now, I'm going to try Linux 3.2 again, this time with initrd. If that fails, I'm going for version 2.6.35, the version Ubuntu Maverick uses. Maverick has never failed me yet, but as it is going to loose support I migrated to 10.04, which is a little more stable on my computer. But the audio doesn't work well. So, I thought I'd try a custom kernel to see if I could coax the sound to work right. |
Well at least things have happened differently this time around. I have to be honest and say I don't understand why you don;t just enable backports and use the kernel from something like Natty. That's what I did for my fathers laptop with 10.04 and it's running well.
|
Quote:
|
Have you tried KernelCHeck?
|
Quote:
Edit: Meh. KernelCheck depends on kpkg, which, as before, died with "error 2", whatever that is. Linux 2.6.35.13 won't boot, maybe it has something to do with it having 30+ selection mismatches. I'm going to have to scour the Ubuntu repositories a bit, then I'll try another compile. |
Okay, some good news...
My attempt to compile a kernel (version 3.3.1) on Fedora 16 worked... almost. WiFi doesn't work, but that can probably be fixed. So, it was Ubuntu's configuration after all. Maybe I should try moving to Fedora... |
(duplicate post)
|
Excellent stuff Ryan
Quote:
|
Quote:
Then again, I already have a Fedora installation with Linux 3.3.1, so I might as well use it. :) But if I decide to remove Fedora, I have a Debian disc ready. (Hee hee... when this thread was started, the latest release was 3.2.1 and now I have 3.3.1) |
Just out of curiosity, why in the first place did you want to replace the kernel?
|
All times are GMT -5. The time now is 09:34 AM. |