Kindly support DOTSLASHLINUX on Patreon to keep the website up and running while remaining ads free.

Part Section Link
1 Intro Click Here
2 [∗] Gentoo Linux support ---> Click Here
3 General setup ---> Click Here
4 [∗] Enable loadable module support ---> Click Here
5 [∗] Enable the block layer ---> Click Here
6 Processor type and features ---> Click Here
7 Power management and ACPI options ---> Click Here
8 Bus options (PCI etc.) ---> Click Here
9 Executable file formats / Emulations ---> Click Here
10 [∗] Networking support ---> Click Here
11 Device Drivers ---> Click Here
12 Firmware Drivers ---> Click Here
13 File systems ---> Click Here
14 Kernel hacking ---> Click Here
15 Security options ---> Click Here
16 -∗- Cryptographic API ---> Click Here
17 [∗] Virtualization ---> Click Here
18 Library routines ---> Click Here
Kernel Sources:       sys-kernel/gentoo-sources

Kernel Version:       4.14.12

Last Updated on:      06/01/2018

Update Notice:        1- Excluded 'CONFIG_PAGE_TABLE_ISOLATION' in 'Security options --->'
                      2- Included 'CONFIG_STANDALONE' in 'Device Drivers  --->'
                      3- Included 'CONFIG_PREVENT_FIRMWARE_BUILD' in 'Device Drivers  --->'
                      4- Included 'CONFIG_X86_5LEVEL' in 'Processor type and features  --->'
                      5- Included 'CONFIG_ORC_UNWINDER' in 'Kernel hacking  --->'
                      6- Excluded QEMU-virtualization-related options in favor of VirtualBox
                      7- Excluded swap-related options
                      8- Excluded 32-bit support
                      9- Switched from XFS to EXT4

Priorities:           1- high performance
                      2- minimal
                      3- low memory footprint
                      4- small size
                      5- power saving
                      6- security
                      7- low-latency

Total Options:        2469 (grep -c 'CONFIG_' DOTSLASHLINUX.config)

Included Options:     645 (grep -c '=y' DOTSLASHLINUX.config)

Excluded Options:     1761 (grep -c 'is not set' DOTSLASHLINUX.config)

Final Size (LZ4):     5,644,240 Bytes

