I am using Linux version 2.6.17-co-0.8.0 and wanted to try to turn on every possible feature in my Linux kernel (without having problems). (http://www.colinux.org/snapshots/ devel-colinux-20070708.tar.gz)
Here is a list of what must be turned on:
- CONFIG_COOPERATIVE - basic for coLinux kernel
- CONFIG_NOHIGHMEM - only supported memory is up to 1GB
- CONFIG_PAGE_OFFSET=0xC0000000 - Value is coded hardly in some drivers
- CONFIG_HZ_100 - is the only right value
- CONFIG_M586 or CONFIG_M686 - Windows side only supports. Don't enable others!
- CONFIG_PREEMPT - needs for math_state_restore properly work.
- CONFIG_IOSCHED_AS, CONFIG_DEFAULT_AS, CONFIG_DEFAULT_IOSCHED="anticipatory" - is preferred, well testet and mostly running scheduler.
- CONFIG_COMPAT_VDSO - needs for older distributions
- CONFIG_AUDIT_ARCH is for to get the audit logs
Can NOT enable
Here is a list of what can NOT be turned on (edit here and add items):
- CONFIG_REGPARM - causes instant reboot of WinXP
- CONFIG_HZ_250 - boots super slow
- CONFIG_HZ_1000 - boots super slow
- CONFIG_DEFAULT_CFQ - After a few hours gets spinlock errors, hangs
- CONFIG_KEXEC - crash on shutdown
- CONFIG_PREEMPT_NONE - causes floating point errors in math_state_restore.
The basic idea is: TURN IT ON - Don't care if it works (like /dev/random) as long as it doesn't screw things up - this makes the rules here simple - TURN IT ON (if you can).
I have my DVD player working (poorly, need to size to tiny screen size and drop frames) and have sound too (see elsewhere for the how-to) and I have installed many many megs of fancy (picky) software that needs specific kernel features enabled and much of it seems to work.
I wish the APIC code was working (or COPIC would allow PAPI to work correctly http://icl.cs.utk.edu/papi/software/index.html) so we could do profiling.
How to use an alternate .config
There is a ".config" file (see next sections) with nearly everthing turned on, to use it:
- Download it, rename it to ".config" and move it into your linux-2.6.17-build directory.
- Type "make gconfig" to build the editor and load the ".config" file.
- Try to enable even more features then type "make vmlinux modules" and copy vmlinux (only) to c:\colinux directory (make a backup from your working file before!).
- IF it works (you can boot coLinux) then you can go back and type "make modules_install" and re-boot. You should expect any more features to cause coLinux to screw up since I enabled almost everything - I am adding more as time permits, you can help.
- TEST your new vmlinux to make certain that the features you enable don't cause trouble.
- AFTER you have used you new vmlinux for a while upload your ".config" (rename it to show kernel version and suffix it as .xcf so the browsers don't try to display it!.
Try to enable as a Module if you can
Always make features turned on a module "M" (if possible). I keep the "CRC32C" type features as "Y" and NOT "M" since they must be available before module loading is enabled during the boot-up or the log gets an error message.
Other than that one exception, make everything a module (if gconfig will allow). If someone wants to tweak their own copy to make something a "Y" instead of an "M" it is easier (for the rest of us) to let them just change the one or two things they want instead of you making everything "Y" and nothing "M" (and a huge kernel!) and then the rest of us need to flick all the "Y"'s to "M"'s to test your efforts. So use "M" and not "Y". Thanks.
Please don't worry about trying to enable a feature that someone with a x86 computer (running Windows) is almost certain not to have. EG: If there were a feature to use XYZ hardrive format (from the '50s) then we can do without.
If you do find something that causes crashes please post above so the rest of us can avoid testing that feature (and wasting an hour to recompile). It might interest the developers to fix that feature it they thought it worth their time - then we can enable it.
List of working configs
My original: Media:linux-2.6.17.xcf
Contributed ".config" files from others (don't everyone name them all ".config" !):