LXF100-101:Загрузить незагружаемое
(викификация, оформление, иллюстрация) |
(викификация, оформление, иллюстрация) |
||
Строка 57: | Строка 57: | ||
позволяющую ввести команды ''Grub'' вручную. Типичное содержание | позволяющую ввести команды ''Grub'' вручную. Типичное содержание | ||
записи '''menu.lst''' такое: | записи '''menu.lst''' такое: | ||
+ | |||
+ | {{Врезка|Заголовок=За ушко притянуто|Содержание=Начальная загрузка – это как ушко на голенище сапога для верховой езды, которое помогает вам его надеть. Концепция «вытяни себя сам за ушко» означает поднять себя над землей, потянув за него [''барон Мюнхаузен таким образом вытащил себя за волосы из болота, – прим. пер.'']. Это, конечно, невозможно, но идея такого «ушка» – «спасения утопающих руками самих утопающих» – работает. И она особенно подходит к задаче старта компьютера.|Ширина=200px}} | ||
title openSUSE 10.2 | title openSUSE 10.2 | ||
Строка 79: | Строка 81: | ||
остальные разделы диска, прописанные в '''/etc/fstab'''. Хотя, конечно, на этом этапе тоже хватает потенциальных неприятностей, но рассказ о | остальные разделы диска, прописанные в '''/etc/fstab'''. Хотя, конечно, на этом этапе тоже хватает потенциальных неприятностей, но рассказ о | ||
них придется оставить до следующего месяца. | них придется оставить до следующего месяца. | ||
+ | |||
+ | ===Берем Grub под контроль=== | ||
+ | |||
+ | {{Врезка|Содержание=[[Изображение:LXF100_75_1.jpg|300px]] Рис. 2. Результат вывода команды “''help''”, напечатанной в командной строке ''Grub''.|Ширина=300px}} | ||
+ | |||
+ | Ключевое умение в исправлении проблем загрузки – это знание, как | ||
+ | вручную вмешаться в процесс загрузки ''Grub''. Большинство дистрибутивов конфигурируют ''Grub ''а выбор пункта меню «по умолчанию», | ||
+ | но на короткое время (пару секунд) отображают окно, где вы можете | ||
+ | нажать '''Esc''' для прерывания процесса и принятия полного контроля над ''Grub'' на себя. Обычно это ведет к выходу из заставки ''Grub'' в текстовое | ||
+ | меню. Здесь, следуя инструкциям на экране, выберите пункт меню и | ||
+ | отредактируйте связанные с ним команды перед загрузкой. Можно даже переключиться в командную строку ''Grub'' и вводить команды ''Grub'' | ||
+ | напрямую; например в этом месте вы можете, теоретически, вручную ввести '''root, kernel''' и '''initrd''' строки из файла '''menu.lst''', который мы рассмотрели ранее. '''Рис. 2''' показывает результат ввода ''help'' в командную строку ''Grub''. | ||
+ | |||
+ | ===Спасательная загрузка=== | ||
+ | |||
+ | {{Врезка|Заголовок=Скорая помощь|Содержание=Хотите узнать больше о лабиринтах ''Grub''? Посетите сайт проекта GNU для просмотра и/или загрузки GNU Grub | ||
+ | Manual по адресу http;//www.gnu.org/software/Grub/manual/. Он доступен в различных форматах, что позволит работать с ним на вашей привычной системе.|Ширина=200px}} | ||
+ | |||
+ | Если все способы «подкрутки» команд в меню загрузки Grub не помогли загрузить систему, может быть, настало время выполнить ‘''rescueboot''’ [спасательную загрузку], которая означает, что вы должны загрузить Linux с инсталляционного CD или другого «средства спасения». | ||
+ | Ядро и его модули загружаются с CD вместе с небольшой файловой системой, хранящейся в памяти. В результате запускается маленький, но работоспособный Linux, не привязанный ни к какой файловой системе на жестком диске. Потом вы можете смонтировать разделы | ||
+ | жесткого диска в файловую систему и получить к ним доступ для устранения неполадки. Помогут установочные CD или DVD большинства | ||
+ | современных дистрибутивов, так как для восстановления определенного дистрибутива не требуется именно его установочный диск, и вы | ||
+ | можете взять любой доступный. | ||
+ | |||
+ | Пользуясь спасательной системой, очень важно иметь ясную голову, потому что файлы на вашем жестком диске окажутся не в тех местах, в которых вы видели их при «реальной» установке. Например, если в спасательной системе смонтировать корневой раздел в '''/mnt''', то файл, | ||
+ | обычно видимый в '''/etc/fstab''', нужно будет искать в '''/mnt/etc/fstab'''. | ||
+ | |||
+ | ===Реальная ситуация 1=== | ||
+ | |||
+ | Наш первый пример касается RHEL5, в котором директория '''/usr''' помещена в отдельный раздел. По какой-то причине (забыл, какой) мне | ||
+ | пришлось диктовать по телефону, как редактировать '''/etc/fstab''', администратору-новичку, и в строке, отвечающей за монтирование раздела | ||
+ | '''/usr''', он закончил поле словами '''LABEL=/user''' вместо '''LABEL=/usr'''. Эта | ||
+ | ошибка приводит к невозможности многопользовательской работы, выкидывая вас в однопользовательскую оболочку. Диалог выглядит | ||
+ | примерно так: | ||
+ | |||
+ | fsck.ext3: Unable to resolve ‘LABEL=/user’ [FAILED] | ||
+ | *** An error occurred during the file system check. | ||
+ | *** Dropping you to a shell; the system will reboot | ||
+ | *** when you leave the shell | ||
+ | Give root password for maintenance (or type Control-D to continue): | ||
+ | |||
+ | Тут главное – действительно прочитать сообщение об ошибке. Почему система пытается найти метку с именем '''/user'''? В каком файле | ||
+ | это происходит? | ||
+ | |||
+ | Хм... Может быть, '''/etc/fstab'''? Так как система любезно вытолкала нас в командную строку root, вы решаете, что можно непосредственно | ||
+ | отредактировать '''/etc/fstab''' и исправить ошибку. Однако оказывается, что на данном этапе (по милости ''fsck'') корневая файловая система монтируется в режиме «только для чтения», и вы не можете редактировать файлы и записывать изменения. Здесь сработает следующий трюк. | ||
+ | Перемонтируем файловую систему в режиме чтения-записи, вот так: | ||
+ | |||
+ | # mount -o remount,rw / | ||
+ | |||
+ | Выполнив это, я смог отредактировать '''/etc/fstab''', исправить ошибку и нормально перезагрузиться. | ||
+ | |||
+ | ===Реальная ситуация 2=== | ||
+ | |||
+ | Второй пример сложнее предыдущего, и включает сценарий двойной | ||
+ | загрузки. | ||
+ | |||
+ | {{Врезка|Содержание=[[Изображение:LXF100_77_1.jpg|300px]] Рис. 3. Конфигурация с двойной загрузкой: взаимодействие между разделами SUSE и Fedora.|Ширина=300px}} | ||
+ | |||
+ | Сперва я установил OpenSUSE 10.2 на пустой жесткий диск, выделив 8-ГБ раздел '''hda1''' под корневой и 2-ГБ раздел '''hda2''' под раздел | ||
+ | подкачки. Установщик немедля прописал загрузчик ''Grub'' 1-го этапа в основную загрузочную запись, а загрузчик полуторного этапа – в | ||
+ | блоки диска. Немного погодя я установил на свободное место диска | ||
+ | Fedora 7, выделив под корневой раздел '''hda3''' те же 8 ГБ и разделив | ||
+ | swap-раздел OpenSUSE '''hda2''' между двумя системами. '''Рис. 3''' поможет вам, если вы уже запутались. Я разрешил Fedora установку ''Grub'' по умолчанию в '''/dev/sda''' (имена отличаются, так как OpenSUSE 10.2 называет разделы традиционно – '''hda1, hda2''' и т.д., а Fedora 7 использует SCSI-стиль именования – '''sda1, sda2''' | ||
+ | и т.д.). | ||
+ | |||
+ | При установке Fedora мне было предложено добавить дополнительный пункт в загрузочное меню ''Grub'', и я попросил добавить пункт | ||
+ | с названием SUSE 10.2 и именем устройства '''/dev/sda1'''. В результате | ||
+ | файл конфигурации ''Grub'' у Fedora выглядел так: | ||
+ | |||
+ | title SUSE 10.2 | ||
+ | rootnoverify (hd0,0) | ||
+ | chainloader +1 | ||
+ | |||
+ | Если я выбираю этот пункт меню, ''Grub'' Fedora должен начать загрузку ''Grub'' OpenSUSE с первого сектора первого раздела (который | ||
+ | ''Grub'' называет ('''hd0,0''')), Fedora7 – '''/dev/sda1''', а OpenSUSE '''/dev/hda1''' – ну надо ли так морочить людям голову?). Итак, теперь я мог выбрать между Fedora и SUSE в загрузочном меню, хотя несколько нудно, что SUSE при загрузке опять выводит меню ''Grub'' и требует выбрать себя | ||
+ | в нем. Будь я умнее, я бы скопировал строчку, загружающую SUSE из файла конфигурации ''Grub'' с '''hda1''' в файл на '''hda3''', что по идее удобнее, | ||
+ | так как можно загружаться прямо в SUSE, минуя второе меню. | ||
+ | |||
+ | ====Выкрутасы Fedora==== | ||
+ | |||
+ | Так или иначе, через пару недель я понял, что Fedora мне ни к чему, | ||
+ | и решил переразметить ее раздел из SUSE. И вот (загрузившись в | ||
+ | SUSE), я запустил: | ||
+ | |||
+ | # mke2fs -j /dev/hda3 | ||
+ | |||
+ | для создания новой файловой системы на разделе. Напомню, что '''hda3''' был корневым разделом Fedora. Затем я смонтировал заново созданный раздел в '''/mnt'''. Все прошло хорошо, и я перезагрузился. Тут-то и вскрылась язва, потому что в этом месте ''Grub'' отказал. Я не мог загрузиться в Fedora – чего и следовало ожидать, раз я удалил ее раздел, но, что более серьезно, SUSE тоже не запускалась. Все, что происходило – появление слова “'''GRUB'''” на экране. В этом пункте секрет вашего поведения таков: Без паники! Прокрутите события назад. Снова взгляните на '''Рис. 3''', и вспомните, что содержимое '''hda3''' теперь перезаписано. Загрузчик этапа 1.5, установленный Fedora, ссылается на загрузчик | ||
+ | этапа 2 в файловой системе '''hda3''', которого не существует. Все, что нам | ||
+ | надо – это переустановить исходные файлы Grub этапов 1 и 1.5 для восстановления возможности загрузки SUSE 10.2. | ||
+ | |||
+ | Единственный способ их вернуть – загрузиться со спасательного диска. Как я уже отметил, для этого годится любой инсталляционный | ||
+ | СD Linux, но я выбрал Ubuntu 7.04, поскольку это и Live CD, и ОС Linux, включая рабочий стол Gnome, работающий прямо с CD. | ||
+ | |||
+ | Ubuntu, как и Fedora, называет разделы диска как '''sda1, sda2''', поэтому, как только мой Live CD загрузился, я смог примонтировать | ||
+ | корневой раздел SUSE в файловую систему Ubuntu: | ||
+ | |||
+ | $ sudo mount /dev/sda1 /mnt | ||
+ | |||
+ | (Если вы недоумеваете, зачем в этой команде ''sudo'', поясню, что в Ubuntu запрещен прямой вход как суперпользователю, и при каждом запуске команды с привилегиями root требуется использовать ''sudo''. На Live CD пароль для этого не нужен.) Теперь мне нужно запустить ''Grub'' и перезаписать '''MBR'''. На этом этапе неясно, где находится команда ''grub'' (мне нужна копия для SUSE, то есть та, что на '''hda1'''), но | ||
+ | запустив | ||
+ | |||
+ | $ sudo find /mnt –name grub | ||
+ | |||
+ | я быстро обнаружил, что это '''/mnt/usr/sbin/grub'''. Теперь я смог запустить его и ввести команды в командной строке ''Grub'', как показано | ||
+ | здесь: | ||
+ | |||
+ | $ sudo /mnt/usr/sbin/grub | ||
+ | grub> root (hd0,0) | ||
+ | grub> setup (hd0) (hd0,0) | ||
+ | Checking if “/boot/grub/stage1” exists... yes | ||
+ | Checking if “/boot/grub/stage2” exists... yes | ||
+ | Checking if “/boot/grub/e2fs_stage1_5” exists... yes | ||
+ | Running “embed /boot/grub/e2fs_stage1_5 (hd0)”... 15 sectors | ||
+ | are embedded. succeeded | ||
+ | Running “install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/ | ||
+ | boot/Grub/stage2 /boot/grub/menu.lst”... succeeded | ||
+ | Done. | ||
+ | grub> quit | ||
+ | |||
+ | Ключевая команда здесь ''setup (hd0) (hd0,0)'', которая велит ''Grub'' | ||
+ | переустановить оригинальный (SUSE) stage 1 в '''MBR''' на ('''hd0''') и скопировать исходный (SUSE) stage 1.5 в сектора, следующие за ним (для | ||
+ | более детального описания этого смотрите команды ''install'' и ''embed'' в руководстве GNU на http://www.gnu.org/software/Grub/manual/Grub.html). | ||
+ | Проделав это, я смог просто перезагрузиться и... О-ля-ля! Мое загрузочное меню ''Grub'' SUSE вернулось! | ||
+ | |||
+ | ===Международные спасатели=== | ||
+ | |||
+ | Live CD вроде Ubuntu или Knoppix прекрасно делают свою работу по | ||
+ | спасению загрузки, но кроме них, существуют более маленькие и | ||
+ | быстрые диски для восстановления. Некоторые из вас заинтересуются | ||
+ | SystemRescueCD (http://www.sysresccd.org) – он не только загружается | ||
+ | гораздо быстрее, но также содержит расширенную коллекцию инструментов для управления и редактирования разделов, включая и классику вида ''gparted'', и более экзотические инструменты, вроде ''NTFS-3g'', | ||
+ | позволяющий получить доступ к разделам Windows NTFS с полной | ||
+ | поддержкой чтения и записи – великолепно для восстановления файлов на старых вышедших из строя разделах Windows XP! Другая вещь, | ||
+ | выгодно отличающая этот восстановительный CD – он может кэшировать свою файловую систему в памяти, позволяя вам при необходимости вынуть CD и вставить другой. '''LXF''' | ||
+ | |||
+ | ===Параметры ядра=== | ||
+ | |||
+ | Частая причина модификации команд ''Grub'' – передача загрузочных параметров ядру. Эти параметры просто добавляются в конец строки kernel. Список загрузочных параметров ядра покажет команда ''man bootparam'', или можете купить книгу Грега Кроа-Хартмана [Greg Kroah-Hartmann] «Linux Kernel in a Nutshell» (а где еще найдешь ядро? Прочитайте ее бесплатно на http://www.kroah.com/lkn/), там про это целая глава. Если у вас установлены исходные коды ядра, вы найдете его параметры в '''/usr/src/linux/Documentation/kernel-parameters.txt'''. Помните, что многие параметры являются необязательными, и могут или не могут быть настроены в ядре. В таблице они приведены лишь для того, чтобы предоставить вам идею. Запустив Linux, вы можете проверить загрузочные параметры, которые были переданы в него, изучив '''/proc/cmdline'''. | ||
+ | |||
+ | ====КОМАНДЫ ЯДРА==== | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! ПАРАМЕТР | ||
+ | ! ДЕЙСТВИЕ | ||
+ | |- | ||
+ | | quiet | ||
+ | | Подавляет ведение журнала ядра, за исключением предупреждений и ошибок. Не используйте его, если вы пытаетесь решить проблему с загрузкой. | ||
+ | |- | ||
+ | | splash | ||
+ | | Выводит заставку и прогресс-индикатор, закрывающие сообщения ядра. Удалив ее, вы можете отследить ошибку. | ||
+ | |- | ||
+ | | single or S | ||
+ | | Велит ядру при запуске ''init'' заставлять систему запускаться в одно пользовательском уровне выполнения [run level]. В зависимости от конфигурации у вас спросят или не спросят пароль root; затем вас пустят в оболочку root. ''X''-сервер или графический рабочий стол не стартуют, никакие разделы не монтируются (конечно, за исключением корневого). Это действенный режим для отслеживания проблем ''X'' или восстановления файловой системы. | ||
+ | |- | ||
+ | | vga=ask | ||
+ | | Эта опция позволяет вам выбрать режим видеоадаптера. Видеорежим устанавливает разрешение экрана (в виде строк и колонок), и добавив эту опцию, вы сможете быстро выбрать видеорежим из списка. Полезна, если ваш монитор не поддерживает режим по умолчанию. | ||
+ | |- | ||
+ | | acpi=off | ||
+ | | Отключает ACPI (Advanced Configuration and Power Interface ). | ||
+ | |- | ||
+ | | init=/bin/sh | ||
+ | | Запускает программу ''/bin/sh'' (оболочку) взамен ''init''. Это даже более экстремально, чем выполнять однопользовательскую загрузку и фактически представляет режим пользователя без инициализации. Загрузка будет исключительно быстрой, и оболочка будет единственным запущенным процессом пользовательского пространства. | ||
+ | |} |
Текущая версия на 11:27, 20 марта 2009
|
|
|
- Загрузка Как добраться до важных файлов, если Linux не грузится?
Содержание |
[править] Когда Linux не загружается
- Мысль об этом вгоняет в дрожь пользователей всех ОС - не дай Бог, компьютер откажется загружаться. Д-р Крис Браун прольет бальзам на ваши раны.
Для нас, старых волков, загрузка, или «начальная загрузка» – это та глубоко таинственная последовательность операций, выполняемых компьютером между его включением и выводом приглашения войти в систему. За это время куча непонятных сообщений проплывает по экрану, но обычно пользователи их игнорируют, и большинство дистрибутивов Linux скрывает их за красивым экраном с обнадеживающим прогресс-индикатором. И это замечательно – пока работает. На данном уроке мы рассмотрим процесс загрузки более подробно: в частности, выясним, что может пойти неправильно и как диагностировать и устранить проблему.
[править] Проникаемся проблемой
Когда я преподавал Linux на одном из моих курсов, многие слушатели говорили мне, что интересуются устранением неисправностей в той или иной форме. Некоторые ищут рецептов типа кулинарных – «Увидев сообщение об ошибке X, запустите команду Y», но таким способом устранить неисправность удается редко. Мой первый совет всем тем, кто столкнулся с проблемой, всегда один и тот же: «При устранении неисправности первым делом надо понять, как система должна работать. Вторая важная вещь – точно представить, что система пыталась сделать, когда неисправность возникла».
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Помня об этом, взглянем на загрузку Linux. Знание нормальной последовательности событий и установление, как далеко она зашла перед возникновением проблемы, являются ключевыми для диагностики и исправления проблем загрузки. Рисунок 1 справа показывает нормальную последовательность событий (зеленые стрелки) и указывает на некоторые возможные пути неудачи (красные стрелки).
[править] Знакомимся с загрузкой поближе
Загрузка – операция многоступенчатая. При включении компьютера контроль вначале переходит к программе, называемой 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 такое:
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
title openSUSE 10.2 root (hd0,0) kernel /boot/vmlinuz-2.6.18.2-34-default root=/dev/hda1 vga=0x317 showopts initrd /boot/initrd-2.6.18.2-34-default
Первая строчка просто содержит текст, который появится в меню загрузки. Следующие за ней строки содержат команды, которые Grub должен выполнить, если вы выберите этот пункт меню. Строка root подсказывает Grub, где искать корневую файловую систему. У Grub своя система именования разделов диска, отличная от системы, принятой в Linux, что сбивает с толку. На языке Grub hd0 означает первый диск – а на обычном ПК с IDE-дисками это будет ссылка на Linux-устройство /dev/hda, или, на более свежих дистрибутивах, /dev/sda [на самом деле что для grub означает hd0 итд определяется в файле /boot/grub/device.map]. На языке 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 под контроль
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Ключевое умение в исправлении проблем загрузки – это знание, как вручную вмешаться в процесс загрузки Grub. Большинство дистрибутивов конфигурируют Grub а выбор пункта меню «по умолчанию», но на короткое время (пару секунд) отображают окно, где вы можете нажать Esc для прерывания процесса и принятия полного контроля над Grub на себя. Обычно это ведет к выходу из заставки Grub в текстовое меню. Здесь, следуя инструкциям на экране, выберите пункт меню и отредактируйте связанные с ним команды перед загрузкой. Можно даже переключиться в командную строку Grub и вводить команды Grub напрямую; например в этом месте вы можете, теоретически, вручную ввести root, kernel и initrd строки из файла menu.lst, который мы рассмотрели ранее. Рис. 2 показывает результат ввода help в командную строку Grub.
[править] Спасательная загрузка
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Если все способы «подкрутки» команд в меню загрузки Grub не помогли загрузить систему, может быть, настало время выполнить ‘rescueboot’ [спасательную загрузку], которая означает, что вы должны загрузить Linux с инсталляционного CD или другого «средства спасения». Ядро и его модули загружаются с CD вместе с небольшой файловой системой, хранящейся в памяти. В результате запускается маленький, но работоспособный Linux, не привязанный ни к какой файловой системе на жестком диске. Потом вы можете смонтировать разделы жесткого диска в файловую систему и получить к ним доступ для устранения неполадки. Помогут установочные CD или DVD большинства современных дистрибутивов, так как для восстановления определенного дистрибутива не требуется именно его установочный диск, и вы можете взять любой доступный.
Пользуясь спасательной системой, очень важно иметь ясную голову, потому что файлы на вашем жестком диске окажутся не в тех местах, в которых вы видели их при «реальной» установке. Например, если в спасательной системе смонтировать корневой раздел в /mnt, то файл, обычно видимый в /etc/fstab, нужно будет искать в /mnt/etc/fstab.
[править] Реальная ситуация 1
Наш первый пример касается RHEL5, в котором директория /usr помещена в отдельный раздел. По какой-то причине (забыл, какой) мне пришлось диктовать по телефону, как редактировать /etc/fstab, администратору-новичку, и в строке, отвечающей за монтирование раздела /usr, он закончил поле словами LABEL=/user вместо LABEL=/usr. Эта ошибка приводит к невозможности многопользовательской работы, выкидывая вас в однопользовательскую оболочку. Диалог выглядит примерно так:
fsck.ext3: Unable to resolve ‘LABEL=/user’ [FAILED] *** An error occurred during the file system check. *** Dropping you to a shell; the system will reboot *** when you leave the shell Give root password for maintenance (or type Control-D to continue):
Тут главное – действительно прочитать сообщение об ошибке. Почему система пытается найти метку с именем /user? В каком файле это происходит?
Хм... Может быть, /etc/fstab? Так как система любезно вытолкала нас в командную строку root, вы решаете, что можно непосредственно отредактировать /etc/fstab и исправить ошибку. Однако оказывается, что на данном этапе (по милости fsck) корневая файловая система монтируется в режиме «только для чтения», и вы не можете редактировать файлы и записывать изменения. Здесь сработает следующий трюк. Перемонтируем файловую систему в режиме чтения-записи, вот так:
# mount -o remount,rw /
Выполнив это, я смог отредактировать /etc/fstab, исправить ошибку и нормально перезагрузиться.
[править] Реальная ситуация 2
Второй пример сложнее предыдущего, и включает сценарий двойной загрузки.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Сперва я установил OpenSUSE 10.2 на пустой жесткий диск, выделив 8-ГБ раздел hda1 под корневой и 2-ГБ раздел hda2 под раздел подкачки. Установщик немедля прописал загрузчик Grub 1-го этапа в основную загрузочную запись, а загрузчик полуторного этапа – в блоки диска. Немного погодя я установил на свободное место диска Fedora 7, выделив под корневой раздел hda3 те же 8 ГБ и разделив swap-раздел OpenSUSE hda2 между двумя системами. Рис. 3 поможет вам, если вы уже запутались. Я разрешил Fedora установку Grub по умолчанию в /dev/sda (имена отличаются, так как OpenSUSE 10.2 называет разделы традиционно – hda1, hda2 и т.д., а Fedora 7 использует SCSI-стиль именования – sda1, sda2 и т.д.).
При установке Fedora мне было предложено добавить дополнительный пункт в загрузочное меню Grub, и я попросил добавить пункт с названием SUSE 10.2 и именем устройства /dev/sda1. В результате файл конфигурации Grub у Fedora выглядел так:
title SUSE 10.2 rootnoverify (hd0,0) chainloader +1
Если я выбираю этот пункт меню, Grub Fedora должен начать загрузку Grub OpenSUSE с первого сектора первого раздела (который Grub называет (hd0,0)), Fedora7 – /dev/sda1, а OpenSUSE /dev/hda1 – ну надо ли так морочить людям голову?). Итак, теперь я мог выбрать между Fedora и SUSE в загрузочном меню, хотя несколько нудно, что SUSE при загрузке опять выводит меню Grub и требует выбрать себя в нем. Будь я умнее, я бы скопировал строчку, загружающую SUSE из файла конфигурации Grub с hda1 в файл на hda3, что по идее удобнее, так как можно загружаться прямо в SUSE, минуя второе меню.
[править] Выкрутасы Fedora
Так или иначе, через пару недель я понял, что Fedora мне ни к чему, и решил переразметить ее раздел из SUSE. И вот (загрузившись в SUSE), я запустил:
# mke2fs -j /dev/hda3
для создания новой файловой системы на разделе. Напомню, что hda3 был корневым разделом Fedora. Затем я смонтировал заново созданный раздел в /mnt. Все прошло хорошо, и я перезагрузился. Тут-то и вскрылась язва, потому что в этом месте Grub отказал. Я не мог загрузиться в Fedora – чего и следовало ожидать, раз я удалил ее раздел, но, что более серьезно, SUSE тоже не запускалась. Все, что происходило – появление слова “GRUB” на экране. В этом пункте секрет вашего поведения таков: Без паники! Прокрутите события назад. Снова взгляните на Рис. 3, и вспомните, что содержимое hda3 теперь перезаписано. Загрузчик этапа 1.5, установленный Fedora, ссылается на загрузчик этапа 2 в файловой системе hda3, которого не существует. Все, что нам надо – это переустановить исходные файлы Grub этапов 1 и 1.5 для восстановления возможности загрузки SUSE 10.2.
Единственный способ их вернуть – загрузиться со спасательного диска. Как я уже отметил, для этого годится любой инсталляционный СD Linux, но я выбрал Ubuntu 7.04, поскольку это и Live CD, и ОС Linux, включая рабочий стол Gnome, работающий прямо с CD.
Ubuntu, как и Fedora, называет разделы диска как sda1, sda2, поэтому, как только мой Live CD загрузился, я смог примонтировать корневой раздел SUSE в файловую систему Ubuntu:
$ sudo mount /dev/sda1 /mnt
(Если вы недоумеваете, зачем в этой команде sudo, поясню, что в Ubuntu запрещен прямой вход как суперпользователю, и при каждом запуске команды с привилегиями root требуется использовать sudo. На Live CD пароль для этого не нужен.) Теперь мне нужно запустить Grub и перезаписать MBR. На этом этапе неясно, где находится команда grub (мне нужна копия для SUSE, то есть та, что на hda1), но запустив
$ sudo find /mnt –name grub
я быстро обнаружил, что это /mnt/usr/sbin/grub. Теперь я смог запустить его и ввести команды в командной строке Grub, как показано здесь:
$ sudo /mnt/usr/sbin/grub grub> root (hd0,0) grub> setup (hd0) (hd0,0) Checking if “/boot/grub/stage1” exists... yes Checking if “/boot/grub/stage2” exists... yes Checking if “/boot/grub/e2fs_stage1_5” exists... yes Running “embed /boot/grub/e2fs_stage1_5 (hd0)”... 15 sectors are embedded. succeeded Running “install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/ boot/Grub/stage2 /boot/grub/menu.lst”... succeeded Done. grub> quit
Ключевая команда здесь setup (hd0) (hd0,0), которая велит Grub переустановить оригинальный (SUSE) stage 1 в MBR на (hd0) и скопировать исходный (SUSE) stage 1.5 в сектора, следующие за ним (для более детального описания этого смотрите команды install и embed в руководстве GNU на http://www.gnu.org/software/Grub/manual/Grub.html). Проделав это, я смог просто перезагрузиться и... О-ля-ля! Мое загрузочное меню Grub SUSE вернулось!
[править] Международные спасатели
Live CD вроде Ubuntu или Knoppix прекрасно делают свою работу по спасению загрузки, но кроме них, существуют более маленькие и быстрые диски для восстановления. Некоторые из вас заинтересуются SystemRescueCD (http://www.sysresccd.org) – он не только загружается гораздо быстрее, но также содержит расширенную коллекцию инструментов для управления и редактирования разделов, включая и классику вида gparted, и более экзотические инструменты, вроде NTFS-3g, позволяющий получить доступ к разделам Windows NTFS с полной поддержкой чтения и записи – великолепно для восстановления файлов на старых вышедших из строя разделах Windows XP! Другая вещь, выгодно отличающая этот восстановительный CD – он может кэшировать свою файловую систему в памяти, позволяя вам при необходимости вынуть CD и вставить другой. LXF
[править] Параметры ядра
Частая причина модификации команд Grub – передача загрузочных параметров ядру. Эти параметры просто добавляются в конец строки kernel. Список загрузочных параметров ядра покажет команда man bootparam, или можете купить книгу Грега Кроа-Хартмана [Greg Kroah-Hartmann] «Linux Kernel in a Nutshell» (а где еще найдешь ядро? Прочитайте ее бесплатно на http://www.kroah.com/lkn/), там про это целая глава. Если у вас установлены исходные коды ядра, вы найдете его параметры в /usr/src/linux/Documentation/kernel-parameters.txt. Помните, что многие параметры являются необязательными, и могут или не могут быть настроены в ядре. В таблице они приведены лишь для того, чтобы предоставить вам идею. Запустив Linux, вы можете проверить загрузочные параметры, которые были переданы в него, изучив /proc/cmdline.
[править] КОМАНДЫ ЯДРА
ПАРАМЕТР | ДЕЙСТВИЕ |
---|---|
quiet | Подавляет ведение журнала ядра, за исключением предупреждений и ошибок. Не используйте его, если вы пытаетесь решить проблему с загрузкой. |
splash | Выводит заставку и прогресс-индикатор, закрывающие сообщения ядра. Удалив ее, вы можете отследить ошибку. |
single or S | Велит ядру при запуске init заставлять систему запускаться в одно пользовательском уровне выполнения [run level]. В зависимости от конфигурации у вас спросят или не спросят пароль root; затем вас пустят в оболочку root. X-сервер или графический рабочий стол не стартуют, никакие разделы не монтируются (конечно, за исключением корневого). Это действенный режим для отслеживания проблем X или восстановления файловой системы. |
vga=ask | Эта опция позволяет вам выбрать режим видеоадаптера. Видеорежим устанавливает разрешение экрана (в виде строк и колонок), и добавив эту опцию, вы сможете быстро выбрать видеорежим из списка. Полезна, если ваш монитор не поддерживает режим по умолчанию. |
acpi=off | Отключает ACPI (Advanced Configuration and Power Interface ). |
init=/bin/sh | Запускает программу /bin/sh (оболочку) взамен init. Это даже более экстремально, чем выполнять однопользовательскую загрузку и фактически представляет режим пользователя без инициализации. Загрузка будет исключительно быстрой, и оболочка будет единственным запущенным процессом пользовательского пространства. |