Linux kernel config support

Kernel/IKCONFIG support

Enabling In-kernel Config (IKCONFIG) support for the Linux kernel enables the inspection of kernel configuration for running kernels. Optionally the kernel’s configuration can be exported and viewed through the /proc/config.gz file.



In-kernel .config support, also known as IKCONFIG, allows system administrators to build a copy of the configuration the kernel was built with into the kernel itself. This allows inspecting the the configuration of the kernel while it is running, without having to worry whether they changed or cleaned the kernel source directory after it was compiled.

Why is it important?

In kernel config aids system administrators with debugging things like if a particular module was compiled when the kernel was built, whether a certain networking option was enabled, or any other configuration value that was set when the kernel was compiled. This information is often asked for when looking for support on the forums or IRC channels.


Enabling IKCONFIG support

Kernel .config support can be enabled either built in to the kernel, or as a module. If built in to the kernel, there will always be a /proc/config.gz file to read the configuration from. If preferred, it can be built as a module so that the configuration is only available when the user loads the module.

Optional: Loading the module on boot

If the kernel was built with IKCONFIG support as a module, and module is to be loaded when the system boots, add it to the list of auto-loaded modules for the system.


Accessing IKCONFIG

Reading with the kernels helper script

The Linux kernel sources ship with a helper script to decode the kernel configuration from the IKCONFIG kernel symbol (module). Running the following command will print the kernel configuration to stdout:

Loading the configs module

If IKCONFIG support has been built as a module, the module will need loaded into the kernel before use. This can be done by running the following command:

Administrators should now be able to see the file /proc/config.gz . This is a compressed copy of the entire kernel configuration at build time.

When users finish looking at the configuration, they can unload the module with:

The module should now have been unloaded and the /proc/config.gz file removed.


/proc/config.gz is a compressed copy of the kernel configuration, which means that in order to read it, it needs to be decompressed. There are two ways to do so.

Quick queries

When checking one or two options, then the easiest way to read the file is to grep it through the decompressor:

Full file review

Those who want a more in-depth look at the configuration of the running kernel can use the less command, which will automatically decompress the file into viewable format:


Configuring the Linux kernel


Optional: Installing firmware and/or microcode

Before getting to configuring kernel sections, it is beneficial to be aware that some devices require additional firmware to be installed on the system before they will operate correctly. This is often the case for network interfaces, especially wireless network interfaces commonly used in both desktop and laptop computers. Modern video chips from vendors like AMD, Nvidia, and Intel, often need external firmware files to be fully functional. Most firmware for modern hardware is available in the sys-kernel/linux-firmware package. On systems using graphics cards from these vendors, it is wise to emerge this firmware package in order to have it available before configuring and compiling the kernel.

In addition to discrete graphics hardware and network interfaces, CPUs also can require firmware updates. Typically this kind of firmware is referred to as microcode. Newer revisions of microcode are sometimes necessary to patch instability, security concerns, or other bugs in CPU hardware.

Microcode updates for AMD CPUs are typically distributed with the aforementioned linux-firmware package. Microcode for Intel CPUs can be found in the sys-firmware/intel-microcode package, which will need to be installed separately. See the Microcode article for more information on how to apply microcode updates.

Kernel configuration and compilation

Now it is time to configure and compile the kernel sources. There are three approaches for this:

  1. The kernel is manually configured and built.
  2. A tool called genkernel is used to automatically build and install the Linux kernel.
  3. A Distribution Kernel is used to automatically build and install the Linux kernel like any other package.

Manual configuration is explained as the default choice since it is the best way to optimize an environment.

The core around which all distributions are built is the Linux kernel. It is the layer between the user programs and the system hardware. Gentoo provides its users several possible kernel sources. A full listing with description is available at the Kernel overview page.

Installing the sources

When manually installing and compiling the kernel for amd64-based systems, Gentoo recommends the sys-kernel/gentoo-sources package.

Choose an appropriate kernel source and install it using emerge :

This will install the Linux kernel sources in /usr/src/ using the specific kernel version in the path. It will not create a symbolic link by itself without USE=symlink being enabled on the chosen kernel sources package.

