LXF156:Dracut?
|
|
|
Dracut? Что за штука…
В
И что же это такое?
О
Dracut (http://dracut.wiki.kernel.org) – это инструмент для сборки initramfs, не зависящий от дистрибутива Linux.
В
Увы, после вашего ответа я понимаю еще меньше. Что вы имеете в виду?
О
Что Dracut – это новый инструмент для создания специальных программ и файлов загрузки, совместимый со всеми дистрибутивами GNU/Linux.
В
Ага, по крайней мере стало ясно, о чем речь. А что это за initramfs?
О
Позвольте мне уточнить кое-что, прежде чем отвечать. Вы ведь помните, что Linux – это только ядро, а функции ядра ограничены, да?
В
Э-ээ... Ну да, конечно! Ядро Linux...
О
...это базовое ПО, отвечающее только за выполнение самых основных, низкоуровневых действий внутри компьютера, от запуска системных драйверов до диспетчеризации процессов.
В
Вот, теперь понятно... Так как же он работает?
О
Запуск ядра Linux начинается с нахождения и монтирования файловой системы, после чего определяется первая запускаемая программа. Для этого предусмотрена небольшая функция ‘init’, которая отвечает за порядок загрузки всех последующих функций; в ее обязанности входит также их нахождение (потому что программы, в принципе, могут быть разбросаны по разным дискам, или вообще располагаться на другом сервере).
В
Но ведь это не такая уж сложная задача. Не может разве ядро выполнять ее самостоятельно?
О
В теории, может. Но на самом деле, задача-то не из простых (по крайней мере, для ядра), если брать в расчет все возможные варианты. Сегодня ведь Linux работает практически на всем – от стандартных ПК до мобильных телефонов и автомобильных мультимедиа-систем. Кроме микропроцессора, эта исходная файловая система может находиться на старых добрых жестких дисках, USB-брелках, сетевых драйверах, flash-чипах или RAID-массивах. Да даже на двух одинаковых машинах файловые системы могут иметь совершенно разную конфигурацию.
В
А что значит «совершенно» разные? Помимо типа, то есть ext3 или там ext4, чем еще они могут отличаться?
О
Ну, для начала, они могут быть сжатыми или зашифрованными, если говорить о самых частых случаях. А значит, ядро должно включать не только необходимые программные инструменты доступа к ним, но, во втором случае, еще и пароль. Наконец, в нашу эру ноутбуков, Linux также должен уметь работать в спящем режиме – а именно, возвращаться в исходное состояние после блокировки.
В
ОК, понятно: вариантов может быть много.
О
Именно. По крайней мере – столько, что учесть их все исключительно в параметрах командной строки ядра будет очень трудно. Кроме того, ядро ведь такая хитрая штука, что его практически невозможно заставить выполнять все необходимые действия для нахождения корневого элемента. Именно это имеют в виду некоторые разработчики, говоря, что ядро создано, чтобы принимать команды и запросы, а не решения.
В
И как с этим справляется initramfs? То есть, ЧТО вообще такое initramfs?
О
Исходя из самого названия, это маленькая «стартовая файловая система», впервые появившаяся в версии ядра Linux 2.6, загружаемая в ОЗУ и там же запускающаяся. Задача initramfs – хранить, в правильной локализации и приемлемой для ядра конфигурации, нужную версию инициализирующей программы, а также драйвера и инструменты, необходимые для ее загрузки.
Как только нужное приложение найдено и запущено, никаких дополнительных действий ядро не производит. И именно эта инициализирующая программа, внутри initramfs, найдет и действительную файловую систему – ту, на которой расположен ваш дистрибутив GNU/Linux – и запустит ее.
В
Но разве файловая система – не неизменяемая структура данных? Как она может быть в ОЗУ?
О
Ну, вообще-то, файловая система – это обычный набор байт, который можно скопировать куда угодно – она структурирована таким образом, чтобы хранить и обеспечивать быстрый доступ к папкам и файлам.
Однако чтобы пользоваться ею даже из ОЗУ, initramfs можно построить как реальный диск, который – опустим технические подробности – просто не нуждается в драйвере.
В
И вы упомянули, что initramfs использовалась и до появления Dracut, да?
О
Верно. Причем так активно, что за эти годы каждый дистрибутив GNU/Linux обзавелся собственным инструментарием для генерации таких файловых систем.
В
Вернемся к Dracut: что он добавил в общую картину?
О
Dracut – одновременно и инструментарий, и новый метод, основанный на событиях Udev, для создания initramfs общего назначения. Он был создан в 2009 году, дабы преодолеть ограничения старых систем, ориентированных на конкретный дистрибутив.
В
Стоп! Опять вы швыряетесь мудреными словами. В смысле, что это — Udev?
О
Udev – это демон, который создает, именует и удаляет файлы устройств – то есть программный интерфейс к аппаратным элементам для всех систем GNU/Linux.
В
А зачем для этого демон?
О
Главным образом, для того, чтобы иметь универсальный способ получения сохраняемых имен устройств, даже для съемных дисков. Действия Udev сообщаются всем программам, которых это касается.
В
Спасибо. Так зачем был запущен Dracut? В чем его цель?
О
Для конечных пользователей главным результатом внедрения Dracut будет сокращение времени загрузки. Он призван облегчить построение и использование действующих корневых файловых систем; а об initramfs, со всеми ее недостатками, как можно скорее забыть.
В
А разработчики и поддержка? Что выиграют они?
О
Если в двух словах, будет меньше кода для запуска и отладки и больше эффективных способов этого достичь. Пока в каждрм дистрибутиве собственный инструментарий для создания initramfs, потенциальных рисков очень много. А в основу Dracut положена идея о том, чтобы вытеснить из дистрибутивов поколение initramfs, тем самым упростив работу тех, кто их обслуживает.
В
И как же Dracut это удастся?
О
За счет упрощенной универсальной инициализирующей программы, которая будет использовать единый udev-инструмент для всех методов установки и параметров загрузки, в составе более типичного и обобщенного initramfs.
Еще одна причина, по которой Dracut должен облегчить жизнь разработчиков, является наличие в нем диагностической оболочки. Он также включает и возможности для создания «ловушек [hooks]» – то есть способов запуска произвольных команд.
В
Но как эта универсальная инициализирующая программа справится со всеми вариантами?
О
Благодаря доступности udev в новой initramfs, Dracut ухитряется перевернуть все прежние процедуры с ног на голову. Вместо того, чтобы пичкать initramfs в каждом дистрибутиве своими собственными премудростями для обнаружения оборудования, программа инициализации в Dracut заставляет udev создавать файлы устройств.
В
Имеете в виду, что это происходит в процессе обычных действий, когда я вставляю флэшку в компьютер?
О
Именно так.
В
А что потом?
О
Загрузка практически завершена. Как только файл устройства с действующей корневой файловой системой создан, ядро «перескакивает» на него, а initramfs запускает инициализирующую программу.
В
А может Dracut создавать initramfs специально под мою систему?
О
Может. Легко, например, уменьшить образ, добавив в скрипт Dracut параметр -H. Тогда на вашем жестком диске останется initramfs, которая не будет загружаться на другом компьютере, но часто ли это проблема?
В
А если я захочу вместо этого ускорить загрузку?
О
Тогда настройте соответствующие параметры командной строки в Dracut, определив параметры вашей системы и параметры загрузки.
Если вы это сделаете, Dracut подгонит под эту информацию соответствующие настройки ядра и другие индивидуальные параметры, чтобы создать initramfs, изначально знающую, где находится файловая система.