...
...

Инсталлятор ядра ik

Инсталлятор ядра ik

Каждый, кто хоть раз перекомпилировал ядро, знает, что на компиляцию и установку ядер стало уходить расточительно много времени. Над такой же проблемой задумался и Justin Piszcz. Так как других скриптов на тот момент не было, а было нужно что-то, что устанавливало бы ядро Linux и автоматически конфигурировало загрузчик без какого-либо вмешательства пользователя, он решил написать свой собственный скрипт установки ядра, назвав его Install Kernel (ik). Ik взаимодействует с ОС Linux, перемещая и редактируя файлы. Без использования ik при обновлении ядра время в основном тратится на перемещение файлов и обновление конфигурационных файлов. Скрипт ik состоит из трех основных блоков: проверка зависимостей, компиляция ядра, копирование файлов в соответствующие места и редактирование конфигурационных файлов загрузчика. Цель ik — оказать помощь либо людям, впервые устанавливающим ядро, либо тем, кто решил эффективнее использовать свое время.

Каждая операционная система имеет ядро какого-либо типа, ядро — это "сердце" операционной системы. Текущие версии ядра Linux начинаются с 2.4. Большинство пользователей либо перекомпилируют, либо просто обновляют ядра. Пользователю может потребоваться обновить используемое ядро с намерением добавить в него поддержку определенного вида устройств. Например, если появился USB (Universal Serial Bus) сканер, то можно сделать соответствующие изменения в файле конфигурации ядра, перекомпилировать и установить его. Причины для обновления ядра могут включать также улучшение подсистемы виртуальной памяти или устранение дефектов в безопасности. Вот основные причины, по которым пользователю может захотеться перекомпилировать ядро своей системы или обновить его.
Инсталлятор ядра работает с ОС Linux запуская последовательность функций, или групп команд, которые автоматизируют процесс компиляции (перекомпиляции) и установки. Он состоит из трех групп функций: проверка зависимостей, сборка ядра и копирование файлов, редактирование конфигурационных файлов загрузчика. Благодаря разбиению функций на три группы, гораздо легче поддерживать скрипт и вносить в него изменения. Инсталлятор ядра можно рассматривать и как программу, потому что программа делает проверки и соответственно выбирает путь выполнения. Обычно скрипт — это файл, который содержит определенное количество команд, не имеющих внутренней логики исполнения. Таким образом, в техническом смысле ik — это скрипт, но его можно назвать и программой.

Проверка зависимостей делается перед сборкой ядра для того, чтобы удостовериться в том, что текущая системная конфигурация не содержит внутренних противоречий. Всего выполняется семь проверок: проверка прав пользователя, наличие свободного дискового пространства, наличие правильных ссылок на файлы, проверка загрузчика, проверка конфигурации, проверка модулей. Первое — проверка прав пользователя: является ли пользователь суперпользователем, то есть имеет ли он возможность редактировать важные системные файлы, доступные только для root'а. Проверка свободного места на диске проводится, чтобы убедиться в наличии по крайней мере 200 свободных мегабайт. На сегодняшний день только исходные тексты ядра занимают около 150 мегабайт. При компиляции ядра может потребоваться еще 50 мегабайт или более. Таким образом, ik проверяет наличие 200 Mb свободного места на диске, чтобы при компиляции избежать риска нехватки дискового пространства. Далее, хотя это и не обязательно, но по стандарту требуется символическая ссылка /usr/src/linux на /usr/src/linux-x.y.z. Четвертая проверка — проверка наличия директории /boot, т.е. места, куда будут установлены файлы ядра Linux. Пятая проверка определяет начальный загрузчик, который будет использоваться. Для Linux существуют два основных загрузчика: LILO и GRUB. Здесь определяется, было ядро загружено LILO либо GRUB, в зависимости от того, какой загрузчик использовался последним. Далее соответствующим образом редактируется конфигурация выбранного загрузчика. Шестая проверка конфигурации "убеждается", что пользователь создал соответствующий файл конфигурации ядра, который будет использоваться при его сборке. Финальная проверка — проверка модулей: если поддержка модулей отключена, то скрипт это определит и изменит процесс инсталляции для установки ядра без поддержки модулей. Главная идея, заключенная в проверке зависимостей, — убедиться в том, что пользователь не сможет навредить системе, даже если сделает что-то неправильно.

Процесс инсталляции также состоит из семи функций. Обычно он содержит всего несколько команд. Однако из-за отличий, которые могут быть в пользовательских файлах конфигурации, каждая часть процесса сборки ядра должна быть проверена и при необходимости изменена. Первая функция производит проверку корректности установки зависимостей для всех файлов в директории с исходными текстами ядра. Вторая функция удаляет неактуальные объектные файлы и (или) файлы старого ядра. Следующая, третья функция — функция сборки ядра, она выполняет команды сборки ядра Linux. Далее функции четыре и пять создают и инсталлируют модули в случае, если пользователь определил их поддержку в файле конфигурации ядра. Шестая функция помещает ядро Linux и его карту системных зависимостей в загрузочный раздел диска. И, наконец, последняя функция устанавливает модульные зависимости для нового ядра, если таковые определены. Процесс инсталляции включает также небольшую проверку ошибок для каждой части сборки ядра. Если какая-либо часть процесса завершилась неудачей, работа скрипта будет прекращена без модификации конфигурационных файлов загрузчиков. Это важно, так как если процесс не прекратить, он может изменить конфигурацию загрузчика и таким образом сделать систему незагружаемой. Из-за широкого использования скрипта важно поддерживать все конфигурации Linux.

Конфигурация начального загрузчика и процесс установки, вероятно, наиболее важная часть инсталляции нового ядра. Неверно сконфигурированный начальный загрузчик может либо вообще не загружать систему, либо не загружать ее с новым ядром. Этот этап важен и потому, что на некоторых системах установлено два или более начальных загрузчика. Для этого процесса определены четыре функции. Первая функция использует загрузчик, определенный в ходе проверки конфигурации системы. Вторая функция определяет, где находятся файлы конфигурации LILO или GRUB. Далее, в зависимости от того, какой загрузчик найден, конфигурационные файлы LILO или GRUB редактируются автоматически sed'ом. Sed — это потоковый редактор, который может изменять файлы автоматически без вмешательства пользователя. Если бы требовалось вмешательство пользователя, то оно было бы представлено между определенными частями установки ядра. С помощь ik более эффективно используется время пользователя, так как для полной установки ядра требуется ввести только одну команду.
Инсталлятор ядра — полезный инструмент для тех, кто является новичком в Linux, кто часто пересобирает ядро или для тех, кто ценит свое время. Количество команд для инсталляции ядра уменьшается примерно с тринадцати до одной. Новички в Linux могут найти его весьма привлекательным, поскольку вся внутренняя работа автоматизирована, а если что-то не так, то в большинстве случаев ik объявит пользователю, что именно случилось и как исправить ошибку. С другой стороны, для опытных пользователей, не желающих тратить ценное время на инсталляцию нового ядра, он также может показаться удобным. Эффективность инсталлятора ядра в том, что он не требует вмешательства пользователя и уменьшает время, затрачиваемое на установку ядер, а также тем, что, облегчая обновление ядра, позволяет новичкам реализовать право выбора.
Инсталлятор ядра (ik (Install Kernel)) доступен на http://freshmeat.net/projects/ik и http://www.ramdown.com/war/ik .

По материалам Justin Piszcz
Подготовил X-Stranger
linux@hitech.by
Linux.HiTECH.BY



© Компьютерная газета

полезные ссылки
Аренда ноутбуков