It is conventional for a /usr/src/linux symlink to be maintained, such that it refers to whichever sources correspond with the currently running kernel. However, this symbolic link will not be created by default. An easy way to create the symbolic link is to utilize eselect’s kernel module.

For further information regarding the purpose of the symlink, and how to manage it, please refer to Kernel/Upgrade.

First, list all installed kernels:

In order to create a symbolic link called linux , use:


Kconfig make config¶

This file contains some assistance for using make *config .

Use “make help” to list all of the possible configuration targets.

The xconfig (‘qconf’), menuconfig (‘mconf’), and nconfig (‘nconf’) programs also have embedded help text. Be sure to check that for navigation, search, and other general help text.


New kernel releases often introduce new config symbols. Often more important, new kernel releases may rename config symbols. When this happens, using a previously working .config file and running “make oldconfig” won’t necessarily produce a working new kernel for you, so you may find that you need to see what NEW kernel symbols have been introduced.

To see a list of new config symbols, use:

and the config program will list any new symbols, one per line.

Alternatively, you can use the brute force method:

Environment variables for *config


This environment variable can be used to specify a default kernel config file name to override the default name of “.config”.

Читайте также:  Кнопки для управления принтером


This environment variable specifies a list of config files which can be used as a base configuration in case the .config does not exist yet. Entries in the list are separated with whitespaces to each other, and the first one that exists is used.


If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not break symlinks when .config is a symlink to somewhere else.


If you set CONFIG_ in the environment, Kconfig will prefix all symbols with its value when saving the configuration, instead of using the default, CONFIG_ .

Environment variables for ‘config’


(partially based on lkml email from/by Rob Landley, re: miniconfig)

The allyesconfig/allmodconfig/allnoconfig/randconfig variants can also use the environment variable KCONFIG_ALLCONFIG as a flag or a filename that contains config symbols that the user requires to be set to a specific value. If KCONFIG_ALLCONFIG is used without a filename where KCONFIG_ALLCONFIG == “” or KCONFIG_ALLCONFIG == “1”, make *config checks for a file named “all.config” (corresponding to the *config command that was used) for symbol values that are to be forced. If this file is not found, it checks for a file named “all.config” to contain forced values.

This enables you to create “miniature” config (miniconfig) or custom config files containing just the config symbols that you are interested in. Then the kernel config system generates the full .config file, including symbols of your miniconfig file.

This ‘KCONFIG_ALLCONFIG’ file is a config file which contains (usually a subset of all) preset config symbols. These variable settings are still subject to normal dependency checks.


Сборка ядра Linux

Самым основным компонентом операционной системы Linux есть ядро. Именно ядро выступает промежуточным звеном между пользовательскими программами и оборудованием компьютера. Во всех бинарных дистрибутивах не нужно заботиться о сборке и настройке ядра, все уже сделали за нас разработчики дистрибутива. Но если вы хотите установить самую свежую версию ядра или настроить его под себя удалив от туда всё лишнее, вам придется собрать его вручную.

Раньше ядро собирали для того чтобы получить максимальную производительность от своего оборудования, но сейчас, учитывая стремительное увеличение мощности компьютеров увеличение производительности при сборке ядра совсем незаметно. Сейчас сборка ядра может понадобиться пользователям не бинарных дистрибутивов, таких как Gentoo, тем, кто хочет внести некоторые изменения в ядро, получить новую самую свежую версию ядра и, конечно, же тем, кто хочет полностью разобраться в работе своей системы. В этой статье мы рассмотрим как собрать ядро Linux на примере дистрибутива Ubuntu.

Сборка ядра Linux из исходников

Первая часть расскажет как настроить ядро в автоматическом режиме. Так сказать, для тех кто не хочет разбираться как оно работает, кому нужно лишь получить на выходе готовый продукт — собранное ядро. Во второй части мы рассмотрим основные этапы ручной настройки ядра, это процесс сложный, и не быстрый, но я попытаюсь дать основу, чтобы вы могли со всем разобраться сами.

1. Текущая версия ядра

Для того чтобы посмотреть текущую версию ядра, установленную в системе используйте такую команду:

2. Установка необходимых пакетов

Для успешной сборки ядра необходимо убедится, что в вашей системе установлены все пакеты, нужные для сборки ядра и установить недостающие. Для этого выполните команду:

