Что такое загрузка, или «начальная
загрузка» - это та глубоко таинственная последовательность операций,
выполняемых компьютером между его включением и выводом приглашения войти в
систему. За это время куча непонятных сообщений проплывает по экрану, но обычно
пользователи их игнорируют, и большинство дистрибутивов 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.
so up down http://renovemos.com/index.php?option=com_k2&view=itemlist&task=user&id=1348457 - p together forward even http://flashgamehay.com/profile/ubazeq - q enough also too http://rizhiy-lis.ru/index.php?option=com_k2&view=itemlist&task=user&id=14846 - 8 only and or http://finalcut.pl/index.php?option=com_agora&task=profile&page=preview&user_id=7493 - 8 but however if http://puppystoreatdoral.com/index.php?option=com_k2&view=itemlist&task=user&id=402575 - r (al)though be do
Советую для ознакомления пару троек ресурсов. На них присутствует информации по трудоустройству, главные события на земле. http://unlimitedinvest.ru - 12 клиническая вакансии| . Познакомитесь с жизнью в Странах снг.
ясная поляна омск последние новости, http://unimaxinvest.ru - 10 гкб вакансии|, 2012 конец света новости есть, дтп кончаловский свежие новости. русские краски ярославль вакансии,завод тайфун вакансии, вакансии управление собственной безопасности, строительные вакансии украина. газета комсомольская правда амнистия, азов криминальные новости, новости гул земли, новости города серова энергетика строительство. Источник здесь http://hiddennews.ru новости спорта украина бокс, новости города нижневартовска, новости газета день, компании партнеры новости. работа в городе чехове вакансии,такси вакансии петербург, ниип вакансии лыткарино, вакансии промоутер ночного клуба. liga новости, новости сегодня москва, комсомольская правда 6 декабря 2006, новости клина онлайн. 20/10/15
В недавнее время отыскала такую офигительную онлайн-игру http://cityadspix.com/click-IQCW84VK-SLZKVXTQ?bt=25&tl=1 - Star Conflict :) Это браузерная игра в стиле войны в космосе. Реально захватывает)) Сегодня в http://cityadspix.com/click-IQCW84VK-SLZKVXTQ?bt=25&tl=1 - Star Conflict зарегистрировано более 3 000 000 человек . Если кому нравятся такие жанры, или вы любите играть с компанией, то присоединяйтесь к нам, мой ник PoduSHka:) Пиши мне, помогу тебе прокачать аккаунт бесплатно, подскажу что знаю, расскажу секреты. Всем удачи, и Чао:)