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 9 - Executable file formats / Emulations --->

kernel9
Firas Khalil Khana | 08/09/2017

Executable file formats / Emulations —>

-∗- Kernel support for ELF binaries

Symbol:     CONFIG_BINFMT_ELF

Help:       ELF (Executable and Linkable Format) is a format for libraries and
            executables used across different architectures and operating
            systems. Saying Y here will enable your kernel to run ELF binaries
            and enlarge it by about 13 KB. ELF support under Linux has now all
            but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
            because it is portable (this does ∗not∗ mean that you will be able
            to run executables from different architectures or operating systems
            however) and makes building run-time libraries very easy. Many new
            executables are distributed solely in ELF format. You definitely
            want to say Y here.

            Information about ELF is contained in the ELF HOWTO available from
            <http://www.tldp.org/docs.html#howto>.

            If you find that after upgrading from Linux kernel 1.2 and saying Y
            here, you still can't run any ELF binaries (they just crash), then
            you'll have to install the newest ELF runtime libraries, including
            ld.so (check the file <file:Documentation/Changes> for location and
            latest version).

Type:       boolean

Choice:     built-in -∗-

Reason:     It's highly recommended that you include this option in your kernel
            as ELF is the binary format used on linux systems (that is if it isn't
            already forcibly included by CONFIG_X86_64 and CONFIG_IA32_EMULATION.

-∗- Kernel support for scripts starting with #!

Symbol:     CONFIG_BINFMT_SCRIPT

Help:       Say Y here if you want to execute interpreted scripts starting with
            #! followed by the path to an interpreter.

            You can build this support as a module; however, until that module
            gets loaded, you cannot run scripts.  Thus, if you want to load this
            module from an initramfs, the portion of the initramfs before loading
            this module must consist of compiled binaries only.

            Most systems will not boot if you say M or N here.  If unsure, say Y.

Type:       tristate

Choice:     built-in -∗-

Reason:     It's highly recommended that you include this option in your kernel
            as it's required to execute scripts and binaries that need an interpreter
            (and these include Java, Python2, Python3, .NET, DOS executables ...etc).

            This is also required by many init scripts as well and is used on countless
            distributions (CONFIG_GENTOO_LINUX and CONFIG_GENTOO_LINUX_INIT_SCRIPT).

<∗> Kernel support for MISC binaries

Symbol:     CONFIG_BINFMT_MISC

Help:       If you say Y here, it will be possible to plug wrapper-driven binary
            formats into the kernel. You will like this especially when you use
            programs that need an interpreter to run like Java, Python, .NET or
            Emacs-Lisp. It's also useful if you often run DOS executables under
            the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
            <http://www.tldp.org/docs.html#howto>). Once you have
            registered such a binary class with the kernel, you can start one of
            those programs simply by typing in its name at a shell prompt; Linux
            will automatically feed it to the correct interpreter.

            You can do other nice things, too. Read the file
            <file:Documentation/binfmt_misc.txt> to learn how to use this
            feature, <file:Documentation/admin-guide/java.rst> for information about how
            to include Java support. and <file:Documentation/admin-guide/mono.rst> for
            information about how to include Mono-based .NET support.

            To use binfmt_misc, you will need to mount it:
                  mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

            You may say M here for module support and later load the module when
            you have use for it; the module is called binfmt_misc. If you
            don't know what to answer at this point, say Y.

Type:       tristate

Choice:     built-in <∗>

Reason:     It's highly recommended that you include this option in your kernel as
            it's extremely useful when running emulators and virtual machines.

[ ] Enable core dump support

Symbol:     CONFIG_COREDUMP

Help:       This option enables support for performing core dumps. You almost
            certainly want to say Y here. Not necessary on systems that never
            need debugging or only ever run flawless code.

Type:       boolean

Choice:     excluded [ ]

Reason:     You can safely exclude this option as it's intended for debugging
            purposes.

[∗] IA32 Emulation

Symbol:     CONFIG_IA32_EMULATION

Help:       Include code to run legacy 32-bit programs under a
            64-bit kernel. You should likely turn this on, unless you're
            100% sure that you don't have any 32-bit programs left.

Type:       boolean

Choice:     built-in [∗]

Reason:     It's highly recommended that you include this option in your kernel
            if you want to run 32-bit programs as you never know when you'll need
            support for 32-bit programs. The price of not doing so on Gentoo Linux
            and running a pure 64-bit system is costly as you'll have to rebuild 
            the whole system to get 32-bit support working.

< > IA32 a.out support

Symbol:     CONFIG_IA32_AOUT

Help:       Support old a.out binaries in the 32bit emulation.

Type:       tristate

Choice:     excluded < >

Reason:     You can safely exclude this option as it's not necessary to include
            support for such binaries anymore.

            Extremely old BSD and Linux systems may use a.out binaries that have
            shared libraries that rely on this format.

[ ] x32 ABI for 64-bit mode

Symbol:     CONFIG_X86_X32

Help:       Include code to run binaries for the x32 native 32-bit ABI
            for 64-bit processors.  An x32 process gets access to the
            full 64-bit register file and wide data path while leaving
            pointers at 32 bits for smaller memory footprint.

            You will need a recent binutils (2.22 or later) with
            elf32_x86_64 support enabled to compile a kernel with this
            option set.

Type:       boolean

Choice:     excluded [ ]

Reason:     You can safely exclude this option as it's intended for development
            and debugging purposes.

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.

Leave A Comment