Вы вошли как Гость | Группа "Гости" Приветствую Вас Гость | RSS
mdErrDX5341.lab:...I'm a fool studying schizophrenia as a source of life...=)

Не забудь поспать: Среда, 25.06.2025, 20:57
Главная » Статьи » Unix/Linux » Загрузка

Linux#Каша-Загрузка

Создание дисков восстановления

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

Когда установленная Linux становится настолько запущеной, что она просто не может нормально загрузиться, хорошим первым шагом в исправлении проблемы будет попытка загрузиться в однопользовательском режиме. Однопользовательский режим (уровень запуска 1) позволяет вам исправлять множество проблем, не беспокоясь о правах доступа или файлах, заблокированных другими пользователями или процессами. Более того, однопользовательский режим запускается с минимальным набором служб, демонов и задач, которые могут вас запутывать или же служить причиной основной проблемы.

В некоторых случаях, однако, файлы, необходимые для однопользовательского режима, такие как /etc/passwd, /etc/fstab, /etc/inittab, /sbin/init, /dev/console и прочие, могут быть поврежденными и система не загрузится даже в однопользовательском режиме. В таких случаях для того, чтобы вновь поднять систему на ноги, используется диск восстановления (загрузочный диск, содержащий основы, необходимые для починки испорченного раздела, иногда называемый repair disk).

Компакт-диски восстановления

На сегодняшний день дистрибутивы, собранные в виде live-CD (или DVD), такие как Knoppix, являются бриллиантами в короне дисков восстановления, предлагая широкий набор драйверов, средств отладки, и даже Веб-браузер. Даже если у вас есть особые запросы, например, нестандартные драйверы (модули ядра) или ПО для восстановления, вам лучше скачать один из Linux LiveCD, например, Knoppix, и скорректировать содержимое ISO-образа под свои цели перед тем как записать его на диск. Обратитесь к учебному пособию на тему 203 за информацией о монтировании ISO-образа.

Гибкие диски восстановления

На очень старых системах, не имеющих загрузочных CD-ROMов, для восстановления должны использоваться гибкие диски, содержащие только самое необходимое. Всякие там изящности типа emacs и vim обычно слишком громоздки, чтобы поместиться на одну дискету, так что опытный системный администратор должен быть готовым к использованию строчного редактора наподобие ed для исправления поврежденных конфигурационных файлов.

Для создания загрузочной дискеты, следует прочесть "Linux-Bootdisk HOWTO" от Linux Documentation Project. Во многих случаях, однако, дистрибутив Linux предлагает создать дискету восстановления во время установки или позже, используя встроенные утилиты. Убедитесь, что вы создали и храните диски восстановления перед тем, как они вам действительно понадобятся!


Распознавание стадий загрузки

О загрузке

Учебное пособие по теме 202 содержит куда более широкую информацию об очередности загрузки Linux. В том пособии мы только кратко рассмотрим эти стадии.

Первая стадия загрузки немного изменилась с тех пор, как появились первые IBM®-совместимые PC с жесткими дисками. BIOS считывает первый сектор загрузочного диска в память и запускает его. Эта 512-байтная Master Boot Record (MBR), где также располагается метка fdisk, загружает "загрузчик ОС" (либо GRUB, либо LILO) из "активного" раздела.

Загрузка ядра

По мере того, как BIOS в системе x86 (в системах с другими архитектурами имеются небольшие отличия) запускает MBR, происходит несколько стадий, приводящих к загрузке ядра Linux. Если загрузка не удается, то первый шаг в определении того, что нужно исправить, должен состоять в поиске стадии, где произошел сбой.

  • Загрузка Boot Loader (LILO/Grub).
  • Запускается Boot loader и передает управление ядру.
  • Ядро: Загружается база ядра, а также основные модули ядра.
  • Инициализация и установка устройств:
    • Запускается ядро.
    • Инициализируется инфраструктура ядра (VM, планировщик, и прочее).
    • Зондирование и присоединение драйверов устройств.
    • Монтируется корневая файловая система.

