# kernel configuration questions

## oscurochu

I have the Dell Mini 9, and there is a wiki dedicated to my netbook. This will be my favorite computer because it's the first computer I had that has pages dedicated to it: Debian, Gentoo, and probably many more. Ubuntu even has a whole web site dedicated to Ubuntu on the mini. That just means it's pretty much well supported, I guess.

Well anyway, Im about to compile my kernel for the third or fourth time. I am asking this question for two reasons: Compile time, and performance. The Wiki page for my computer has a bunch of different options I need to have selected for my computer to work properly. Secondly, this is my third (or fourth) time compiling the kernel and I don't want to be waiting around for 2 hours doing it. If you're familar with the Mini 9, you'll know it has an atom processor and isn't exactly the fastest one out there. 

So my question is: Is it safe (will it compromise functionality) to uncheck all of the options in "make menuconfig," when compiling my kernel, that the Dell Mini Wiki page (and related pages) don't cover? Also, would this noticeably speed up compile time at all? If unchecking all the options the Wiki page (and related pages) doesn't cover, which options are safe to uncheck without compromising functionality?

Thanks!

----------

## gringo

 *Quote:*   

> Is it safe (will it compromise functionality) to uncheck all of the options in "make menuconfig," when compiling my kernel, that the Dell Mini Wiki page (and related pages) don't cover?

 

depens, but i would say it isn´t safe, specially if you aren´t sure what you are doing.

 *Quote:*   

> would this noticeably speed up compile time at all?

 

could be but i´m just guessing.

I have an atom based eeepc and it doesn´t take 2 hours to compile the kernel BTW.

And if you have another ( faster) computer running linux you can build the kernel there.

cheers

----------

## oscurochu

I finally figured out how to get the recommended kernel .config file working, so all questions about configuring the kernel are no longer needed, but still open for discussion.

I had to save the .config file from the Wiki, run "make menuconfig" exit and save without changing anything. i did make sure the file was loaded into menucofig, first, before assuming it loaded correctly. I noticed that I needed to change one thing and that was the default resume partition (for hibernating).

If i didn't run "make menuconfig," make would prompt me for fifty thousand different things i was unsure of answering about the kernel. Thats why i stayed away from the default config, then i did a little experimenting and viola!

I do have a faster computer, I have an AMD64 (running x86). I just wasnt sure how to do this because nobody would show me how. I've asked more than once in one of the threads i posted and then i was told to just use the stage4 tarball and gave me a wiki page on how to do that. This was after complaining I wanted to reinstall, but didnt wanna have to compile my kernel for a hundredth time.

Well if you can show me how to do it, so when I have to update my kernel in the future, that would be fantastic! I would greatly appreciate that.

How can I find out what modules I need loaded?

----------

## gringo

 *Quote:*   

> Well if you can show me how to do it, so when I have to update my kernel in the future, that would be fantastic! I would greatly appreciate that

 

it´s really really easy, just build a kernel + modules ( if needed) and copy them over to the atom based system :

- get the sources you ussually use for the target system.

- copy there the .config for the atom based machine and make sure it is used.

- build the kernel and modules ( make all)

- make modules_install if needed - this will install the modules to the system where you are building the kernel, keep an eye that it doesn´t overwrite anything or just override it with INSTALL_MOD_PATH .

- copy the kernel image ( arch/x86/boot/bzImage) to the /boot directory and copy the modules to the target system, into /lib/modules.

- adjust your grub.conf accordingly and that´s it.

this has some drawbacks of course : some ebuilds will look for configures kernel sources in /usr/src/linux so copy them over in case you need them. Also make sure you don´t have-march=native set in the kernel config and such things because that will give you an nonworking kernel image for the target system.

Another posibility is to setup distcc to build stuff ( not just the kernel, portage can use it too), so that the other system(s) you have can help the atom based system.

hope i missed anything but as you can see it is pretty trivial to build a kernel for another (binary compatible) box.

 *Quote:*   

> How can I find out what modules I need loaded?

 

udev does a good job loading modules for harwdare it finds but there is stuff like i2c that udev doesn´t know how to handle. 

Mostly you will need to find out yourself and /or use tools that can tell you what modules you need. 

If you don´t want any troubles, don´t build modules.

cheers

----------

