Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Цилюрик О.И. Linux-инструменты для Windows-программистов
Назад Общие принципы Вперед

Каталог загрузки (/boot) и коротко о загрузке

Возможный вид каталога /boot (Fedora 12):

$ ls /boot

config-2.6.32.9-70.fc12.i686.PAE      System.map-2.6.32.9-70.fc12.i686.PAE
grub                                  initramfs-2.6.32.9-70.fc12.i686.PAE.img
vmlinuz-2.6.32.9-70.fc12.i686.PAE

Другой вариант (CentOS 5.2):

$ ls /boot

config-2.6.18-92.el5		vmlinuz-2.6.18-92.el5
grub                            initrd-2.6.18-92.el5.img
System.map-2.6.18-92.el5

В обоих (сильно различающихся) системах весь набор файлов системы имеет одинаковый суффикс (вида показанного — 2.6.32.9-70.fc12.i686.PAE, обозначим его * в нашем изложении), набор файлов, относящихся к одному ядру, имеет фиксированный состав (4 основных файла):

  • config-* - текстовый файл конфигурационных параметров, при которых собрано текущее ядро, обычно он используется как отправная точка для последующих изменений в конфигурации, при новых сборках ядра.
  • vmlinuz-* - загрузочный файл образа системы, на этот файл конкретной версии, загружаемой по умолчанию, обычно устанавливается ссылка /boot/vmlinuz.
  • System.map-* - файл таблицы символов соответствующего ядра, это очень близко динамической таблице символов, формируемой в /proc/kallsyms, но это статическая таблица символов, известных на момент сборки ядра (без загружаемых позже модулей).
  • initrd-* или initramfs — это образ стартовой корневой файловой системы (монтируемой как / на время загрузки) в двух альтернативных форматах (их существует больше двух, но это самые используемые).

Во втором показанном варианте образ корневой файловой системы представлен в виде RAM-диска initrd-* (с поддержанием иерархической файловой системы). В первом примере образ корневой файловой системы представлен архивом формата CPIO (один из самых старых и традиционных форматов архивирования UNIX) initramfs-*, содержащим требуемые файлы просто линейным списком — это более поздний, более современный способ представления.

Если вы будете обновлять ядро (пакетным менеджером), или собирать и устанавливать новое ядро из свежих исходных кодов, то у вас в каталоге /boot появятся каждый раз новая группа файлов в том же составе, но с отличающим их суффиксом.

Зачем нужен образ стартовой корневой файловой системы? Система грузится загрузкой файла-образа /boot/vmlinuz. Если вы соберёте монолитное ядро, не требующее динамической загрузки модулей (и на ранних этапах система собиралась только так, и так она собирается для малых специальных конфигураций), то никакая корневая система вас не нужна. Но если это не так, то ядру могут потребоваться модули для их динамической загрузки, в том числе и модули драйверов дисковых и файловых систем... Но модули хранятся как загружаемые файлы в файловой системе ... для которой, возможно, ещё нет загруженных драйверов. Возникает проблема курицы и яйца... Образ стартовой корневой файловой системы и есть тот образ небольшой файловой системы, размещаемой полностью в RAM, в которой и лежат файлы модулей ядра. В конечном итоге, если вы не пересобираете ядро, то вам никогда не придётся беспокоиться о стартовой корневой системе, а если вы пересобираете ядро, то там предусмотрены средства создавать и образы стартовых файловых систем путём простых формальных действий.

Что такое виденный выше каталог /boot/grub? Linux давно эксплуатируется с вторичными загрузчиками, допускающими мультизагрузку (и выбор загружаемой системы из начального меню). Такие загрузчики Linux развиваются как независимые открытые проекты (независимые и от разработки ядра, и от разработки утилитного окружения GNU/FSF). Самыми известными загрузчиками являются LILO (более старый проект) и GRUB (наиболее активно применяемый на сегодня). Домашняя страница каждого из проектов легко находится в интернет для получения исчерпывающей информации. Вот в каталоге /boot/grub и находится ограниченное подмножество средств пакета GRUB, необходимое для реализации мультизагрузки в Linux (GRUB широко применяется в других операционных системах с другой структурой разделов диска и файловых систем, например, в: Solaris, BSD; все такие расширенные средства не включаются в /boot/grub). Вот как выглядит конфигурационный файл (меню загрузки и другое) мультизагрузчика grub:

$ ls -l /boot/grub/grub.conf

-rw------- 1 root root 907 Дек  3  2009 /boot/grub/grub.conf

$ ls -l /boot/grub/menu.*

lrwxrwxrwx 1 root root 11 Окт 29  2008 /boot/grub/menu.lst -> ./grub.conf

$ sudo cat /boot/grub/grub.conf

default=1
timeout=5
...
title CentOS (2.6.24.3-1.rt1.2.el5.ccrmart)
	root (hd1,5)
	kernel /boot/vmlinuz-2.6.24.3-1.rt1.2.el5.ccrmart ro root=LABEL=/ rhgb quiet
	initrd /boot/initrd-2.6.24.3-1.rt1.2.el5.ccrmart.img
...
title QNX 6.3
	rootnoverify (hd1,0)
	chainloader +1
title Windows 98SE
	rootnoverify (hd0,0)
	chainloader +1

В отличие от загрузчика LILO и других более ранних систем мультизагрузки, GRUB знает структуру файловой системы, и после редактирования grub.conf не требует какого-то специального прописывания в загрузчик диска (изменения сразу вступают в силу). Сам grub (программа) имеет достаточно развитую командную оболочку, что позволит вам, например, восстанавливать повреждённую загрузку с диска в диалоге с программой (которая, помимо прочего, содержит в себе обширную справочную информацию по работе с программой):

# which grub

/sbin/grub

# grub

Probing devices to guess BIOS drives. This may take a long time.

	GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported.  For the first word, TAB
lists possible command completions.  Anywhere else TAB lists the possible
completions of a device/filename.]
grub> help
blocklist FILE                        	boot
cat FILE                       		chainloader [--force] FILE
clear                          		color NORMAL [HIGHLIGHT]
configfile FILE                  	device DRIVE DEVICE
displayapm                       	displaymem
find FILENAME                    	geometry DRIVE [CYLINDER HEAD SECTOR [
halt [--no-apm]                  	help [--all] [PATTERN ...]
hide PARTITION                   	initrd FILE [ARG ...]
kernel [--no-mem-option] [--type=TYPE]  makeactive
map TO_DRIVE FROM_DRIVE                 md5crypt
module FILE [ARG ...]                   modulenounzip FILE [ARG ...]
pager [FLAG]                            partnew PART TYPE START LEN
parttype PART TYPE                      quit
reboot                                  root [DEVICE [HDBIAS]]
rootnoverify [DEVICE [HDBIAS]]          serial [--unit=UNIT] [--port=PORT] [--
setkey [TO_KEY FROM_KEY]                setup [--prefix=DIR] [--stage2=STAGE2_
Grub will attempt to avoid printing an terminal [--dumb] [--no-echo] [--no-ed  
terminfo [--name=NAME --cursor-address  testvbe MODE                            
unhide PARTITION                        uppermem KBYTES
vbeprobe [MODE]

Предыдущий раздел: Оглавление Следующий раздел:
Каталог устройств (/dev)   Монтирование файловых систем