sudo apt install libncurses-dev libncurses dwarves build-essential gcc bc bison flex libssl-dev libelf-dev

После установки пакетов можно переходить к загрузке исходников ядра.

3. Получение исходников ядра

Исходники лучшие брать с сайта вашего дистрибутива, если они там есть или официального сайта ядра: В этой статье будет рассмотрена загрузка исходников с

Перед тем как скачивать исходники нужно определиться с версией ядра которую надо собирать. Есть две основных версии релизов — стабильные (stable) и кандидаты в релизы (rc), есть, конечно, еще стабильные с длительным периодом поддержки (longterm), но важно сейчас разобраться с первыми двумя. Стабильные это, как правило, не самые новые, но зато уже хорошо протестированные ядра с минимальным количеством багов. Тестовые — наоборот, самые новые, но могут содержать различные ошибки.

Итак когда определились с версией зайдите на и скачайте нужные исходники в формате tarball:

В этой статье будет использована самая новая на данный момент стабильная версия 5.13.7. Полученный с официального сайта архив необходимо распаковать. Для этого перейдите в папку загрузок и выполните команду распаковки:

Затем нужно перейти в папку с распакованными исходниками ядра. Например, для версии 5.13.7 команда будет выглядеть вот так:

4. Текущая конфигурация ядра

Вы можете сами настраивать ядро с нуля, но это, скорее всего, займет очень много времени и точно не для новичков. Поэтому удобнее всего взять текущую конфигурацию ядра и использовать её в качестве базы для сборки нового. Во многих дистрибутивах конфигурация хранится в файле /proc/config.gz. Однако это будет работать только если была включена соответствующая опция ядра. Извлечь такую конфигурацию можно с помощью команды:

zcat /proc/config.gz > .config

Часто поддержка этой возможности отключена. Но в Ubuntu и других современных дистрибутивах, конфигурация ядра находится в папке /boot, в файле с названием config и версия ядра. Если у вас в системе установлено несколько ядер, то будет несколько конфигурационных файлов. Например, config-5.11.0-25-generic:

Для того чтобы скопировать этот конфигурационный файл в папку с исходниками выполните:

cp /boot/config-5.11.0-25-generic .config

5. Автоматическая конфигурация

Полученную конфигурацию необходимо актуализировать до состояния текущего ядра. В новых версиях ядра, обычно, добавляются новые опции, значений которых ещё нет в конфигурации ядра вашего дистрибутива. Для этого есть несколько скриптов. В этой статье будет рассмотрено только два: oldconfig и localmodulesconfig. Первый скрипт позволяет в интерактивном режиме заполнить новые поля конфигурации. Для его запуска в папке с исходниками ядра выполните:

После запуска скрипта вам придется просмотреть все вопросы и ответить на них. Обычно скрипт советует как отвечать и в большинстве случаев можно оставить значение по умолчанию, но если вы сомневаетесь, то можно посмотреть какое значение стоит выбрать в Google. Особое внимание уделяйте пунктам, не отмеченным как NEW, такие настройки не новые и требуют вашего вмешательства.

После ответа на все вопросы можно переходить к следующему шагу. Однако, при таком способе конфигурации ядра останутся включёнными многие ненужные модули, а значит сборка займет много времени, много места на диске (до 20 Гб) и само ядро получится большого размера.

С помощью команды localmodulesconfig можно оптимизировать процесс. Это ответ на вопрос как собрать ядро Linux под свое железо проще всего. Она работает аналогично предыдущей, только в дополнение к этому проверяет какие модули ядра сейчас загружены и оставляет включёнными только их, сборку всех остальных отключает. Такое ядро соберется намного быстрее, да и вопросов, на которые надо будет ответить будет меньше.

Здесь обратите внимание на алгоритм сжатия модулей ядра. Лучше оставить без сжатия:

6. Ручная настройка ядра

После того как вы выполнили один из автоматических скриптов настройки ядра, вы можете захотеть настроить что-то дополнительно вручную. Для этого используется команда menuconfig. Она позволяет изменять настройки ядра в псвевдографическом меню. Для его запуска выполните:

