- Kali Linux: сборка ядра
- 9.2. Перекомпиляция ядра Linux
- ▍Сборка собственного ядра и обновление системы
- ▍О руководстве The Debian Kernel Handbook
- 9.2.1. Подготовка и предварительные требования
- 9.2.2. Загрузка исходного кода
- 9.2.3. Настройка ядра
- ▍Работа с устаревшими файлами .config
- 9.2.4. Компиляция и сборка пакета
- ▍Очистка перед перестроением
- Итоги
- Kali Linux: упражнения по модификации пакетов, сборке ядра и созданию ISO-образов
- 9.5. Итоги
- 9.5.1. Модификация пакетов
- 9.5.2. Сборка ядра
- 9.5.3. Сборка собственных ISO-образов Kali
- Упражнения по работе с пакетами и по сборке ядра Kali
- Упражнение №1: создание форков пакетов Kali
- ▍Ответы к упражнению №1
- Упражнение №2: обновление пакета Kali
- ▍Ответы к упражнению №2
- Упражнение№3: пересборка ядра
- ▍Ответы к упражнению №3
- Упражнения по сборке Live-образов
- Упражнение №1: Особая Live-сборка Kali
- ▍Ответы к упражнению №1
- Упражнение №2: автоматический установщик минималистичной Live-сборки Kali
- ▍Ответы к упражнению №2
- Упражнение №3: сборка LIve-USB с несколькими постоянными хранилищами и с паролем самоуничтожения
- ▍Ответы к упражнению №3
- Итоги
Kali Linux: сборка ядра
В сегодняшнем материале публикуем перевод очередного фрагмента книги «Kali Linux Revealed». Из него вы узнаете о том, как модифицировать и собрать собственное ядро Linux. Этой теме посвящён второй раздел девятой главы.
9.2. Перекомпиляция ядра Linux
Стандартные ядра Kali включают в себя максимум функций и все доступные наборы драйверов. Сделано это для того, чтобы система могла работать на как можно большем количестве существующих конфигураций аппаратного обеспечения. Именно поэтому некоторые пользователи предпочитают перекомпилировать ядро для того, чтобы в нём было только то, что нужно именно им. У такого шага есть две причины. Первый — оптимизация потребления памяти, так как весь код ядра, даже если он не используется, занимает физическую память. Так как статически скомпилированные фрагменты ядра никогда не перемещаются в область подкачки, общее снижение системной производительности будет происходить из-за наличия встроенных драйверов и функций, которые никогда не используются. Вторая причина заключается в том, что уменьшение числа драйверов и механизмов ядра уменьшает риск возникновения проблем с безопасностью, так как используется лишь часть доступного кода ядра.
▍Сборка собственного ядра и обновление системы
Если вы решили собрать собственное ядро, вы должны понимать, что ответственность за последствия ложится на вас. Команда Kali не сможет обеспечить обновления безопасности для вашего ядра. Работая с ядром, предоставленным Kali, вы пользуетесь и обновлениями, подготовленных в рамках Debian Project.
Перекомпиляция ядра, кроме того, необходима в том случае, если вам нужно воспользоваться определёнными возможностями, которые доступны только в виде патчей (и не включены в стандартную версию ядра).
▍О руководстве The Debian Kernel Handbook
Команда по работе с ядром Debian поддерживает в актуальном состоянии руководство The Debian Kernel Handbook (оно, кроме того, доступно в виде пакета debian-kernel-handbook ). Это — подробная документация, посвящённая описанию большинства задач, связанных с ядром, и тому, как поддерживаются официальные пакеты ядра Debian. Если вам нужны подробности о сборке собственного ядра, в The Debian Kernel Handbook стоит взглянуть в первую очередь.
9.2.1. Подготовка и предварительные требования
Debian и Kali поддерживают ядро в форме пакета, подобное неудивительно, но это отличается от традиционного подхода к компиляции и установке ядра. Так как ядро находится под контролем системы управления пакетами, его можно без проблем удалить или развернуть на нескольких машинах. Более того, скрипты, связанные с этими пакетами, автоматизируют взаимодействие с загрузчиком операционной системы и генератором initrd .
Официальный исходный код Linux содержит всё, что нужно для сборки пакета ядра Debian, но сначала нужно установить пакет build-essential для того, чтобы обеспечить наличие инструментов для сборки пакетов Debian. Более того, для настройки ядра требуется пакет libncurses5-dev . И, наконец, пакет fakeroot позволяет создавать пакеты Debian, не имея административных привилегий.
Для установки вышеупомянутых пакетов воспользуйтесь следующей командой:
9.2.2. Загрузка исходного кода
Так как исходные коды ядра Linux доступны в виде пакета, вы можете их загрузить, установив пакет linux-source-version . С помощью команды apt-cache search ^linux-source можно вывести список последних версий ядра Kali. Обратите внимание на то, что исходный код, содержащийся в этих пакетах отличается от того, что публикует Линус Торвальдс и разработчики ядра. Как и все дистрибутивы, Debian и Kali применяют некоторое количество патчей, которые могут присутствовать в официальной версии Linux, а могут и не иметься там. Эти модификации включают в себя бэкпорты исправлений, функций и драйверов из более новых версий ядра, новые функции, которые ещё не полностью интегрированы в официальный код Linux, а иногда даже изменения, специфичные для Debian и Kali.
Ниже мы рассмотрим работу с ядром Linux версии 4.9, но наши примеры, конечно, могут быть адаптированы к нужной вам версии ядра.
Приводя этот пример, мы исходим из того, что установлен бинарный пакет linux-source-4.9 . Обратите внимание на то, что мы устанавливаем бинарный пакет, содержащий официальный исходный код, но не загружаем пакет с исходным кодом Kali, который называется linux.
9.2.3. Настройка ядра
Следующий шаг заключается в конфигурировании ядра в соответствии с вашими нуждами. Точная процедура зависит от целей того, кто занимается сборкой нового ядра.
Процесс сборки зависит от конфигурационного файла ядра. В большинстве случаев имеет смысл как можно меньше отклоняться от стандартного конфигурационного файла Kali, который, как и во всех дистрибутивах Linux, устанавливается в директорию /boot . В данном случае, вместо того, чтобы перенастраивать всё с нуля, достаточно сделать копию файла /boot/config-version . Версия должна быть точно такой же, как версия используемого в данный момент ядра, которую можно выяснить, воспользовавшись командой uname -r . Поместите копию в файл .config , расположенный в директории, содержащей исходный код ядра.
Кроме того, так как имеется стандартная конфигурация ядра в arch/arch/configs/*_defconfig , можно поместить выбранную конфигурацию туда, куда нужно, с помощью команды вроде make x86_64_defconfig (в случае с 64-битным ПК), или make i386_defconfig (для 32-битного компьютера).
В том случае, если вам не нужны изменения конфигурации, тут можно остановиться и перейти к разделу 9.2.4, «Компиляция и сборка пакета». Если же вам нужно внести изменения, или вы решили перенастроить всё с нуля, тогда надо будет заняться настройками. В папке с исходным кодом существуют специальные средства для настройки ядра. Для их использования понадобится команда вида make target , где target — это название одного из инструментов, описанных ниже.
Команда make menuconfig компилирует и запускает текстовой интерфейс, предназначенный для конфигурирования ядра (именно здесь нужен пакет libncurses5-dev ), который даёт доступ ко множеству настроек ядра, представленных в виде иерархической структуры. Нажатие на клавишу пробела позволяет изменить значение выбранной опции. Клавишей Enter «нажимают» на кнопки, которые выбирают в нижней части экрана. Кнопка Select в нижней части экрана применяется для перехода в выбранное подменю. Кнопка Exit закрывает текущий экран и осуществляет переход вверх по иерархии. Кнопка Help выводит более подробные сведения о выбранной опции. Клавиши-стрелки позволяют перемещаться по списку опций и экранных кнопок. Для того, чтобы выйти из конфигурационной программы, выберите команду Exit из главного меню. Затем программа предложит сохранить сделанные изменения, сделайте это, если вас всё устраивает.
Другие средства имеют похожие возможности, но оформлены они в виде графических приложений. Например, команда make xconfig использует графический интерфейс, основанный на Qt, команда make gconfig задействует GTK+. Первая из этих двух команд требует наличия libqt4-dev , в то время как вторая зависит от libglade2-dev и libgtk2.0-dev .
▍Работа с устаревшими файлами .config
Когда вы используете файл .config , который сгенерирован для другой (обычно — более старой) версии ядра, вам понадобится обновить и его. Сделать это можно с помощью команды make oldconfig , которая, в интерактивном режиме, задаст ряд вопросов о новых опциях конфигурации. Если вы хотите использовать ответы по умолчанию на все вопросы, можете воспользоваться командой make olddefconfig . Команда make oldnoconfig позволяет автоматически ответить отрицательно на все вопросы.
9.2.4. Компиляция и сборка пакета
▍Очистка перед перестроением
Если вы уже компилировали ядро в директории, с которой работаете, и хотите перестроить всё с нуля (например, из-за того, что значительно изменили конфигурацию ядра), вам нужно выполнить команду make clean для того, чтобы удалить скомпилированные файлы. Команда make distclean удаляет ещё больше сгенерированных файлов, включая файл .config . Поэтому, перед операцией очистки, сделайте на всякий случай резервную копию этого файла.
После того, как настройка ядра завершена, нам понадобится простая команда make deb-pkg . Она позволяет сгенерировать до пяти Debian-пакетов в стандартном формате .deb . Речь идёт о следующих файлах:
- Файл linux-image-version содержит образ ядра и соответствующие модули.
- Файл linux-headers-version содержит заголовочные файлы, требуемые для сборки внешних модулей.
- Файл linux-firmware-image-version включает в себя файлы прошивок, которые нужны некоторым драйверам (этого пакета может и не быть, если вы осуществляете сборку ядра из исходников, взятых из Debian или Kali).
- Файл linux-image-version-dbg содержит отладочные символы для образа ядра и его модулей.
- Файл linux-libc-dev включает в себя заголовки, относящиеся к некоторым библиотекам пространства пользователя, вроде GNU C ( glibc ).
Значение version в именах файлов задаётся в виде комбинации официальной версии (как задано в переменных VERSION , PATCHLEVEL , SUBLEVEL , и EXTRAVERSION в Makefile ), конфигурационного параметра LOCALVERSION и переменной окружения LOCALVERSION . При формировании версии пакета используется та же строка версии с присоединённым к ней номером ревизии, который регулярно увеличивается (и хранится в .version) , если только вы не переопределили этот номер с помощью переменной среды KDEB_PKGVERSION .
Для того, чтобы воспользоваться собранным ядром, остался лишь один шаг, который заключается в установке требуемых пакетов с помощью команды dpkg -i file.deb . Тут нужен пакет linux-image . Если имеются внешние модули ядра для сборки, понадобится установить пакет linux-headers . Так бывает, если установлены некоторые пакеты *-dkms (проверить это можно с помощью команды dpkg -l «*-dkms» | grep ^ii ). Другие пакеты в большинстве случаев не нужны.
Итоги
Сегодня мы поговорили о сборке собственного ядра для Kali Linux. Это процесс предусматривает загрузку исходного кода, выполнение необходимых модификаций, компиляцию, и, собственно, сборку. После этого новое ядро можно установить и пользоваться им. В следующий раз расскажем о создании Live-образов, которые можно использовать для загрузки системы с оптических носителей и флэш-дисков.
Уважаемые читатели! Если вы занимались сборкой собственных ядер Linux — просим поделиться опытом.
Источник
Kali Linux: упражнения по модификации пакетов, сборке ядра и созданию ISO-образов
Сегодня публикуем перевод завершения девятой главы книги «Kali Linux Revealed». Здесь будут подведены итоги таких тем, как модификация пакетов, сборка ядра и создание собственных ISO-образов. Кроме того, тут вы найдёте упражнения к этой главе, на которых, надеемся, будет интересно попробовать свои силы как тем, кто уже знаком с Kali, так и тем, кто только начал осваивать этот дистрибутив.
9.5. Итоги
В этой главе вы узнали о том, как модифицировать пакеты с исходным кодом, которые являются основными строительными блоками всех присутствующих в Kali приложений. Кроме того, мы рассказали о том, как настраивать, собирать и устанавливать собственные ядра Kali. Далее, мы поговорили об окружении live-build и о том, как создавать собственные ISO-образы Kali. Так же в этой главе речь шла о подготовке загрузочных флэш-носителей с поддержкой постоянных хранилищ информации, которые могут быть как зашифрованными, так и незашифрованными. Сейчас мы систематизируем основные положения этой главы и предложим вашему вниманию набор упражнений.
9.5.1. Модификация пакетов
Модификацией пакетов Kali обычно занимаются разработчики, и те, кто отвечает за поддержку и развитие системы, однако, может случиться так, что вам будет недостаточно возможностей, предоставляемых официальными сборками пакетов.
Поэтому знание того, как собрать модифицированный пакет, может быть очень полезным, особенно если вы хотите поделиться новым пакетом с кем-нибудь, развернуть его на множестве машин, или, после установки нового пакета, без проблем вернуть систему в предыдущее состояние.
Когда вам нужно модифицировать некую программу, весьма соблазнительно загрузить исходный код, внести в него изменения и использовать эту модифицированную версию. Однако, если программа нуждается в установке, после которой она доступна во всей системе (то есть, с использованием make install ), тогда такая установка загрязнит файловую систему файлами, неизвестными dpkg , что довольно скоро приведёт к возникновению проблем, которые не могут быть выявлены на основе анализа зависимостей пакетов. Кроме того, при таком подходе к модификации пакетов, тем, что получилось, сложнее делиться с другими пользователями.
В ходе создания модифицированного пакета общая последовательность действий всегда оказывается одной и той же: скачивание пакета с исходным кодом, извлечение его содержимого, внесение изменений, а затем — сборка пакета. Существует множество инструментов, способных решить каждую из этих задач.
Для того, чтобы приступить к пересборке пакетов Kali, сначала нужно загрузить пакет с исходным кодом, который включает в себя основной *.dsc-файл (Debian Source Control) и дополнительные файлы, на которые есть ссылки в основном файле.
Пакеты с исходным кодом хранятся на HTTP-зеркалах. Самый эффективный способ их загрузки заключается в использовании команды вида apt source source-package-name . Для её успешного выполнения требуется добавить строку deb-src в файл /etc/apt/sources.list и обновить индексные файлы командой apt update .
Кроме того, можно использовать команду dge t (из пакета devscripts ) для непосредственной загрузки .dsc-файла и сопутствующих ему материалов. В случае с пакетами, подготовленными специально для Kali, исходный код которых хранится в Git-репозитории на git.kali.org , загрузить исходный код можно с помощью команды вида git clone git://git.kali.org/packages/source-package (если после выполнения такой команды ничего загружено не будет, попытайтесь переключиться на ветку kali/master с помощью команды git checkout kali/master ).
После загрузки исходного кода установите пакеты, перечисленные в зависимостях сборки пакета с исходным кодом, с помощью команды apt build-dep ./ . Её необходимо запустить, из директории пакета, в которой находится исходный код.
Внесение изменений в пакет с исходным кодом заключается в выполнении необходимых действий из следующего списка:
- Первый шаг, который нужно выполнять всегда, заключается в изменении номера версии пакета. Это требуется для того, чтобы система могла отличить новый пакет от исходного. Делается это с помощью команды вида dch —local version-identifier или путём модификации других сведений о пакете с помощью утилиты dch .
- Применение патча с помощью команды вида patch -p1 или модификация серии патчей quilt .
- Настройка параметров сборки, которые обычно можно найти в файле debian/rules или в других файлах из директории debian/ .
После модификации пакета с исходным кодом можно собрать бинарный пакет с помощью команды dpkg-buildpackage -us -uc -b , вызываемой из директории с исходным кодом. Эта команда создаст неподписанный бинарный пакет. Полученный пакет потом можно установить с помощью такой команды: dpkg -i package-name_version_arch.deb .
9.5.2. Сборка ядра
У продвинутых пользователей системы иногда возникает потребность в перекомпиляции ядра Kali. Возможно, вам это понадобится для того, чтобы уменьшить размер стандартного ядра, которое, по умолчанию, содержит множество возможностей и драйверов. Сборка нового ядра может понадобиться для добавления в него нестандартных драйверов или возможностей, или для установки патчей ядра. Тут стоит знать о том, что неправильно настроенное ядро может сделать систему нестабильной, и вы должны понимать, что команда Kali не может обеспечить обновления безопасности для ядер, которые пользователи собирают самостоятельно.
В большинстве случаев для внесения изменений в ядро понадобится установить некоторые пакеты с помощью команды apt install build-essential libncurses5-dev fakeroot .
Команда apt-cache search ^linux-source должна вывести список последних версий ядра, созданных командой поддержки Kali. Команда вида apt install linux-source-version-number устанавливает сжатый архив с исходным кодом ядра в /usr/src .
Файлы с исходном кодом надо распаковать командой tar -xaf в директорию, отличающуюся от /usr/src (например, в
Когда приходит время настраивать ядро, стоит держать в голове следующие соображения:
- Если вы не являетесь пользователем с огромным опытом, сначала стоит заполнить конфигурационный файл ядра. Для этого лучше всего взять стандартную конфигурацию ядра, скопировав /boot/config-version-string в
/kernel/linux-source-version-number/.config . Как вариант, можно использовать команду make architecture_defconfig для построения подходящей для имеющейся архитектуры конфигурации.
Если выполнить команду make clean из директории с исходным кодом ядра, это приведёт к удалению ранее скомпилированных файлов. Команда make deb-pkg создаст до пяти Debian-пакетов. Файл, имя которого выглядит как linux-image-version.deb содержит образ ядра и связанные с ним модули.
Для того, чтобы использовать новое ядро, нужно установить необходимые пакеты с помощью команды вида dpkg -i file.deb . При этом не обойтись без пакета «linux-image». Пакет «linux-headers» нужно установить лишь в том случае, если имеются внешние модули ядра для сборки, что происходит в том случае, если у вас есть установленные *-dkms-пакеты (проверить, так ли это, можно с помощью команды dpkg -l «*-dkms» | grep ^ii ). Другие пакеты, в большинстве случаев, не используются.
9.5.3. Сборка собственных ISO-образов Kali
Официальные ISO-образы Kali собраны с использованием набора скриптов live-build , который даёт возможность полной автоматизации работ и настройки всех аспектов создания ISO-образов.
Для использования live-build нужно, чтобы система была обновлена до последней версии.
Конфигурационные данные Kali live-build можно загрузить из Git-репозиториев Kali с помощью команды apt install curl git live-build , после которой выполняется команда git clone git://git.kali.org/live-build-config.git .
Для создания обновлённого, но немодифицированного ISO-образа Kali, достаточно воспользоваться командой ./build.sh —verbose . Сборка займёт немало времени, так как в ходе выполнения этой операции будут загружены все необходимые пакеты. После завершения сборки новый ISO-образ можно будет найти в директории images . Если при выполнении этой команды воспользоваться опцией вида —variant variant , будет собран указанный вариант образа. Различные варианты определяются их конфигурационными директориями, имена которых выглядят как config/variant-* . Основной образ создаётся с помощью варианта gnome .
Есть несколько подходов в к настройке ISO-образа, которые заключаются во внесении изменений в конфигурационную директорию live-build :
- В Live-образ можно добавлять пакеты (или удалять из него существующие пакеты), модифицируя файлы package-lists/*.list.chroot .
- В образ можно включать собственные пакеты, помещая соответствующие .deb-файлы в директорию packages.chroot . Их установка может быть автоматизирована с помощью файлов preseed/*.cfg .
- В Live-файловую систему можно добавлять файлы, размещая из там, где они должны быть, в папке includes.chroot .
- В ходе процесса сборки образа с использованием chroot можно выполнять скрипты, устанавливая их как файлы hooks/live/*.chroot . Кроме того, скрипты можно вызывать во время загрузки с использованием созданного Live-образа. Их нужно установить по адресу, который выглядит как /usr/lib/live/config/XXXX-name , например, основываясь на конфигурационной директории includes.chroot .
- Для того, чтобы узнать подробности о конфигурировании и тестировании live-build , можно воспользоваться отличным руководством Debian Live System Manual.
Развернуть ISO-образ Kali на USB-флэшке довольно просто. При этом на подобном носителе можно настроить постоянное хранилище информации. Хотя этот процесс может показаться немного сложным, при ближайшем рассмотрении оказывается, что на переносном носителе довольно просто создавать зашифрованные и незашифрованные хранилища. Это значительно расширяет функционал подобных загрузочных носителей.
Теперь представляем вашему вниманию упражнения к данной главе.
Упражнения по работе с пакетами и по сборке ядра Kali
Упражнение №1: создание форков пакетов Kali
▍Ответы к упражнению №1
1. Сначала настроим систему на работу с пакетами с исходным кодом:
Теперь загрузим исходный код. Обратите внимание на то, что вы, если будете следовать этим инструкциям, можете столкнуться с другими версиями пакетов:
2. Изменим управляющий файл, включим в него собственные пакеты:
Изменим номер версии пакета таким образом, чтобы пересобранные пакеты можно было отличить от исходных:
И, наконец, соберём пакет:
Вот решение на Asciinema (текст из видео копировать нельзя).
Упражнение №2: обновление пакета Kali
▍Ответы к упражнению №2
1. Для начала загрузим Kali-версию SET:
Далее, загрузим самую свежую версию SET. Тут, как и в предыдущем упражнении, вы можете столкнуться с другими номерами версий:
Для того, чтобы не запутаться, переименуем самую свежую версию:
Скопируем всё, что имеет отношение к Debian:
Обновим номер версии:
2. Соберём пакет и проверим его работоспособность:
3. В случае с aircrack-ng всё делается похожим образом:
Упражнение№3: пересборка ядра
При сборке стандартного ядра Kali действует принцип включения в него максимального функционала. Это нужно для обеспечения поддержки как можно более широкого спектра аппаратных платформ.
- Установите инструмент для измерения производительности вроде likwid и запустите быстрый тест likwid-bench .
- Установите патч graysky2 «Kernel GCC patch» для того, чтобы оптимизировать ядро под ваш процессор.
- Перекомпилируйте ядро после установки патча и выбора своей модели процессора.
▍Ответы к упражнению №3
1. Установим likwid , запустим тест:
2. Патч для оптимизации ядра под конкретный процессор можно найти здесь. Установим зависимости, необходимые для выполнения перекомпиляции ядра. Тут, как обычно, вы можете столкнуться с другими версиями:
3. Извлечём исходный код ядра и скопируем туда, где он окажется, текущий конфигурационный файл:
Запустим menuconfig на непропатченной конфигурации ядра:
Перейдём по следующим пунктам меню и посмотрим тип процессора:
Выйдем из конфигурации без сохранения. Загрузим оптимизирующий патч и пропатчим ядро:
Теперь снова войдём в раздел конфигурационной программы, позволяющий настраивать тип процессора. Тут должны появиться новые пункты:
Выберем необходимый тип процессора, сохраним конфигурацию и выйдем из программы. Теперь соберём ядро:
Улучшились ли показатели тестирования? Как ощущения? Может, получилось что-то вроде этого?
Упражнения по сборке Live-образов
Упражнение №1: Особая Live-сборка Kali
В одной из серий Mr. Robot Анжеле нужно загрузиться с USB-диска Kali и, для того, чтобы взломать систему, ввести несколько команд. Можете ли вы собрать такой ISO-образ Kali, который позволит ей решить задачу быстрее? Автоматизируйте работу так, чтобы после загрузки Kali Анжеле не пришлось бы касаться клавиатуры.
▍Ответы к упражнению №1
Для решения этой задачи надо собрать для Анжелы Live-ISO и отдать его ей.
Упражнение №2: автоматический установщик минималистичной Live-сборки Kali
▍Ответы к упражнению №2
Набор live-build используют всю структуру директорий в качестве входных данных для своей конфигурации. Мы храним эту конфигурацию и некоторые вспомогательные скрипты в Git-репозитории live-build-config . Мы будем использовать этот репозиторий как базу для сборки специально настроенных образов. Установим необходимые пакеты и загрузим Git-репозиторий с конфигурацией Kali live-build:
Создадим список включаемых в образ пакетов, начиная с salt-minion :
Создадим директорию для включаемых файлов и поместим там наш preseed.cfg :
Добавлять файлы в ISO-образ можно, размещая их в конфигурационной директории includes.binary . Например, это install.cfg (опции загрузочного меню):
Туда же можно добавить файл isolinux.cfg с опциями загрузки:
Добавим в ISO-образ и SSH-ключ:
Упражнение №3: сборка LIve-USB с несколькими постоянными хранилищами и с паролем самоуничтожения
Создайте Live-флэшку с несколькими постоянными хранилищами информации и включите пароль самоуничтожения LUKS.
▍Ответы к упражнению №3
Здесь мы предполагаем, что работа начинается с USB-флэшки, подготовленной в соответствии с инструкциями, приведёнными в разделе 2.1.4., «Копирование образа на DVD-ROM или на USB-флэшку». Подразумевается, что диск имеет размер, достаточный для хранения ISO-образа (около 3 Гб) и данных, которые планируется поместить в постоянное хранилище. Кроме того, мы исходим из предположения, что Linux видит флэш-диск как /dev/sdb , и что он содержит лишь два раздела, которые являются частью стандартного ISO-образа ( /dev/sdb1 и /dev/sdb2 ). Считаем важным напомнить, что выполняя действия, которые будут описаны ниже, нужно проявлять осторожность, так как переразбив не тот диск можно потерять важные данные.
Теперь подключаем флэшку к компьютеру (или к виртуальной машине) и выясняем имя устройства с использованием команд dmesg или fdisk . Как уже было сказано, предполагается, что это /dev/sdb . Если какие-то разделы были смонтированы автоматически, их надо отмонтировать. Теперь запускаем процесс разбиения на разделы:
Здесь мы будем создавать два хранилища. Одно будет зашифрованным, другое — обычным.
Команда mkpart primary 2794 5000 создаёт первый новый раздел (если посчитать их все, то он будет третьим), который начинается с 2794 Мб, и заканчивается на 5000 Мб. Мы используем именно это значение для указания начала раздела, так как образ Kali занимает на устройстве 2794 Мб. Возможно, вам придётся изменить эти значения для того, чтобы привести их в соответствие с размерами вашего ISO-образа или флэш-диска.
После создания двух новых разделов, можно приступать к настройке их в роли постоянных хранилищ информации в нашем окружении загрузки Kali. Мы начинаем этот процесс, используя имя sdb3 для незашифрованного хранилища. Мы сначала форматируем раздел, потом даём ему метку persistence . Метка должна быть именно такой, это очень важно. Если этот шаг пропустить или назначить разделу другую метку, постоянное хранилище информации работать не будет!
Затем создаём файл persistence.conf , который указывает на то, какие папки нам нужно сохранить в постоянном хранилище. В данном случае мы собираемся сохранить там всю файловую систему:
Далее, настраиваем зашифрованное постоянное хранилище. Для этого зашифруем раздел с использованием cryptsetup , отформатируем его, назначим метку, проверим, всё ли сделано правильно и создадим файл persistence.conf так же, как делали это выше:
Вот и всё! Теперь с USB-диска можно загрузиться и выбрать, как именно продолжать загрузку: без хранилища, с незашифрованным хранилищем, или с зашифрованным хранилищем.
Для того, чтобы добавить пароль самоуничтожения (LUKS Nuke) к зашифрованному разделу, нужно выполнить следующую команду:
Итоги
На этом мы завершаем публикацию перевода 9-й главы книги книги «Kali Linux Revealed». Надеемся, эти материалы помогли всем желающим освоить сборку пакетов и ядер Kali, а также подготовку собственных ISO-образов системы.
Уважаемые читатели! Расскажите, удалось ли вам самостоятельно выполнить упражнения к этой главе?
Источник