CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
10.02.2012

Последние комментарии

Нужны ли Linux'у пользователи? (277)
24 Декабрь, 23:02
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 Декабрь, 22:53
Kubuntu Feisty (15)
24 Декабрь, 18:42
Один на один с Windows XP (3758)
24 Декабрь, 11:46

Каталог софта

Desktop
Internet
Internet-серверы
Безопасность
Бизнес/Офис
Игры
Мультимедиа
Наука
Операционные системы
Программирование
СУБД
Создание веб-сайтов
Утилиты

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Дистрибутивы :: Zenwalk

Zenbook. Загрузка и загрузчики

http://alv.me/

Страницы: предыдущая :: 1 :: 2 :: 3 :: 4 :: 5 :: следующая

Содержание

Загрузчик Lilo

Lilo (LInux LOader) — традиционный и самый старый из загрузчиков Linux, единственный, который был написан специально для загрузки ядра именно этой операционной системы с жесткого диска. Его функции как мультисистемного загрузчика вторичны. Но, тем не менее, он успешно справляется с загрузкой Windows любого рода, FreeBSD и, вероятно, других BSD-систем (последнее лично мной не проверялось).

Как уже было сказано, в Lilo реализуется схема прямого обращения к ядру Linux из программы в MBR. Либо, в случае выбора загрузки ОС, отличной от Linux — передача управления на BR несущего её раздела.

То есть в общем случае Lilo записывается в MBR загрузочного диска, откуда при старте машины опознает дисковые разделы — как первичные, так и расширенные. И если раздел несет на себе метку Linux native — он загрузит с него образ ядра Linux (изначально Lilo для этого и предназначался, его функции мультисистемного загрузчика вторичны). Если же тип раздела — иной, Lilo в состоянии «по цепочке» передать управление на его загрузочный сектор, и дальнейшее будет определяться тем кодом, что записан в последнем.

Код Lilo, вместе с конфигурацией его меню, целиком лежит в MBR диска (или BR загрузочного раздела). Так что тип файловой системы для него по большому счету безразличен — то есть он способен загрузить ядро Linux с любой из ее многочисленных нативных файловых систем (и даже с файловой системы DOS, FAT16, за более поздние её модификации не скажу за незнанием).

Для разделов «чуждых» операционок тип их файловой системы для Lilo безразличен тем более — ведь, как уже было сказано, он просто передает управление на их загрузочные сектора. Таким способом — по «цепочке» — Lilo может обеспечить загрузку DOS, Windows 3.X/9X/ME и Windows NT/2000/XP, а также FreeBSD.

Каждая ОС, предусмотренная для «загрузки» через Lilo (вы ведь понимаете, почему теперь я взял это слово в кавычки? — именно потому, что в полном смысле оно применимо только к загрузке Linux), представляет собой один из вариантов выбора в меню этой программы. Важно, что таким вариантом может являться не обязательно отдельная операционка, но и разные дистрибутивы Linux, лежащие на собственных разделах, и разные версии ядра одного и того же дистрибутива, и просто разные сборки ядра одной и той же версии. Поэтому Lilo очень часто применяют для тестирования ядер этой системы, скомпилированных с разными опциями, или ядер разрабатываемой ветки.

Варианты загрузки через Lilo описываются в его специальном конфигурационном файле — /etc/lilo.conf. Это простой текстовый файл, доступный для изменения в текстовом редакторе (при наличии полномочий суперпользователя, разумеется). Он содержит несколько секций — общую (global section), описывающую условия загрузки в целом, и отдельные — описание каждого варианта загрузки.

Общая секция обычно содержит такие строки:

  • имя устройства, с которого выполняется запуск Lilo (именно Lilo, а не Linux или иной ОС), для случая первого диска это будет выглядеть как boot=/dev/sda;
  • предписание выводить меню выбора вариантов загрузки — prompt;
  • время ожидания выбора вариантов загрузки — timeout=##, где ## — время в секундах;
  • имя варианта, загружаемого по умолчанию, которое должно соответствовать тому, что далее будет указано в секции этого варианта.