Patches Applied:      1- UKSM-4.14 Patch (

Contributors:         Firas Khalil Khana [irc: firas] [email:]

Side Notes:           1- Options that aren't listed here are excluded [ ].
                      2- These guides provide users with a solid starting setup to build on.
                      3- These guides are constantly being updated.
                      4- If there's something I didn't explain properly or I misexplained
                         then please do let me know either by kindly leaving a comment below
                         or by sending me an email on:

The Linux Kernel Configuration Guide Part 1 - Introduction

Firas Khalil Khana | 24/08/2017


Finally, it’s here… The series you’ve all been waiting for. I want to apologize for making you wait a lot before starting this series. The truth is that I’ve redesigned the website from scratch which took some time. It’s much lighter now and fully supports SSL (https and it works well in a terminal web browser! I’ve also added an RSS feed so don’t forgot to subscribe.

I’ve also updated several articles, and have migrated to the unstable branch of Gentoo (aka ~arch) based on the request of several DOTSLASHLINUX followers, and hopefully will update all sections where configuring something using the unstable branch is a tiny bit different than in the stable one. And after the release of 4.12, and the introduction of several new schedulers and the turbo boost 3.0 feature, and having moved to 4.12.8 using ck patchset, I knew I had to do a lot of testing before starting this series.

Enough talking, let’s begin with the real thing. Configuring the linux kernel is regarded as one of the most tedious tasks a gnu/linux enthusiast might ever do. It’s not that hard but it sure is time consuming. The amount of options that’s available is nerve-racking. For enthusiasts who like to customize everything in their distro, it’s like going to the heaven of customization.

But hang on, that wasn’t the tough part. You have to compile your kernel after the slightest change… And if by any chance you forgot to tell your bootloader about your new kernel (appended a string to your kernel perhaps), or forgot to include your filesystem/block device support in your kernel, then you’re pretty much going to get grey hair sooner than ever.

“Were the new options that I’ve changed related to this kernel panic? Ok let me remove them. Recompile… Not Working… Dang I forgot to include support for my xfs filesystem. Reimplement changes. Recompile… Ok now working.”

This is a simple example of what you might face when configuring your kernel. I once had to recompile my whole gentoo system, because I thought that the kernel can’t boot without an initrd on a xfs filesystem until I remembered that I’d forgotten to include support for xfs in my kernel (that caused this article to get delayed for 3 days so yeah… a real life example of what you might experience).


I’m no expert and I don’t claim to be one. I’m a mere enthusiast that happens to have a proper time schedule and thus more time for testing and experimenting with what I love.

I’ve spent around 2 months experimenting with my kernel configuration, until I got mine fully working the way I wanted it to. Therefore all the results and speculations that I have come to know may differ or not even be applicable on your end.

I’m not responsible for you breaking your system or losing important data because I’ve already experienced a lot (one of my suicidal builds was a ext4 with no journal -aka ext2 by some fellow gnu/linux users- and when using MuQSS from the ck-patchset along with BFQ I/O scheduler and setting my timer frequency to 1000hz, my laptop froze when emerging chromium -it was 80% done though- and boom my filesystem got corrupted and I had to reinstall gentoo).

But don’t worry, looking back at my previous articles I’ve noticed that a lot of you found them helpful, so I have high hopes for this series.

Target Audience

Every single son of a tux out there who’s interested in messing with the internals of his/her system. Anyone who wants to customize their kernel for maximum throughput, performance, (minimum)latency, gaming, streaming, music production, video editing, embedded systems etc…

Basically, we’ll keep it as minimal and as simple as possible, choosing options that provide the highest performance possible alongside a proper latency level that won’t lag your system when emerging or compiling or whatever task that makes use of cpu resources.

Some of you may wonder, how on earth will I be able to provide proper configuration to all those audiences. Well I won’t… I’ll be posting results achieved on my end (my Toshiba L50-A664) and I have a ton, and if any of you wanted to contribute or improve on something I said or even correct a misconception I had regarding anything then feel free to drop a comment below or email me with what you have in mind.

With my findings and your help, let’s try to make this series a well established starting point (or even a reference) for all those who want to configure their kernels.


I’ll go through every kernel configuration option out there, and include the help summary provided with it, its type and the choice I went with and the reason why (unless it was obvious). Furthermore, to keep things relatively simple and less confusing, I’ll be using this template when describing kernel configuration options:






In order not to create a state of confusion, I’ll be using the word symbol for the capitalized underscore-separated version of the name. For example:

Name: Enable loadable modules support

Not only that will make it easier for you(and me as well), it’ll make it much easier for those who want to contribute to this series as well. Say you have an option from a different patchset and wanted to include it in the series, just send me the option using the template above, and the name of the patchset if any and I’ll attribute everyone who contributes and list their names/blogs upon request.




You are doing a great job, and for that you earned respect from me and, I think, many who want to set up the kernel for themselves. Thanks! P.S. Srry 4 english



@apatheticjerboa, your English is good! Thanks for stopping by and I’m really glad that my articles were of benefit to you!



Appreciate the work you put into this. Very well done!



@echto, thanks a lot for the kind words! Glad that this series was of benefit to you and all those seeking help to build their custom high performance kernels.



Thank you very much!

Compiled my kernel on Arch Linux successfully! Went from 8000+ CONFIG lines to 3500+



@bario, that’s great! I’m really happy that you found the series useful!

Don’t forget to recommend the series to any kernel newbie and expert out there.

Thanks for stopping by!



Thanks for the guide, really helpful!

Just one thing, after compiling the kernel, the Plasma 5 login take around 3 seconds longer before getting to the desktop vs genkernel all. I’m using the Nvidia driver with both kernels.

Best place to investigate this in the kernel?



@Zico, I’m glad that you’ve found the guide helpful!

As for the 3 seconds delay, then a wild guess would be that my configuration is tuned for maximum performance while maintaining a reasonably low latency. In your case (since you’re using a heavy desktop environment) the latency options I’ve excluded in favor of performance may have impacted the startup time of your desktop environment.

If you had time then I’d advise you to go through the guide one more time and see what options were chosen for performance over latency as I’ve included them all.

If I were you, I’d double check to see if the performance gains on your end was worth the 3 seconds delay.

Thanks for stopping by! Let me know if you have anymore questions!



Greetings. From the bottom of my heart I want to congratulate you and all Linux users on the coming New Year. I wish you all the best. And I hope that next year you will also please us with your manuals. Congratulations!!!



@ApatheticJerboa, Thank you so much for the congratulations and for taking the time to write this kind message…

I can assure you that this made me much more motivated to continue writing high-quality articles, and I’ve got a lot planned for 2018 so look up to it!

Furthermore, if there are certain guides/manuals you’d like to see on the website, then kindly leave a reply on one of the articles or send me an email and I’ll gladly make them.

Wish you all the best as well you great son of a tux!

The Man


Thanks for the guide!

Was trying to get your config to see how it performs and just quickly add my hardware before I dig deep into every option, but it seems that link isn’t working and I’m getting “Page not found” error. So I guess I’m just letting you know about it :)



@The Man, you’re most welcome! Thanks for stopping by and taking the time to write a comment!

Regarding the dotfiles page, it has been removed to make the website even lighter since it served no purpose as most of the configuration files are listed inside the guides themselves. I’ve updated the article above, sorry for any inconvenience caused.

Leave A Comment