Для перемещения по меню используйте клавиши со стрелками вверх и вниз. Для включения или отключения функции нужно поставить на неё курсор и нажать у (включить), n (отключить), m (включить в виде модуля). Её можно использовать пробел или Enter для переключения состояния включено или выключено. Для открытия пункта конфигурации используйте Enter. Для перехода на уровень выше — Exit. Для перемещения между кнопками используйте стрелки вправо и влево. Всё это написано в окне меню:

Давайте рассмотрим несколько настроек. В разделе General Setup можно включить поддержку получения конфигурации из файла /proc/config.gz. Для этого найдите пункты Kernel .config support и Enable access to .config through /proc/config.gz и поставьте перед ними звездочку с помощью клавиши Enter.

Читайте также:  Картридж для турбин ниссан патрол zd30

По каждому пункту можно получить справку. Для этого выберите кнопку Help и нажмите Enter:

С помощью пункта Kernel compression mode вы можете выбрать способ сжатия образа ядра. Самый эффективный — LZMA:

Пункт Support for paging of anonymous memory (swap) позволяет включить поддержку подкачки:

Возвращайтесь назад с помощью кнопки Exit, а затем откройте пункт File systems. Здесь можно включить или отключить поддержку файловых систем. Убедитесь, что включена поддержка ext4 и ext3, а также можете включить Btrfs и F2FS:

Самый большой и сложный раздел — это Device drivers в главном меню. Здесь можно включить или отключить поддержку драйверов всех устройств которые поддерживает Linux. Именно в этом разделе вам придется внести большинство настроек если вы собираетесь уменьшить размер своего ядра и не хотите использовать localmodconfig. После завершения настройки нажмите кнопку Save и подтвердите сохранение в файл .config:

6. Сборка ядра и установка вручную

Если вы хотите установить ядро вручную достаточно выполнить такие команды последовательно для его сборки:

По умолчанию будет использоваться только одно ядро процессора. Вы можете ускорить сборку попросив программу использовать сразу несколько ядер с помощью опции -j. Например, для сборки в 8 потоков используйте такую команду:

После завершения выполнения этих команд сборка ядра Linux будет завершена, дальше необходимо установить ядро. Для этого выполните:

Скрипт автоматически обновит конфигурацию Grub и вы сможете перезагрузить компьютер и получить новое ядро:

Но прежде чем идти дальше, давайте рассмотрим ещё один способ сборки ядра.

7. Сборка пакета для Ubuntu

Описанный выше способ установки не очень удобный, поскольку если вы захотите удалить ядро, вам придется это делать вручную. Вместо этого вы можете собрать пакет для своего дистрибутива и установить его с помощью пакетного менеджера. Для сборки deb пакета выполните такую команду:

После завершения сборки ядра Linux пакеты появятся на каталог выше каталога с исходниками:

Для установки этих пакетов достаточно выполнить такую команду:

sudo dpkg -i ../*.deb

Затем вы можете перезагрузить компьютер и убедится, что теперь используется новое ядро:

Для удаления ядра, установленного таким способом достаточно загрузится с другим ядром и удалить пакеты ядра из системы. Например, для этой версии команда будет выглядеть так:

sudo apt remove linux-headers-5.13.7 linux-image-5.13.7 linux-image-5.13.7-dbg linux-libc-dev

Что делать если ядро не загружается

Если по каким-либо причинам собранное только что ядро не загружается, то ничего страшного ещё не произошло. Вы можете загрузится со старым ядром и начать всё сначала или удалить новое ядро и продолжить использовать систему со старым ядром. Для этого в меню Grub необходимо выбрать пункт Дополнительные параметры, а потом нужную версию ядра, например:

Если меню Grub не отображается, попробуйте зажать перед загрузкой операционной системы клавишу Shift. После авторизации в системе вы можете удалить новое ядро с помощью пакетного менеджера, если использовали его для установки или вручную. Для удаления вручную следует удалить файлы ядра из папки /boot. Например:

sudo rm /boot/vmlinuz-5.13.7
sudo rm /boot/config-5.13.7
sudo rm /boot/initrd.img-5.13.7
sudo rm /boot/
sudo rm -Rf /lib/modules/5.13.7/

А затем необходимо обновить конфигурацию Grub:

После этого в вашей системе останутся только старые ядра.


Вот и все. В этой статье мы подробно рассмотрели выполняется сборка ядра Linux из исходников. Это будет полезно всем желающим лучшие понять свою систему, и тем, кто хочет получить самую новую версию ядра в своей системе. Если остались вопросы, задавайте комментарии!

Оцените статью:

Об авторе

Основатель и администратор сайта, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

47 комментариев

Установку первого своего линукса начинал с именно ручной настройки и сборки ядра. Уже и не помню сколько было попыток, прежде чем оно «завелось»:) Где-то неделю по вечерам после работы я его собирал на домашнем компьютере читая хэндбуки в консольном браузере 🙂 Это в 2008-м году было. С винды сел на gentoo. На сборку всей системы до юзабельного состояния у меня ушло недели 3. С тех пор и ковыряюсь в никсах.

Перейти с окноуза и сразу на генту это уже целая биография

низнаю по-теме ли, . в старом линуксе модем работает в последнем дистребюте не работает..думал как вытянуть со старого ядра, то что нужно модему и прикрутить к новому. это возможно?

Можно разве что прикрутить старое ядро к новому дистрибутиву.

Возможно, если знаете Си, чтоб вытянуть драйвер и кучу зависимостей поправить в исходном коде нового ядра. Вот только какой вэтом великий смысл для домашнего ПК, находящегося за NAT провайдера и за NAT роутера? Или найденные уязвимости старой версии ядра, другие домачадцы будут эксплуатировать?

«make && $ make modules» значёк доллара здесь — опечатка?

Вопрос: почему загрузка через браузер около 90 мб, а через консоль скачал 135 и это только 5% ?

Хорошо что сказали, через консоль качается очень много лишнего, нужно будет подправить ссылку.

Я так понимаю это ошибка и вместо lscpi нужно вводить lspci

Смотрю вы так ссылку и не поменяли. При клонирование скачивается много лишнего.

Ссылку поменял на Github, но там тоже скачивается документация. Так что если нужна самая последняя версия, которой еще нет на сайте, то придется качать все.

А после команды инсталяции
$ sudo make install && sudo make modules_install
Как затем правильно удалить ядро и модули при этом не затронув модули старого ядра?
У меня ОС ROSA Linux Fresh.

admin, расскажи, реально интересно как удалить модули ничего не сломав

Только в виде тестов. Смотрите какое у вас оборудование, отключаете лишнее, если что-то не работает — включаете. Иначе никак.

нееее, речь идет про модули sudo make modules_install какой командой обратить эту установку?

Я нашел ответ если кому интересно будет, удаляете ядра которые вам не нужны больше, в директории /boot так же удаляете сопровождающие файлы для удаляемых ядер, а именно: и initramfs. Далее по поводу обращения в спять make modules_install: в директории /lib/modules просто удаляете папку с модулями соответствующую названием с названием ядра которое удаляете. И все, как будто ничего не было, другие ядра в целостности и сохранности и ничего не испорченно. Информация взята из журнала LinuxFormat за октябрь 2016 года, очень полезная вещь(не реклама, совет новичкам).

Тут есть один момент. Так как у нас уже есть рабочее ядро в установленной системе то, если не хотим выставлять все галочки в конфигурации нового ядра с нуля, берём готовый config либо из /boot либо из /proc:
# cp /boot/config-$( uname -r ) .config
# zcat /proc/config.gz > .config

В статью необходимо добавить заметку про libncurses5-dev .. у многих валится в ошибку при его отсутствии.. да и букву N можно выделить жирным шрифтом. ))))) я как то пол дня сидел понять не мог где взять пакет libcurses5-dev без буквы n =) . реально увидел ее только спустя 14 часов

Поставил себе Ubuntu 16.04 на виртуальную машину и скачал ядро 4.11. Начал собирать, столкнулся с проблемами при сборке. Может, кому поможет.

sudo apt-get install libssl-dev build-essential kernel-package libncurses-dev

С помощью этих установок на Ubuntu 16.04 у меня всё заработало и ядро начало собираться.

Админ, статья хорошая, мне не хватило только преднастроек самой системы для работы со сборкой ядра, если добавишь, будет статья от А до Я.

Так вот оно что! Мне при сборке с помощью make && make modules выдавало ошибку про отсуствие openssl, ядро 4.19.2. Всё заработало

А можно ли в принципе включить поддержку программного RAID NTFS? Ядро 4.9.

Читайте также:  Os astra linux orel dvd

Я софт рейд-1 делал с помощью mdadm

Как раз этой строчки мне и не хватало «sudo apt-get install libssl-dev build-essential kernel-package libncurses-dev».

Как вручную установить само ядро описанно cp arch/x86_64/boot/bzImage /boot/vmlinuz, а как в ручную установить модули для ядра?

хм, если это так просто то почему разрабы не ставят самое последнее ядро?
например на Linux Mint сейчас используется ядро 4.15 а на уже стабильное 4.17

Потому что меняется API ядра и разрабам надо кучу софта переписывать, чтоб корректно работало на новом ядре. не всё так быстро. Вы же не хотите получить какой-нибудь вечно глючный дистрибутив?

А что такое ядро ML?
По инструкции в одной из статей здесь обновляю ядро, но там можно выбрать только версию ML.
До этого в системе были только обычные версии ядра, без ML.

Допишите ключь -j , а то это на долго.

Я давно (очень давно) не компилировал ядра. еще со вторых версий.

есть вопорос: в случае если новое ядро не оживёт, можно ли будет загрузиться в том что было и заново начать сборки?

Раньше я руками правил граб для того чтобы было старое ядро.

Сейчас в grub есть дополнительные пункты меню со старыми ядрами или можно как и раньше исправлять конфиг перед загрузкой.

я уже ожидаю завершение компиляции. 5.2.8

странно как-то. раньше обязательно нужно было выкачивать заголовочные файлы, а сецчас и без их идёт компиляция ИЛИ они у меня уже есть.

Раньше, напрмер, для компиляции ядра 2.4.2 нужно было качать и распак linux-headers-2.4.2. Сейчас не так. И распоковку кодов ядра нужно было делать строго в /usr/src/

Ну понятно что времени не мало прошло со времен ядра 2,4, сейчас проще.

я уже ожидаю завершение компиляции. 5.2.8

странно как-то. раньше обязательно нужно было выкачивать заголовочные файлы, а сецчас и без их идёт компиляция ИЛИ они у меня уже есть.

Раньше, например, для компиляции ядра 2.4.2, нужно было качать и распак linux-headers-2.4.2. Сейчас не так. И распаковку кодов ядра нужно было делать строго в /usr/src/.

Ну понятно что времени не мало прошло со времен ядра 2,4, сейчас проще.

а обновлять grub не нужно?

Я уже всё скомпилил и установил — иду в ребут.

По сравнению с ядрами 2.4, ядра 4.15 и 5.2 в ДВА раза больше. Скорее всего из-за добавления нового железа и появления новых штучек (в очень обширном понятии этого слова).

Что я изменил в ядре? Полностью отключил «амаутер радиотранс» — я не собираюсь делать из своего компа радистанцию

Весь блютуз тоже полностью отключил — не было, нет, и не будет у меня никаких блютузов.

Ну и полазил туда-сюда по ядрённым настройкам, молодость вспомнил.
Размер нового ядра 5.2.8 получился 7,2МБ, а те что еще присутствуют (4.15.х) — по 7,9мб.

не получилось у меня загрузиться в новом ядре — но я уже понял где я натупил. Натупил я где-то около параметров usb-wakeup



ПРАВИЛЬНО НУЖНО НЕ sudo make install && sudo make modules_install, А

1 make modules_install — УСТАНОВИТЬ МОДУЛИ ЯДРА В /lib/modules.
2 make install — И ТОЛЬКО ПОТОМ УСТАНОВИТЬ config-5.2.8 initrd.img-5.2.8 vmlinuz-5.2.8 В ДИРЕКТОРИЮ /boot

всё. у меня всё получилось!

Исправьте ошибку ( sudo make install && sudo make modules_install) — эти команды перепутаны.

scripts/kconfig/conf —silentoldconfig Kconfig
CHK include/config/kernel.release
UPD include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
UPD include/generated/utsrelease.h
CC kernel/bounds.s
CHK include/generated/bounds.h
UPD include/generated/bounds.h
CHK include/generated/timeconst.h
/bin/sh: 1: bc: not found
make[1]: *** [Kbuild:41: include/generated/timeconst.h] Ошибка 127
make: *** [Makefile:1036: prepare0] Ошибка 2

Эта ошибка вылазиет,не могу ничего скомпилировать.Что делать?

Салют! Нашел статейку в поисковике. вроде как дельная. вроде как — потому что это будет первый опыт. в общем я на учебе для себя открыл проект в котором нужно собрать ядро. есть много условий и конфиги надо бы писать самому. но главный вопрос в следующем. я пока что не в полной мере понимаю смысл ядра и потому задам вопрос. возможно ли во время сборки ядра автоматически (например через конфиги) разделить доступное дисковое пространство на разделы с нужными файловыми системами, и разделом подкачки. или может нужно по началу поставить виртуалку, разбить ее на разделы а после собирать ядро. в общем не понятно немного так как без какой нить оболочки командной я не смогу физически выполнять команды так как в виртуалке даже образа нету. я думаю что настройку разделов нужно делать по старинке а после кидать ядро. Что вы скажете на это?

sudo make install && sudo make modules_install ТАК НЕ ПРАВИЛЬНО.

Подскажите нормальный ресурс, где научиться Линуксу.
(прошу прощения, вы тут все такие умные, я не раз пробовал освоить линукс. Не получается вообще. Перечитал всю инструкцию по установке на языке, часть на language, горы форумов, нашел даже книгу Linux полное руководство Колесниченка и Питера Алена, никак, что я не понимаю, подскажите пожалуйста. Суть в чем: Ставлю я Debian на lenovo s205, зачем? Решил стать программистом, а Тимофей Хирьянов шарашит проги в vim на Debian и показывает все это на youtube, чем я хуже?
В общем опыта у меня не много, но нельзя сказать что никакого, винды ставил я почти любые и почти без проблем. Из линухов ставил мандрейк, давно, убунту, года 2 назад на этот же ноут, игрался дня 3, с англицких сайтов понял, что у меня неправильный биос и неправильный винт, все заточено под windows 7 остальные системы его не любят. Но поставил, подробностей не помню, помню, что груб2 не становился, каким-то образом накнопал груб1 и все заработало.
В общем ставлю я Debian, качнул установщик debian-10.8.0-amd64-netinst залил его на флешку и понеслась. В первый раз все сломалось. Загружался я с флешки, линух увидел вайфай, подгрузлся и не смог установить grub. Ну да ладно, я ж не из пугливых, лезу в командную строку в установщике, пользуясь подсказками гугла пытаюсь вводить команды. sudo мы не понимаем, apt и все что рядом тоже. Что такое груб мы не знаем. Разговор немого с глухим. Ладно, курим инструкцию, учим матчась. Винда, как оказалось, тоже слетела. Пробую ставить дальше, другое, ливСД. Что то я делаю не так. Еще и вайфай перестал работать. Все его видят, проблем не обнаруживают, только вайфай никого не видит, блин. А проблеммы в мелочах. В рекомендациях — наберите sudo apt-гет перегет и все норм, а все не норм, часто даже папок таких нет и файлов. Че набирать, зачем. Или рекомендации, да просто подключите модуль. Блин, два часа ищу как его просто подключить, и что означают эти слова вообще, и ничего.)

слушай, а может компутеры эти и Тимофей Хирьянов, это все не твое?

Как узнать установлено ли ядро или нет после перезагрузки?

Вся статья из каких-то поломанных команд (с ошибками, не продуманные), начиная с первых же строк! ADMIN это ник или статус владельца сайта? В любом случае, выкладывать такие статьи, человеком опытным, позор! Тем более не допилить такую статью до ума за 5 лет! Тем более для такого популярного ресурса и уж тем более для столь важной темы, основы основ Linux(без которой дальше никто и никуда не двинет)! При учёте вполне вменяемых комментариев, с исправлениями и доработками!

Сергей прекрасно ответил. вот достойная помощь. Наверное Вы родились с ОЗУ не скажу где. Человек узнать хочет что-то, научиться чему-то. Его или не его решать только ему.