Собственно, обязательной является только первая из них. Если не указать умолчальный вариант, то таковым будет выступать описанный в первой из отдельных секций, без указания времени ожидания выбора он загрузится мгновенно, ну а без строки prompt мы просто не увидим меню выбора вообще.

Кроме указанных, в общей секции может присутствовать и другие строкм, определяющие видеорежим — плотность знаков чисто текстовой консоли или разрешение консоли графической (через VESA framebuffer — ныне последний вариант общеупотребим), а также устанавливающие всякие украшательства — расцветку меню, сплэш-картинку при загрузке и так далее.

Содержание отдельных секций различается в зависимости от того, предназначен этот вариант для загрузки Linux или иной ОС. В общем случае обязательными здесь будут две строки. Первая — это метка варианта (label), то есть его уникальный идентификатор в виде произвольной, но, желательно, мнемонически прозрачной последовательности символов, например: linux, freebsd, windows. Вторая же — имя устройства, несущего загружаемую ОС или его корневую систему (вроде /dev/sda1, /dev/sda5 и так далее).

Чтобы читатель мог представить себе это зримо, приведу свой вариант общей секции файла /etc/lilo.conf с некоторыми комментариями:

# Конфигурационный файл LILO
# сгенерирован программой 'liloconfig'
#
# Начало общей секции LILO

# Добавление загрузки сплэш-картинки
append="resume=/dev/sda2 splash=silent"

# Определение загрузочного диска
boot = /dev/sda

# Имя файла сплэш-картинки
bitmap=/boot/splash.bmp

# Предписание выводить меню
prompt

# Время ожидания выбора (в секундах)
timeout = 50

# Устанавлиет разрешение и глубину цвета
# графической консоли 1024x768x64k
vga = 791

# Конец глобальной секции LILO
К вопросу, каким образом всё это было получено, мы ещё вернёмся.

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

  • имя файла, содержащего образ ядра, с указанием пути относительно корневого каталога, заданного в одной из следующих строк, что обычно выглядит как image=/boot/bzImage или image=/boot/vmlinuz;
  • имя устройства, несущего корневую файловую систему, для случая первого раздела на первом диске это будет root=/dev/sda1;
  • указание монтировать корневую файловую систему при загрузке ядра в режиме «только для чтения» read-only; это не значит, что она станет недоступной для записи после загрузки — в процессе инициализации файловые системы будут перемонтированы в соответствии с их описанием в /etc/fstab; да и вообще эта строка не обязательна, и приведена здесь только для порядку.
Кроме того, в Linux-субсекции /etc/lilo.conf могут вносится и строки, определяющие видеорежим при загрузке (если его не определили в глобальной секции или требуется сделать его иным), и строки, передающие ядру некие параметры, вроде append="noapic"; раньше необходимость в них возникала довольно часто (например, для включения эмуляции протокола SCSI через IDE-шину, что требовалось для записи компакт-дисков), но нынче я уже и забыл, когда последний раз приходилось что-то подобное дописывать.

Опять-таки для наглядности приведу свои субсекции для разных вариантов загрузки (должен сказать, что у меня их обычно не богато):

# Конфигурация загрузочных разделов Linux

# Загрузка тестовой версии ядра
# Файл образа ядра
image = /boot/vmlinuz-2.6.29-rc3

# Устройство с корневой файловой системой
root = /dev/sda1

# Метка варианта для меню
label = Zen-2.6.29-rc3
read-only

# Загрузка штатной версии ядра
# Файл образа ядра
image = /boot/vmlinuz-2.6.27.10

# Устройство с корневой файловой системой
root = /dev/sda1

# Метка варианта для меню
label = Zenwalk

# Имя инициирующего RAM-диска
initrd = /boot/initrd.splash
read-only
В субсекции для загрузки тестовой версии ядра, думаю, всё понятно. А в субсекции для загрузки версии ядра штатной надо обратить внимание на два момента.

