<*/M> MSDOS fs support [CONFIG_MSDOS_FS]
<*/M> VFAT (Windows-95) fs support [CONFIG_VFAT_FS]
```
### XFS
XFS — высокопроизводительная 64-битная журналируемая файловая система, созданная компанией Silicon Graphics для собственной операционной системы IRIX. 1 мая 2001 года Silicon Graphics выпустила XFS под GNU General Public License (Linux версия 2.2). XFS отличается от других файловых систем тем, что она изначально была рассчитана для использования на дисках большого объёма (более 2 терабайт).
```
File systems --->
<*/M> XFS filesystem support [CONFIG_XFS_FS]
```
### LVM
При необходимости включите поддержу LVM.
LVM — это метод распределения пространства жёсткого диска по логическим томам, размер которых можно легко менять, в отличие от разделов.
С LVM пространство жёсткого диска или набора дисков распределяется по физическим томам. Физический том не может располагаться более чем на одном диске.
Физические тома собираются в группы логических томов, за исключением раздела /boot. Раздел /boot не может находиться в группе логических томов, так как в этом случае загрузчику не удастся его прочитать. Если корневой раздел (/) находится на логическом томе, создайте отдельный раздел /boot вне группы томов.
```
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD]
<*/M> Device mapper support [CONFIG_BLK_DEV_DM]
<*/M> Crypt target support [CONFIG_DM_CRYPT]
<*/M> Snapshot target [CONFIG_DM_SNAPSHOT]
<*/M> Thin provisioning target [CONFIG_DM_THIN_PROVISIONING]
<*/M> Mirror target [CONFIG_DM_MIRROR]
Kernel hacking --->
Generic Kernel Debugging Instruments --->
[*] Magic SysRq key [CONFIG_MAGIC_SYSRQ]
```
### Cryptographic API
Cryptographic API предлагает богатый набор криптографических шифров, а также другие механизмы и методы преобразования данных для их вызова. Cryptographic API предоставляет различные вызовы API для следующих типов шифров:
- Симметричные шифры
- Шифры AEAD
- Дайджест сообщения, включая дайджест сообщения с ключом
- Генерация случайных чисел
- Интерфейс пользовательского пространства
```
Device Drivers --->
[*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD]
<*/M> Device mapper support [CONFIG_BLK_DEV_DM]
<*/M> Crypt target support [CONFIG_DM_CRYPT]
Cryptographic API --->
<*/M> XTS support [CONFIG_CRYPTO_XTS]
<*/M> SHA224 and SHA256 digest algorithm [CONFIG_CRYPTO_SHA256]
<*/M> AES cipher algorithms [CONFIG_CRYPTO_AES]
<*/M> User-space interface for symmetric key cipher algorithms
[CONFIG_CRYPTO_USER_API_SKCIPHER]
For tests:
<*/M> Twofish cipher algorithm [CONFIG_CRYPTO_TWOFISH]
```
### Драйверы устройств
В разделе `Device Drivers` - нужно пройтись по разделам и включить драйвера для своего оборудования - нестандартные жёсткие диски, мышки, USB устройства, веб-камеры, Bluetooth, Wi-Fi адаптеры, принтеры и т. д.
Посмотреть, какое оборудование подключено к вашей системе можно командой:
```bash
lspci
```
## Сборка
Когда все параметры настроены, можно приступать к сборке.
Выполните комадну:
```bash
make
```
?> Обратите внимание, что процесс сборки ядра может проходить длительное время (от 4.4 до 66.0 SBU). Это во многом зависит от установленных параметров конфигурации.
Установите модули ядра:
```bash
make modules_install
```
## Установка
После завершения сборки необходимо выполнить еще несколько шагов. Некоторые
файлы должны быть скопированы в каталог `/boot`.
Путь к образу ядра зависит от используемой платформы. Имя файла, указанное ниже, может
иметь произвольное наименование, на ваш вкус, но имя файла должно начинаться с `vmlinuz`
для обеспечения совместимости автоматической настройки процесса загрузки. При выполнении следующей команды будет считаться, что используется
архитектура x86:
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-{{ package.version }}-my-kernel
`System.map` файл, внутри которого находится символьная таблица адресов функций и
процедур, используемых ядром операционной системы Linux. В этой таблице перечислены
имена переменных и функций и их адреса в памяти компьютера. Эта таблица весьма полезна
при отладке ядра в случае Kernel panic или Linux oops. System.map генерируется при компиляции
ядра. Выполните следующую команду для установки файла System.map :
cp -iv System.map /boot/System.map-{{ package.version }}
Файл конфигурации ядра `.config`, полученный в результате настройки `make menuconfig`
содержит в себе все опции конфигурации скомпилированного ядра. Хорошей идеей будет
оставить этот файл для будующей работы:
cp -iv .config /boot/config-{{ package.version }}
Для облегчения обновления ядра создайте символическую ссылку:
ln -svf vmlinuz-{{ package.version }}-my-kernel /boot/vmlinuz
При обновлении ядра будет достаточно установить новую версию и обновить символическую ссылку.
## Установка документации
Установите документацию, если она необходима
install -d /usr/share/doc/linux-{{ package.version }}
cp -rv Documentation/* /usr/share/doc/linux-{{ package.version }}
## Настройка каталога с исходным кодом
Важно отметить, что файлы в каталоге исходных кодов ядра не принадлежат пользователю
`root`. Всякий раз, когда пакет распаковывается от пользователя `root` (как это и выполнялось
внутри среды `chroot`), файлы имеют те идентификаторы пользователя и группы, которые были
назначены при распаковке. Обычно это не вызывает проблем для других устанавливаемых
пакетов, так как каталог с исходными кодами удаляется после установки пакета. Однако
исходный код ядра Linux часто сохраняется в течение длительного времени. Из-за этого существует вероятность того, что идентификатор пользователя, используемый при распаковке,
будет назначен другому пользователю. В таком случае этот пользователь будет иметь доступ на
запись в этот каталог.
?> Во многих случаях конфигурация ядра должна быть обновлена для пакетов, которые
будут установлены вами позднее. В отличие от других пакетов удалять дерево исходного
кода ядра не требуется после компиляции и установки.
Если вы планируете оставить каталог с исходным кодом ядра, выполните команду:
chown -R 0:0 /usr/src/linux-{{ package.version }}
!> Заголовочные файлы, расположенные в системном каталоге `/usr/include`, должны
всегда быть те, которые использовались при компиляции `Glibc`. Их никогда не следует заменять на чистые
заголовочные файлы ядра или любые другие подготовленные заголовочные файлы.
## Настройка порядка загрузки модулей Linux
Обычно модули Linux загружаются автоматически, но иногда требуется определённый порядок.
Программа, которая загружает модули, `modprobe` или `insmod`, использует файл `/etc/ modprobe.d/usb.conf` как раз для этой цели. Этот файл должен быть создан так, что,
если USB-драйверы (`ehci_hcd`, `ohci_hcd` и `uhci_hcd`) были созданы в виде модулей, то они будут
загружены в требуемом порядке: `ehci_hcd` должен быть загружен до `ohci_hcd` и `uhci_hcd` для того,
чтобы избежать предупреждений во время загрузки.
Создайте новый файл `/etc/modprobe.d/usb.conf`, выполнив следующую команду:
[filename](../scripts/modprobe.md ':include')