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 (https://github.com/dolohow/uksm/blob/master/uksm-4.14.patch)

Contributors:         Firas Khalil Khana [irc: firas] [email: firasuke@gmail.com]

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: firasuke@gmail.com

The Linux Kernel Configuration Guide Part 18 - Library routines --->

kernel18
Firas Khalil Khana | 18/09/2017

Similarly to part 16, it’s highly recommended that you leave this section alone. All needed options in this section will be forcibly included by other options in other sections so you don’t have to worry about this section much.

One thing you could do is after you’ve included all the required options for your system, you can enter this section and exclude options that weren’t forcibly included by other options (as in most cases they will not be used).

Again, the options I’ll be listing here will be the ones that got forcibly included on my system, in addition to some other options that I found useful (with the help of SystemRescueCd of course) as you may find it useful.


Library routines —>

-∗- CRC-CCITT functions

Symbol:     CONFIG_CRC_CCITT

Help:       This option is provided for the case where no in-kernel-tree
            modules require CRC-CCITT functions, but a module built outside
            the kernel tree does. Such modules that use library CRC-CCITT
            functions require M here.

Type:       tristate

Choice:     built-in -∗-

Reason:     Forcibly included as it's required by CONFIG_NET, CONFIG_WLAN,
            CONFIG_USB and a lot of important options.

-∗- CRC16 functions

Symbol:     CONFIG_CRC16

Help:       This option is provided for the case where no in-kernel-tree
            modules require CRC16 functions, but a module built outside
            the kernel tree does. Such modules that use library CRC16
            functions require M here.

Type:       tristate

Choice:     built-in -∗-

Reason:     Forcibly included as it's required by CONFIG_NET, CONFIG_BT,
            CONFIG_BLOCK, CONFIG_EXT4_FS, CONFIG_RFKILL and a lot of
            important options.

<∗> CRC calculation for the T10 Data Integrity Field

Symbol:     CONFIG_CRC_T10DIF

Help:       This option is only needed if a module that's not in the
            kernel tree needs to calculate CRC checks for use with the
            SCSI data integrity subsystem.

Type:       tristate

Choice:     built-in <∗>

Reason:     If you've followed the guide in part 11, then a simple:

                cat lsmod.txt | grep crct10dif

            should tell you whether you need this option or not.

-∗- CRC ITU-T V.41 functions

Symbol:     CONFIG_CRC_ITU_T

Help:       This option is provided for the case where no in-kernel-tree
            modules require CRC ITU-T V.41 functions, but a module built outside
            the kernel tree does. Such modules that use library CRC ITU-T V.41
            functions require M here.

Type:       tristate

Choice:     built-in -∗-

Reason:     Forcibly included as it's required by CONFIG_PCI, CONFIG_NET,
            CONFIG_64BIT, CONFIG_BLOCK and a lot of important options.

-∗- CRC32/CRC32c functions

Symbol:     CONFIG_CRC32

Help:       This option is provided for the case where no in-kernel-tree
            modules require CRC32/CRC32c functions, but a module built outside
            the kernel tree does. Such modules that use library CRC32/CRC32c
            functions require M here.

Type:       tristate

Choice:     built-in -∗-

Reason:     Forcibly included as it's required by a lot of important options.

CRC32 implementation (Slice by 8 bytes) —>

Help:       This option allows a kernel builder to override the default choice
            of CRC32 algorithm.  Choose the default ("slice by 8") unless you
            know that you need one of the others.

(X) Slice by 8 bytes

Symbol:     CONFIG_CRC32_SLICEBY8

Help:       Calculate checksum 8 bytes at a time with a clever slicing algorithm.
            This is the fastest algorithm, but comes with a 8KiB lookup table.
            Most modern processors have enough cache to hold this table without
            thrashing the cache.

            This is the default implementation choice.  Choose this one unless
            you have a good reason not to.

Type:       boolean

Choice:     built-in (X)

Reason:     It's highly recommended that you include this options as other options
            are intended for testing and debugging purposes.

-∗- CRC32c (Castagnoli, et al) Cyclic Redundancy-Check

Symbol:     CONFIG_LIBCRC32C

Help:       This option is provided for the case where no in-kernel-tree
            modules require CRC32c functions, but a module built outside the
            kernel tree does. Such modules that use library CRC32c functions
            require M here.  See Castagnoli93.
            Module will be libcrc32c.

Type:       tristate

Choice:     built-in -∗-

Reason:     Forcibly included as it's required by CONFIG_PCI, CONFIG_NET and
            a lot of important options.

<∗> XZ decompression support

Symbol:     CONFIG_XZ_DEC

Help:       LZMA2 compression algorithm and BCJ filters are supported using
            the .xz file format as the container. For integrity checking,
            CRC32 is supported. See Documentation/xz.txt for more information.

Type:       tristate

Choice:     built-in <∗>

[∗] x86 BCJ filter decoder

Symbol:     CONFIG_XZ_DEC_X86

Help:       There is no help available for this option.

Type:       boolean

Choice:     built-in [∗]

Chinese Translation

One of DOTSLASHLINUX followers 杨鑫 (Yang Mame) from China, decided to follow up with the series and provide Chinese translation of the kernel configuration guides on his blog.

To read this guide in Chinese click here.

2 Comments

Alpha

20/12/2017


Do we really need to use System Rescue cd or can we use our current install. I’m currently using the generic linux kernel on arch. Also there should be some notification system here.. how do I know if you replied. Finally, awesome series! seriously perfect timing for me atleast. I wonder how far you can mush this minimalistic behaviour… Evil Grin I must say.. It’s quite addicting. :D

DOTSLASHLINUX

20/12/2017


@Alpha, thanks for your comment.

To be honest with you, the answer is yes and no. Yes, as in you can pretty much use every live installation ISO out there to save the output of the commands listed in the kernel configuration guide part 11, and no as in that output won’t be 100% identical on all of these ISOs, as every one is tuned to fit the needs of their users (in case of a distribution), and from that point of view, since SystemRescueCD is based on Gentoo Linux (the distribution of choice that DOTSLASHLINUX recommends), and is a ‘Rescue’ distribution after all, it should pretty much have everything the user needs and the logs and outputs should have almost all of the information you need.

Sure you can use your generic Arch install and I doubt it’ll even make a difference, but I highly recommend you opt for SystemRescueCD, just boot it once, save the output of the commands listed in the kernel configuration guide part 11 and reboot into your Arch installation.

Sorry if the comment system was lacking. Since DOTSLASHLINUX is 100% static, a simple and basic commenting system was created from scratch (kinda like reinventing the wheel) it is also free of JavaScript code, and will easily work on all web browsers (even terminal web browsers!). Unfortunately, no notifications system is implemented as of now (but one is currently planned, please keep in mind that rethinking such ‘simple’ ideas in a static point of view isn’t that ‘simple’).

As for where DOTSLASHLINUX is going with the whole lightweight thing, the answer is simple, until we get a source-based system that runs an extremely lightweight Linux kernel with musl libc and toybox (or busybox) and runit/sinit as the init system with statically linked libraries with a simple lightweight package manager.

There are several projects that aim to achieve the system I described above. These include:

1- https://sta.li/

2- https://github.com/michaelforney/oasis

3- https://github.com/sabotage-linux/sabotage

4- http://landley.net/aboriginal/

and many more, but still none of them saw light to this day.

Sorry for the lengthy reply, and thanks a lot for stopping by.

Leave A Comment