Во-первых, на строку с указанием файла образа ядра. Обычно здесь фигурирует файл /boot/vmlinuz — символическая ссылка на обычный файл вида /boot/vmlinuz-2.6.XX.YY для образа ядра конкретной версии. Однако, как будет сказано в главе о компиляции ядра, при «ядерных»" экспериментах возможно переопределение этой ссылки на файл образа новоустанавливаемой версии, и потому лучше всегда задавать его явным образом.

Во-вторых, во второй субсекции можно видеть указание на файл initrd. Это — образ так называемого инициирующего диска в оперативной памяти (RAM-диска), обеспечивающего универсальность загрузки одного и того же ядра на машинах с разными конфигурациями «железа» и разными типами корневой файловой системы. Подробнее этот вопрос также будет рассмотрен в «ядерной» главе.

Субсекции для вариантов загрузки ОС, отличных от Linux, как правило, не содержат ничего, кроме имени устройства несущего раздела и метки варианта:

other=/dev/sda1
label=dos
Lilo может использоваться и исключительно для загрузки единичной Linux-системы в сочетании с любым мультисистемным загрузчиком, отвечающим за загрузку систем прочих (BSD Loader, GRUB, вплоть до NT Loader). В этом случае в общей секции /etc/lilo.conf в качестве загрузочного устройства следует указать имя корневого раздела Linux-системы — ведь тогда Lilo будет стартовать уже с его загрузочного сектора (а не с MBR диска):
boot=/dev/hda1
В общей секции же секции можно раз и навсегда определить имя устройства корневой файловой системы. А далее возможны и отдельные секции для вариантов загрузки, но они будут описывать уже не самостоятельные ОС или дистрибутивы, а разные версии или сборки ядра, возможно — видеорежимы или параметры ядра.

Как уже было сказано, Lilo напрямую с файловыми системами не работает — даже с файловыми системами Linux. Конфиг же этого загрузчика лежит в каталоге /etc, представляющем собой часть файлового древа инсталлированной Linux-системы, которая при старте машины еще не загружена. Как же загрузчик узнает о собственной конфигурации?

Очень просто, о существовании собственного конфига в момент запуска Lilo и не подозревает. Необходимые данные для опознания загрузочных разделов и ядер на них прошиты в виде бинарного кода в загрузочном секторе — диска или раздела. И делается это одноименной командой — /sbin/lilo. При запуске она обращается к файлу /etc/lilo.conf, исходя из значения строки

boot=/dev/имя_устройства

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

Added Zen-2.6.29-3 *
Added Zenwalk
где имя_рек — метка (label) добавленного или модифицированного пункта меню. Из чего становится очевидным, что каждое изменение конфигурации загрузчика должно сопровождаться его переустановкой — перезапуском программы /sbin/lilo.

Теперь пора поговорить о том, откуда берётся файл /etc/lilo.conf, и каким образом его можно модифицировать.

Установка Lilo и создание его конфигурационного файла обычно происходит на стадии установки дистрибутива, если его инсталлятор предусматривает использование этого загрузчика, безальтернативно или по выбору (в этом случае обычно в качестве альтернативы выступает GRUB).




Страницы: предыдущая :: 1 :: 2 :: 3 :: 4 :: 5 :: следующая

Комментарии

Алексей Федорчук, Пнд 06 Апр 2009 09:57:22:
2 Дмитрий
Да, Вы правы. Я тут вычитал, что 2-й GRUB вообще не следует настраивать руками, а только каким-то своим конфигуратором.
Грустно...
Дмитрий, Пнд 06 Апр 2009 08:39:39:
В grub время ожидания задается в секундах.
Кстати, насчет отсутствия принципиальных изменений в настройке 1-й и 2-й версий. По-моему они таки есть. Я второй груб видел один раз в жизни и по старинке настроить его и поставить не получилось.
Юрий, Срд 18 Фев 2009 21:24:27:
Это было про страницу http://citkit.ru/articles/1239/2.html
Юрий, Срд 18 Фев 2009 21:23:23:
Не стыковочка.
В тексте "время ожидания выбора вариантов загрузки — timeout=##, где ## — время в миллисекундах;"

А в фрагменте файла "# Время ожидания выбора (в секундах)
timeout = 50"

Так в секундах или в миллисекундах всё таки? :)

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds