LXF90:Grub
Human (обсуждение | вклад) (Новая: == Grub: Настройте свой загрузчике == ''Один дистрибутив загрузить легко – но что если вам надо жонглирова...) |
Версия 15:08, 16 марта 2008
|
|
|
Grub: Настройте свой загрузчике
Один дистрибутив загрузить легко – но что если вам надо жонглировать дюжиной систем? Ник Вейч грубо прикидывает...
Содержание |
Добро пожаловать на очередной урок по Linux. Сегодня я проведу несколько упражнений с загрузкой системы: покажу вам, как настроить её и улучшить с помощью Grub. Но сначала проведем разминку. Как вы уже знаете, при загрузке в вашу любимую операционную систему компьютер проходит несколько этапов. Все их понимать не обязательно, но в определенный момент времени прошитое ПО компьютера (BIOS) пытается загрузить ОС с диска (или другого устройства), используя для этого MBR (главную загрузочную запись) диска. Это небольшая область на диске, содержащая код, который найдет и загрузит ядро вашей ОС.
Долгое время Linux обходился системой Lilo (Linux Loader), устанавливавший код начальной загрузки в MBR и создающий map-файл с указаниями на код, который надо загрузить. У Lilo много ограничений, и не самое мелкое из них состоит в том, что этот файл нужно заново создавать всякий раз, когда вы хотите поменять инструкции загрузки.
Чтобы сделать загрузку более гибкой и внести новые возможности в этот процесс, был создан Grub, Grand Unified Boot manager (Большой Унифицированный менеджер Загрузки); он также поддерживает загрузку нескольких систем. Позор, что почти никто не использует его возможности! Среднестатистический дистрибутив Linux при установке создает загрузочную запись для себя, а если у вас есть Windows, то везучим он создаст запись и для него. Но может-то он гораздо больше! А тем, кто хочет загружать более одной системы, просто следует этим воспользоваться! Встрепенулись? Значит, можно начать урок.
Grub управляется файлом настройки, обычно находящимся в /boot/Grub/menu.lst. Когда Grub инициируется кодом начальной загрузки, он ищет этот файл, считывает его и выполняет указанные в нем команды. Преимущество такой системы в том, что после изменения конфигурации вам не нужно пересоздавать никакие файлы – с Grub вы даже можете менять процесс загрузки на лету!
Файл настройки
По умолчанию файл настройки Grub выглядит примерно так:
# grub.conf созданный anaconda default=0 timeout=5 splashimage=(hd0,10)/boot/grub/splash.xpm.gz hiddenmenu title Fedora Core (2.6.18-1.2849.fc6) root (hd0,10) kernel /boot/vmlinuz-2.6.18-1.2849.fc6 ro root=LABEL=/1 rhgb quiet initrd /boot/initrd-2.6.18-1.2849.fc6.img title Fedora Core (2.6.18-1.2798.fc6) root (hd0,10) kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/1 rhgb quiet initrd /boot/initrd-2.6.18-1.2798.fc6.img title Wintest rootnoverify (hd0,5) chainloader +1
В начале файла идет набор глобальных настроек, описывающих загрузку по умолчанию, время до начала загрузки по умолчанию, экранную заставку, и опция, позволяющая спрятать меню, если не будет нажата какая-либо клавиша. Остальные настройки – индивидуальные записи меню, каждая из которых начинается с заголовка.
Начинаем
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
OK, теперь взглянем на стандартные шаги, необходимые для загрузки с помощью Grub. Первым делом познакомьтесь с командой root. Она устанавливает корневое устройство, а также подключает его, чтобы добыть информацию о размере раздела и т.п. Вот как выглядит типичная запись:
root (hd0,0)
Команда устанавливает корневым разделом первый раздел первого диска. Если как корневой вы хотите использовать не-Linux раздел, то используйте команду rootnoverify, которая не пытается сначала подключить устройство. Вам необходимо это сделать, чтобы прицепить загрузчик Windows, например, который наверняка располагается на разделе NTFS.
То, как Grub определяет диски, нередко вызывает путаницу (да такую, что в грядущем Grub2 это решено переделать). Во-первых, он, не в стиле Linux, использует номера дисков вместо букв, так что согласно Grub hdb становится hd1. Вторая особенность состоит в том, что вся нумерация начинается с нуля!
Для вящего замешательства, если в Linux, пытаясь указать файл на втором разделе второго диска на системе, вы использовали hdb2, то в Grub это будет (hd1,1). Ветеран вы или салага, но когда-нибудь здесь непременно споткнетесь!
Определив корневое устройство, мы должны указать расположение образа, который хотим запустить. Это делается с помощью команды kernel. Она принимает имя файла (который представляет образ загружаемого ядра). Grub автоматически может распознавать тип файла для ядер Linux, а также большинства других Unix-систем.
Обычно вы видите примерно следующее:
kernel /boot/vmlinuz-2.6.18
Заметим, что здесь используется устройство, которое вы определили как корневое. Так что, увидев эту строчку, Grub попытается загрузить файл (hd0,0)/boot/vmlinuz-2.6.18.
Если образ ядра почему-либо находится на другом устройстве, то вам необходимо только приставить спереди нужный дескриптор устройства. Все остальные аргументы команды kernel передаются ядру, так что если ваши действия как-то связаны с конкретным драйвером, необходимые опции можно указать в конце этой строки.
Если ваше ядро использует образ RAM-диска для начальной загрузки, то вам необходимо указать его здесь, вот так, например:
initrd /boot/initrd-2.6.18
Вот и все, что нужно для стандартной записи в меню. Если бы вы набирали эти строки из командной строки Grub, то затем понадобилось набрать команду boot, однако ее наличие в меню подразумевается.
Чтобы запустить систему Windows, необходимо вызвать загрузчик Windows. Команда chainloader просто загружает другой загрузчик с указанного корневого раздела. Значение +1 означает, что дополнительный загрузчик сидит в первом блоке раздела (именно туда его помещает Windows).
Двойной пакет Окон
Grub также позволяет установить несколько версий Windows. Стандартный загрузчик Windows 9x/DOS срабатывает, только если он находится на первом диске, что, очевидно, затрудняет установку более чем одной копии системы. Хуже того: если у вас на одном диске два загрузочных раздела Windows, могут возникнуть проблемы.
Пора уже сообразить, что Grub может помочь и в этой ситуации. Команда map позволяет переупорядочить разделы диска, и вы сможете установить две версии Windows, обманув загрузчик: он поверит, что грузится с первого диска. Вот как можно это сделать:
title Windows A hide (hd0,1) rootnoverify (hd0,0) chainloader+1 title Windows B hide (hd0,0) rootnoverify (hd0,1) chainloader+1 title Windows C map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) chainloader+1
Команда hide полностью прячет раздел от операционной системы и тем самым предотвращает возможные инциденты.
Аварийное восстановление
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Самое тяжкое преступление для рабочей системы – невозможность перезагрузиться после сбоя. Меньше всего вам хотелось бы, чтобы ядро системы впадало в панику из-за выхода из строя какого-то оборудования – особенно если вы администрируете удаленный сервер за тысячи километров от вас. Grub здесь может прийти вам на помощь: у него есть система восстановления после сбоев, позволяющая определить альтернативный порядок загрузки, если отказала основная последовательность инструкций.
Заметим, что отказ может быть как проблемой Grub, так и проблемой системы – например, с настройкой Grub все в порядке, но ядро не может загрузиться, не находит файловую систему или что там еще надо. Понятно, что защиты от дурака нигде не бывает, случаются такие обстоятельства, что процесс загрузки просто зависает, а не отказывает, однако данный метод позволит предотвратить множество типичных проблем.
Вот пример простой настройки аварийной загрузки:
default saved timeout 10 fallback 1 2 title Default system root (hd0,0) kernel /boot/vmlinuz-2.6.18 initrd /boot/initrd-2.6.18 savedefault fallback title Failsafe mode root (hd0,0) kernel /boot/vmlinuz-2.6.18 failsafe initrd /boot/initrd-2.6.18 savedefault fallback title Alternative root (hd0,3) kernel /boot/vmlinuz-2.4.34 initrd /boot/initrd-2.6.18 savedefault
Строка default велит Grub искать сохраненное значение. Строка fallback определяет порядок альтернативной загрузки (умолчание по умолчанию 0), поэтому в данном примере сначала пробуется запись Failsafe, затем запись Alternative.
Grub ищет в своем каталоге файл default, содержащий значение загрузки записи по умолчанию. Это значение можно изменить командой Grub-set-default, входящей в состав Grub, но так как многие дистрибутивы ее не включают, то можете сделать, например, так:
echo ‘1’ > /boot/grub/default chmod 600 /boot/grub/default
Учтите, что после того, как диск произвел аварийную загрузку, значение по умолчанию изменится на первую успешную загрузочную запись, поэтому вам необходимо обновить значение в файле ‘default’ и вернуть все на свои места.
Ставим замок
Навидавшись чудес, совершаемых с помощью Grub, вы можете обеспокоиться, нельзя ли все это использовать в нехороших целях. Что ж, ваш компьютер никогда не находится в полной безопасности, если он, конечно, не защищен физически, однако существуют меры по усилению сохранности системы.
Grub поддерживает защиту паролем как в виде обычного текста, так и в виде md5-шифрованных паролей.
Я покажу, как это работает. Создайте зашифрованный пароль прямо в Grub как в терминале (от имени root).
grub grub> md5crypt Password: ******** Encrypted:$1$IsFjn1$VROhkBS.BaraJ6brXjnc8.
Теперь добавьте следующий код в первый раздел вашего файла настройки menu.lst':
# заголовок # обычно создается # вашим дистрибутивом default =0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz password -md5 :$1$IsFjn1$VROhkBS.BaraJ6brXjnc8. hiddenmenu title Linux-one root(hd0,0) ...
и т.д. Далее, существует несколько способов использования паролей. В показанном выше файле, пользователь сможет выбирать пункты меню, но не запускать команды Grub через командную строку и не редактировать существующие настройки. Если попытаетесь, то вас попросят пароль – тех, кто его не знает, Grub пнет обратно в меню.
Это довольно простая мера защиты; а если вы хотите вообще скрыть присутствие альтернативных записей загрузки? Что ж, команда password может принимать еще один аргумент, указывающий на другое меню Grub.
password -md5 :$1$IsF... /grub/menu2.lst
Вы можете, конечно, назвать файл как угодно и даже хранить его где угодно, лишь бы Grub мог до него добраться.
При загрузке Grub отобразит обычное меню, с теми же ограничениями. А вот если на экране выбора в меню вы нажмете ‘p’ и введете правильный пароль, то он загрузит совершенно новый файл меню со всеми спрятанными опциями.
И наконец, полезный способ использовать пароль – это применить его к отдельному образу. Строка с паролем вставляется сразу после заголовка title. Когда данная запись выбирается в меню, Grub потребует пароль – а нет то откажется продолжить работу. Это полезно, если к вашей системе имеет доступ несколько групп пользователей.
Создание загрузочного Grub CD
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Grub на загрузочном диске может очень пригодиться – например, чтобы оживить систему, которая перестала работать, или для загрузки с устройства, не распознаваемого BIOS (это непросто, так как придется установить ядро, поддерживающее устройство в образе RAM-диска, и использовать его для загрузки настоящего ядра).
Кроме загрузки с неподдерживаемого устройства, вы также можете использовать спасательный диск, чтобы переустановить первый этап Grub в главной загрузочной записи на диске.
Чтобы загрузиться с CD, Grub пользуется образом El Torito. El Torito – это имя стандартного протокола загрузки с CD (странное? См. врезку Знаете ли вы?), которому требуется особый код.
Создайте каталог, где будет хранится образ, и реплицируйте структуру каталога boot следующим образом:
mkdir -p grubcd/boot/grub
Теперь необходимо скопировать нужный образ Grub. Ваш дистрибутив обычно хранит их в /usr/share/Grub/i386-pc/, хотя имя последнего каталога может варьироваться. Для Fedora, например, мы использовали
cp /usr/share/grub/i386-redhat/stage2_eltorito grubcd/boot/grub/
Без конфигурационного файла, Grub просто загрузит командную строку, позволив вам вводить команды загрузки напрямую. Однако вы можете при желании включить такой файл (например, списать его с вашей основной системы Linux, чтобы использовать его как резервную копию). И хотя вы создаете Grub CD, это не значит, что на него нельзя поместить другие полезные вещи.
Для создания образа можно использовать команду makeiso. Нужно будет сообщить ей, где находится загрузочный образ. Затем, так как данный образ Grub не использует систему эмуляции диска (где образ диска эмулирует загрузочную дискету), на это также придется указать, да еще добавить несколько дополнительных параметров для максимальной совместимости с системами со старым BIOS. Сведя все вместе, получаем, что ввести надо
mkisofs r -b grubcd/grub/stage2eltorito -no-emul-boot -boot-loadsize 4 -boot-info-table -o Grubcd.iso
Данная команда создаст файл ISO, который будет грузиться (проверьте, что BIOS настроен на загрузку с CD!). Осталось использовать CDRecord или инструмент вроде K3b для прожига образа на диск, и все готово.
Завершение
Наш урок окончен, и настало время остыть. Если ваши Linux мускулы еще не болят, то можете попытаться двигаться дальше. Grub хорош, но разве вы не думаете, что он может больше? Разве вас не достает, как он обзывает диски и разделы? Многие уже на это натыкались. На самом деле их так много, что Grub2, который уже довольно долгое время находится в разработке, исправит эти недочеты. Grub2 вырос из старого исследовательского проекта Pupa (Preliminary Universal Programming Architecture), который был создан для исследования процесса обновления. Некоторые новые возможности Grub2 включают расширяемую, модульную среду, поддержку скриптов и ориентированность на многие платформы. Хотя система следующего поколения еще в разработке, пользоваться ею уже можно. Вы можете ознакомиться с ходом разработки Grub2 в wiki по адресу http://grub.enbug.org. LXF