Что такое загрузка, или «начальная
загрузка» - это та глубоко таинственная последовательность операций,
выполняемых компьютером между его включением и выводом приглашения войти в
систему. За это время куча непонятных сообщений проплывает по экрану, но обычно
пользователи их игнорируют, и большинство дистрибутивов Linux скрывает их за
красивым экраном с обнадеживающим процесс-индикатором. И это замечательно –
пока работает. В данной статье мы рассмотрим процесс загрузки более подробно: в
частности, выясним, что может пойти неправильно и как диагностировать и
устранить проблему.
Проникаемся проблемой
Совет: «При устранении
неисправности первым делом надо понять, как система должна работать. Вторая
важная вещь – точно представить, что система пыталась сделать, когда
неисправность возникла».
Помня об этом, взглянем на загрузку Linux.
Знание нормальной последовательности событий и установление, как далеко она
зашла перед возникновением проблемы, являются ключевыми для диагностики и
исправления проблем загрузки. Рисунок 1 показывает нормальную
последовательность событий (зеленые стрелки) и указывает на некоторые возможные
пути неудачи (красные стрелки).
Рис.
1: Нормальный порядок событий загрузки Linux
Знакомимся с загрузкой
поближе
Загрузка – операция многоступенчатая. При
включении компьютера контроль в начале переходит к программе, называемой BIOS,
которая хранится в постоянной памяти на материнской плате. BIOS выполняет
тестирование оборудования и разведку окрестностей на предмет устройств для
загрузки, и выводит экран конфигурации, позволяющий установить порядок поиска
загрузочных устройств; в современных BIOS их диапазон весьма широк, в том числе
PXE-загрузка с сетевого сервера. Но в данной главе мы рассмотрим только загрузку
с жесткого диска.
Затем BIOS считывает главную загрузочную
запись (Master Boot Record, MBR) с выбранного устройства и запускает ее. (Не
найдя MBR, BIOS выведет сообщение вида «Нет операционной системы» и впадет в
полный ступор.) MBR занимает первый сектор диска. Он содержит таблицу разделов
(64 байта) и очень короткую (446 байт) программу первичной загрузки, или 'stage
1'. Этот загрузчик всего-навсего выводит на экран слово Grub и передает
эстафету загрузчику второй стадии, используя «карту блоков», внедренную в MBR
(карта содержит номера блоков, где находится загрузчик 'stage 2'). Здесь
подразумевается, что вы используйте загрузчик Grub. Существует также более
старый загрузчик Lilo, но Grub «умнее» и используется в большинстве современных
дистрибутивов Linux. Второй этап работы загрузчика Grub по сути дела
«полуторный», и если вы посмотрите в директории /boot/grub, то увидите там файлы, содержащие различные его
варианты, с именами вида e2fs_stage_1_5 и reiserfs_stage_1_5. Каждая из этих
программ способна получить доступ к фалам по их имени, используя определенный
формат файловой системы. e2fs_stage_1_5 может
читать файловые системы ext2 и ext3, reiserfs_stage_1_5
– файловую систему reiser, и т.д. Grub способен обратиться к файлам по их
имени во время начальной загрузки (перед запуском Linux), и этим он отличается
от Lilo. Программа «полуторного» этапа загружает Grub stage 2, который
значительно больше. На этом этапе считывается файл конфигурации Grub (обычно /boot/grub/menu.lst или /boot/grub/grub.conf) и, на основе
содержащихся там записей, выводится меню выбора операционных систем для
загрузки. Если Grub не может найти свой файл конфигурации, он переходит в
интерактивную командную строку, позволяющую ввести команды Grub вручную.
Типичное содержание записи menu.lst такое:
Первая строчка просто содержит текст, который
появится в меню загрузки. Следующие за ней строки содержат команды, которые
Grub должен выполнить, если вы выберите этот пункт меню. Строка root
подсказывает Grub, где искать корневую файловую систему. У Grub своя система
именования разделов диска, отличная от системы, принятой в Linux, что сбивает с
толку. На языке Grub hd0 означает первый диск – а на обычном ПК с IDE-дисками это будет
ссылка на Linux-устройство /dev/hda,или, на более свежих дистрибутивах, /dev/sda1. На языке Grub (hd0,0) ссылается на
первый раздел этого диска – в Linux это будет /dev/hda1 или /dev/sda1.
Строка kernel
определяет файл, который Grub должен запустить как ядро Linux; в конце этой
строки вы увидите несколько дополнительных параметров загрузки, передаваемых
ядру. Подробнее об этом чуть позже. Строка initrd определяет файл ‘initial RAM
Disk’ – образ файловой системы, которая будет использоваться ядром как
загрузочная. Grub также отвечает за загрузку его в память. если Grub не может
найти ядро или образ ram-диска, он выводит Error 15: File not found (Ошибка 15:
Файл не найден) и останавливается.
Как
только ядро стартует, оно монтирует файловую систему с жесткого диска. Имя
раздела, содержащего эту файловую систему, передается ядру как параметр,
который вы видели в файле menu.lst
выше. Монтирование корневой файловой системы – ключевая точка процесса
загрузки, и если вы пытаетесь точно определить проблему, жизненно важно
выяснить, удалось ли ядру это сделать. Сбой в монтировании файловой системы,
как правило, приводит к «панике ядра» [kernel panic], хотя некоторые системы
просто зависают. Если же ядро благополучно смонтировало корневую файловую
систему, оно создает одиночный процесс (с ID 1), выполняющий программу /sbin/init. Если ядро не может найти
init, оно также «паникует» и останавливается или (в зависимости от
дистрибутива) выкидывает в командную строку суперпользователя. Да, кстати,
придется добавить вам путаницы: Ubuntu больше не использует init, он заменен на upstart.
Init
отвечает за запуск скриптов, которые запустят все
остальные сервисы в системе. Существует очень важный и достаточно
низкоуровневый скрипт, запускаемый init
в начале процесса. В Red-Hat-подобных системах это /etc/rc.d/rc.sysinit, в SUSE – /etc/init.d/boot.
Среди прочего, этот первичный скрипт последовательно проверяет и монтирует
остальные разделы диска, прописанные в /etc/fstab.
Хотя, конечно, на этом этапе тоже хватает потенциальных неприятностей.
Берем
Grub под контроль
Ключевое умение в исправлении проблем загрузки
– это знание, как вручную вмешаться в процесс загрузки Grub. Большинство
дистрибутивов конфигурируют Grub на выбор пункта меню «по умолчанию», но на
короткое время (пару секунд) отображает окно, где вы можете нажать Esc для прерывания
процесса и принятия полного контроля над Grub на себя. Обычно это ведет к
выходу из заставки Grub в текстовое меню. Здесь, следуя инструкциям на экране,
выберите пункт меню и отредактируйте связанные с ним команды перед загрузкой.
Можно даже переключиться в командную строку Grub и вводить команды Grub
напрямую; например в этом месте вы можете, теоретически, вручную ввести root, kernel и initrd строки из файла menu.lst, который мы рассмотрели ранее.
Спасательная загрузка
Если
все способы «подкрутки» команд в меню загрузки Grub не помогли загрузить
систему, может быть, настало время выполнить ‘rescue boot’ [спасательную
загрузку], которая означает, что вы должны загрузить Linux c инсталляционного
CD или другого «средства спасения». Ядро и его модули загружаются с CD вместе с
небольшой файловой системой, хранящейся в памяти. В результате запускается
маленький, но работоспособный Linux, не привязанный ни к какой файловой системе
на жестком диске. Потом вы можете смонтировать разделы жесткого диска в
файловую систему и получить к ним доступ для устранения неполадки. Помогут
установочные CD или DVD большинства современных дистрибутивов, так как для
восстановления определенного дистрибутива не требуется именно его установочный
диск, и вы можете взять любой доступный.
Пользуясь спасательной системой, очень важно
иметь ясную голову, потому что файлы на вашем жестком диске окажутся не в тех
местах, в которых вы видели их при «реальной» установке. Например, если в
спасательной системе смонтировать корневой раздел в /mnt, то файл, обычно видимый в /etc/fstab,нужно будет
искать в /mnt/etc/fstab.
clrpw hihak jbipv fgwro http://www.win7productkeys.org/ windows 7 home premium key for ultimate jnixj http://www.win7productkeys.org/#win-7-key-only windows 7 anytime upgrade buy mjrnod<br> http://www.win7productkeys.org/product/windows-7-ultimate-34.html - http://www.win7productkeys.org/pimages/s/2006/0.jpg ap tw fb http://www.win7productkeys.org/product/windows-7-professional-sp1-58.html - http://www.win7productkeys.org/pimages/s/2040/0.jpg ul sa se http://www.win7productkeys.org/product/windows-7-home-premium-sp1-56.html - http://www.win7productkeys.org/pimages/s/2036/0.jpg
key windows 7 anytime upgrade crack win 7 key test http://www.activationsale.com/ - windows activation codes windows 7 home premium product key crack windows 7 professional license key free http://www.activationsale.com/ windows7 key sale buy windows7 activation key nzv
cheap ms windows 7 code keys cheap ms windows7 product keys http://www.activationsale.com - cheap microsoft windows 7 codes windows 7 ultimate key generator http://www.activationsale.com/#9784 windows 7 activation key sale 3
windows 7 key codes sale cheap ms win7 activation key http://www.activationsale.com - ms windows 7 activation microsoft windows 7 professional anytime upgrade windows 7 home premium http://www.activationsale.com/#3879 windows 7 Ultimate sp1 activation 3