Загрузка пользовательского пространства

Полагая, что база ядра, модули ядра и корневая файловая система стартовали успешно (или, по крайней мере, достаточно успешно, не полностью зависнув), начинается процесс инициализации системы:

  • Инициализация и установка демонов
    • /sbin/init запускается как процесс 1
    • /sbin/init считывает /etc/inittab
    • /etc/init.d/rc запускает сценарии /etc/rc<n>.d/S*
    • Диски проверяются fsck
    • Настраиваются сетевые интерфейсы
    • Запускаются демоны
    • getty(s) запускается на клавиатуре и последовательных портах

    Устранение неполадок LILO и GRUB

    Поиск загрузочного сектора

    При запуске GRUB на экране высвечивается "GRUB loading, please wait...", а затем GRUB переходит в свое загрузочное меню. LILO обычно выводит приглашение LILO: (но некоторые версии выводят меню сразу же). Если экран LILO или GRUB недостижим, то, вероятно, пришло время для диска восстановления. Вообще говоря, вы узнаете об этой проблеме вместе с каким-нибудь сообщением BIOS о том, что не найден загрузочный сектор или даже жесткий диск.

    Если ваша система не может отыскать пригодный загрузочный сектор, то, возможно, что ваша LILO или GRUB стала поврежденной. Иногда некоторые операционные системы (или не в меру старательные "программы защиты от вирусов" под Windows®) перезаписывают загрузочные сектора, и попутно создают другие проблемы. Диск восстановления позволит вам переустановить LILO или GRUB. Как правило, желательно применить chroot к старой файловой системе, чтобы использовать конфигурационные файлы прежних LILO или GRUB.

    В случае hard-disk-not-found, вероятно, имеет место сбой оборудования (и вам остается надеяться, что сделана резервная копия); часто это имеет место и в случае no-boot-sector. Обратитесь учебному пособию на тему 202 за более подробной информацией о LILO и GRUB.

    Настройка LILO и GRUB

    LILO настраивается при помощи файла /etc/lilo.conf или другим конфигурационным файлом, задаваемом в командной строке. Чтобы переустановить LILO, сначала убедитесь, что ваш файл lilo.conf действительно отвечает вашей текущей системной конфигурации (в особенности информации о правильных разделах и номере диска; они могут изменяться например при добавлении жесткого диска и/или разделов). После того, как такая проверка сделана, просто запустите /sbin/lilo под root (или в однопользовательском режиме).

    Настройка и переустановка GRUB, в сущности, представляет собой тот же процесс, что и для LILO. Файлом конфигурации GRUB'а является /boot/grub/menu.lst, но он считывается при каждой загрузке системы. Аналогично, оболочка GRUB располагается в /boot/grub/, но с помощью опции groot= в /boot/grub/menu.lst можно выбирать, на каком жестком диске располагается основная GRUB MBR. Для установки GRUB в MBR, запустите команду наподобие grub-install /dev/hda, которая проверит подключенный на данный момент /boot/ для своей конфигурации.

Общее устранение неполадок

Структура файловой системы Linux

Дистрибутивы Linux имеют небольшие различия в том, где они содержат файлы. Linux Filesystem Hierarchy Standard делает успехи в дальнейшей стандартизации этого. Уже являются стандартными несколько каталогов, и туда, в частности, важно смотреть при проблемах с загрузкой и выполнением:

  • /proc/ -- это виртуальная файловая система с информацией о процессах и о состоянии системы. В сущности, все внутренности работающей системы находятся здесь. За большей информацией смотрите тему 201.
  • /var/log/ -- то место, где находятся файлы журналов. Если что-то идет не так, здесь можно найти полезную информацию, содержащуюся в некоторых файлах журнала.
  • / -- вообще говоря, корень файловой системы под Linux, попросту содержащий другие каталоги, вложенные в него. На некоторых системах загрузочные файлы, такие как vmlinuz и initrd.img могут находиться прямо здесь, а не в /boot/.
  • /boot/ хранит файлы, непосредственно используемые в процессе загрузки ядра.
  • /lib/modules/ -- это то, где располагаются модули ядра, вложенные в подкаталоги этого каталога. Имена подкаталогов совпадают с номером текущей версии ядра (если загружаются несколько версий ядра, то должны присутствовать несколько каталогов). Например:

    % ls /lib/modules/2.6.10-5-386/kernel/
    arch crypto drivers fs lib net security sound

