Библиотека сайта rus-linux.net
Цилюрик О.И. 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) | Монтирование файловых систем |