€•ŒŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ;/translations/zh_CN/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/zh_TW/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/it_IT/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/ja_JP/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/ko_KR/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/pt_BR/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ;/translations/sp_SP/admin-guide/quickly-build-trimmed-linux”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ0SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)”h]”hŒ0SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒU/var/lib/git/docbuild/linux/Documentation/admin-guide/quickly-build-trimmed-linux.rst”h´Kubh¶)�”}”(hŒ<[see the bottom of this file for redistribution information]”h]”hŒ<[see the bottom of this file for redistribution information]”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ+How to quickly build a trimmed Linux kernel”h]”hŒ+How to quickly build a trimmed Linux kernel”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ‡This guide explains how to swiftly build Linux kernels that are ideal for testing purposes, but perfectly fine for day-to-day use, too.”h]”hŒ‡This guide explains how to swiftly build Linux kernels that are ideal for testing purposes, but perfectly fine for day-to-day use, too.”…”�”}”(hhíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒ(The essence of the process (aka 'TL;DR')”h]”hŒ,The essence of the process (aka ‘TL;DR’)”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhûh²hh³hÇh´K ubhì)�”}”(hXU*[If you are new to compiling Linux, ignore this TLDR and head over to the next section below: it contains a step-by-step guide, which is more detailed, but still brief and easy to follow; that guide and its accompanying reference section also mention alternatives, pitfalls, and additional aspects, all of which might be relevant for you.]*”h]”hŒemphasis”“”)�”}”(hjh]”hXS[If you are new to compiling Linux, ignore this TLDR and head over to the next section below: it contains a step-by-step guide, which is more detailed, but still brief and easy to follow; that guide and its accompanying reference section also mention alternatives, pitfalls, and additional aspects, all of which might be relevant for you.]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khhûh²hubhì)�”}”(hX{If your system uses techniques like Secure Boot, prepare it to permit starting self-compiled Linux kernels; install compilers and everything else needed for building Linux; make sure to have 12 Gigabyte free space in your home directory. Now run the following commands to download fresh Linux mainline sources, which you then use to configure, build and install your own kernel::”h]”hXzIf your system uses techniques like Secure Boot, prepare it to permit starting self-compiled Linux kernels; install compilers and everything else needed for building Linux; make sure to have 12 Gigabyte free space in your home directory. Now run the following commands to download fresh Linux mainline sources, which you then use to configure, build and install your own kernel:”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khhûh²hubhŒ literal_block”“”)�”}”(hXÀgit clone --depth 1 -b master \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/ cd ~/linux/ # Hint: if you want to apply patches, do it at this point. See below for details. # Hint: it's recommended to tag your build at this point. See below for details. yes "" | make localmodconfig # Hint: at this point you might want to adjust the build configuration; you'll # have to, if you are running Debian. See below for details. make -j $(nproc --all) # Note: on many commodity distributions the next command suffices, but on Arch # Linux, its derivatives, and some others it does not. See below for details. command -v installkernel && sudo make modules_install install reboot”h]”hXÀgit clone --depth 1 -b master \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/ cd ~/linux/ # Hint: if you want to apply patches, do it at this point. See below for details. # Hint: it's recommended to tag your build at this point. See below for details. yes "" | make localmodconfig # Hint: at this point you might want to adjust the build configuration; you'll # have to, if you are running Debian. See below for details. make -j $(nproc --all) # Note: on many commodity distributions the next command suffices, but on Arch # Linux, its derivatives, and some others it does not. See below for details. command -v installkernel && sudo make modules_install install reboot”…”�”}”hj5sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´Khhûh²hubhì)�”}”(hŒJIf you later want to build a newer mainline snapshot, use these commands::”h]”hŒIIf you later want to build a newer mainline snapshot, use these commands:”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K(hhûh²hubj4)�”}”(hXÖcd ~/linux/ git fetch --depth 1 origin # Note: the next command will discard any changes you did to the code: git checkout --force --detach origin/master # Reminder: if you want to (re)apply patches, do it at this point. # Reminder: you might want to add or modify a build tag at this point. make olddefconfig make -j $(nproc --all) # Reminder: the next command on some distributions does not suffice. command -v installkernel && sudo make modules_install install reboot”h]”hXÖcd ~/linux/ git fetch --depth 1 origin # Note: the next command will discard any changes you did to the code: git checkout --force --detach origin/master # Reminder: if you want to (re)apply patches, do it at this point. # Reminder: you might want to add or modify a build tag at this point. make olddefconfig make -j $(nproc --all) # Reminder: the next command on some distributions does not suffice. command -v installkernel && sudo make modules_install install reboot”…”�”}”hjQsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´K*hhûh²hubeh}”(h]”Œ$the-essence-of-the-process-aka-tl-dr”ah ]”h"]”Œ(the essence of the process (aka 'tl;dr')”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K ubh×)�”}”(hhh]”(hÜ)�”}”(hŒStep-by-step guide”h]”hŒStep-by-step guide”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjgh²hh³hÇh´K7ubhì)�”}”(hŒ Compiling your own Linux kernel is easy in principle. There are various ways to do it. Which of them actually work and is the best depends on the circumstances.”h]”hŒ Compiling your own Linux kernel is easy in principle. There are various ways to do it. Which of them actually work and is the best depends on the circumstances.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K9hjgh²hubhì)�”}”(hXThis guide describes a way perfectly suited for those who want to quickly install Linux from sources without being bothered by complicated details; the goal is to cover everything typically needed on mainstream Linux distributions running on commodity PC or server hardware.”h]”hXThis guide describes a way perfectly suited for those who want to quickly install Linux from sources without being bothered by complicated details; the goal is to cover everything typically needed on mainstream Linux distributions running on commodity PC or server hardware.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K`] ”h]”hŒ bullet_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒ¨Create a fresh backup and put system repair and restore tools at hand, just to be prepared for the unlikely case of something going sideways. [:ref:`details`] ”h]”(hì)�”}”(hŒ�Create a fresh backup and put system repair and restore tools at hand, just to be prepared for the unlikely case of something going sideways.”h]”hŒ�Create a fresh backup and put system repair and restore tools at hand, just to be prepared for the unlikely case of something going sideways.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KUhjÙubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjëh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”hŒinline”“”)�”}”(hjõh]”hŒdetails”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjóubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ'admin-guide/quickly-build-trimmed-linux”Œ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œbackup”uh1hh³hÇh´KXhjëubhŒ]”…”�”}”(hjëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KXhjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jÒh³hÇh´KUhjÎubah}”(h]”jËah ]”h"]”Œ backup_sbs”ah$]”h&]”uh1jÌh³hÇh´KUhjgh²hŒexpect_referenced_by_name”}”j4jÀsŒexpect_referenced_by_id”}”jËjÀsubj¿)�”}”(hŒ.. _secureboot_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsecureboot-sbs”uh1j¾h´KZhjgh²hh³hÇubjÍ)�”}”(hX©* On platforms with 'Secure Boot' or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later. The quickest and easiest way to achieve this on commodity x86 systems is to disable such techniques in the BIOS setup utility; alternatively, remove their restrictions through a process initiated by ``mokutil --disable-validation``. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hX›On platforms with 'Secure Boot' or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later. The quickest and easiest way to achieve this on commodity x86 systems is to disable such techniques in the BIOS setup utility; alternatively, remove their restrictions through a process initiated by ``mokutil --disable-validation``. [:ref:`details`] ”h]”(hì)�”}”(hX|On platforms with 'Secure Boot' or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later. The quickest and easiest way to achieve this on commodity x86 systems is to disable such techniques in the BIOS setup utility; alternatively, remove their restrictions through a process initiated by ``mokutil --disable-validation``.”h]”(hX_On platforms with ‘Secure Boot’ or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later. The quickest and easiest way to achieve this on commodity x86 systems is to disable such techniques in the BIOS setup utility; alternatively, remove their restrictions through a process initiated by ”…”�”}”(hjQh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``mokutil --disable-validation``”h]”hŒmokutil --disable-validation”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjQubhŒ.”…”�”}”(hjQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K\hjMubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjsh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hj}h]”hŒdetails”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j‰Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ secureboot”uh1hh³hÇh´KchjsubhŒ]”…”�”}”(hjsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KchjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjJubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´K\hjFubah}”(h]”jEah ]”h"]”Œsecureboot_sbs”ah$]”h&]”uh1jÌh³hÇh´K\hjgh²hj7}”jµj;sj9}”jEj;subj¿)�”}”(hŒ.. _buildrequires_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒbuildrequires-sbs”uh1j¾h´Kehjgh²hh³hÇubjÍ)�”}”(hXn* Install all software required to build a Linux kernel. Often you will need: 'bc', 'binutils' ('ld' et al.), 'bison', 'flex', 'gcc', 'git', 'openssl', 'pahole', 'perl', and the development headers for 'libelf' and 'openssl'. The reference section shows how to quickly install those on various popular Linux distributions. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXbInstall all software required to build a Linux kernel. Often you will need: 'bc', 'binutils' ('ld' et al.), 'bison', 'flex', 'gcc', 'git', 'openssl', 'pahole', 'perl', and the development headers for 'libelf' and 'openssl'. The reference section shows how to quickly install those on various popular Linux distributions. [:ref:`details`] ”h]”(hì)�”}”(hX@Install all software required to build a Linux kernel. Often you will need: 'bc', 'binutils' ('ld' et al.), 'bison', 'flex', 'gcc', 'git', 'openssl', 'pahole', 'perl', and the development headers for 'libelf' and 'openssl'. The reference section shows how to quickly install those on various popular Linux distributions.”h]”hXpInstall all software required to build a Linux kernel. Often you will need: ‘bc’, ‘binutils’ (‘ld’ et al.), ‘bison’, ‘flex’, ‘gcc’, ‘git’, ‘openssl’, ‘pahole’, ‘perl’, and the development headers for ‘libelf’ and ‘openssl’. The reference section shows how to quickly install those on various popular Linux distributions.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KghjÌubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjÞh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hjèh]”hŒdetails”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjæubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jôŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ buildrequires”uh1hh³hÇh´KmhjÞubhŒ]”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KmhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÉubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´KghjÅubah}”(h]”jÄah ]”h"]”Œbuildrequires_sbs”ah$]”h&]”uh1jÌh³hÇh´Kghjgh²hj7}”j jºsj9}”jÄjºsubj¿)�”}”(hŒ.. _diskspace_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ diskspace-sbs”uh1j¾h´Kohjgh²hh³hÇubjÍ)�”}”(hX* Ensure to have enough free space for building and installing Linux. For the latter 150 Megabyte in /lib/ and 100 in /boot/ are a safe bet. For storing sources and build artifacts 12 Gigabyte in your home directory should typically suffice. If you have less available, be sure to check the reference section for the step that explains adjusting your kernels build configuration: it mentions a trick that reduce the amount of required space in /home/ to around 4 Gigabyte. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXôEnsure to have enough free space for building and installing Linux. For the latter 150 Megabyte in /lib/ and 100 in /boot/ are a safe bet. For storing sources and build artifacts 12 Gigabyte in your home directory should typically suffice. If you have less available, be sure to check the reference section for the step that explains adjusting your kernels build configuration: it mentions a trick that reduce the amount of required space in /home/ to around 4 Gigabyte. [:ref:`details`] ”h]”(hì)�”}”(hXÖEnsure to have enough free space for building and installing Linux. For the latter 150 Megabyte in /lib/ and 100 in /boot/ are a safe bet. For storing sources and build artifacts 12 Gigabyte in your home directory should typically suffice. If you have less available, be sure to check the reference section for the step that explains adjusting your kernels build configuration: it mentions a trick that reduce the amount of required space in /home/ to around 4 Gigabyte.”h]”hXÖEnsure to have enough free space for building and installing Linux. For the latter 150 Megabyte in /lib/ and 100 in /boot/ are a safe bet. For storing sources and build artifacts 12 Gigabyte in your home directory should typically suffice. If you have less available, be sure to check the reference section for the step that explains adjusting your kernels build configuration: it mentions a trick that reduce the amount of required space in /home/ to around 4 Gigabyte.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kqhj7ubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjIh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hjSh]”hŒdetails”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j_Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ diskspace”uh1hh³hÇh´KyhjIubhŒ]”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kyhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj4ubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´Kqhj0ubah}”(h]”j/ah ]”h"]”Œ diskspace_sbs”ah$]”h&]”uh1jÌh³hÇh´Kqhjgh²hj7}”j‹j%sj9}”j/j%subj¿)�”}”(hŒ.. _sources_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ sources-sbs”uh1j¾h´K{hjgh²hh³hÇubjÍ)�”}”(hX* Retrieve the sources of the Linux version you intend to build; then change into the directory holding them, as all further commands in this guide are meant to be executed from there. *[Note: the following paragraphs describe how to retrieve the sources by partially cloning the Linux stable git repository. This is called a shallow clone. The reference section explains two alternatives:* :ref:`packaged archives` *and* :ref:`a full git clone` *; prefer the latter, if downloading a lot of data does not bother you, as that will avoid some* :ref:`peculiar characteristics of shallow clones the reference section explains` *.]* First, execute the following command to retrieve a fresh mainline codebase:: git clone --no-checkout --depth 1 -b master \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/ cd ~/linux/ If you want to access recent mainline releases and pre-releases, deepen you clone's history to the oldest mainline version you are interested in:: git fetch --shallow-exclude=v6.0 origin In case you want to access a stable/longterm release (say v6.1.5), simply add the branch holding that series; afterwards fetch the history at least up to the mainline version that started the series (v6.1):: git remote set-branches --add origin linux-6.1.y git fetch --shallow-exclude=v6.0 origin Now checkout the code you are interested in. If you just performed the initial clone, you will be able to check out a fresh mainline codebase, which is ideal for checking whether developers already fixed an issue:: git checkout --detach origin/master If you deepened your clone, you instead of ``origin/master`` can specify the version you deepened to (``v6.0`` above); later releases like ``v6.1`` and pre-release like ``v6.2-rc1`` will work, too. Stable or longterm versions like ``v6.1.5`` work just the same, if you added the appropriate stable/longterm branch as described. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXÑRetrieve the sources of the Linux version you intend to build; then change into the directory holding them, as all further commands in this guide are meant to be executed from there. *[Note: the following paragraphs describe how to retrieve the sources by partially cloning the Linux stable git repository. This is called a shallow clone. The reference section explains two alternatives:* :ref:`packaged archives` *and* :ref:`a full git clone` *; prefer the latter, if downloading a lot of data does not bother you, as that will avoid some* :ref:`peculiar characteristics of shallow clones the reference section explains` *.]* First, execute the following command to retrieve a fresh mainline codebase:: git clone --no-checkout --depth 1 -b master \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/ cd ~/linux/ If you want to access recent mainline releases and pre-releases, deepen you clone's history to the oldest mainline version you are interested in:: git fetch --shallow-exclude=v6.0 origin In case you want to access a stable/longterm release (say v6.1.5), simply add the branch holding that series; afterwards fetch the history at least up to the mainline version that started the series (v6.1):: git remote set-branches --add origin linux-6.1.y git fetch --shallow-exclude=v6.0 origin Now checkout the code you are interested in. If you just performed the initial clone, you will be able to check out a fresh mainline codebase, which is ideal for checking whether developers already fixed an issue:: git checkout --detach origin/master If you deepened your clone, you instead of ``origin/master`` can specify the version you deepened to (``v6.0`` above); later releases like ``v6.1`` and pre-release like ``v6.2-rc1`` will work, too. Stable or longterm versions like ``v6.1.5`` work just the same, if you added the appropriate stable/longterm branch as described. [:ref:`details`] ”h]”(hì)�”}”(hŒ¶Retrieve the sources of the Linux version you intend to build; then change into the directory holding them, as all further commands in this guide are meant to be executed from there.”h]”hŒ¶Retrieve the sources of the Linux version you intend to build; then change into the directory holding them, as all further commands in this guide are meant to be executed from there.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K}hj¢ubhì)�”}”(hXë*[Note: the following paragraphs describe how to retrieve the sources by partially cloning the Linux stable git repository. This is called a shallow clone. The reference section explains two alternatives:* :ref:`packaged archives` *and* :ref:`a full git clone` *; prefer the latter, if downloading a lot of data does not bother you, as that will avoid some* :ref:`peculiar characteristics of shallow clones the reference section explains` *.]*”h]”(j)�”}”(hŒÍ*[Note: the following paragraphs describe how to retrieve the sources by partially cloning the Linux stable git repository. This is called a shallow clone. The reference section explains two alternatives:*”h]”hŒË[Note: the following paragraphs describe how to retrieve the sources by partially cloning the Linux stable git repository. This is called a shallow clone. The reference section explains two alternatives:”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubhŒ ”…”�”}”(hj´h²hh³Nh´Nubh)�”}”(hŒ):ref:`packaged archives`”h]”jø)�”}”(hjÌh]”hŒpackaged archives”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÊubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jØŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources_archive”uh1hh³hÇh´K�hj´ubhŒ ”…”�”}”hj´sbj)�”}”(hŒ*and*”h]”hŒand”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubhŒ ”…”�”}”hj´sbh)�”}”(hŒ%:ref:`a full git clone`”h]”jø)�”}”(hjh]”hŒa full git clone”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_full”uh1hh³hÇh´K�hj´ubhŒ ”…”�”}”hj´sbj)�”}”(hŒ`*; prefer the latter, if downloading a lot of data does not bother you, as that will avoid some*”h]”hŒ^; prefer the latter, if downloading a lot of data does not bother you, as that will avoid some”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubhŒ ”…”�”}”hj´sbh)�”}”(hŒa:ref:`peculiar characteristics of shallow clones the reference section explains`”h]”jø)�”}”(hj8h]”hŒIpeculiar characteristics of shallow clones the reference section explains”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jDŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources_shallow”uh1hh³hÇh´K�hj´ubhŒ ”…”�”}”hj´sbj)�”}”(hŒ*.]*”h]”hŒ.]”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hj¢ubhì)�”}”(hŒLFirst, execute the following command to retrieve a fresh mainline codebase::”h]”hŒKFirst, execute the following command to retrieve a fresh mainline codebase:”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K‰hj¢ubj4)�”}”(hŒ…git clone --no-checkout --depth 1 -b master \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/ cd ~/linux/”h]”hŒ…git clone --no-checkout --depth 1 -b master \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/ cd ~/linux/”…”�”}”hj|sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´K‹hj¢ubhì)�”}”(hŒ’If you want to access recent mainline releases and pre-releases, deepen you clone's history to the oldest mainline version you are interested in::”h]”hŒ“If you want to access recent mainline releases and pre-releases, deepen you clone’s history to the oldest mainline version you are interested in:”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hj¢ubj4)�”}”(hŒ'git fetch --shallow-exclude=v6.0 origin”h]”hŒ'git fetch --shallow-exclude=v6.0 origin”…”�”}”hj˜sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´K’hj¢ubhì)�”}”(hŒÏIn case you want to access a stable/longterm release (say v6.1.5), simply add the branch holding that series; afterwards fetch the history at least up to the mainline version that started the series (v6.1)::”h]”hŒÎIn case you want to access a stable/longterm release (say v6.1.5), simply add the branch holding that series; afterwards fetch the history at least up to the mainline version that started the series (v6.1):”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K”hj¢ubj4)�”}”(hŒXgit remote set-branches --add origin linux-6.1.y git fetch --shallow-exclude=v6.0 origin”h]”hŒXgit remote set-branches --add origin linux-6.1.y git fetch --shallow-exclude=v6.0 origin”…”�”}”hj´sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´K˜hj¢ubhì)�”}”(hŒÖNow checkout the code you are interested in. If you just performed the initial clone, you will be able to check out a fresh mainline codebase, which is ideal for checking whether developers already fixed an issue::”h]”hŒÕNow checkout the code you are interested in. If you just performed the initial clone, you will be able to check out a fresh mainline codebase, which is ideal for checking whether developers already fixed an issue:”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K›hj¢ubj4)�”}”(hŒ#git checkout --detach origin/master”h]”hŒ#git checkout --detach origin/master”…”�”}”hjÐsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´KŸhj¢ubhì)�”}”(hXGIf you deepened your clone, you instead of ``origin/master`` can specify the version you deepened to (``v6.0`` above); later releases like ``v6.1`` and pre-release like ``v6.2-rc1`` will work, too. Stable or longterm versions like ``v6.1.5`` work just the same, if you added the appropriate stable/longterm branch as described.”h]”(hŒ+If you deepened your clone, you instead of ”…”�”}”(hjÞh²hh³Nh´NubjZ)�”}”(hŒ``origin/master``”h]”hŒ origin/master”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÞubhŒ* can specify the version you deepened to (”…”�”}”(hjÞh²hh³Nh´NubjZ)�”}”(hŒ``v6.0``”h]”hŒv6.0”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÞubhŒ above); later releases like ”…”�”}”(hjÞh²hh³Nh´NubjZ)�”}”(hŒ``v6.1``”h]”hŒv6.1”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÞubhŒ and pre-release like ”…”�”}”(hjÞh²hh³Nh´NubjZ)�”}”(hŒ ``v6.2-rc1``”h]”hŒv6.2-rc1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÞubhŒ2 will work, too. Stable or longterm versions like ”…”�”}”(hjÞh²hh³Nh´NubjZ)�”}”(hŒ ``v6.1.5``”h]”hŒv6.1.5”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÞubhŒV work just the same, if you added the appropriate stable/longterm branch as described.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¡hj¢ubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjFh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hjPh]”hŒdetails”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j\Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´K§hjFubhŒ]”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K§hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjŸubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´K}hj›ubah}”(h]”jšah ]”h"]”Œ sources_sbs”ah$]”h&]”uh1jÌh³hÇh´K}hjgh²hj7}”jˆj�sj9}”jšj�subj¿)�”}”(hŒ.. _patching_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ patching-sbs”uh1j¾h´K©hjgh²hh³hÇubjÍ)�”}”(hXª* In case you want to apply a kernel patch, do so now. Often a command like this will do the trick:: patch -p1 < ../proposed-fix.patch If the ``-p1`` is actually needed, depends on how the patch was created; in case it does not apply thus try without it. If you cloned the sources with git and anything goes sideways, run ``git reset --hard`` to undo any changes to the sources. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXšIn case you want to apply a kernel patch, do so now. Often a command like this will do the trick:: patch -p1 < ../proposed-fix.patch If the ``-p1`` is actually needed, depends on how the patch was created; in case it does not apply thus try without it. If you cloned the sources with git and anything goes sideways, run ``git reset --hard`` to undo any changes to the sources. [:ref:`details`] ”h]”(hì)�”}”(hŒbIn case you want to apply a kernel patch, do so now. Often a command like this will do the trick::”h]”hŒaIn case you want to apply a kernel patch, do so now. Often a command like this will do the trick:”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K«hjŸubj4)�”}”(hŒ!patch -p1 < ../proposed-fix.patch”h]”hŒ!patch -p1 < ../proposed-fix.patch”…”�”}”hj±sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´K®hjŸubhì)�”}”(hŒwIf the ``-p1`` is actually needed, depends on how the patch was created; in case it does not apply thus try without it.”h]”(hŒIf the ”…”�”}”(hj¿h²hh³Nh´NubjZ)�”}”(hŒ``-p1``”h]”hŒ-p1”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj¿ubhŒi is actually needed, depends on how the patch was created; in case it does not apply thus try without it.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K°hjŸubhì)�”}”(hŒ{If you cloned the sources with git and anything goes sideways, run ``git reset --hard`` to undo any changes to the sources.”h]”(hŒCIf you cloned the sources with git and anything goes sideways, run ”…”�”}”(hjßh²hh³Nh´NubjZ)�”}”(hŒ``git reset --hard``”h]”hŒgit reset --hard”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjßubhŒ$ to undo any changes to the sources.”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K³hjŸubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjÿh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hj h]”hŒdetails”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒpatching”uh1hh³hÇh´K¶hjÿubhŒ]”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¶hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjœubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´K«hj˜ubah}”(h]”j—ah ]”h"]”Œ patching_sbs”ah$]”h&]”uh1jÌh³hÇh´K«hjgh²hj7}”jAj�sj9}”j—j�subj¿)�”}”(hŒ.. _tagging_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ tagging-sbs”uh1j¾h´K¸hjgh²hh³hÇubjÍ)�”}”(hX>* If you patched your kernel or have one of the same version installed already, better add a unique tag to the one you are about to build:: echo "-proposed_fix" > localversion Running ``uname -r`` under your kernel later will then print something like '6.1-rc4-proposed_fix'. [:ref:`details`] .. _configuration_sbs: * Create the build configuration for your kernel based on an existing configuration. If you already prepared such a '.config' file yourself, copy it to ~/linux/ and run ``make olddefconfig``. Use the same command, if your distribution or somebody else already tailored your running kernel to your or your hardware's needs: the make target 'olddefconfig' will then try to use that kernel's .config as base. Using this make target is fine for everybody else, too -- but you often can save a lot of time by using this command instead:: yes "" | make localmodconfig This will try to pick your distribution's kernel as base, but then disable modules for any features apparently superfluous for your setup. This will reduce the compile time enormously, especially if you are running an universal kernel from a commodity Linux distribution. There is a catch: 'localmodconfig' is likely to disable kernel features you did not use since you booted your Linux -- like drivers for currently disconnected peripherals or virtualization software not currently in use. You can reduce or nearly eliminate that risk with tricks the reference section outlines; but when building a kernel just for quick testing purposes it is often negligible if such features are missing. But you should keep that aspect in mind when using a kernel built with this make target, as it might be the reason why something you only use occasionally stopped working. [:ref:`details`] ”h]”(jÓ)�”}”(hhh]”jØ)�”}”(hX1If you patched your kernel or have one of the same version installed already, better add a unique tag to the one you are about to build:: echo "-proposed_fix" > localversion Running ``uname -r`` under your kernel later will then print something like '6.1-rc4-proposed_fix'. [:ref:`details`] ”h]”(hì)�”}”(hŒ‰If you patched your kernel or have one of the same version installed already, better add a unique tag to the one you are about to build::”h]”hŒˆIf you patched your kernel or have one of the same version installed already, better add a unique tag to the one you are about to build:”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KºhjXubj4)�”}”(hŒ#echo "-proposed_fix" > localversion”h]”hŒ#echo "-proposed_fix" > localversion”…”�”}”hjjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´K½hjXubhì)�”}”(hŒcRunning ``uname -r`` under your kernel later will then print something like '6.1-rc4-proposed_fix'.”h]”(hŒRunning ”…”�”}”(hjxh²hh³Nh´NubjZ)�”}”(hŒ ``uname -r``”h]”hŒuname -r”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjxubhŒS under your kernel later will then print something like ‘6.1-rc4-proposed_fix’.”…”�”}”(hjxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K¿hjXubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hj˜h²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hj¢h]”hŒdetails”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j®Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒtagging”uh1hh³hÇh´KÂhj˜ubhŒ]”…”�”}”(hj˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÂhjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjUubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´KºhjQubj¿)�”}”(hŒ.. _configuration_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒconfiguration-sbs”uh1j¾h´KÄhjQubjÓ)�”}”(hhh]”jØ)�”}”(hXºCreate the build configuration for your kernel based on an existing configuration. If you already prepared such a '.config' file yourself, copy it to ~/linux/ and run ``make olddefconfig``. Use the same command, if your distribution or somebody else already tailored your running kernel to your or your hardware's needs: the make target 'olddefconfig' will then try to use that kernel's .config as base. Using this make target is fine for everybody else, too -- but you often can save a lot of time by using this command instead:: yes "" | make localmodconfig This will try to pick your distribution's kernel as base, but then disable modules for any features apparently superfluous for your setup. This will reduce the compile time enormously, especially if you are running an universal kernel from a commodity Linux distribution. There is a catch: 'localmodconfig' is likely to disable kernel features you did not use since you booted your Linux -- like drivers for currently disconnected peripherals or virtualization software not currently in use. You can reduce or nearly eliminate that risk with tricks the reference section outlines; but when building a kernel just for quick testing purposes it is often negligible if such features are missing. But you should keep that aspect in mind when using a kernel built with this make target, as it might be the reason why something you only use occasionally stopped working. [:ref:`details`] ”h]”(hì)�”}”(hŒRCreate the build configuration for your kernel based on an existing configuration.”h]”hŒRCreate the build configuration for your kernel based on an existing configuration.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÆhjäubhì)�”}”(hŒjIf you already prepared such a '.config' file yourself, copy it to ~/linux/ and run ``make olddefconfig``.”h]”(hŒXIf you already prepared such a ‘.config’ file yourself, copy it to ~/linux/ and run ”…”�”}”(hjöh²hh³Nh´NubjZ)�”}”(hŒ``make olddefconfig``”h]”hŒmake olddefconfig”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjöubhŒ.”…”�”}”(hjöh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÉhjäubhì)�”}”(hŒÕUse the same command, if your distribution or somebody else already tailored your running kernel to your or your hardware's needs: the make target 'olddefconfig' will then try to use that kernel's .config as base.”h]”hŒÝUse the same command, if your distribution or somebody else already tailored your running kernel to your or your hardware’s needs: the make target ‘olddefconfig’ will then try to use that kernel’s .config as base.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÌhjäubhì)�”}”(hŒ~Using this make target is fine for everybody else, too -- but you often can save a lot of time by using this command instead::”h]”hŒ}Using this make target is fine for everybody else, too -- but you often can save a lot of time by using this command instead:”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÐhjäubj4)�”}”(hŒyes "" | make localmodconfig”h]”hŒyes "" | make localmodconfig”…”�”}”hj2sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´KÓhjäubhì)�”}”(hXThis will try to pick your distribution's kernel as base, but then disable modules for any features apparently superfluous for your setup. This will reduce the compile time enormously, especially if you are running an universal kernel from a commodity Linux distribution.”h]”hXThis will try to pick your distribution’s kernel as base, but then disable modules for any features apparently superfluous for your setup. This will reduce the compile time enormously, especially if you are running an universal kernel from a commodity Linux distribution.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÕhjäubhì)�”}”(hXPThere is a catch: 'localmodconfig' is likely to disable kernel features you did not use since you booted your Linux -- like drivers for currently disconnected peripherals or virtualization software not currently in use. You can reduce or nearly eliminate that risk with tricks the reference section outlines; but when building a kernel just for quick testing purposes it is often negligible if such features are missing. But you should keep that aspect in mind when using a kernel built with this make target, as it might be the reason why something you only use occasionally stopped working.”h]”hXTThere is a catch: ‘localmodconfig’ is likely to disable kernel features you did not use since you booted your Linux -- like drivers for currently disconnected peripherals or virtualization software not currently in use. You can reduce or nearly eliminate that risk with tricks the reference section outlines; but when building a kernel just for quick testing purposes it is often negligible if such features are missing. But you should keep that aspect in mind when using a kernel built with this make target, as it might be the reason why something you only use occasionally stopped working.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KÚhjäubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hj\h²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hjfh]”hŒdetails”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjdubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jrŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ configuration”uh1hh³hÇh´Kãhj\ubhŒ]”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kãhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjáubah}”(h]”jàah ]”h"]”Œconfiguration_sbs”ah$]”h&]”j.j/uh1jÒh³hÇh´KÆhjQj7}”j˜jÖsj9}”jàjÖsubeh}”(h]”jPah ]”h"]”Œ tagging_sbs”ah$]”h&]”uh1jÌh³hÇh´Kºhjgh²hj7}”j¡jFsj9}”jPjFsubj¿)�”}”(hŒ.. _configmods_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒconfigmods-sbs”uh1j¾h´Kåhjgh²hh³hÇubjÍ)�”}”(hX‡* Check if you might want to or have to adjust some kernel configuration options: * Evaluate how you want to handle debug symbols. Enable them, if you later might need to decode a stack trace found for example in a 'panic', 'Oops', 'warning', or 'BUG'; on the other hand disable them, if you are short on storage space or prefer a smaller kernel binary. See the reference section for details on how to do either. If neither applies, it will likely be fine to simply not bother with this. [:ref:`details`] * Are you running Debian? Then to avoid known problems by performing additional adjustments explained in the reference section. [:ref:`details`]. * If you want to influence the other aspects of the configuration, do so now by using make targets like 'menuconfig' or 'xconfig'. [:ref:`details`]. ”h]”(jÓ)�”}”(hhh]”jØ)�”}”(hŒPCheck if you might want to or have to adjust some kernel configuration options: ”h]”hì)�”}”(hŒOCheck if you might want to or have to adjust some kernel configuration options:”h]”hŒOCheck if you might want to or have to adjust some kernel configuration options:”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kçhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjµubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´Kçhj±ubjÍ)�”}”(hX&* Evaluate how you want to handle debug symbols. Enable them, if you later might need to decode a stack trace found for example in a 'panic', 'Oops', 'warning', or 'BUG'; on the other hand disable them, if you are short on storage space or prefer a smaller kernel binary. See the reference section for details on how to do either. If neither applies, it will likely be fine to simply not bother with this. [:ref:`details`] * Are you running Debian? Then to avoid known problems by performing additional adjustments explained in the reference section. [:ref:`details`]. * If you want to influence the other aspects of the configuration, do so now by using make targets like 'menuconfig' or 'xconfig'. [:ref:`details`]. ”h]”jÓ)�”}”(hhh]”(jØ)�”}”(hX¾Evaluate how you want to handle debug symbols. Enable them, if you later might need to decode a stack trace found for example in a 'panic', 'Oops', 'warning', or 'BUG'; on the other hand disable them, if you are short on storage space or prefer a smaller kernel binary. See the reference section for details on how to do either. If neither applies, it will likely be fine to simply not bother with this. [:ref:`details`] ”h]”hì)�”}”(hX½Evaluate how you want to handle debug symbols. Enable them, if you later might need to decode a stack trace found for example in a 'panic', 'Oops', 'warning', or 'BUG'; on the other hand disable them, if you are short on storage space or prefer a smaller kernel binary. See the reference section for details on how to do either. If neither applies, it will likely be fine to simply not bother with this. [:ref:`details`]”h]”(hX¥Evaluate how you want to handle debug symbols. Enable them, if you later might need to decode a stack trace found for example in a ‘panic’, ‘Oops’, ‘warning’, or ‘BUG’; on the other hand disable them, if you are short on storage space or prefer a smaller kernel binary. See the reference section for details on how to do either. If neither applies, it will likely be fine to simply not bother with this. [”…”�”}”(hjáh²hh³Nh´Nubh)�”}”(hŒ':ref:`details`”h]”jø)�”}”(hjëh]”hŒdetails”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjéubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j÷Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_debugsymbols”uh1hh³hÇh´KêhjáubhŒ]”…”�”}”(hjáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KêhjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÚubjØ)�”}”(hŒ¤Are you running Debian? Then to avoid known problems by performing additional adjustments explained in the reference section. [:ref:`details`]. ”h]”hì)�”}”(hŒ£Are you running Debian? Then to avoid known problems by performing additional adjustments explained in the reference section. [:ref:`details`].”h]”(hŒAre you running Debian? Then to avoid known problems by performing additional adjustments explained in the reference section. [”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ":ref:`details`”h]”jø)�”}”(hj'h]”hŒdetails”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j3Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_distros”uh1hh³hÇh´KñhjubhŒ].”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kñhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÚubjØ)�”}”(hŒªIf you want to influence the other aspects of the configuration, do so now by using make targets like 'menuconfig' or 'xconfig'. [:ref:`details`]. ”h]”hì)�”}”(hŒ©If you want to influence the other aspects of the configuration, do so now by using make targets like 'menuconfig' or 'xconfig'. [:ref:`details`].”h]”(hŒŠIf you want to influence the other aspects of the configuration, do so now by using make targets like ‘menuconfig’ or ‘xconfig’. [”…”�”}”(hjYh²hh³Nh´Nubh)�”}”(hŒ%:ref:`details`”h]”jø)�”}”(hjch]”hŒdetails”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”joŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_individual”uh1hh³hÇh´KõhjYubhŒ].”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KõhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÚubeh}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´KêhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´Kêhj±ubeh}”(h]”j°ah ]”h"]”Œconfigmods_sbs”ah$]”h&]”uh1jÌh³hÇh´Kçhjgh²hj7}”j¡j¦sj9}”j°j¦subj¿)�”}”(hŒ.. _build_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ build-sbs”uh1j¾h´Kùhjgh²hh³hÇubjÍ)�”}”(hŒÙ* Build the image and the modules of your kernel:: make -j $(nproc --all) If you want your kernel packaged up as deb, rpm, or tar file, see the reference section for alternatives. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hŒÏBuild the image and the modules of your kernel:: make -j $(nproc --all) If you want your kernel packaged up as deb, rpm, or tar file, see the reference section for alternatives. [:ref:`details`] ”h]”(hì)�”}”(hŒ0Build the image and the modules of your kernel::”h]”hŒ/Build the image and the modules of your kernel:”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kûhj¸ubj4)�”}”(hŒmake -j $(nproc --all)”h]”hŒmake -j $(nproc --all)”…”�”}”hjÊsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´Kýhj¸ubhì)�”}”(hŒiIf you want your kernel packaged up as deb, rpm, or tar file, see the reference section for alternatives.”h]”hŒiIf you want your kernel packaged up as deb, rpm, or tar file, see the reference section for alternatives.”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kÿhj¸ubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjæh²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hjðh]”hŒdetails”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjîubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jüŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒbuild”uh1hh³hÇh´MhjæubhŒ]”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjµubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´Kûhj±ubah}”(h]”j°ah ]”h"]”Œ build_sbs”ah$]”h&]”uh1jÌh³hÇh´Kûhjgh²hj7}”j( j¦sj9}”j°j¦subj¿)�”}”(hŒ.. _install_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ install-sbs”uh1j¾h´Mhjgh²hh³hÇubjÍ)�”}”(hX)* Now install your kernel:: command -v installkernel && sudo make modules_install install Often all left for you to do afterwards is a ``reboot``, as many commodity Linux distributions will then create an initramfs (also known as initrd) and an entry for your kernel in your bootloader's configuration; but on some distributions you have to take care of these two steps manually for reasons the reference section explains. On a few distributions like Arch Linux and its derivatives the above command does nothing at all; in that case you have to manually install your kernel, as outlined in the reference section. If you are running an immutable Linux distribution, check its documentation and the web to find out how to install your own kernel there. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXNow install your kernel:: command -v installkernel && sudo make modules_install install Often all left for you to do afterwards is a ``reboot``, as many commodity Linux distributions will then create an initramfs (also known as initrd) and an entry for your kernel in your bootloader's configuration; but on some distributions you have to take care of these two steps manually for reasons the reference section explains. On a few distributions like Arch Linux and its derivatives the above command does nothing at all; in that case you have to manually install your kernel, as outlined in the reference section. If you are running an immutable Linux distribution, check its documentation and the web to find out how to install your own kernel there. [:ref:`details`] ”h]”(hì)�”}”(hŒNow install your kernel::”h]”hŒNow install your kernel:”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj? ubj4)�”}”(hŒ=command -v installkernel && sudo make modules_install install”h]”hŒ=command -v installkernel && sudo make modules_install install”…”�”}”hjQ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´Mhj? ubhì)�”}”(hXLOften all left for you to do afterwards is a ``reboot``, as many commodity Linux distributions will then create an initramfs (also known as initrd) and an entry for your kernel in your bootloader's configuration; but on some distributions you have to take care of these two steps manually for reasons the reference section explains.”h]”(hŒ-Often all left for you to do afterwards is a ”…”�”}”(hj_ h²hh³Nh´NubjZ)�”}”(hŒ ``reboot``”h]”hŒreboot”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj_ ubhX, as many commodity Linux distributions will then create an initramfs (also known as initrd) and an entry for your kernel in your bootloader’s configuration; but on some distributions you have to take care of these two steps manually for reasons the reference section explains.”…”�”}”(hj_ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hj? ubhì)�”}”(hŒ¾On a few distributions like Arch Linux and its derivatives the above command does nothing at all; in that case you have to manually install your kernel, as outlined in the reference section.”h]”hŒ¾On a few distributions like Arch Linux and its derivatives the above command does nothing at all; in that case you have to manually install your kernel, as outlined in the reference section.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj? ubhì)�”}”(hŒ‰If you are running an immutable Linux distribution, check its documentation and the web to find out how to install your own kernel there.”h]”hŒ‰If you are running an immutable Linux distribution, check its documentation and the web to find out how to install your own kernel there.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj? ubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hj› h²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hj¥ h]”hŒdetails”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj£ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j± Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒinstall”uh1hh³hÇh´Mhj› ubhŒ]”…”�”}”(hj› h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj? ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj< ubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´Mhj8 ubah}”(h]”j7 ah ]”h"]”Œ install_sbs”ah$]”h&]”uh1jÌh³hÇh´Mhjgh²hj7}”jÝ j- sj9}”j7 j- subj¿)�”}”(hŒ.. _another_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ another-sbs”uh1j¾h´Mhjgh²hh³hÇubjÍ)�”}”(hXà* To later build another kernel you need similar steps, but sometimes slightly different commands. First, switch back into the sources tree:: cd ~/linux/ In case you want to build a version from a stable/longterm series you have not used yet (say 6.2.y), tell git to track it:: git remote set-branches --add origin linux-6.2.y Now fetch the latest upstream changes; you again need to specify the earliest version you care about, as git otherwise might retrieve the entire commit history:: git fetch --shallow-exclude=v6.0 origin Now switch to the version you are interested in -- but be aware the command used here will discard any modifications you performed, as they would conflict with the sources you want to checkout:: git checkout --force --detach origin/master At this point you might want to patch the sources again or set/modify a build tag, as explained earlier. Afterwards adjust the build configuration to the new codebase using olddefconfig, which will now adjust the configuration file you prepared earlier using localmodconfig (~/linux/.config) for your next kernel:: # reminder: if you want to apply patches, do it at this point # reminder: you might want to update your build tag at this point make olddefconfig Now build your kernel:: make -j $(nproc --all) Afterwards install the kernel as outlined above:: command -v installkernel && sudo make modules_install install [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hX¨To later build another kernel you need similar steps, but sometimes slightly different commands. First, switch back into the sources tree:: cd ~/linux/ In case you want to build a version from a stable/longterm series you have not used yet (say 6.2.y), tell git to track it:: git remote set-branches --add origin linux-6.2.y Now fetch the latest upstream changes; you again need to specify the earliest version you care about, as git otherwise might retrieve the entire commit history:: git fetch --shallow-exclude=v6.0 origin Now switch to the version you are interested in -- but be aware the command used here will discard any modifications you performed, as they would conflict with the sources you want to checkout:: git checkout --force --detach origin/master At this point you might want to patch the sources again or set/modify a build tag, as explained earlier. Afterwards adjust the build configuration to the new codebase using olddefconfig, which will now adjust the configuration file you prepared earlier using localmodconfig (~/linux/.config) for your next kernel:: # reminder: if you want to apply patches, do it at this point # reminder: you might want to update your build tag at this point make olddefconfig Now build your kernel:: make -j $(nproc --all) Afterwards install the kernel as outlined above:: command -v installkernel && sudo make modules_install install [:ref:`details`] ”h]”(hì)�”}”(hŒ`To later build another kernel you need similar steps, but sometimes slightly different commands.”h]”hŒ`To later build another kernel you need similar steps, but sometimes slightly different commands.”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjô ubhì)�”}”(hŒ*First, switch back into the sources tree::”h]”hŒ)First, switch back into the sources tree:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjô ubj4)�”}”(hŒ cd ~/linux/”h]”hŒ cd ~/linux/”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M hjô ubhì)�”}”(hŒ{In case you want to build a version from a stable/longterm series you have not used yet (say 6.2.y), tell git to track it::”h]”hŒzIn case you want to build a version from a stable/longterm series you have not used yet (say 6.2.y), tell git to track it:”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M"hjô ubj4)�”}”(hŒ0git remote set-branches --add origin linux-6.2.y”h]”hŒ0git remote set-branches --add origin linux-6.2.y”…”�”}”hj0 sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M%hjô ubhì)�”}”(hŒ¡Now fetch the latest upstream changes; you again need to specify the earliest version you care about, as git otherwise might retrieve the entire commit history::”h]”hŒ Now fetch the latest upstream changes; you again need to specify the earliest version you care about, as git otherwise might retrieve the entire commit history:”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M'hjô ubj4)�”}”(hŒ'git fetch --shallow-exclude=v6.0 origin”h]”hŒ'git fetch --shallow-exclude=v6.0 origin”…”�”}”hjL sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M+hjô ubhì)�”}”(hŒÂNow switch to the version you are interested in -- but be aware the command used here will discard any modifications you performed, as they would conflict with the sources you want to checkout::”h]”hŒÁNow switch to the version you are interested in -- but be aware the command used here will discard any modifications you performed, as they would conflict with the sources you want to checkout:”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M-hjô ubj4)�”}”(hŒ+git checkout --force --detach origin/master”h]”hŒ+git checkout --force --detach origin/master”…”�”}”hjh sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M1hjô ubhì)�”}”(hX;At this point you might want to patch the sources again or set/modify a build tag, as explained earlier. Afterwards adjust the build configuration to the new codebase using olddefconfig, which will now adjust the configuration file you prepared earlier using localmodconfig (~/linux/.config) for your next kernel::”h]”hX:At this point you might want to patch the sources again or set/modify a build tag, as explained earlier. Afterwards adjust the build configuration to the new codebase using olddefconfig, which will now adjust the configuration file you prepared earlier using localmodconfig (~/linux/.config) for your next kernel:”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M3hjô ubj4)�”}”(hŒ‘# reminder: if you want to apply patches, do it at this point # reminder: you might want to update your build tag at this point make olddefconfig”h]”hŒ‘# reminder: if you want to apply patches, do it at this point # reminder: you might want to update your build tag at this point make olddefconfig”…”�”•}”hj„ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M9hjô ubhì)�”}”(hŒNow build your kernel::”h]”hŒNow build your kernel:”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M=hjô ubj4)�”}”(hŒmake -j $(nproc --all)”h]”hŒmake -j $(nproc --all)”…”�”}”hj  sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M?hjô ubhì)�”}”(hŒ1Afterwards install the kernel as outlined above::”h]”hŒ0Afterwards install the kernel as outlined above:”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MAhjô ubj4)�”}”(hŒ=command -v installkernel && sudo make modules_install install”h]”hŒ=command -v installkernel && sudo make modules_install install”…”�”}”hj¼ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MChjô ubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hjÊ h²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hjÔ h]”hŒdetails”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÒ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jà Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒanother”uh1hh³hÇh´MEhjÊ ubhŒ]”…”�”}”(hjÊ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MEhjô ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjñ ubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´Mhjí ubah}”(h]”jì ah ]”h"]”Œ another_sbs”ah$]”h&]”uh1jÌh³hÇh´Mhjgh²hj7}”j jâ sj9}”jì jâ subj¿)�”}”(hŒ.. _uninstall_sbs:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ uninstall-sbs”uh1j¾h´MGhjgh²hh³hÇubjÍ)�”}”(hXo* Your kernel is easy to remove later, as its parts are only stored in two places and clearly identifiable by the kernel's release name. Just ensure to not delete the kernel you are running, as that might render your system unbootable. Start by deleting the directory holding your kernel's modules, which is named after its release name -- '6.0.1-foobar' in the following example:: sudo rm -rf /lib/modules/6.0.1-foobar Now try the following command, which on some distributions will delete all other kernel files installed while also removing the kernel's entry from the bootloader configuration:: command -v kernel-install && sudo kernel-install -v remove 6.0.1-foobar If that command does not output anything or fails, see the reference section; do the same if any files named '*6.0.1-foobar*' remain in /boot/. [:ref:`details`] ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXSYour kernel is easy to remove later, as its parts are only stored in two places and clearly identifiable by the kernel's release name. Just ensure to not delete the kernel you are running, as that might render your system unbootable. Start by deleting the directory holding your kernel's modules, which is named after its release name -- '6.0.1-foobar' in the following example:: sudo rm -rf /lib/modules/6.0.1-foobar Now try the following command, which on some distributions will delete all other kernel files installed while also removing the kernel's entry from the bootloader configuration:: command -v kernel-install && sudo kernel-install -v remove 6.0.1-foobar If that command does not output anything or fails, see the reference section; do the same if any files named '*6.0.1-foobar*' remain in /boot/. [:ref:`details`] ”h]”(hì)�”}”(hŒéYour kernel is easy to remove later, as its parts are only stored in two places and clearly identifiable by the kernel's release name. Just ensure to not delete the kernel you are running, as that might render your system unbootable.”h]”hŒëYour kernel is easy to remove later, as its parts are only stored in two places and clearly identifiable by the kernel’s release name. Just ensure to not delete the kernel you are running, as that might render your system unbootable.”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MIhj# ubhì)�”}”(hŒ‘Start by deleting the directory holding your kernel's modules, which is named after its release name -- '6.0.1-foobar' in the following example::”h]”hŒ–Start by deleting the directory holding your kernel’s modules, which is named after its release name -- ‘6.0.1-foobar’ in the following example:”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MNhj# ubj4)�”}”(hŒ%sudo rm -rf /lib/modules/6.0.1-foobar”h]”hŒ%sudo rm -rf /lib/modules/6.0.1-foobar”…”�”}”hjC sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MQhj# ubhì)�”}”(hŒ²Now try the following command, which on some distributions will delete all other kernel files installed while also removing the kernel's entry from the bootloader configuration::”h]”hŒ³Now try the following command, which on some distributions will delete all other kernel files installed while also removing the kernel’s entry from the bootloader configuration:”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MShj# ubj4)�”}”(hŒGcommand -v kernel-install && sudo kernel-install -v remove 6.0.1-foobar”h]”hŒGcommand -v kernel-install && sudo kernel-install -v remove 6.0.1-foobar”…”�”}”hj_ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MWhj# ubhì)�”}”(hŒ�If that command does not output anything or fails, see the reference section; do the same if any files named '*6.0.1-foobar*' remain in /boot/.”h]”(hŒpIf that command does not output anything or fails, see the reference section; do the same if any files named ‘”…”�”}”(hjm h²hh³Nh´Nubj)�”}”(hŒ*6.0.1-foobar*”h]”hŒ 6.0.1-foobar”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjm ubhŒ’ remain in /boot/.”…”�”}”(hjm h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MYhj# ubhì)�”}”(hŒ[:ref:`details`]”h]”(hŒ[”…”�”}”(hj� h²hh³Nh´Nubh)�”}”(hŒ:ref:`details`”h]”jø)�”}”(hj— h]”hŒdetails”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj• ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j£ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ uninstall”uh1hh³hÇh´M\hj� ubhŒ]”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M\hj# ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hj ubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´MIhj ubah}”(h]”j ah ]”h"]”Œ uninstall_sbs”ah$]”h&]”uh1jÌh³hÇh´MIhjgh²hj7}”jÏ j sj9}”j j subj¿)�”}”(hŒ.. _submit_improvements_qbtl:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsubmit-improvements-qbtl”uh1j¾h´M^hjgh²hh³hÇubhì)�”}”(hŒ¯Did you run into trouble following the step-by-step guide not cleared up by the reference section below? Did you spot errors? Or do you have ideas on how to improve the guide?”h]”hŒ¯Did you run into trouble following the step-by-step guide not cleared up by the reference section below? Did you spot errors? Or do you have ideas on how to improve the guide?”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”jÞ ah ]”h"]”Œsubmit_improvements_qbtl”ah$]”h&]”uh1hëh³hÇh´M`hjgh²hj7}”jë jÔ sj9}”jÞ jÔ subhì)�”}”(hXpIf any of that applies, please let the developers know by sending a short note or a patch to Thorsten Leemhuis while ideally CCing the public Linux docs mailing list . Such feedback is vital to improve this text further, which is in everybody's interest, as it will enable more people to master the task described here.”h]”(hŒpIf any of that applies, please let the developers know by sending a short note or a patch to Thorsten Leemhuis <”…”�”}”(hjð h²hh³Nh´NubhŒ reference”“”)�”}”(hŒlinux@leemhuis.info”h]”hŒlinux@leemhuis.info”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:linux@leemhuis.info”uh1jø hjð ubhŒ:> while ideally CCing the public Linux docs mailing list <”…”�”}”(hjð h²hh³Nh´Nubjù )�”}”(hŒlinux-doc@vger.kernel.org”h]”hŒlinux-doc@vger.kernel.org”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ mailto:linux-doc@vger.kernel.org”uh1jø hjð ubhŒœ>. Such feedback is vital to improve this text further, which is in everybody’s interest, as it will enable more people to master the task described here.”…”�”}”(hjð h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mdhjgh²hubeh}”(h]”Œstep-by-step-guide”ah ]”h"]”Œstep-by-step guide”ah$]”h&]”uh1hÖhhØh²hh³hÇh´K7ubh×)�”}”(hhh]”(hÜ)�”}”(hŒ,Reference section for the step-by-step guide”h]”hŒ,Reference section for the step-by-step guide”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj0 h²hh³hÇh´Mkubhì)�”}”(hŒSThis section holds additional information for each of the steps in the above guide.”h]”hŒSThis section holds additional information for each of the steps in the above guide.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mmhj0 h²hubj¿)�”}”(hŒ .. _backup:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒbackup”uh1j¾h´Mphj0 h²hh³hÇubh×)�”}”(hhh]”(hÜ)�”}”(hŒPrepare for emergencies”h]”hŒPrepare for emergencies”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjZ h²hh³hÇh´MsubjÍ)�”}”(hŒb*Create a fresh backup and put system repair and restore tools at hand* [:ref:`... `] ”h]”hì)�”}”(hŒa*Create a fresh backup and put system repair and restore tools at hand* [:ref:`... `]”h]”(j)�”}”(hŒG*Create a fresh backup and put system repair and restore tools at hand*”h]”hŒECreate a fresh backup and put system repair and restore tools at hand”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjo ubhŒ [”…”�”}”(hjo h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hj‡ h]”hŒ...”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj… ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j“ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ backup_sbs”uh1hh³hÇh´Muhjo ubhŒ]”…”�”}”(hjo h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Muhjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´MuhjZ h²hubhì)�”}”(hX*Remember, you are dealing with computers, which sometimes do unexpected things -- especially if you fiddle with crucial parts like the kernel of an operating system. That's what you are about to do in this process. Hence, better prepare for something going sideways, even if that should not happen.”h]”hX,Remember, you are dealing with computers, which sometimes do unexpected things -- especially if you fiddle with crucial parts like the kernel of an operating system. That’s what you are about to do in this process. Hence, better prepare for something going sideways, even if that should not happen.”…”�”}”(hjµ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MxhjZ h²hubhì)�”}”(hŒ0[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjà h²hh³Nh´Nubh)�”}”(hŒ.:ref:`back to step-by-step guide `”h]”jø)�”}”(hjÍ h]”hŒback to step-by-step guide”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjË ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jÙ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ backup_sbs”uh1hh³hÇh´M}hjà ubhŒ]”…”�”}”(hjà h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M}hjZ h²hubj¿)�”}”(hŒ.. _secureboot:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ secureboot”uh1j¾h´MhjZ h²hh³hÇubeh}”(h]”(Œprepare-for-emergencies”jY eh ]”h"]”(Œprepare for emergencies”Œbackup”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´Msj7}”j jO sj9}”jY jO subh×)�”}”(hhh]”(hÜ)�”}”(hŒ(Dealing with techniques like Secure Boot”h]”hŒ(Dealing with techniques like Secure Boot”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´M‚ubjÍ)�”}”(hŒ´*On platforms with 'Secure Boot' or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later.* [:ref:`... `] ”h]”hì)�”}”(hŒ³*On platforms with 'Secure Boot' or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later.* [:ref:`... `]”h]”(j)�”}”(hŒ•*On platforms with 'Secure Boot' or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later.*”h]”hŒ—On platforms with ‘Secure Boot’ or similar techniques, prepare everything to ensure the system will permit your self-compiled kernel to boot later.”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ [”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hj8 h]”hŒ...”…”�”}”(hj: h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj6 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jD Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsecureboot_sbs”uh1hh³hÇh´M„hj ubhŒ]”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M„hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M„hj h²hubhì)�”}”(hŒ‚Many modern systems allow only certain operating systems to start; they thus by default will reject booting self-compiled kernels.”h]”hŒ‚Many modern systems allow only certain operating systems to start; they thus by default will reject booting self-compiled kernels.”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mˆhj h²hubhì)�”}”(hXaYou ideally deal with this by making your platform trust your self-built kernels with the help of a certificate and signing. How to do that is not described here, as it requires various steps that would take the text too far away from its purpose; 'Documentation/admin-guide/module-signing.rst' and various web sides already explain this in more detail.”h]”hXeYou ideally deal with this by making your platform trust your self-built kernels with the help of a certificate and signing. How to do that is not described here, as it requires various steps that would take the text too far away from its purpose; ‘Documentation/admin-guide/module-signing.rst’ and various web sides already explain this in more detail.”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M‹hj h²hubhì)�”}”(hŒüTemporarily disabling solutions like Secure Boot is another way to make your own Linux boot. On commodity x86 systems it is possible to do this in the BIOS Setup utility; the steps to do so are not described here, as they greatly vary between machines.”h]”hŒüTemporarily disabling solutions like Secure Boot is another way to make your own Linux boot. On commodity x86 systems it is possible to do this in the BIOS Setup utility; the steps to do so are not described here, as they greatly vary between machines.”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M‘hj h²hubhì)�”}”(hX6On mainstream x86 Linux distributions there is a third and universal option: disable all Secure Boot restrictions for your Linux environment. You can initiate this process by running ``mokutil --disable-validation``; this will tell you to create a one-time password, which is safe to write down. Now restart; right after your BIOS performed all self-tests the bootloader Shim will show a blue box with a message 'Press any key to perform MOK management'. Hit some key before the countdown exposes. This will open a menu and choose 'Change Secure Boot state' there. Shim's 'MokManager' will now ask you to enter three randomly chosen characters from the one-time password specified earlier. Once you provided them, confirm that you really want to disable the validation. Afterwards, permit MokManager to reboot the machine.”h]”(hŒ·On mainstream x86 Linux distributions there is a third and universal option: disable all Secure Boot restrictions for your Linux environment. You can initiate this process by running ”…”�”}”(hj� h²hh³Nh´NubjZ)�”}”(hŒ ``mokutil --disable-validation``”h]”hŒmokutil --disable-validation”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj� ubhXm; this will tell you to create a one-time password, which is safe to write down. Now restart; right after your BIOS performed all self-tests the bootloader Shim will show a blue box with a message ‘Press any key to perform MOK management’. Hit some key before the countdown exposes. This will open a menu and choose ‘Change Secure Boot state’ there. Shim’s ‘MokManager’ will now ask you to enter three randomly chosen characters from the one-time password specified earlier. Once you provided them, confirm that you really want to disable the validation. Afterwards, permit MokManager to reboot the machine.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M–hj h²hubhì)�”}”(hŒ4[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hj° h²hh³Nh´Nubh)�”}”(hŒ2:ref:`back to step-by-step guide `”h]”jø)�”}”(hjº h]”hŒback to step-by-step guide”…”�”}”(hj¼ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj¸ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jÆ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsecureboot_sbs”uh1hh³hÇh´M¢hj° ubhŒ]”…”�”}”(hj° h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¢hj h²hubj¿)�”}”(hŒ.. _buildrequires:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ buildrequires”uh1j¾h´M¤hj h²hh³hÇubeh}”(h]”(Œ(dealing-with-techniques-like-secure-boot”jÿ eh ]”h"]”(Œ(dealing with techniques like secure boot”Œ secureboot”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M‚j7}”jó jõ sj9}”jÿ jõ subh×)�”}”(hhh]”(hÜ)�”}”(hŒInstall build requirements”h]”hŒInstall build requirements”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjø h²hh³hÇh´M§ubjÍ)�”}”(hŒY*Install all software required to build a Linux kernel.* [:ref:`...`] ”h]”hì)�”}”(hŒX*Install all software required to build a Linux kernel.* [:ref:`...`]”h]”(j)�”}”(hŒ8*Install all software required to build a Linux kernel.*”h]”hŒ6Install all software required to build a Linux kernel.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ [”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:ref:`...`”h]”jø)�”}”(hj%h]”hŒ...”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j1Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒbuildrequires_sbs”uh1hh³hÇh´M©hj ubhŒ]”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M©hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M©hjø h²hubhì)�”}”(hŒûThe kernel is pretty stand-alone, but besides tools like the compiler you will sometimes need a few libraries to build one. How to install everything needed depends on your Linux distribution and the configuration of the kernel you are about to build.”h]”hŒûThe kernel is pretty stand-alone, but besides tools like the compiler you will sometimes need a few libraries to build one. How to install everything needed depends on your Linux distribution and the configuration of the kernel you are about to build.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¬hjø h²hubhì)�”}”(hŒQHere are a few examples what you typically need on some mainstream distributions:”h]”hŒQHere are a few examples what you typically need on some mainstream distributions:”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M±hjø h²hubjÍ)�”}”(hXØ* Debian, Ubuntu, and derivatives:: sudo apt install bc binutils bison dwarves flex gcc git make openssl \ pahole perl-base libssl-dev libelf-dev * Fedora and derivatives:: sudo dnf install binutils /usr/include/{libelf.h,openssl/pkcs7.h} \ /usr/bin/{bc,bison,flex,gcc,git,openssl,make,perl,pahole} * openSUSE and derivatives:: sudo zypper install bc binutils bison dwarves flex gcc git make perl-base \ openssl openssl-devel libelf-dev ”h]”jÓ)�”}”(hhh]”(jØ)�”}”(hŒ—Debian, Ubuntu, and derivatives:: sudo apt install bc binutils bison dwarves flex gcc git make openssl \ pahole perl-base libssl-dev libelf-dev ”h]”(hì)�”}”(hŒ!Debian, Ubuntu, and derivatives::”h]”hŒ Debian, Ubuntu, and derivatives:”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M´hjvubj4)�”}”(hŒosudo apt install bc binutils bison dwarves flex gcc git make openssl \ pahole perl-base libssl-dev libelf-dev”h]”hŒosudo apt install bc binutils bison dwarves flex gcc git make openssl \ pahole perl-base libssl-dev libelf-dev”…”�”}”hjˆsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M¶hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjsubjØ)�”}”(hŒžFedora and derivatives:: sudo dnf install binutils /usr/include/{libelf.h,openssl/pkcs7.h} \ /usr/bin/{bc,bison,flex,gcc,git,openssl,make,perl,pahole} ”h]”(hì)�”}”(hŒFedora and derivatives::”h]”hŒFedora and derivatives:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¹hjœubj4)�”}”(hŒsudo dnf install binutils /usr/include/{libelf.h,openssl/pkcs7.h} \ /usr/bin/{bc,bison,flex,gcc,git,openssl,make,perl,pahole}”h]”hŒsudo dnf install binutils /usr/include/{libelf.h,openssl/pkcs7.h} \ /usr/bin/{bc,bison,flex,gcc,git,openssl,make,perl,pahole}”…”�”}”hj®sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M»hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjsubjØ)�”}”(hŒ�openSUSE and derivatives:: sudo zypper install bc binutils bison dwarves flex gcc git make perl-base \ openssl openssl-devel libelf-dev ”h]”(hì)�”}”(hŒopenSUSE and derivatives::”h]”hŒopenSUSE and derivatives:”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¾hjÂubj4)�”}”(hŒnsudo zypper install bc binutils bison dwarves flex gcc git make perl-base \ openssl openssl-devel libelf-dev”h]”hŒnsudo zypper install bc binutils bison dwarves flex gcc git make perl-base \ openssl openssl-devel libelf-dev”…”�”}”hjÔsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MÀhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjsubeh}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´M´hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M´hjø h²hubhì)�”}”(hŒÌIn case you wonder why these lists include openssl and its development headers: they are needed for the Secure Boot support, which many distributions enable in their kernel configuration for x86 machines.”h]”hŒÌIn case you wonder why these lists include openssl and its development headers: they are needed for the Secure Boot support, which many distributions enable in their kernel configuration for x86 machines.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÃhjø h²hubhì)�”}”(hŒlSometimes you will need tools for compression formats like bzip2, gzip, lz4, lzma, lzo, xz, or zstd as well.”h]”hŒlSometimes you will need tools for compression formats like bzip2, gzip, lz4, lzma, lzo, xz, or zstd as well.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÇhjø h²hubhì)�”}”(hXUYou might need additional libraries and their development headers in case you perform tasks not covered in this guide. For example, zlib will be needed when building kernel tools from the tools/ directory; adjusting the build configuration with make targets like 'menuconfig' or 'xconfig' will require development headers for ncurses or Qt5.”h]”hX]You might need additional libraries and their development headers in case you perform tasks not covered in this guide. For example, zlib will be needed when building kernel tools from the tools/ directory; adjusting the build configuration with make targets like ‘menuconfig’ or ‘xconfig’ will require development headers for ncurses or Qt5.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÊhjø h²hubhì)�”}”(hŒ7[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ5:ref:`back to step-by-step guide `”h]”jø)�”}”(hj(h]”hŒback to step-by-step guide”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj&ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j4Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒbuildrequires_sbs”uh1hh³hÇh´MÐhjubhŒ]”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÐhjø h²hubj¿)�”}”(hŒ.. _diskspace:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ diskspace”uh1j¾h´MÒhjø h²hh³hÇubeh}”(h]”(Œinstall-build-requirements”jì eh ]”h"]”(Œinstall build requirements”Œ buildrequires”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M§j7}”jajâ sj9}”jì jâ subh×)�”}”(hhh]”(hÜ)�”}”(hŒSpace requirements”h]”hŒSpace requirements”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjfh²hh³hÇh´MÕubjÍ)�”}”(hŒc*Ensure to have enough free space for building and installing Linux.* [:ref:`... `] ”h]”hì)�”}”(hŒb*Ensure to have enough free space for building and installing Linux.* [:ref:`... `]”h]”(j)�”}”(hŒE*Ensure to have enough free space for building and installing Linux.*”h]”hŒCEnsure to have enough free space for building and installing Linux.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ubhŒ [”…”�”}”(hj{h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hj“h]”hŒ...”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jŸŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ diskspace_sbs”uh1hh³hÇh´M×hj{ubhŒ]”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M×hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M×hjfh²hubhì)�”}”(hŒvThe numbers mentioned are rough estimates with a big extra charge to be on the safe side, so often you will need less.”h]”hŒvThe numbers mentioned are rough estimates with a big extra charge to be on the safe side, so often you will need less.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÚhjfh²hubhì)�”}”(hŒûIf you have space constraints, remember to read the reference section when you reach the :ref:`section about configuration adjustments' `, as ensuring debug symbols are disabled will reduce the consumed disk space by quite a few gigabytes.”h]”(hŒYIf you have space constraints, remember to read the reference section when you reach the ”…”�”}”(hjÏh²hh³Nh´Nubh)�”}”(hŒ<:ref:`section about configuration adjustments' `”h]”jø)�”}”(hjÙh]”hŒ*section about configuration adjustments’”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj×ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jåŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ configmods”uh1hh³hÇh´MÝhjÏubhŒf, as ensuring debug symbols are disabled will reduce the consumed disk space by quite a few gigabytes.”…”�”}”(hjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÝhjfh²hubhì)�”}”(hŒ3[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ1:ref:`back to step-by-step guide `”h]”jø)�”}”(hj h]”hŒback to step-by-step guide”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ diskspace_sbs”uh1hh³hÇh´MâhjubhŒ]”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mâhjfh²hubj¿)�”}”(hŒ .. _sources:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsources”uh1j¾h´Måhjfh²hh³hÇubeh}”(h]”(Œspace-requirements”jZeh ]”h"]”(Œspace requirements”Œ diskspace”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´MÕj7}”jDjPsj9}”jZjPsubh×)�”}”(hhh]”(hÜ)�”}”(hŒDownload the sources”h]”hŒDownload the sources”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjIh²hh³hÇh´MèubjÍ)�”}”(hŒ[*Retrieve the sources of the Linux version you intend to build.* [:ref:`...`] ”h]”hì)�”}”(hŒZ*Retrieve the sources of the Linux version you intend to build.* [:ref:`...`]”h]”(j)�”}”(hŒ@*Retrieve the sources of the Linux version you intend to build.*”h]”hŒ>Retrieve the sources of the Linux version you intend to build.”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^ubhŒ [”…”�”}”(hj^h²hh³Nh´Nubh)�”}”(hŒ:ref:`...`”h]”jø)�”}”(hjvh]”hŒ...”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j‚Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´Mêhj^ubhŒ]”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MêhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´MêhjIh²hubhì)�”}”(hXõThe step-by-step guide outlines how to retrieve Linux' sources using a shallow git clone. There is :ref:`more to tell about this method` and two alternate ways worth describing: :ref:`packaged archives` and :ref:`a full git clone`. And the aspects ':ref:`wouldn't it be wiser to use a proper pre-release than the latest mainline code `' and ':ref:`how to get an even fresher mainline codebase `' need elaboration, too.”h]”(hŒeThe step-by-step guide outlines how to retrieve Linux’ sources using a shallow git clone. There is ”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒ6:ref:`more to tell about this method`”h]”jø)�”}”(hj®h]”hŒmore to tell about this method”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jºŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources_shallow”uh1hh³hÇh´Míhj¤ubhŒ* and two alternate ways worth describing: ”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒ):ref:`packaged archives`”h]”jø)�”}”(hjÒh]”hŒpackaged archives”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÐubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jÞŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources_archive”uh1hh³hÇh´Míhj¤ubhŒ and ”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒ%:ref:`a full git clone`”h]”jø)�”}”(hjöh]”hŒa full git clone”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjôubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_full”uh1hh³hÇh´Míhj¤ubhŒ. And the aspects ‘”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒh:ref:`wouldn't it be wiser to use a proper pre-release than the latest mainline code `”h]”jø)�”}”(hjh]”hŒPwouldn’t it be wiser to use a proper pre-release than the latest mainline code”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j&Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources_snapshot”uh1hh³hÇh´Míhj¤ubhŒ ’ and ‘”…”�”}”(hj¤h²hh³Nh´Nubh)�”}”(hŒE:ref:`how to get an even fresher mainline codebase `”h]”jø)�”}”(hj>h]”hŒ,how to get an even fresher mainline codebase”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jJŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources_fresher”uh1hh³hÇh´Míhj¤ubhŒ’ need elaboration, too.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MíhjIh²hubhì)�”}”(hX1Note, to keep things simple the commands used in this guide store the build artifacts in the source tree. If you prefer to separate them, simply add something like ``O=~/linux-builddir/`` to all make calls; also adjust the path in all commands that add files or modify any generated (like your '.config').”h]”(hŒ¤Note, to keep things simple the commands used in this guide store the build artifacts in the source tree. If you prefer to separate them, simply add something like ”…”�”}”(hjfh²hh³Nh´NubjZ)�”}”(hŒ``O=~/linux-builddir/``”h]”hŒO=~/linux-builddir/”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjfubhŒz to all make calls; also adjust the path in all commands that add files or modify any generated (like your ‘.config’).”…”�”}”(hjfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MõhjIh²hubhì)�”}”(hŒ1[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hj†h²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hj�h]”hŒback to step-by-step guide”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjŽubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jœŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´Múhj†ubhŒ]”…”�”}”(hj†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MúhjIh²hubj¿)�”}”(hŒ.. _sources_shallow:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsources-shallow”uh1j¾h´MühjIh²hh³hÇubh×)�”}”(hhh]”(hÜ)�”}”(hŒ,Noteworthy characteristics of shallow clones”h]”hŒ,Noteworthy characteristics of shallow clones”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÃh²hh³hÇh´Mÿubhì)�”}”(hŒ¯The step-by-step guide uses a shallow clone, as it is the best solution for most of this document's target audience. There are a few aspects of this approach worth mentioning:”h]”hŒ±The step-by-step guide uses a shallow clone, as it is the best solution for most of this document’s target audience. There are a few aspects of this approach worth mentioning:”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÃh²hubjÍ)�”}”(hX* This document in most places uses ``git fetch`` with ``--shallow-exclude=`` to specify the earliest version you care about (or to be precise: its git tag). You alternatively can use the parameter ``--shallow-since=`` to specify an absolute (say ``'2023-07-15'``) or relative (``'12 months'``) date to define the depth of the history you want to download. As a second alternative, you can also specify a certain depth explicitly with a parameter like ``--depth=1``, unless you add branches for stable/longterm kernels. * When running ``git fetch``, remember to always specify the oldest version, the time you care about, or an explicit depth as shown in the step-by-step guide. Otherwise you will risk downloading nearly the entire git history, which will consume quite a bit of time and bandwidth while also stressing the servers. Note, you do not have to use the same version or date all the time. But when you change it over time, git will deepen or flatten the history to the specified point. That allows you to retrieve versions you initially thought you did not need -- or it will discard the sources of older versions, for example in case you want to free up some disk space. The latter will happen automatically when using ``--shallow-since=`` or ``--depth=``. * Be warned, when deepening your clone you might encounter an error like 'fatal: error in object: unshallow cafecaca0c0dacafecaca0c0dacafecaca0c0da'. In that case run ``git repack -d`` and try again`` * In case you want to revert changes from a certain version (say Linux 6.3) or perform a bisection (v6.2..v6.3), better tell ``git fetch`` to retrieve objects up to three versions earlier (e.g. 6.0): ``git describe`` will then be able to describe most commits just like it would in a full git clone. ”h]”jÓ)�”}”(hhh]”(jØ)�”}”(hXThis document in most places uses ``git fetch`` with ``--shallow-exclude=`` to specify the earliest version you care about (or to be precise: its git tag). You alternatively can use the parameter ``--shallow-since=`` to specify an absolute (say ``'2023-07-15'``) or relative (``'12 months'``) date to define the depth of the history you want to download. As a second alternative, you can also specify a certain depth explicitly with a parameter like ``--depth=1``, unless you add branches for stable/longterm kernels. ”h]”hì)�”}”(hXThis document in most places uses ``git fetch`` with ``--shallow-exclude=`` to specify the earliest version you care about (or to be precise: its git tag). You alternatively can use the parameter ``--shallow-since=`` to specify an absolute (say ``'2023-07-15'``) or relative (``'12 months'``) date to define the depth of the history you want to download. As a second alternative, you can also specify a certain depth explicitly with a parameter like ``--depth=1``, unless you add branches for stable/longterm kernels.”h]”(hŒ"This document in most places uses ”…”�”}”(hjíh²hh³Nh´NubjZ)�”}”(hŒ ``git fetch``”h]”hŒ git fetch”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjíubhŒ with ”…”�”}”(hjíh²hh³Nh´NubjZ)�”}”(hŒ``--shallow-exclude=``”h]”hŒ--shallow-exclude=”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjíubhŒy to specify the earliest version you care about (or to be precise: its git tag). You alternatively can use the parameter ”…”�”}”(hjíh²hh³Nh´NubjZ)�”}”(hŒ``--shallow-since=``”h]”hŒ--shallow-since=”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjíubhŒ to specify an absolute (say ”…”�”}”(hjíh²hh³Nh´NubjZ)�”}”(hŒ``'2023-07-15'``”h]”hŒ '2023-07-15'”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjíubhŒ) or relative (”…”�”}”(hjíh²hh³Nh´NubjZ)�”}”(hŒ``'12 months'``”h]”hŒ '12 months'”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjíubhŒŸ) date to define the depth of the history you want to download. As a second alternative, you can also specify a certain depth explicitly with a parameter like ”…”�”}”(hjíh²hh³Nh´NubjZ)�”}”(hŒ ``--depth=1``”h]”hŒ --depth=1”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjíubhŒ6, unless you add branches for stable/longterm kernels.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjæubjØ)�”}”(hXíWhen running ``git fetch``, remember to always specify the oldest version, the time you care about, or an explicit depth as shown in the step-by-step guide. Otherwise you will risk downloading nearly the entire git history, which will consume quite a bit of time and bandwidth while also stressing the servers. Note, you do not have to use the same version or date all the time. But when you change it over time, git will deepen or flatten the history to the specified point. That allows you to retrieve versions you initially thought you did not need -- or it will discard the sources of older versions, for example in case you want to free up some disk space. The latter will happen automatically when using ``--shallow-since=`` or ``--depth=``. ”h]”(hì)�”}”(hX6When running ``git fetch``, remember to always specify the oldest version, the time you care about, or an explicit depth as shown in the step-by-step guide. Otherwise you will risk downloading nearly the entire git history, which will consume quite a bit of time and bandwidth while also stressing the servers.”h]”(hŒ When running ”…”�”}”(hjqh²hh³Nh´NubjZ)�”}”(hŒ ``git fetch``”h]”hŒ git fetch”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjqubhX, remember to always specify the oldest version, the time you care about, or an explicit depth as shown in the step-by-step guide. Otherwise you will risk downloading nearly the entire git history, which will consume quite a bit of time and bandwidth while also stressing the servers.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjmubhì)�”}”(hX´Note, you do not have to use the same version or date all the time. But when you change it over time, git will deepen or flatten the history to the specified point. That allows you to retrieve versions you initially thought you did not need -- or it will discard the sources of older versions, for example in case you want to free up some disk space. The latter will happen automatically when using ``--shallow-since=`` or ``--depth=``.”h]”(hX�Note, you do not have to use the same version or date all the time. But when you change it over time, git will deepen or flatten the history to the specified point. That allows you to retrieve versions you initially thought you did not need -- or it will discard the sources of older versions, for example in case you want to free up some disk space. The latter will happen automatically when using ”…”�”}”(hj‘h²hh³Nh´NubjZ)�”}”(hŒ``--shallow-since=``”h]”hŒ--shallow-since=”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj‘ubhŒ or ”…”�”}”(hj‘h²hh³Nh´NubjZ)�”}”(hŒ ``--depth=``”h]”hŒ--depth=”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj‘ubhŒ.”…”�”}”(hj‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjæubjØ)�”}”(hŒÇBe warned, when deepening your clone you might encounter an error like 'fatal: error in object: unshallow cafecaca0c0dacafecaca0c0dacafecaca0c0da'. In that case run ``git repack -d`` and try again`` ”h]”hì)�”}”(hŒÆBe warned, when deepening your clone you might encounter an error like 'fatal: error in object: unshallow cafecaca0c0dacafecaca0c0dacafecaca0c0da'. In that case run ``git repack -d`` and try again``”h]”(hŒ©Be warned, when deepening your clone you might encounter an error like ‘fatal: error in object: unshallow cafecaca0c0dacafecaca0c0dacafecaca0c0da’. In that case run ”…”�”}”(hjÍh²hh³Nh´NubjZ)�”}”(hŒ``git repack -d``”h]”hŒ git repack -d”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÍubhŒ and try again``”…”�”}”(hjÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjæubjØ)�”}”(hX*In case you want to revert changes from a certain version (say Linux 6.3) or perform a bisection (v6.2..v6.3), better tell ``git fetch`` to retrieve objects up to three versions earlier (e.g. 6.0): ``git describe`` will then be able to describe most commits just like it would in a full git clone. ”h]”hì)�”}”(hX)In case you want to revert changes from a certain version (say Linux 6.3) or perform a bisection (v6.2..v6.3), better tell ``git fetch`` to retrieve objects up to three versions earlier (e.g. 6.0): ``git describe`` will then be able to describe most commits just like it would in a full git clone.”h]”(hŒ{In case you want to revert changes from a certain version (say Linux 6.3) or perform a bisection (v6.2..v6.3), better tell ”…”�”}”(hj÷h²hh³Nh´NubjZ)�”}”(hŒ ``git fetch``”h]”hŒ git fetch”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj÷ubhŒ> to retrieve objects up to three versions earlier (e.g. 6.0): ”…”�”}”(hj÷h²hh³Nh´NubjZ)�”}”(hŒ``git describe``”h]”hŒ git describe”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj÷ubhŒS will then be able to describe most commits just like it would in a full git clone.”…”�”}”(hj÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjæubeh}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´Mhjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´MhjÃh²hubhì)�”}”(hŒZ[:ref:`back to step-by-step guide `] [:ref:`back to section intro `]”h]”(hŒ[”…”�”}”(hj;h²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjEh]”hŒback to step-by-step guide”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jQŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´M$hj;ubhŒ] [”…”�”}”(hj;h²hh³Nh´Nubh)�”}”(hŒ&:ref:`back to section intro `”h]”jø)�”}”(hjih]”hŒback to section intro”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjgubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”juŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´M$hj;ubhŒ]”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M$hjÃh²hubj¿)�”}”(hŒ.. _sources_archive:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsources-archive”uh1j¾h´M&hjÃh²hh³hÇubeh}”(h]”(Œ,noteworthy-characteristics-of-shallow-clones”jÂeh ]”h"]”(Œ,noteworthy characteristics of shallow clones”Œsources_shallow”eh$]”h&]”uh1hÖhjIh²hh³hÇh´Mÿj7}”j¢j¸sj9}”jÂj¸subh×)�”}”(hhh]”(hÜ)�”}”(hŒ0Downloading the sources using a packages archive”h]”hŒ0Downloading the sources using a packages archive”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj§h²hh³hÇh´M)ubhì)�”}”(hX}People new to compiling Linux often assume downloading an archive via the front-page of https://kernel.org is the best approach to retrieve Linux' sources. It actually can be, if you are certain to build just one particular kernel version without changing any code. Thing is: you might be sure this will be the case, but in practice it often will turn out to be a wrong assumption.”h]”(hŒXPeople new to compiling Linux often assume downloading an archive via the front-page of ”…”�”}”(hj¸h²hh³Nh´Nubjù )�”}”(hŒhttps://kernel.org”h]”hŒhttps://kernel.org”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jÂuh1jø hj¸ubhX is the best approach to retrieve Linux’ sources. It actually can be, if you are certain to build just one particular kernel version without changing any code. Thing is: you might be sure this will be the case, but in practice it often will turn out to be a wrong assumption.”…”�”}”(hj¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M+hj§h²hubhì)�”}”(hX�That's because when reporting or debugging an issue developers will often ask to give another version a try. They also might suggest temporarily undoing a commit with ``git revert`` or might provide various patches to try. Sometimes reporters will also be asked to use ``git bisect`` to find the change causing a problem. These things rely on git or are a lot easier and quicker to handle with it.”h]”(hŒ©That’s because when reporting or debugging an issue developers will often ask to give another version a try. They also might suggest temporarily undoing a commit with ”…”�”}”(hjÙh²hh³Nh´NubjZ)�”}”(hŒ``git revert``”h]”hŒ git revert”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÙubhŒX or might provide various patches to try. Sometimes reporters will also be asked to use ”…”�”}”(hjÙh²hh³Nh´NubjZ)�”}”(hŒ``git bisect``”h]”hŒ git bisect”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÙubhŒr to find the change causing a problem. These things rely on git or are a lot easier and quicker to handle with it.”…”�”}”(hjÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M1hj§h²hubhì)�”}”(hX5A shallow clone also does not add any significant overhead. For example, when you use ``git clone --depth=1`` to create a shallow clone of the latest mainline codebase git will only retrieve a little more data than downloading the latest mainline pre-release (aka 'rc') via the front-page of kernel.org would.”h]”(hŒVA shallow clone also does not add any significant overhead. For example, when you use ”…”�”}”(hj h²hh³Nh´NubjZ)�”}”(hŒ``git clone --depth=1``”h]”hŒgit clone --depth=1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj ubhŒÌ to create a shallow clone of the latest mainline codebase git will only retrieve a little more data than downloading the latest mainline pre-release (aka ‘rc’) via the front-page of kernel.org would.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M7hj§h²hubhì)�”}”(hX£A shallow clone therefore is often the better choice. If you nevertheless want to use a packaged source archive, download one via kernel.org; afterwards extract its content to some directory and change to the subdirectory created during extraction. The rest of the step-by-step guide will work just fine, apart from things that rely on git -- but this mainly concerns the section on successive builds of other versions.”h]”hX£A shallow clone therefore is often the better choice. If you nevertheless want to use a packaged source archive, download one via kernel.org; afterwards extract its content to some directory and change to the subdirectory created during extraction. The rest of the step-by-step guide will work just fine, apart from things that rely on git -- but this mainly concerns the section on successive builds of other versions.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M<hj§h²hubhì)�”}”(hŒZ[:ref:`back to step-by-step guide `] [:ref:`back to section intro `]”h]”(hŒ[”…”�”}”(hj9h²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjCh]”hŒback to step-by-step guide”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jOŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´MChj9ubhŒ] [”…”�”}”(hj9h²hh³Nh´Nubh)�”}”(hŒ&:ref:`back to section intro `”h]”jø)�”}”(hjgh]”hŒback to section intro”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjeubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jsŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´MChj9ubhŒ]”…”�”}”(hj9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MChj§h²hubj¿)�”}”(hŒ.. _sources_full:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ sources-full”uh1j¾h´MEhj§h²hh³hÇubeh}”(h]”(Œ0downloading-the-sources-using-a-packages-archive”j›eh ]”h"]”(Œ0downloading the sources using a packages archive”Œsources_archive”eh$]”h&]”uh1hÖhjIh²hh³hÇh´M)j7}”j j‘sj9}”j›j‘subh×)�”}”(hhh]”(hÜ)�”}”(hŒ.Downloading the sources using a full git clone”h]”hŒ.Downloading the sources using a full git clone”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¥h²hh³hÇh´MHubhì)�”}”(hXIf downloading and storing a lot of data (~4,4 Gigabyte as of early 2023) is nothing that bothers you, instead of a shallow clone perform a full git clone instead. You then will avoid the specialties mentioned above and will have all versions and individual commits at hand at any time::”h]”hXIf downloading and storing a lot of data (~4,4 Gigabyte as of early 2023) is nothing that bothers you, instead of a shallow clone perform a full git clone instead. You then will avoid the specialties mentioned above and will have all versions and individual commits at hand at any time:”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MJhj¥h²hubj4)�”}”(hX^curl -L \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/clone.bundle \ -o linux-stable.git.bundle git clone linux-stable.git.bundle ~/linux/ rm linux-stable.git.bundle cd ~/linux/ git remote set-url origin \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git git fetch origin git checkout --detach origin/master”h]”hX^curl -L \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/clone.bundle \ -o linux-stable.git.bundle git clone linux-stable.git.bundle ~/linux/ rm linux-stable.git.bundle cd ~/linux/ git remote set-url origin \ https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git git fetch origin git checkout --detach origin/master”…”�”}”hjÄsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MOhj¥h²hubhì)�”}”(hŒZ[:ref:`back to step-by-step guide `] [:ref:`back to section intro `]”h]”(hŒ[”…”�”}”(hjÒh²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjÜh]”hŒback to step-by-step guide”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÚubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jèŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´MZhjÒubhŒ] [”…”�”}”(hjÒh²hh³Nh´Nubh)�”}”(hŒ&:ref:`back to section intro `”h]”jø)�”}”(hjh]”hŒback to section intro”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´MZhjÒubhŒ]”…”�”}”(hjÒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MZhj¥h²hubj¿)�”}”(hŒ.. _sources_snapshot:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsources-snapshot”uh1j¾h´M\hj¥h²hh³hÇubeh}”(h]”(Œ.downloading-the-sources-using-a-full-git-clone”j™eh ]”h"]”(Œ.downloading the sources using a full git clone”Œ sources_full”eh$]”h&]”uh1hÖhjIh²hh³hÇh´MHj7}”j9j�sj9}”j™j�subh×)�”}”(hhh]”(hÜ)�”}”(hŒ-Proper pre-releases (RCs) vs. latest mainline”h]”hŒ-Proper pre-releases (RCs) vs. latest mainline”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj>h²hh³hÇh´M_ubhì)�”}”(hXoWhen cloning the sources using git and checking out origin/master, you often will retrieve a codebase that is somewhere between the latest and the next release or pre-release. This almost always is the code you want when giving mainline a shot: pre-releases like v6.1-rc5 are in no way special, as they do not get any significant extra testing before being published.”h]”hXoWhen cloning the sources using git and checking out origin/master, you often will retrieve a codebase that is somewhere between the latest and the next release or pre-release. This almost always is the code you want when giving mainline a shot: pre-releases like v6.1-rc5 are in no way special, as they do not get any significant extra testing before being published.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mahj>h²hubhì)�”}”(hX~There is one exception: you might want to stick to the latest mainline release (say v6.1) before its successor's first pre-release (v6.2-rc1) is out. That is because compiler errors and other problems are more likely to occur during this time, as mainline then is in its 'merge window': a usually two week long phase, in which the bulk of the changes for the next release is merged.”h]”hX„There is one exception: you might want to stick to the latest mainline release (say v6.1) before its successor’s first pre-release (v6.2-rc1) is out. That is because compiler errors and other problems are more likely to occur during this time, as mainline then is in its ‘merge window’: a usually two week long phase, in which the bulk of the changes for the next release is merged.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mghj>h²hubhì)�”}”(hŒZ[:ref:`back to step-by-step guide `] [:ref:`back to section intro `]”h]”(hŒ[”…”�”}”(hjkh²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjuh]”hŒback to step-by-step guide”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjsubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j�Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´MmhjkubhŒ] [”…”�”}”(hjkh²hh³Nh´Nubh)�”}”(hŒ&:ref:`back to section intro `”h]”jø)�”}”(hj™h]”hŒback to section intro”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j¥Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´MmhjkubhŒ]”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mmhj>h²hubj¿)�”}”(hŒ.. _sources_fresher:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒsources-fresher”uh1j¾h´Mohj>h²hh³hÇubeh}”(h]”(Œ*proper-pre-releases-rcs-vs-latest-mainline”j2eh ]”h"]”(Œ-proper pre-releases (rcs) vs. latest mainline”Œsources_snapshot”eh$]”h&]”uh1hÖhjIh²hh³hÇh´M_j7}”jÒj(sj9}”j2j(subh×)�”}”(hhh]”(hÜ)�”}”(hŒAvoiding the mainline lag”h]”hŒAvoiding the mainline lag”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj×h²hh³hÇh´Mrubhì)�”}”(hX The explanations for both the shallow clone and the full clone both retrieve the code from the Linux stable git repository. That makes things simpler for this document's audience, as it allows easy access to both mainline and stable/longterm releases. This approach has just one downside:”h]”hX"The explanations for both the shallow clone and the full clone both retrieve the code from the Linux stable git repository. That makes things simpler for this document’s audience, as it allows easy access to both mainline and stable/longterm releases. This approach has just one downside:”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mthj×h²hubhì)�”}”(hX<Changes merged into the mainline repository are only synced to the master branch of the Linux stable repository every few hours. This lag most of the time is not something to worry about; but in case you really need the latest code, just add the mainline repo as additional remote and checkout the code from there::”h]”hX;Changes merged into the mainline repository are only synced to the master branch of the Linux stable repository every few hours. This lag most of the time is not something to worry about; but in case you really need the latest code, just add the mainline repo as additional remote and checkout the code from there:”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Myhj×h²hubj4)�”}”(hŒ—git remote add mainline \ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch mainline git checkout --detach mainline/master”h]”hŒ—git remote add mainline \ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch mainline git checkout --detach mainline/master”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M~hj×h²hubhì)�”}”(hŒ…When doing this with a shallow clone, remember to call ``git fetch`` with one of the parameters described earlier to limit the depth.”h]”(hŒ7When doing this with a shallow clone, remember to call ”…”�”}”(hjh²hh³Nh´NubjZ)�”}”(hŒ ``git fetch``”h]”hŒ git fetch”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjubhŒA with one of the parameters described earlier to limit the depth.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mƒhj×h²hubhì)�”}”(hŒZ[:ref:`back to step-by-step guide `] [:ref:`back to section intro `]”h]”(hŒ[”…”�”}”(hj2h²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hj<h]”hŒback to step-by-step guide”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jHŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ sources_sbs”uh1hh³hÇh´M†hj2ubhŒ] [”…”�”}”(hj2h²hh³Nh´Nubh)�”}”(hŒ&:ref:`back to section intro `”h]”jø)�”}”(hj`h]”hŒback to section intro”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jlŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´M†hj2ubhŒ]”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M†hj×h²hubj¿)�”}”(hŒ .. _patching:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒpatching”uh1j¾h´Mˆhj×h²hh³hÇubeh}”(h]”(Œavoiding-the-mainline-lag”jËeh ]”h"]”(Œavoiding the mainline lag”Œsources_fresher”eh$]”h&]”uh1hÖhjIh²hh³hÇh´Mrj7}”j™jÁsj9}”jËjÁsubeh}”(h]”(Œdownload-the-sources”j=eh ]”h"]”(Œdownload the sources”Œsources”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´Mèj7}”j¤j3sj9}”j=j3subh×)�”}”(hhh]”(hÜ)�”}”(hŒPatch the sources (optional)”h]”hŒPatch the sources (optional)”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj©h²hh³hÇh´M‹ubjÍ)�”}”(hŒR*In case you want to apply a kernel patch, do so now.* [:ref:`...`] ”h]”hì)�”}”(hŒQ*In case you want to apply a kernel patch, do so now.* [:ref:`...`]”h]”(j)�”}”(hŒ6*In case you want to apply a kernel patch, do so now.*”h]”hŒ4In case you want to apply a kernel patch, do so now.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ubhŒ [”…”�”}”(hj¾h²hh³Nh´Nubh)�”}”(hŒ:ref:`...`”h]”jø)�”}”(hjÖh]”hŒ...”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jâŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ patching_sbs”uh1hh³hÇh´M�hj¾ubhŒ]”…”�”}”(hj¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M�hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M�hj©h²hubhì)�”}”(hŒÏThis is the point where you might want to patch your kernel -- for example when a developer proposed a fix and asked you to check if it helps. The step-by-step guide already explains everything crucial here.”h]”hŒÏThis is the point where you might want to patch your kernel -- for example when a developer proposed a fix and asked you to check if it helps. The step-by-step guide already explains everything crucial here.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M�hj©h²hubhì)�”}”(hŒ2[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ0:ref:`back to step-by-step guide `”h]”jø)�”}”(hjh]”hŒback to step-by-step guide”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j(Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ patching_sbs”uh1hh³hÇh´M”hjubhŒ]”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M”hj©h²hubj¿)�”}”(hŒ .. _tagging:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒtagging”uh1j¾h´M–hj©h²hh³hÇubeh}”(h]”(Œpatch-the-sources-optional”j’eh ]”h"]”(Œpatch the sources (optional)”Œpatching”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M‹j7}”jUjˆsj9}”j’jˆsubh×)�”}”(hhh]”(hÜ)�”}”(hŒ0Tagging this kernel build (optional, often wise)”h]”hŒ0Tagging this kernel build (optional, often wise)”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjZh²hh³hÇh´M™ubjÍ)�”}”(hŒœ*If you patched your kernel or already have that kernel version installed, better tag your kernel by extending its release name:* [:ref:`...`] ”h]”hì)�”}”(hŒ›*If you patched your kernel or already have that kernel version installed, better tag your kernel by extending its release name:* [:ref:`...`]”h]”(j)�”}”(hŒ�*If you patched your kernel or already have that kernel version installed, better tag your kernel by extending its release name:*”h]”hŒIf you patched your kernel or already have that kernel version installed, better tag your kernel by extending its release name:”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubhŒ [”…”�”}”(hjoh²hh³Nh´Nubh)�”}”(hŒ:ref:`...`”h]”jø)�”}”(hj‡h]”hŒ...”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj…ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j“Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ tagging_sbs”uh1hh³hÇh´M›hjoubhŒ]”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M›hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M›hjZh²hubhì)�”}”(hŒÝTagging your kernel will help avoid confusion later, especially when you patched your kernel. Adding an individual tag will also ensure the kernel's image and its modules are installed in parallel to any existing kernels.”h]”hŒßTagging your kernel will help avoid confusion later, especially when you patched your kernel. Adding an individual tag will also ensure the kernel’s image and its modules are installed in parallel to any existing kernels.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MŸhjZh²hubhì)�”}”(hXFThere are various ways to add such a tag. The step-by-step guide realizes one by creating a 'localversion' file in your build directory from which the kernel build scripts will automatically pick up the tag. You can later change that file to use a different tag in subsequent builds or simply remove that file to dump the tag.”h]”hXJThere are various ways to add such a tag. The step-by-step guide realizes one by creating a ‘localversion’ file in your build directory from which the kernel build scripts will automatically pick up the tag. You can later change that file to use a different tag in subsequent builds or simply remove that file to dump the tag.”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M£hjZh²hubhì)�”}”(hŒ1[:ref:`back to step-by-step guide `]”• h]”(hŒ[”…”�”}”(hjÑh²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjÛh]”hŒback to step-by-step guide”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÙubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jçŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ tagging_sbs”uh1hh³hÇh´M©hjÑubhŒ]”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M©hjZh²hubj¿)�”}”(hŒ.. _configuration:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ configuration”uh1j¾h´M«hjZh²hh³hÇubeh}”(h]”(Œ-tagging-this-kernel-build-optional-often-wise”jNeh ]”h"]”(Œ0tagging this kernel build (optional, often wise)”Œtagging”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M™j7}”jjDsj9}”jNjDsubh×)�”}”(hhh]”(hÜ)�”}”(hŒ.Define the build configuration for your kernel”h]”hŒ.Define the build configuration for your kernel”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´M®ubjÍ)�”}”(hŒv*Create the build configuration for your kernel based on an existing configuration.* [:ref:`... `] ”h]”hì)�”}”(hŒu*Create the build configuration for your kernel based on an existing configuration.* [:ref:`... `]”h]”(j)�”}”(hŒT*Create the build configuration for your kernel based on an existing configuration.*”h]”hŒRCreate the build configuration for your kernel based on an existing configuration.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubhŒ [”…”�”}”(hj.h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hjFh]”hŒ...”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jRŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfiguration_sbs”uh1hh³hÇh´M°hj.ubhŒ]”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M°hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M°hjh²hubhì)�”}”(hŒQThere are various aspects for this steps that require a more careful explanation:”h]”hŒQThere are various aspects for this steps that require a more careful explanation:”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M³hjh²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒ6Pitfalls when using another configuration file as base”h]”hŒ6Pitfalls when using another configuration file as base”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj‚h²hh³hÇh´M·ubhì)�”}”(hŒdMake targets like localmodconfig and olddefconfig share a few common snares you want to be aware of:”h]”hŒdMake targets like localmodconfig and olddefconfig share a few common snares you want to be aware of:”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¹hj‚h²hubjÍ)�”}”(hXk* These targets will reuse a kernel build configuration in your build directory (e.g. '~/linux/.config'), if one exists. In case you want to start from scratch you thus need to delete it. * The make targets try to find the configuration for your running kernel automatically, but might choose poorly. A line like '# using defaults found in /boot/config-6.0.7-250.fc36.x86_64' or 'using config: '/boot/config-6.0.7-250.fc36.x86_64' tells you which file they picked. If that is not the intended one, simply store it as '~/linux/.config' before using these make targets. * Unexpected things might happen if you try to use a config file prepared for one kernel (say v6.0) on an older generation (say v5.15). In that case you might want to use a configuration as base which your distribution utilized when they used that or an slightly older kernel version. ”h]”jÓ)�”}”(hhh]”(jØ)�”}”(hŒºThese targets will reuse a kernel build configuration in your build directory (e.g. '~/linux/.config'), if one exists. In case you want to start from scratch you thus need to delete it. ”h]”hì)�”}”(hŒ¹These targets will reuse a kernel build configuration in your build directory (e.g. '~/linux/.config'), if one exists. In case you want to start from scratch you thus need to delete it.”h]”hŒ½These targets will reuse a kernel build configuration in your build directory (e.g. ‘~/linux/.config’), if one exists. In case you want to start from scratch you thus need to delete it.”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¼hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hj¥ubjØ)�”}”(hXzThe make targets try to find the configuration for your running kernel automatically, but might choose poorly. A line like '# using defaults found in /boot/config-6.0.7-250.fc36.x86_64' or 'using config: '/boot/config-6.0.7-250.fc36.x86_64' tells you which file they picked. If that is not the intended one, simply store it as '~/linux/.config' before using these make targets. ”h]”hì)�”}”(hXyThe make targets try to find the configuration for your running kernel automatically, but might choose poorly. A line like '# using defaults found in /boot/config-6.0.7-250.fc36.x86_64' or 'using config: '/boot/config-6.0.7-250.fc36.x86_64' tells you which file they picked. If that is not the intended one, simply store it as '~/linux/.config' before using these make targets.”h]”hX‡The make targets try to find the configuration for your running kernel automatically, but might choose poorly. A line like ‘# using defaults found in /boot/config-6.0.7-250.fc36.x86_64’ or ‘using config: ‘/boot/config-6.0.7-250.fc36.x86_64’ tells you which file they picked. If that is not the intended one, simply store it as ‘~/linux/.config’ before using these make targets.”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÀhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hj¥ubjØ)�”}”(hXUnexpected things might happen if you try to use a config file prepared for one kernel (say v6.0) on an older generation (say v5.15). In that case you might want to use a configuration as base which your distribution utilized when they used that or an slightly older kernel version. ”h]”hì)�”}”(hXUnexpected things might happen if you try to use a config file prepared for one kernel (say v6.0) on an older generation (say v5.15). In that case you might want to use a configuration as base which your distribution utilized when they used that or an slightly older kernel version.”h]”hXUnexpected things might happen if you try to use a config file prepared for one kernel (say v6.0) on an older generation (say v5.15). In that case you might want to use a configuration as base which your distribution utilized when they used that or an slightly older kernel version.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÇhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´M¼hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M¼hj‚h²hubeh}”(h]”Œ6pitfalls-when-using-another-configuration-file-as-base”ah ]”h"]”Œ6pitfalls when using another configuration file as base”ah$]”h&]”uh1hÖhjh²hh³hÇh´M·ubh×)�”}”(hhh]”(hÜ)�”}”(hŒInfluencing the configuration”h]”hŒInfluencing the configuration”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´MÍubhì)�”}”(hŒÿThe make target olddefconfig and the ``yes "" |`` used when utilizing localmodconfig will set any undefined build options to their default value. This among others will disable many kernel features that were introduced after your base kernel was released.”h]”(hŒ%The make target olddefconfig and the ”…”�”}”(hjh²hh³Nh´NubjZ)�”}”(hŒ ``yes "" |``”h]”hŒyes "" |”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjubhŒÎ used when utilizing localmodconfig will set any undefined build options to their default value. This among others will disable many kernel features that were introduced after your base kernel was released.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÏhjh²hubhì)�”}”(hXDIf you want to set these configurations options manually, use ``oldconfig`` instead of ``olddefconfig`` or omit the ``yes "" |`` when utilizing localmodconfig. Then for each undefined configuration option you will be asked how to proceed. In case you are unsure what to answer, simply hit 'enter' to apply the default value.”h]”(hŒ>If you want to set these configurations options manually, use ”…”�”}”(hj5h²hh³Nh´NubjZ)�”}”(hŒ ``oldconfig``”h]”hŒ oldconfig”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj5ubhŒ instead of ”…”�”}”(hj5h²hh³Nh´NubjZ)�”}”(hŒ``olddefconfig``”h]”hŒ olddefconfig”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj5ubhŒ or omit the ”…”�”}”(hj5h²hh³Nh´NubjZ)�”}”(hŒ ``yes "" |``”h]”hŒyes "" |”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj5ubhŒÈ when utilizing localmodconfig. Then for each undefined configuration option you will be asked how to proceed. In case you are unsure what to answer, simply hit ‘enter’ to apply the default value.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÔhjh²hubeh}”(h]”Œinfluencing-the-configuration”ah ]”h"]”Œinfluencing the configuration”ah$]”h&]”uh1hÖhjh²hh³hÇh´MÍubh×)�”}”(hhh]”(hÜ)�”}”(hŒ%Big pitfall when using localmodconfig”h]”hŒ%Big pitfall when using localmodconfig”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj�h²hh³hÇh´MÛubhì)�”}”(hXäAs explained briefly in the step-by-step guide already: with localmodconfig it can easily happen that your self-built kernel will lack modules for tasks you did not perform before utilizing this make target. That's because those tasks require kernel modules that are normally autoloaded when you perform that task for the first time; if you didn't perform that task at least once before using localmodconfig, the latter will thus assume these modules are superfluous and disable them.”h]”hXèAs explained briefly in the step-by-step guide already: with localmodconfig it can easily happen that your self-built kernel will lack modules for tasks you did not perform before utilizing this make target. That’s because those tasks require kernel modules that are normally autoloaded when you perform that task for the first time; if you didn’t perform that task at least once before using localmodconfig, the latter will thus assume these modules are superfluous and disable them.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÝhj�h²hubhì)�”}”(hXYou can try to avoid this by performing typical tasks that often will autoload additional kernel modules: start a VM, establish VPN connections, loop-mount a CD/DVD ISO, mount network shares (CIFS, NFS, ...), and connect all external devices (2FA keys, headsets, webcams, ...) as well as storage devices with file systems you otherwise do not utilize (btrfs, ext4, FAT, NTFS, XFS, ...). But it is hard to think of everything that might be needed -- even kernel developers often forget one thing or another at this point.”h]”hXYou can try to avoid this by performing typical tasks that often will autoload additional kernel modules: start a VM, establish VPN connections, loop-mount a CD/DVD ISO, mount network shares (CIFS, NFS, ...), and connect all external devices (2FA keys, headsets, webcams, ...) as well as storage devices with file systems you otherwise do not utilize (btrfs, ext4, FAT, NTFS, XFS, ...). But it is hard to think of everything that might be needed -- even kernel developers often forget one thing or another at this point.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Måhj�h²hubhì)�”}”(hXDo not let that risk bother you, especially when compiling a kernel only for testing purposes: everything typically crucial will be there. And if you forget something important you can turn on a missing feature later and quickly run the commands to compile and install a better kernel.”h]”hXDo not let that risk bother you, especially when compiling a kernel only for testing purposes: everything typically crucial will be there. And if you forget something important you can turn on a missing feature later and quickly run the commands to compile and install a better kernel.”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Míhj�h²hubhì)�”}”(hXuBut if you plan to build and use self-built kernels regularly, you might want to reduce the risk by recording which modules your system loads over the course of a few weeks. You can automate this with `modprobed-db `_. Afterwards use ``LSMOD=`` to point localmodconfig to the list of modules modprobed-db noticed being used::”h]”(hŒÉBut if you plan to build and use self-built kernels regularly, you might want to reduce the risk by recording which modules your system loads over the course of a few weeks. You can automate this with ”…”�”}”(hj¼h²hh³Nh´Nubjù )�”}”(hŒ:`modprobed-db `_”h]”hŒ modprobed-db”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ modprobed-db”Œrefuri”Œ(https://github.com/graysky2/modprobed-db”uh1jø hj¼ubj¿)�”}”(hŒ+ ”h]”h}”(h]”Œ modprobed-db”ah ]”h"]”Œ modprobed-db”ah$]”h&]”Œrefuri”jÕuh1j¾Œ referenced”Khj¼ubhŒ. Afterwards use ”…”�”}”(hj¼h²hh³Nh´NubjZ)�”}”(hŒ``LSMOD=``”h]”hŒ LSMOD=”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj¼ubhŒP to point localmodconfig to the list of modules modprobed-db noticed being used:”…”�”}”(hj¼h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mòhj�h²hubj4)�”}”(hŒAyes "" | make LSMOD="${HOME}"/.config/modprobed.db localmodconfig”h]”hŒAyes "" | make LSMOD="${HOME}"/.config/modprobed.db localmodconfig”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´Møhj�h²hubeh}”(h]”Œ%big-pitfall-when-using-localmodconfig”ah ]”h"]”Œ%big pitfall when using localmodconfig”ah$]”h&]”uh1hÖhjh²hh³hÇh´MÛubh×)�”}”(hhh]”(hÜ)�”}”(hŒ#Remote building with localmodconfig”h]”hŒ#Remote building with localmodconfig”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´Mûubhì)�”}”(hX¦If you want to use localmodconfig to build a kernel for another machine, run ``lsmod > lsmod_foo-machine`` on it and transfer that file to your build host. Now point the build scripts to the file like this: ``yes "" | make LSMOD=~/lsmod_foo-machine localmodconfig``. Note, in this case you likely want to copy a base kernel configuration from the other machine over as well and place it as .config in your build directory.”h]”(hŒMIf you want to use localmodconfig to build a kernel for another machine, run ”…”�”}”(hj'h²hh³Nh´NubjZ)�”}”(hŒ``lsmod > lsmod_foo-machine``”h]”hŒlsmod > lsmod_foo-machine”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj'ubhŒe on it and transfer that file to your build host. Now point the build scripts to the file like this: ”…”�”}”(hj'h²hh³Nh´NubjZ)�”}”(hŒ:``yes "" | make LSMOD=~/lsmod_foo-machine localmodconfig``”h]”hŒ6yes "" | make LSMOD=~/lsmod_foo-machine localmodconfig”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj'ubhŒ�. Note, in this case you likely want to copy a base kernel configuration from the other machine over as well and place it as .config in your build directory.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mýhjh²hubhì)�”}”(hŒ7[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjYh²hh³Nh´Nubh)�”}”(hŒ5:ref:`back to step-by-step guide `”h]”jø)�”}”(hjch]”hŒback to step-by-step guide”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”joŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfiguration_sbs”uh1hh³hÇh´MhjYubhŒ]”…”�”}”(hjYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjh²hubj¿)�”}”(hŒ.. _configmods:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ configmods”uh1j¾h´Mhjh²hh³hÇubeh}”(h]”Œ#remote-building-with-localmodconfig”ah ]”h"]”Œ#remote building with localmodconfig”ah$]”h&]”uh1hÖhjh²hh³hÇh´Mûubeh}”(h]”(Œ.define-the-build-configuration-for-your-kernel”j eh ]”h"]”(Œ.define the build configuration for your kernel”Œ configuration”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M®j7}”j¤jsj9}”j jsubh×)�”}”(hhh]”(hÜ)�”}”(hŒAdjust build configuration”h]”hŒAdjust build configuration”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj©h²hh³hÇh´M ubjÍ)�”}”(hŒR*Check if you might want to or have to adjust some kernel configuration options:* ”h]”hì)�”}”(hŒQ*Check if you might want to or have to adjust some kernel configuration options:*”h]”j)�”}”(hjÀh]”hŒOCheck if you might want to or have to adjust some kernel configuration options:”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M hj©h²hubhì)�”}”(hŒiDepending on your needs you at this point might want or have to adjust some kernel configuration options.”h]”hŒiDepending on your needs you at this point might want or have to adjust some kernel configuration options.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhj©h²hubj¿)�”}”(hŒ.. _configmods_debugsymbols:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒconfigmods-debugsymbols”uh1j¾h´Mhj©h²hh³hÇubh×)�”}”(hhh]”(hÜ)�”}”(hŒ Debug symbols”h]”hŒ Debug symbols”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjôh²hh³hÇh´MubjÍ)�”}”(hŒN*Evaluate how you want to handle debug symbols.* [:ref:`...`] ”h]”hì)�”}”(hŒM*Evaluate how you want to handle debug symbols.* [:ref:`...`]”h]”(j)�”}”(hŒ0*Evaluate how you want to handle debug symbols.*”h]”hŒ.Evaluate how you want to handle debug symbols.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ [”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ:ref:`...`”h]”jø)�”}”(hj!h]”hŒ...”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j-Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_sbs”uh1hh³hÇh´Mhj ubhŒ]”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´Mhjôh²hubhì)�”}”(hŒÒMost users do not need to care about this, it's often fine to leave everything as it is; but you should take a closer look at this, if you might need to decode a stack trace or want to reduce space consumption.”h]”hŒÔMost users do not need to care about this, it’s often fine to leave everything as it is; but you should take a closer look at this, if you might need to decode a stack trace or want to reduce space consumption.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjôh²hubhì)�”}”(hXXHaving debug symbols available can be important when your kernel throws a 'panic', 'Oops', 'warning', or 'BUG' later when running, as then you will be able to find the exact place where the problem occurred in the code. But collecting and embedding the needed debug information takes time and consumes quite a bit of space: in late 2022 the build artifacts for a typical x86 kernel configured with localmodconfig consumed around 5 Gigabyte of space with debug symbols, but less than 1 when they were disabled. The resulting kernel image and the modules are bigger as well, which increases load times.”h]”hXhHaving debug symbols available can be important when your kernel throws a ‘panic’, ‘Oops’, ‘warning’, or ‘BUG’ later when running, as then you will be able to find the exact place where the problem occurred in the code. But collecting and embedding the needed debug information takes time and consumes quite a bit of space: in late 2022 the build artifacts for a typical x86 kernel configured with localmodconfig consumed around 5 Gigabyte of space with debug symbols, but less than 1 when they were disabled. The resulting kernel image and the modules are bigger as well, which increases load times.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mhjôh²hubhì)�”}”(hŒ”Hence, if you want a small kernel and are unlikely to decode a stack trace later, you might want to disable debug symbols to avoid above downsides::”h]”hŒ“Hence, if you want a small kernel and are unlikely to decode a stack trace later, you might want to disable debug symbols to avoid above downsides:”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M&hjôh²hubj4)�”}”(hŒ±./scripts/config --file .config -d DEBUG_INFO \ -d DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT -d DEBUG_INFO_DWARF4 \ -d DEBUG_INFO_DWARF5 -e CONFIG_DEBUG_INFO_NONE make olddefconfig”h]”hŒ±./scripts/config --file .config -d DEBUG_INFO \ -d DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT -d DEBUG_INFO_DWARF4 \ -d DEBUG_INFO_DWARF5 -e CONFIG_DEBUG_INFO_NONE make olddefconfig”…”�”}”hjysbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M)hjôh²hubhì)�”}”(hŒëYou on the other hand definitely want to enable them, if there is a decent chance that you need to decode a stack trace later (as explained by 'Decode failure messages' in Documentation/admin-guide/tainted-kernels.rst in more detail)::”h]”hŒîYou on the other hand definitely want to enable them, if there is a decent chance that you need to decode a stack trace later (as explained by ‘Decode failure messages’ in Documentation/admin-guide/tainted-kernels.rst in more detail):”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M.hjôh²hubj4)�”}”(hŒ¦./scripts/config --file .config -d DEBUG_INFO_NONE -e DEBUG_KERNEL -e DEBUG_INFO -e DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT -e KALLSYMS -e KALLSYMS_ALL make olddefconfig”h]”hŒ¦./scripts/config --file .config -d DEBUG_INFO_NONE -e DEBUG_KERNEL -e DEBUG_INFO -e DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT -e KALLSYMS -e KALLSYMS_ALL make olddefconfig”…”�”}”hj•sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M3hjôh²hubhì)�”}”(hŒ²Note, many mainstream distributions enable debug symbols in their kernel configurations -- make targets like localmodconfig and olddefconfig thus will often pick that setting up.”h]”hŒ²Note, many mainstream distributions enable debug symbols in their kernel configurations -- make targets like localmodconfig and olddefconfig thus will often pick that setting up.”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M7hjôh²hubhì)�”}”(hŒ4[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hj±h²hh³Nh´Nubh)�”}”(hŒ2:ref:`back to step-by-step guide `”h]”jø)�”}”(hj»h]”hŒback to step-by-step guide”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj¹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jÇŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_sbs”uh1hh³hÇh´M;hj±ubhŒ]”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M;hjôh²hubj¿)�”}”(hŒ.. _configmods_distros:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒconfigmods-distros”uh1j¾h´M=hjôh²hh³hÇubeh}”(h]”(Œ debug-symbols”jóeh ]”h"]”(Œ debug symbols”Œconfigmods_debugsymbols”eh$]”h&]”uh1hÖhj©h²hh³hÇh´Mj7}”jôjésj9}”jójésubh×)�”}”(hhh]”(hÜ)�”}”(hŒDistro specific adjustments”h]”hŒDistro specific adjustments”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjùh²hh³hÇh´M@ubjÍ)�”}”(hŒ0*Are you running* [:ref:`... `] ”h]”hì)�”}”(hŒ/*Are you running* [:ref:`... `]”h]”(j)�”}”(hŒ*Are you running*”h]”hŒAre you running”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ [”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hj&h]”hŒ...”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j2Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_sbs”uh1hh³hÇh´MBhjubhŒ]”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´MBhjùh²hubhì)�”}”(hŒ‹The following sections help you to avoid build problems that are known to occur when following this guide on a few commodity distributions.”h]”hŒ‹The following sections help you to avoid build problems that are known to occur when following this guide on a few commodity distributions.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MDhjùh²hubhì)�”}”(hŒ **Debian:**”h]”hŒstrong”“”)�”}”(hjdh]”hŒDebian:”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jfhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MGhjùh²hubjÍ)�”}”(hXÛ* Remove a stale reference to a certificate file that would cause your build to fail:: ./scripts/config --file .config --set-str SYSTEM_TRUSTED_KEYS '' Alternatively, download the needed certificate and make that configuration option point to it, as `the Debian handbook explains in more detail `_ -- or generate your own, as explained in Documentation/admin-guide/module-signing.rst. ”h]”jÓ)�”}”(hhh]”jØ)�”}”(hXËRemove a stale reference to a certificate file that would cause your build to fail:: ./scripts/config --file .config --set-str SYSTEM_TRUSTED_KEYS '' Alternatively, download the needed certificate and make that configuration option point to it, as `the Debian handbook explains in more detail `_ -- or generate your own, as explained in Documentation/admin-guide/module-signing.rst. ”h]”(hì)�”}”(hŒTRemove a stale reference to a certificate file that would cause your build to fail::”h]”hŒSRemove a stale reference to a certificate file that would cause your build to fail:”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MIhj‚ubj4)�”}”(hŒ@./scripts/config --file .config --set-str SYSTEM_TRUSTED_KEYS ''”h]”hŒ@./scripts/config --file .config --set-str SYSTEM_TRUSTED_KEYS ''”…”�”}”hj”sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MLhj‚ubhì)�”}”(hX1Alternatively, download the needed certificate and make that configuration option point to it, as `the Debian handbook explains in more detail `_ -- or generate your own, as explained in Documentation/admin-guide/module-signing.rst.”h]”(hŒbAlternatively, download the needed certificate and make that configuration option point to it, as ”…”�”}”(hj¢h²hh³Nh´Nubjù )�”}”(hŒx`the Debian handbook explains in more detail `_”h]”hŒ+the Debian handbook explains in more detail”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ+the Debian handbook explains in more detail”jÔŒGhttps://debian-handbook.info/browse/stable/sect.kernel-compilation.html”uh1jø hj¢ubj¿)�”}”(hŒJ ”h]”h}”(h]”Œ+the-debian-handbook-explains-in-more-detail”ah ]”h"]”Œ+the debian handbook explains in more detail”ah$]”h&]”Œrefuri”jºuh1j¾jãKhj¢ubhŒW -- or generate your own, as explained in Documentation/admin-guide/module-signing.rst.”…”�”}”(hj¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MNhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j×hjubah}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´MIhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´MIhjùh²hubhì)�”}”(hŒ4[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjäh²hh³Nh´Nubh)�”}”(hŒ2:ref:`back to step-by-step guide `”h]”jø)�”}”(hjîh]”hŒback to step-by-step guide”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”júŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_sbs”uh1hh³hÇh´MThjäubhŒ]”…”�”}”(hjäh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MThjùh²hubj¿)�”}”(hŒ.. _configmods_individual:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒconfigmods-individual”uh1j¾h´MVhjùh²hh³hÇubeh}”(h]”(Œdistro-specific-adjustments”jíeh ]”h"]”(Œdistro specific adjustments”Œconfigmods_distros”eh$]”h&]”uh1hÖhj©h²hh³hÇh´M@j7}”j'jãsj9}”jíjãsubh×)�”}”(hhh]”(hÜ)�”}”(hŒIndividual adjustments”h]”hŒIndividual adjustments”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj,h²hh³hÇh´MYubjÍ)�”}”(hŒk*If you want to influence the other aspects of the configuration, do so now* [:ref:`... `] ”h]”hì)�”}”(hŒj*If you want to influence the other aspects of the configuration, do so now* [:ref:`... `]”h]”(j)�”}”(hŒL*If you want to influence the other aspects of the configuration, do so now*”h]”hŒJIf you want to influence the other aspects of the configuration, do so now”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubhŒ [”…”�”}”(hjAh²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hjYh]”hŒ...”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jeŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_sbs”uh1hh³hÇh´M[hjAubhŒ]”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M[hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M[hj,h²hubhì)�”}”(hXˆYou at this point can use a command like ``make menuconfig`` to enable or disable certain features using a text-based user interface; to use a graphical configuration utilize, use the make target ``xconfig`` or ``gconfig`` instead. All of them require development libraries from toolkits they are based on (ncurses, Qt5, Gtk2); an error message will tell you if something required is missing.”h]”(hŒ)You at this point can use a command like ”…”�”}”(hj‡h²hh³Nh´NubjZ)�”}”(hŒ``make menuconfig``”h]”hŒmake menuconfig”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj‡ubhŒˆ to enable or disable certain features using a text-based user interface; to use a graphical configuration utilize, use the make target ”…”�”}”(hj‡h²hh³Nh´NubjZ)�”}”(hŒ ``xconfig``”h]”hŒxconfig”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj‡ubhŒ or ”…”�”}”(hj‡h²hh³Nh´NubjZ)�”}”(hŒ ``gconfig``”h]”hŒgconfig”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj‡ubhŒª instead. All of them require development libraries from toolkits they are based on (ncurses, Qt5, Gtk2); an error message will tell you if something required is missing.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M^hj,h²hubhì)�”}”(hŒ4[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjËh²hh³Nh´Nubh)�”}”(hŒ2:ref:`back to step-by-step guide `”h]”jø)�”}”(hjÕh]”hŒback to step-by-step guide”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jáŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒconfigmods_sbs”uh1hh³hÇh´MehjËubhŒ]”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mehj,h²hubj¿)�”}”(hŒ .. _build:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒbuild”uh1j¾h´Mghj,h²hh³hÇubeh}”(h]”(Œindividual-adjustments”j eh ]”h"]”(Œindividual adjustments”Œconfigmods_individual”eh$]”h&]”uh1hÖhj©h²hh³hÇh´MYj7}”jjsj9}”j jsubeh}”(h]”(Œadjust-build-configuration”j•eh ]”h"]”(Œadjust build configuration”Œ configmods”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M j7}”jj‹sj9}”j•j‹subh×)�”}”(hhh]”(hÜ)�”}”(hŒBuild your kernel”h]”hŒBuild your kernel”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjh²hh³hÇh´MjubjÍ)�”}”(hŒJ*Build the image and the modules of your kernel* [:ref:`... `] ”h]”hì)�”}”(hŒI*Build the image and the modules of your kernel* [:ref:`... `]”h]”(j)�”}”(hŒ0*Build the image and the modules of your kernel*”h]”hŒ.Build the image and the modules of your kernel”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj3ubhŒ [”…”�”}”(hj3h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hjKh]”hŒ...”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjIubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jWŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ build_sbs”uh1hh³hÇh´Mlhj3ubhŒ]”…”�”}”(hj3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mlhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´Mlhjh²hubhì)�”}”(hŒµA lot can go wrong at this stage, but the instructions below will help you help yourself. Another subsection explains how to directly package your kernel up as deb, rpm or tar file.”h]”hŒµA lot can go wrong at this stage, but the instructions below will help you help yourself. Another subsection explains how to directly package your kernel up as deb, rpm or tar file.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mnhjh²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒDealing with build errors”h]”hŒDealing with build errors”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj‡h²hh³hÇh´Msubhì)�”}”(hX–When a build error occurs, it might be caused by some aspect of your machine's setup that often can be fixed quickly; other times though the problem lies in the code and can only be fixed by a developer. A close examination of the failure messages coupled with some research on the internet will often tell you which of the two it is. To perform such an investigation, restart the build process like this::”h]”hX—When a build error occurs, it might be caused by some aspect of your machine’s setup that often can be fixed quickly; other times though the problem lies in the code and can only be fixed by a developer. A close examination of the failure messages coupled with some research on the internet will often tell you which of the two it is. To perform such an investigation, restart the build process like this:”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Muhj‡h²hubj4)�”}”(hŒmake V=1”h]”hŒmake V=1”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´M|hj‡h²hubhì)�”}”(hX,The ``V=1`` activates verbose output, which might be needed to see the actual error. To make it easier to spot, this command also omits the ``-j $(nproc --all)`` used earlier to utilize every CPU core in the system for the job -- but this parallelism also results in some clutter when failures occur.”h]”(hŒThe ”…”�”}”(hj´h²hh³Nh´NubjZ)�”}”(hŒ``V=1``”h]”hŒV=1”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj´ubhŒ� activates verbose output, which might be needed to see the actual error. To make it easier to spot, this command also omits the ”…”�”}”(hj´h²hh³Nh´NubjZ)�”}”(hŒ``-j $(nproc --all)``”h]”hŒ-j $(nproc --all)”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj´ubhŒ‹ used earlier to utilize every CPU core in the system for the job -- but this parallelism also results in some clutter when failures occur.”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M~hj‡h²hubhì)�”}”(hXAfter a few seconds the build process should run into the error again. Now try to find the most crucial line describing the problem. Then search the internet for the most important and non-generic section of that line (say 4 to 8 words); avoid or remove anything that looks remotely system-specific, like your username or local path names like ``/home/username/linux/``. First try your regular internet search engine with that string, afterwards search Linux kernel mailing lists via `lore.kernel.org/all/ `_.”h]”(hXXAfter a few seconds the build process should run into the error again. Now try to find the most crucial line describing the problem. Then search the internet for the most important and non-generic section of that line (say 4 to 8 words); avoid or remove anything that looks remotely system-specific, like your username or local path names like ”…”�”}”(hjæh²hh³Nh´NubjZ)�”}”(hŒ``/home/username/linux/``”h]”hŒ/home/username/linux/”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjæubhŒs. First try your regular internet search engine with that string, afterwards search Linux kernel mailing lists via ”…”�”}”(hjæh²hh³Nh´Nubjù )�”}”(hŒ6`lore.kernel.org/all/ `_”h]”hŒlore.kernel.org/all/”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œlore.kernel.org/all/”jÔŒhttps://lore.kernel.org/all/”uh1jø hjæubj¿)�”}”(hŒ ”h]”h}”(h]”Œlore-kernel-org-all”ah ]”h"]”Œlore.kernel.org/all/”ah$]”h&]”Œrefuri”juh1j¾jãKhjæubhŒ.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mƒhj‡h²hubhì)�”}”(hX;This most of the time will find something that will explain what is wrong; quite often one of the hits will provide a solution for your problem, too. If you do not find anything that matches your problem, try again from a different angle by modifying your search terms or using another line from the error messages.”h]”hX;This most of the time will find something that will explain what is wrong; quite often one of the hits will provide a solution for your problem, too. If you do not find anything that matches your problem, try again from a different angle by modifying your search terms or using another line from the error messages.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M‹hj‡h²hubhì)�”}”(hX%In the end, most trouble you are to run into has likely been encountered and reported by others already. That includes issues where the cause is not your system, but lies the code. If you run into one of those, you might thus find a solution (e.g. a patch) or workaround for your problem, too.”h]”hX%In the end, most trouble you are to run into has likely been encountered and reported by others already. That includes issues where the cause is not your system, but lies the code. If you run into one of those, you might thus find a solution (e.g. a patch) or workaround for your problem, too.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M�hj‡h²hubeh}”(h]”Œdealing-with-build-errors”ah ]”h"]”Œdealing with build errors”ah$]”h&]”uh1hÖhjh²hh³hÇh´Msubh×)�”}”(hhh]”(hÜ)�”}”(hŒPackage your kernel up”h]”hŒPackage your kernel up”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjLh²hh³hÇh´M–ubhì)�”}”(hX+The step-by-step guide uses the default make targets (e.g. 'bzImage' and 'modules' on x86) to build the image and the modules of your kernel, which later steps of the guide then install. You instead can also directly build everything and directly package it up by using one of the following targets:”h]”hX3The step-by-step guide uses the default make targets (e.g. ‘bzImage’ and ‘modules’ on x86) to build the image and the modules of your kernel, which later steps of the guide then install. You instead can also directly build everything and directly package it up by using one of the following targets:”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M˜hjLh²hubjÍ)�”}”(hŒÓ* ``make -j $(nproc --all) bindeb-pkg`` to generate a deb package * ``make -j $(nproc --all) binrpm-pkg`` to generate a rpm package * ``make -j $(nproc --all) tarbz2-pkg`` to generate a bz2 compressed tarball ”h]”jÓ)�”}”(hhh]”(jØ)�”}”(hŒ@``make -j $(nproc --all) bindeb-pkg`` to generate a deb package ”h]”hì)�”}”(hŒ?``make -j $(nproc --all) bindeb-pkg`` to generate a deb package”h]”(jZ)�”}”(hŒ%``make -j $(nproc --all) bindeb-pkg``”h]”hŒ!make -j $(nproc --all) bindeb-pkg”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjvubhŒ to generate a deb package”…”�”}”(hjvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M�hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjoubjØ)�”}”(hŒ@``make -j $(nproc --all) binrpm-pkg`` to generate a rpm package ”h]”hì)�”}”(hŒ?``make -j $(nproc --all) binrpm-pkg`` to generate a rpm package”h]”(jZ)�”}”(hŒ%``make -j $(nproc --all) binrpm-pkg``”h]”hŒ!make -j $(nproc --all) binrpm-pkg”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjœubhŒ to generate a rpm package”…”�”}”(hjœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MŸhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjoubjØ)�”}”(hŒK``make -j $(nproc --all) tarbz2-pkg`` to generate a bz2 compressed tarball ”h]”hì)�”}”(hŒJ``make -j $(nproc --all) tarbz2-pkg`` to generate a bz2 compressed tarball”h]”(jZ)�”}”(hŒ%``make -j $(nproc --all) tarbz2-pkg``”h]”hŒ!make -j $(nproc --all) tarbz2-pkg”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÂubhŒ% to generate a bz2 compressed tarball”…”�”}”(hjÂh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¡hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjoubeh}”(h]”h ]”h"]”h$]”h&]”j.j/uh1jÒh³hÇh´M�hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M�hjLh²hubhì)�”}”(hŒÚThis is just a selection of available make targets for this purpose, see ``make help`` for others. You can also use these targets after running ``make -j $(nproc --all)``, as they will pick up everything already built.”h]”(hŒIThis is just a selection of available make targets for this purpose, see ”…”�”}”(hjðh²hh³Nh´NubjZ)�”}”(hŒ ``make help``”h]”hŒ make help”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjðubhŒ: for others. You can also use these targets after running ”…”�”}”(hjðh²hh³Nh´NubjZ)�”}”(hŒ``make -j $(nproc --all)``”h]”hŒmake -j $(nproc --all)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjðubhŒ0, as they will pick up everything already built.”…”�”}”(hjðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M£hjLh²hubhì)�”}”(hX/If you employ the targets to generate deb or rpm packages, ignore the step-by-step guide's instructions on installing and removing your kernel; instead install and remove the packages using the package utility for the format (e.g. dpkg and rpm) or a package management utility build on top of them (apt, aptitude, dnf/yum, zypper, ...). Be aware that the packages generated using these two make targets are designed to work on various distributions utilizing those formats, they thus will sometimes behave differently than your distribution's kernel packages.”h]”hX3If you employ the targets to generate deb or rpm packages, ignore the step-by-step guide’s instructions on installing and removing your kernel; instead install and remove the packages using the package utility for the format (e.g. dpkg and rpm) or a package management utility build on top of them (apt, aptitude, dnf/yum, zypper, ...). Be aware that the packages generated using these two make targets are designed to work on various distributions utilizing those formats, they thus will sometimes behave differently than your distribution’s kernel packages.”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M§hjLh²hubhì)�”}”(hŒ/[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hj0 h²hh³Nh´Nubh)�”}”(hŒ-:ref:`back to step-by-step guide `”h]”jø)�”}”(hj: h]”hŒback to step-by-step guide”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj8 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jF Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ build_sbs”uh1hh³hÇh´M°hj0 ubhŒ]”…”�”}”(hj0 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M°hjLh²hubj¿)�”}”(hŒ .. _install:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒinstall”uh1j¾h´M²hjLh²hh³hÇubeh}”(h]”Œpackage-your-kernel-up”ah ]”h"]”Œpackage your kernel up”ah$]”h&]”uh1hÖhjh²hh³hÇh´M–ubeh}”(h]”(Œbuild-your-kernel”jeh ]”h"]”(Œbuild your kernel”Œbuild”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´Mjj7}”j{ jýsj9}”jjýsubh×)�”}”(hhh]”(hÜ)�”}”(hŒInstall your kernel”h]”hŒInstall your kernel”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj€ h²hh³hÇh´MµubjÍ)�”}”(hŒ5*Now install your kernel* [:ref:`... `] ”h]”hì)�”}”(hŒ4*Now install your kernel* [:ref:`... `]”h]”(j)�”}”(hŒ*Now install your kernel*”h]”hŒNow install your kernel”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj• ubhŒ [”…”�”}”(hj• h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hj­ h]”hŒ...”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj« ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j¹ Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ install_sbs”uh1hh³hÇh´M·hj• ubhŒ]”…”�”}”(hj• h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M·hj‘ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´M·hj€ h²hubhì)�”}”(hXÌWhat you need to do after executing the command in the step-by-step guide depends on the existence and the implementation of an ``installkernel`` executable. Many commodity Linux distributions ship such a kernel installer in ``/sbin/`` that does everything needed, hence there is nothing left for you except rebooting. But some distributions contain an installkernel that does only part of the job -- and a few lack it completely and leave all the work to you.”h]”(hŒ€What you need to do after executing the command in the step-by-step guide depends on the existence and the implementation of an ”…”�”}”(hjÛ h²hh³Nh´NubjZ)�”}”(hŒ``installkernel``”h]”hŒ installkernel”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÛ ubhŒP executable. Many commodity Linux distributions ship such a kernel installer in ”…”�”}”(hjÛ h²hh³Nh´NubjZ)�”}”(hŒ ``/sbin/``”h]”hŒ/sbin/”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhjÛ ubhŒá that does everything needed, hence there is nothing left for you except rebooting. But some distributions contain an installkernel that does only part of the job -- and a few lack it completely and leave all the work to you.”…”�”}”(hjÛ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M¹hj€ h²hubhì)�”}”(hXÍIf ``installkernel`` is found, the kernel's build system will delegate the actual installation of your kernel's image and related files to this executable. On almost all Linux distributions it will store the image as '/boot/vmlinuz- ' and put a 'System.map-' alongside it. Your kernel will thus be installed in parallel to any existing ones, unless you already have one with exactly the same release name.”h]”(hŒIf ”…”�”}”(hj !h²hh³Nh´NubjZ)�”}”(hŒ``installkernel``”h]”hŒ installkernel”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj !ubhXÉ is found, the kernel’s build system will delegate the actual installation of your kernel’s image and related files to this executable. On almost all Linux distributions it will store the image as ‘/boot/vmlinuz- ’ and put a ‘System.map-’ alongside it. Your kernel will thus be installed in parallel to any existing ones, unless you already have one with exactly the same release name.”…”�”}”(hj !h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÁhj€ h²hubhì)�”}”(hXInstallkernel on many distributions will afterwards generate an 'initramfs' (often also called 'initrd'), which commodity distributions rely on for booting; hence be sure to keep the order of the two make targets used in the step-by-step guide, as things will go sideways if you install your kernel's image before its modules. Often installkernel will then add your kernel to the bootloader configuration, too. You have to take care of one or both of these tasks yourself, if your distributions installkernel doesn't handle them.”h]”hXInstallkernel on many distributions will afterwards generate an ‘initramfs’ (often also called ‘initrd’), which commodity distributions rely on for booting; hence be sure to keep the order of the two make targets used in the step-by-step guide, as things will go sideways if you install your kernel’s image before its modules. Often installkernel will then add your kernel to the bootloader configuration, too. You have to take care of one or both of these tasks yourself, if your distributions installkernel doesn’t handle them.”…”�”}”(hj-!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÈhj€ h²hubhì)�”}”(hŒáA few distributions like Arch Linux and its derivatives totally lack an installkernel executable. On those just install the modules using the kernel's build system and then install the image and the System.map file manually::”h]”hŒâA few distributions like Arch Linux and its derivatives totally lack an installkernel executable. On those just install the modules using the kernel’s build system and then install the image and the System.map file manually:”…”�”}”(hj;!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÐhj€ h²hubj4)�”}”(hŒµsudo make modules_install sudo install -m 0600 $(make -s image_name) /boot/vmlinuz-$(make -s kernelrelease) sudo install -m 0600 System.map /boot/System.map-$(make -s kernelrelease)”h]”hŒµsudo make modules_install sudo install -m 0600 $(make -s image_name) /boot/vmlinuz-$(make -s kernelrelease) sudo install -m 0600 System.map /boot/System.map-$(make -s kernelrelease)”…”�”}”hjI!sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MÔhj€ h²hubhì)�”}”(hŒßIf your distribution boots with the help of an initramfs, now generate one for your kernel using the tools your distribution provides for this process. Afterwards add your kernel to your bootloader configuration and reboot.”h]”hŒßIf your distribution boots with the help of an initramfs, now generate one for your kernel using the tools your distribution provides for this process. Afterwards add your kernel to your bootloader configuration and reboot.”…”�”}”(hjW!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MØhj€ h²hubhì)�”}”(hŒ1[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hje!h²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjo!h]”hŒback to step-by-step guide”…”�”}”(hjq!h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjm!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j{!Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ install_sbs”uh1hh³hÇh´MÜhje!ubhŒ]”…”�”}”(hje!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MÜhj€ h²hubj¿)�”}”(hŒ .. _another:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒanother”uh1j¾h´MÞhj€ h²hh³hÇubeh}”(h]”(Œinstall-your-kernel”jl eh ]”h"]”(Œinstall your kernel”Œinstall”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´Mµj7}”j¨!jb sj9}”jl jb subh×)�”}”(hhh]”(hÜ)�”}”(hŒAnother round later”h]”hŒAnother round later”…”�”}”(hj°!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj­!h²hh³hÇh´MáubjÍ)�”}”(hŒw*To later build another kernel you need similar, but sometimes slightly different commands* [:ref:`... `] ”h]”hì)�”}”(hŒv*To later build another kernel you need similar, but sometimes slightly different commands* [:ref:`... `]”h]”(j)�”}”(hŒ[*To later build another kernel you need similar, but sometimes slightly different commands*”h]”hŒYTo later build another kernel you need similar, but sometimes slightly different commands”…”�”}”(hjÆ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂ!ubhŒ [”…”�”}”(hjÂ!h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hjÚ!h]”hŒ...”…”�”}”(hjÜ!h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjØ!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jæ!Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ another_sbs”uh1hh³hÇh´MãhjÂ!ubhŒ]”…”�”}”(hjÂ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mãhj¾!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´Mãhj­!h²hubhì)�”}”(hX�The process to build later kernels is similar, but at some points slightly different. You for example do not want to use 'localmodconfig' for succeeding kernel builds, as you already created a trimmed down configuration you want to use from now on. Hence instead just use ``oldconfig`` or ``olddefconfig`` to adjust your build configurations to the needs of the kernel version you are about to build.”h]”(hXThe process to build later kernels is similar, but at some points slightly different. You for example do not want to use ‘localmodconfig’ for succeeding kernel builds, as you already created a trimmed down configuration you want to use from now on. Hence instead just use ”…”�”}”(hj"h²hh³Nh´NubjZ)�”}”(hŒ ``oldconfig``”h]”hŒ oldconfig”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj"ubhŒ or ”…”�”}”(hj"h²hh³Nh´NubjZ)�”}”(hŒ``olddefconfig``”h]”hŒ olddefconfig”…”�”}”(hj""h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj"ubhŒ_ to adjust your build configurations to the needs of the kernel version you are about to build.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mæhj­!h²hubhì)�”}”(hXIf you created a shallow-clone with git, remember what the :ref:`section that explained the setup described in more detail `: you need to use a slightly different ``git fetch`` command and when switching to another series need to add an additional remote branch.”h]”(hŒ;If you created a shallow-clone with git, remember what the ”…”�”}”(hj:"h²hh³Nh´Nubh)�”}”(hŒJ:ref:`section that explained the setup described in more detail `”h]”jø)�”}”(hjD"h]”hŒ9section that explained the setup described in more detail”…”�”}”(hjF"h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjB"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jP"Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsources”uh1hh³hÇh´Míhj:"ubhŒ': you need to use a slightly different ”…”�”}”(hj:"h²hh³Nh´NubjZ)�”}”(hŒ ``git fetch``”h]”hŒ git fetch”…”�”}”(hjf"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj:"ubhŒV command and when switching to another series need to add an additional remote branch.”…”�”}”(hj:"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Míhj­!h²hubhì)�”}”(hŒ1[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hj~"h²hh³Nh´Nubh)�”}”(hŒ/:ref:`back to step-by-step guide `”h]”jø)�”}”(hjˆ"h]”hŒback to step-by-step guide”…”�”}”(hjŠ"h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj†"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”j”"Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ another_sbs”uh1hh³hÇh´Mòhj~"ubhŒ]”…”�”}”(hj~"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mòhj­!h²hubj¿)�”}”(hŒ.. _uninstall:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒ uninstall”uh1j¾h´Môhj­!h²hh³hÇubeh}”(h]”(Œanother-round-later”j¡!eh ]”h"]”(Œanother round later”Œanother”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´Máj7}”jÁ"j—!sj9}”j¡!j—!subh×)�”}”(hhh]”(hÜ)�”}”(hŒUninstall the kernel later”h]”hŒUninstall the kernel later”…”�”}”(hjÉ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÆ"h²hh³hÇh´M÷ubjÍ)�”}”(hŒ†*All parts of your installed kernel are identifiable by its release name and thus easy to remove later.* [:ref:`... `] ”h]”hì)�”}”(hŒ…*All parts of your installed kernel are identifiable by its release name and thus easy to remove later.* [:ref:`... `]”h]”(j)�”}”(hŒh*All parts of your installed kernel are identifiable by its release name and thus easy to remove later.*”h]”hŒfAll parts of your installed kernel are identifiable by its release name and thus easy to remove later.”…”�”}”(hjß"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛ"ubhŒ [”…”�”}”(hjÛ"h²hh³Nh´Nubh)�”}”(hŒ:ref:`... `”h]”jø)�”}”(hjó"h]”hŒ...”…”�”}”(hjõ"h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjñ"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jÿ"Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ uninstall_sbs”uh1hh³hÇh´MùhjÛ"ubhŒ]”…”�”}”(hjÛ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Mùhj×"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jÌh³hÇh´MùhjÆ"h²hubhì)�”}”(hXDo not worry installing your kernel manually and thus bypassing your distribution's packaging system will totally mess up your machine: all parts of your kernel are easy to remove later, as files are stored in two places only and normally identifiable by the kernel's release name.”h]”hXDo not worry installing your kernel manually and thus bypassing your distribution’s packaging system will totally mess up your machine: all parts of your kernel are easy to remove later, as files are stored in two places only and normally identifiable by the kernel’s release name.”…”�”}”(hj!#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MühjÆ"h²hubhì)�”}”(hXOne of the two places is a directory in /lib/modules/, which holds the modules for each installed kernel. This directory is named after the kernel's release name; hence, to remove all modules for one of your kernels, simply remove its modules directory in /lib/modules/.”h]”hXOne of the two places is a directory in /lib/modules/, which holds the modules for each installed kernel. This directory is named after the kernel’s release name; hence, to remove all modules for one of your kernels, simply remove its modules directory in /lib/modules/.”…”�”}”(hj/#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÆ"h²hubhì)�”}”(hXÓThe other place is /boot/, where typically one to five files will be placed during installation of a kernel. All of them usually contain the release name in their file name, but how many files and their name depends somewhat on your distribution's installkernel executable (:ref:`see above `) and its initramfs generator. On some distributions the ``kernel-install`` command mentioned in the step-by-step guide will remove all of these files for you -- and the entry for your kernel in the bootloader configuration at the same time, too. On others you have to take care of these steps yourself. The following command should interactively remove the two main files of a kernel with the release name '6.0.1-foobar'::”h]”(hXThe other place is /boot/, where typically one to five files will be placed during installation of a kernel. All of them usually contain the release name in their file name, but how many files and their name depends somewhat on your distribution’s installkernel executable (”…”�”}”(hj=#h²hh³Nh´Nubh)�”}”(hŒ:ref:`see above `”h]”jø)�”}”(hjG#h]”hŒ see above”…”�”}”(hjI#h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjE#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jS#Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒinstall”uh1hh³hÇh´Mhj=#ubhŒ9) and its initramfs generator. On some distributions the ”…”�”}”(hj=#h²hh³Nh´NubjZ)�”}”(hŒ``kernel-install``”h]”hŒkernel-install”…”�”}”(hji#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj=#ubhX_ command mentioned in the step-by-step guide will remove all of these files for you -- and the entry for your kernel in the bootloader configuration at the same time, too. On others you have to take care of these steps yourself. The following command should interactively remove the two main files of a kernel with the release name ‘6.0.1-foobar’:”…”�”}”(hj=#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÆ"h²hubj4)�”}”(hŒ-rm -i /boot/{System.map,vmlinuz}-6.0.1-foobar”h]”hŒ-rm -i /boot/{System.map,vmlinuz}-6.0.1-foobar”…”�”}”hj�#sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j3h³hÇh´MhjÆ"h²hubhì)�”}”(hX?Now remove the belonging initramfs, which often will be called something like ``/boot/initramfs-6.0.1-foobar.img`` or ``/boot/initrd.img-6.0.1-foobar``. Afterwards check for other files in /boot/ that have '6.0.1-foobar' in their name and delete them as well. Now remove the kernel from your bootloader's configuration.”h]”(hŒNNow remove the belonging initramfs, which often will be called something like ”…”�”}”(hj�#h²hh³Nh´NubjZ)�”}”(hŒ$``/boot/initramfs-6.0.1-foobar.img``”h]”hŒ /boot/initramfs-6.0.1-foobar.img”…”�”}”(hj—#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj�#ubhŒ or ”…”�”}”(hj�#h²hh³Nh´NubjZ)�”}”(hŒ!``/boot/initrd.img-6.0.1-foobar``”h]”hŒ/boot/initrd.img-6.0.1-foobar”…”�”}”(hj©#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jYhj�#ubhŒ®. Afterwards check for other files in /boot/ that have ‘6.0.1-foobar’ in their name and delete them as well. Now remove the kernel from your bootloader’s configuration.”…”�”}”(hj�#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÆ"h²hubhì)�”}”(hŒÊNote, be very careful with wildcards like '*' when deleting files or directories for kernels manually: you might accidentally remove files of a 6.0.11 kernel when all you want is to remove 6.0 or 6.0.1.”h]”hŒÎNote, be very careful with wildcards like ‘*’ when deleting files or directories for kernels manually: you might accidentally remove files of a 6.0.11 kernel when all you want is to remove 6.0 or 6.0.1.”…”�”}”(hjÁ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÆ"h²hubhì)�”}”(hŒ3[:ref:`back to step-by-step guide `]”h]”(hŒ[”…”�”}”(hjÏ#h²hh³Nh´Nubh)�”}”(hŒ1:ref:`back to step-by-step guide `”h]”jø)�”}”(hjÙ#h]”hŒback to step-by-step guide”…”�”}”(hjÛ#h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hj×#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”jå#Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒ uninstall_sbs”uh1hh³hÇh´MhjÏ#ubhŒ]”…”�”}”(hjÏ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´MhjÆ"h²hubj¿)�”}”(hŒ.. _faq:”h]”h}”(h]”h ]”h"]”h$]”h&]”jÊŒfaq”uh1j¾h´MhjÆ"h²hh³hÇubeh}”(h]”(Œuninstall-the-kernel-later”jº"eh ]”h"]”(Œuninstall the kernel later”Œ uninstall”eh$]”h&]”uh1hÖhj0 h²hh³hÇh´M÷j7}”j$j°"sj9}”jº"j°"subeh}”(h]”Œ,reference-section-for-the-step-by-step-guide”ah ]”h"]”Œ,reference section for the step-by-step guide”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Mkubh×)�”}”(hhh]”(hÜ)�”}”(hŒFAQ”h]”hŒFAQ”…”�”}”(hj"$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj$h²hh³hÇh´M"ubh×)�”}”(hhh]”(hÜ)�”}”(hŒ-Why does this 'how-to' not work on my system?”h]”hŒ1Why does this ‘how-to’ not work on my system?”…”�”}”(hj3$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj0$h²hh³hÇh´M%ubhì)�”}”(hX{As initially stated, this guide is 'designed to cover everything typically needed [to build a kernel] on mainstream Linux distributions running on commodity PC or server hardware'. The outlined approach despite this should work on many other setups as well. But trying to cover every possible use-case in one guide would defeat its purpose, as without such a focus you would need dozens or hundreds of constructs along the lines of 'in case you are having , you at this point have to do '. Each of which would make the text longer, more complicated, and harder to follow.”h]”hXƒAs initially stated, this guide is ‘designed to cover everything typically needed [to build a kernel] on mainstream Linux distributions running on commodity PC or server hardware’. The outlined approach despite this should work on many other setups as well. But trying to cover every possible use-case in one guide would defeat its purpose, as without such a focus you would need dozens or hundreds of constructs along the lines of ‘in case you are having , you at this point have to do ’. Each of which would make the text longer, more complicated, and harder to follow.”…”�”}”(hjA$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M'hj0$h²hubhì)�”}”(hŒÙThat being said: this of course is a balancing act. Hence, if you think an additional use-case is worth describing, suggest it to the maintainers of this document, as :ref:`described above `.”h]”(hŒ§That being said: this of course is a balancing act. Hence, if you think an additional use-case is worth describing, suggest it to the maintainers of this document, as ”…”�”}”(hjO$h²hh³Nh´Nubh)�”}”(hŒ1:ref:`described above `”•þ>h]”jø)�”}”(hjY$h]”hŒdescribed above”…”�”}”(hj[$h²hh³Nh´Nubah}”(h]”h ]”(jŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j÷hjW$ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jŒ refdomain”je$Œreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjŒsubmit_improvements_qbtl”uh1hh³hÇh´M1hjO$ubhŒ.”…”�”}”(hjO$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´M1hj0$h²hubh¶)�”}”(hŒend-of-content”h]”hŒend-of-content”…”�”}”hj�$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhj0$h²hh³hÇh´M7ubh¶)�”}”(hXèThis document is maintained by Thorsten Leemhuis . If you spot a typo or small mistake, feel free to let him know directly and he'll fix it. You are free to do the same in a mostly informal way if you want to contribute changes to the text -- but for copyright reasons please CC linux-doc@vger.kernel.org and 'sign-off' your contribution as Documentation/process/submitting-patches.rst explains in the section 'Sign your work - the Developer's Certificate of Origin'.”h]”hXèThis document is maintained by Thorsten Leemhuis . If you spot a typo or small mistake, feel free to let him know directly and he'll fix it. You are free to do the same in a mostly informal way if you want to contribute changes to the text -- but for copyright reasons please CC linux-doc@vger.kernel.org and 'sign-off' your contribution as Documentation/process/submitting-patches.rst explains in the section 'Sign your work - the Developer's Certificate of Origin'.”…”�”}”hj�$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhj0$h²hh³hÇh´M?ubh¶)�”}”(hXvThis text is available under GPL-2.0+ or CC-BY-4.0, as stated at the top of the file. If you want to distribute this text under CC-BY-4.0 only, please use 'The Linux kernel development community' for author attribution and link this as source: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/admin-guide/quickly-build-trimmed-linux.rst”h]”hXvThis text is available under GPL-2.0+ or CC-BY-4.0, as stated at the top of the file. If you want to distribute this text under CC-BY-4.0 only, please use 'The Linux kernel development community' for author attribution and link this as source: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/admin-guide/quickly-build-trimmed-linux.rst”…”�”}”hj�$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhj0$h²hh³hÇh´MEubh¶)�”}”(hXNote: Only the content of this RST file as found in the Linux kernel sources is available under CC-BY-4.0, as versions of this text that were processed (for example by the kernel's build system) might contain content taken from files which use a more restrictive license.”h]”hXNote: Only the content of this RST file as found in the Linux kernel sources is available under CC-BY-4.0, as versions of this text that were processed (for example by the kernel's build system) might contain content taken from files which use a more restrictive license.”…”�”}”hj«$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhj0$h²hh³hÇh´MKubeh}”(h]”Œ*why-does-this-how-to-not-work-on-my-system”ah ]”h"]”Œ-why does this 'how-to' not work on my system?”ah$]”h&]”uh1hÖhj$h²hh³hÇh´M%ubeh}”(h]”(j $Œid1”eh ]”h"]”Œfaq”ah$]”Œfaq”ah&]”uh1hÖhhØh²hh³hÇh´M"jãKj7}”jÆ$j$sj9}”j $j$subeh}”(h]”Œ+how-to-quickly-build-a-trimmed-linux-kernel”ah ]”h"]”Œ+how to quickly build a trimmed linux kernel”ah$]”h&]”uh1hÖhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j÷$Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”(jË]”jÀajE]”j;ajÄ]”jºaj/]”j%ajš]”j�aj—]”j�ajP]”jFajà]”jÖaj°]”j¦aj°]”j¦aj7 ]”j- ajì ]”jâ aj ]”j ajÞ ]”jÔ ajY ]”jO ajÿ ]”jõ ajì ]”jâ ajZ]”jPaj=]”j3ajÂ]”j¸aj›]”j‘aj™]”j�aj2]”j(ajË]”jÁaj’]”jˆajN]”jDaj ]”jaj•]”j‹ajó]”jéají]”jãaj ]”jaj]”jýajl ]”jb aj¡!]”j—!ajº"]”j°"aj $]”j$auŒnameids”}”(jÑ$jÎ$jdjaj- j* j4jËjµjEj jÄj‹j/jˆjšjAj—j¡jPj˜jàj¡j°j( j°jÝ j7 j jì jÏ j jë jÞ j$j$j jY j j jó jÿ jò jï jajì j`j]jDjZjCj@j¤j=j£j j¢jÂj¡jžj j›jŸjœj9j™j8j5jÒj2jÑjÎj™jËj˜j•jUj’jTjQjjNjjj¤j j£j jjþj~j{jjjßjÜj›j˜jj•jjjôjójójðj'jíj&j#jÄjÁjj j j j{ jjz jw jIjFjjjr jo j¨!jl j§!j¤!jÁ"j¡!jÀ"j½"j$jº"j$j$jÆ$j $j¾$j»$uŒ nametypes”}”(jÑ$‰jd‰j- ‰j4ˆjµˆj ˆj‹ˆjˆˆjAˆj¡ˆj˜ˆj¡ˆj( ˆjÝ ˆj ˆjÏ ˆjë ˆj$‰j ˆj ‰jó ˆjò ‰jaˆj`‰jDˆjC‰j¤ˆj£‰j¢ˆj¡‰j ˆjŸ‰j9ˆj8‰jÒˆjщj™ˆj˜‰jUˆjT‰jˆj‰j¤ˆj£‰j‰j~‰j‰j߈j›‰jˆj‰jôˆjó‰j'ˆj&‰jĈjˆj ‰j{ ˆjz ‰jI‰jˆjr ‰j¨!ˆj§!‰jÁ"ˆjÀ"‰j$ˆj$‰jÆ$ˆj¾$‰uh}”(jÎ$hØjahûj* jgjËjÎjEjFjÄjÅj/j0jšj›j—j˜jPjQjàjáj°j±j°j±j7 j8 jì jí j j jÞ jß j$j0 jY jZ j jZ jÿ j jï j jì jø j]jø jZjfj@jfj=jIj jIjÂjÃjžjÃj›j§jœj§j™j¥j5j¥j2j>jÎj>jËj×j•j×j’j©jQj©jNjZjjZj jj jjþj‚j{jjj�jÜjÖj˜jj•j©jj©jójôjðjôjíjùj#jùjÁj»j j,j j,jjjw jjFj‡jjjo jLjl j€ j¤!j€ j¡!j­!j½"j­!jº"jÆ"j$jÆ"j $j$jÃ$j$j»$j0$uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j%Ks…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hì)�”}”(hŒ&Duplicate implicit target name: "faq".”h]”hŒ*Duplicate implicit target name: “faqâ€�.”…”�”}”(hj‚%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj%ubah}”(h]”h ]”h"]”h$]”h&]”jÃ$aŒlevel”KŒtype”ŒINFO”Œsource”hÇŒline”M"uh1j}%hj$h²hh³hÇh´M"ubaŒtransform_messages”]”(j~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ0Hyperlink target "backup-sbs" is not referenced.”…”�”}”hj %sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj�%ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”KSuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ4Hyperlink target "secureboot-sbs" is not referenced.”…”�”}”hjº%sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj·%ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”KZuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ7Hyperlink target "buildrequires-sbs" is not referenced.”…”�”}”hjÔ%sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÑ%ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Keuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ3Hyperlink target "diskspace-sbs" is not referenced.”…”�”}”hjî%sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjë%ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Kouh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ1Hyperlink target "sources-sbs" is not referenced.”…”�”}”hj&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”K{uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ2Hyperlink target "patching-sbs" is not referenced.”…”�”}”hj"&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”K©uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ1Hyperlink target "tagging-sbs" is not referenced.”…”�”}”hj<&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj9&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”K¸uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ7Hyperlink target "configuration-sbs" is not referenced.”…”�”}”hjV&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjS&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œline”KÄŒsource”hÇuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ4Hyperlink target "configmods-sbs" is not referenced.”…”�”}”hjp&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjm&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Kåuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ/Hyperlink target "build-sbs" is not referenced.”…”�”}”hjŠ&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj‡&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Kùuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ1Hyperlink target "install-sbs" is not referenced.”…”�”}”hj¤&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¡&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Muh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ1Hyperlink target "another-sbs" is not referenced.”…”�”}”hj¾&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj»&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Muh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ3Hyperlink target "uninstall-sbs" is not referenced.”…”�”}”hjØ&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÕ&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”MGuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ>Hyperlink target "submit-improvements-qbtl" is not referenced.”…”�”}”hjò&sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjï&ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M^uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ,Hyperlink target "backup" is not referenced.”…”�”}”hj 'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj 'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Mpuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ0Hyperlink target "secureboot" is not referenced.”…”�”}”hj&'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj#'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Muh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ3Hyperlink target "buildrequires" is not referenced.”…”�”}”hj@'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj='ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M¤uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ/Hyperlink target "diskspace" is not referenced.”…”�”}”hjZ'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjW'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”MÒuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ-Hyperlink target "sources" is not referenced.”…”�”}”hjt'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjq'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Måuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ5Hyperlink target "sources-shallow" is not referenced.”…”�”}”hjŽ'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj‹'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Müuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ5Hyperlink target "sources-archive" is not referenced.”…”�”}”hj¨'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¥'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M&uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ2Hyperlink target "sources-full" is not referenced.”…”�”}”hjÂ'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj¿'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”MEuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ6Hyperlink target "sources-snapshot" is not referenced.”…”�”}”hjÜ'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÙ'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M\uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ5Hyperlink target "sources-fresher" is not referenced.”…”�”}”hjö'sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjó'ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Mouh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ.Hyperlink target "patching" is not referenced.”…”�”}”hj(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj (ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Mˆuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ-Hyperlink target "tagging" is not referenced.”…”�”}”hj*(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj'(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M–uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ3Hyperlink target "configuration" is not referenced.”…”�”}”hjD(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjA(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M«uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ0Hyperlink target "configmods" is not referenced.”…”�”}”hj^(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj[(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Muh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ=Hyperlink target "configmods-debugsymbols" is not referenced.”…”�”}”hjx(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhju(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Muh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ8Hyperlink target "configmods-distros" is not referenced.”…”�”}”hj’(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj�(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M=uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ;Hyperlink target "configmods-individual" is not referenced.”…”�”}”hj¬(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj©(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”MVuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ+Hyperlink target "build" is not referenced.”…”�”}”hjÆ(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÃ(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Mguh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ-Hyperlink target "install" is not referenced.”…”�”}”hjà(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhjÝ(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”M²uh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ-Hyperlink target "another" is not referenced.”…”�”}”hjú(sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj÷(ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”MÞuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ/Hyperlink target "uninstall" is not referenced.”…”�”}”hj)sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj)ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Môuh1j}%ubj~%)�”}”(hhh]”hì)�”}”(hhh]”hŒ)Hyperlink target "faq" is not referenced.”…”�”}”hj.)sbah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj+)ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”j˜%Œsource”hÇŒline”Muh1j}%ubeŒ transformer”NŒ include_log”]”Œ decoration”Nh²hub.