Обнаружение сообщений загрузки

Во время загрузки системы сообщения могут прокрутиться очень быстро, и вы можете не успеть опознать проблему или неожиданное действие при инициализации. Некоторая интересующая вас информация, возможно, журналируется syslog, но основные сообщения ядра и модулей ядра можно исследовать с помощью утилиты dmesg.

Программы, распознающие Hardware/system

Учебное пособие на тему 203 (аппаратное обеспечение) содержит больше информации о распознавании оборудования. Вообще говоря, следует помнить про следующие системные утилиты:

  • lspci: Выдает все устройства PCI
  • lsmod: Выдает список загруженных модулей ядра.
  • lsusb: Выдает устройства USB.
  • lspnp: Выдает устройства Plug-and-Play.
  • lshw: Выдает список оборудования.

Не совсем для аппаратного обеспечения, но все-таки полезны:

  • lsof: Выдает список открытых файлов.
  • insmod: Загружает модули ядра.
  • rmmod: Выгружает модули ядра.
  • modprobe: Обертка для insmod/rmmod/lsmod высокого уровня.
  • uname: Выдает системную информацию (версия ядра и тп.).
  • strace: Отслеживает системные вызовы.

Если вы пришли в отчаяние, пытаясь использовать программы, или же библиотеки, или приложения, вас может спаси утилита strings (но имейте ввиду, что здесь придется поработать). Решающая информация, такая как hard-coded пути иногда зарыта в исполняемых файлах и их можно найти, и (но с большой долей проб и ошибок), посредством поиска строк в бинарниках.


Устранение неполадок в системных ресурсах и в конфигурации окружения

The initialization

В учебнике на тему 202 подробнее рассказывалось, что запуск Linux после загрузки ядра управляется процессом init. Основная конфигурация init лежит в /etc/inittab. Этот файл /etc/inittab содержит подробности того, какие шаги следует произвести на каждом уровне запуска. Но, возможно, наиболее решающим является тот факт, что там задается уровень запуска для последующих действий. Если система имеет проблемы во время загрузки, установка другого уровня запуска может помочь. Ключевой строкой будет что-нибудь вроде этого:

# The default runlevel. (in /etc/inittab)
id:2:initdefault:

Сценарии инициализации

Сценарии инициализации ("rc-скрипты") запускаются во время загрузки, завершения, и всегда, когда система меняет уровни запуска, и они ответственны за запуск и остановку большинства системных демонов. В большей части (читай в современных) дистрибутивах Linux, они находятся в каталоге /etc/init.d/ и ссылаются на каталоги /etc/rc<N>.d/ (при N=уровень запуска), где они имеют имена "S*" для сценариев запуска и "K*" для сценариев завершения. Система никогда не запускает сценариев из каталога /etc/init.d, а ищет их в /etc/rc<N>.d/[SK]*.

Оболочка системы

Иногда, но бывет так, что системный администратор желает изменить общий для всей системы сценарий запуска оболочки /etc/profile. Эта смена влияет на всякую интерактивную оболочку (за исключением пользователей /bin/tcsh и других не-/bin/sh-совместимых оболочек). Повреждение этого файла может с легкостью привести к ситуации, когда никто не сможет зайти в систему, и для исправления потребуется диск восстановления. Обычный способ изменения поведения оболочки на индивидуальной основе состоит в изменении /home/$USER/.bash_profile и /home/$USER/.bashrc.