## oscurochu

It's not exactly possible to not build modules on some machines. Not everything can be built in.

So now I know modules are generally loaded with udev, but that doesn't help me with the original question. How do I know which ones I need to load, because you said yourself some modules aren't loaded automatically?

Is udev part of the system, or do I have to emerge it?

----------

## pappy_mcfae

As long as you set your kernel to automatically load modules, there is no need to modprobe. UDEV is a package. In order for it to work, make sure you don't turn on "Create deprecated sysfs layout for older userspace tools" in the General setup area. To do so will make UDEV fail.

Look at one of my kernel seeds. See my sig for details. Those settings are for desktop systems, and also work well for a laptop. If you'd like, I can set one up for you.

Blessed be!

Pappy

----------

## gringo

 *Quote:*   

> It's not exactly possible to not build modules on some machines. Not everything can be built in.

 

why not ?

there are exceptions of course which may depend on your usage and i suppose you are not talking about external modules.

 *Quote:*   

> How do I know which ones I need to load, because you said yourself some modules aren't loaded automatically? 

 

as said above, you will have to figure out yourself but don´t worry, most modules are managed by udev.

 *Quote:*   

> As long as you set your kernel to automatically load modules, there is no need to modprobe

 

not true, as said above f.ex. i2c stuff, which is needed for most hadware monitoring stuff, doesn´t get loaded automagically and neither do other arch specif modules.

 *Quote:*   

> make sure you don't turn on "Create deprecated sysfs layout for older userspace tools" in the General setup area. To do so will make UDEV fail. 

 

really ? i have it enabled and it always worked, do you have some more info about this ?

cheers

----------

## pappy_mcfae

I have the evidence that when I turn it on, UDEV doesn't work. I have the evidence that others with the same option have UDEV issues. I've fixed at least one of those.

Blessed be!

Pappy

----------

## pappy_mcfae

Also, from the kernel itself:"Since 2007/2008 all major distributions do not enable this option, and ship no tools which depend on the deprecated layout or this option."

Blessed be!

Pappy

----------

## gringo

 *Quote:*   

> Since 2007/2008 all major distributions do not enable this option, and ship no tools which depend on the deprecated layout or this option.

 

which doesn´t mean it will break udev in case you have it enabled ...

will triplecheck this.

cheers

----------

## vincent-

 *oscurochu wrote:*   

> How can I find out what modules I need loaded?

 

Using a LiveCD that supports all of your hardware, run this:

```
for i in `find /sys/ -name modalias -exec cat {} \;`;

do /sbin/modprobe --config /dev/null --show-depends $i;

done | rev | cut -f1 -d'/' | rev | sort -u
```

You will obtain a list of modules that you are usings because you have the hadware of these modules  :Smile: 

You can put this lines into a file.sh and do this to omit all the error lines.

```
sh file.sh 2> /dev/null
```

Then, when you configure the kernel (make menuconfig) you know what modules you need. Remember you can search in the kernel config menu using "/" and writing a string to search.

Hope it helps.

########

This is an example how it works in my system:

```
hp ~ # sh file.sh 2> /dev/null 

nvidia.ko 

wl.ko
```

...and works correctly because this is my lsmod output  :Smile: 

```
hp ~ # lsmod

Module                  Size  Used by

nvidia              10302936  28 

wl                   1260452  0 
```

----------

## pappy_mcfae

Also, from this larger article, http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=README, "- For reliable operation, the kernel must not use the CONFIG_SYSFS_DEPRECATED* option."

Blessed be!

Pappy

----------

## gringo

 *Quote:*   

> Also, from this larger article, http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=README, "- For reliable operation, the kernel must not use the CONFIG_SYSFS_DEPRECATED* option." 

 

thanks for the pointer. As said above, udev works ok for me (and always did), or at least i haven´t realised anything and i manage quite a lot of boxes with handbuilt kernels. 

Will disable it next time, won´t hurt i guess.

 *Quote:*   

> Using a LiveCD that supports all of your hardware, run this:

 

as said above i2c and similar stuff won´t appear in that list. Not that it is critical to get the system booted of course.

cheers guys

----------

## pappy_mcfae

I've never heard of a boot failure caused by I2C. Lots of X failures, but no boot.

Blessed be!

Pappy

----------