Настройка параметров ядра

Система sysctl (см. man-страницу для sysctl) была взята из BSD UNIX® и используется для настройки некоторых системных ресурсов. Выполните sysctl -a, чтобы увидеть, какие переменные могут управляться sysctl, и какие значения они принимают. Утилита sysctl наиболее полезна при настройке как параметров сети, так и некоторых параметров ядра. Файл /etc/sysctl.conf используется, чтобы задать параметры sysctl во время загрузки.

Динамические библиотеки

В большинстве систем, динамические библиотеки постоянно добавляются, обновляются, заменяются и удаляются. Поскольку в системе почти каждой программе требуется найти и загрузить динамическую библиотеку, имена, номера версий, и местоположение большинства динамических библиотек кэшируются программой ldconfig. Обычно кэшируются динамические библиотеки из системных каталогов /lib/ и /usr/lib/. Чтобы добавить больше каталогов к глобальному списку каталогов для поиска по умолчанию, следует добавить имена этих каталогов (например /usr/X11R6/lib) в файл /etc/ld.so.conf и запустить ldconfig под root.

Системное журналирование

Тема 211 подробно рассматривает syslog. Основной файл, про который следует вспомнить, если у вас появились проблемы (или если вы хотите убедиться, что вы сможете проанализировать их позже) -- это /etc/syslog.conf. Изменяя содержимое этой конфигурации, у вас есть детальнейший контроль над тем, какие события журналируются, и куда пишутся файлы журнала, возможно даже включая почту и удаленные машины. Если появляется проблемы, убедитесь, что подсистемы, где, по вашему мнению, они возникают, журналируют информацию в таком стиле, чтобы вы смогли быстро проверить.

Периодические события

Почти на каждой системе Linux запущен демон cron. За подробностями о работе cron и crontab обратитесь к теме 213. Вообще говоря, следует помнить, что источником потенциальной проблемы могут стать сценарии, выполняющиеся с временными интервалами. Возможно то, что, по вашему мнению, является проблемой ядра или приложения, происходит от не связанных с ними сценариев, которые запускает cron за вашей спиной.

Экстремальный метод состоит в полном прекращении работы cron. Номер его процесса может быть найден с помощью ps ax | grep cron, а kill может его прекратить. Менее крутая мера состоит в редактировании /etc/crontab, чтобы выполнялся более традиционный набор задач; также, отредактировав /etc/cron.allow и /etc/cron.deny, убедитесь, что запланированные задачи пользователей отменены. Хотя пользователи и не имеют достаточных прав, чтобы вызвать проблемы для всей системы, по-хорошему, первым шагом стоит временно заблокировать пользовательскую конфигурацию crontab и посмотреть, разрешило ли это ваши проблемы.


runlivel

стандартная схема

0 - остановка

1 -однопользовательский режим

2-5 - многопользовательский режим

6 - перезагрузка


debian

0 - остановка

1 -однопользовательский режим

2-5 - многопользовательский режим

6 - перезагрузка

Red Hat

0 - остановка

1 -однопользовательский текстовый режим

2 - не используется(определятся пользователем)

3 - многопользовательский текстовый режим

4 -не используется(определятся пользователем)

5 - многопользовательский графический режим

6 - перезагрузка

Slackware


0 - остановка

1 -однопользовательский режим

2 - не используется((то же, что 3))

3 - многопользовательский текстовый режим

4 -многопользовательский графический режим

5 - не используется(то же, что 3)

6 - перезагрузка







Источник: http://www.ibm.com/developerworks/ru/edu/l-lpic2214/index.html
Категория: Загрузка | Добавил: mdErrDX5341 (15.11.2011)
Просмотров: 2130 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]