CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Как грузят пингвины?

Сергей ЯРЕМЧУК grinder@ua.fm

(Окончание, начало см. МК № 47 (218))

GRUB

Следующий интересующий нас загрузчик —GRUB (GRand Unified Bootloader), более современная разработка. Честно говоря, пока не зашел на официальный сайт проекта http://www.gnu.org/software/grub, я думал, что это просто очередной загрузчик. Оказалось, нечто куда большее. Но давайте по порядку. В 1995 году при разработке ядра Hurd, довольно оригинальной ОС, стал вопрос, как его, собственно говоря, загружать-то. Надо отдать должное, разработчики поступили нестандартно. Вместо того, чтобы выдумывать какой-то собственный способ загрузки для Hurd, была предложена Multiboot Specification — спецификация, позволяющая загружать систему универсальным (единым) образом. Для систем, производители которых не желали создавать продукт, совместимый с данной спецификацией (попробуйте угадать), была сохранена схема загрузки последовательно «по цепочке». А в 1999-м GRUB официально примкнул к проекту GNU, со всеми вытекающими отсюда последствиями (добавились сторонники, желающие помочь, что положительно повлияло на функциональности всего пакета). И где-то с 2000 года производители начали включать GRUB в свои дистрибутивы, сначала осторожно, предлагая его как альтернативу, а затем уже и в качестве основного загрузчика по умолчанию. А в настоящее время в Интернете уже даже поговаривают о GRUB'e как о стандарте. Что же такого особенного в GRUB? Судите сами:

загрузка ядер систем, совместимых и, что главное, ограниченно совместимых с Multiboot Specification (FreeBSD, NetBSD, OpenBSD и GNU/Linux), поддержка загрузки по цепочке (Windows 9x/NT/2000/XP и OS/2);

поддержка большинства файловых систем (DOS FAT и FAT32, Linux ext2fs и ext3fs, Minix fs, BSD ffs (да, у BSD файловая система именно ffs, а не ufs, как ошибочно полагают многие), ReiserFS, VSTa fs и XFS);

поддержка большинства форматов исполняемых файлов;

поддержка загружаемых модулей;

поддержка автоматической распаковки архивов;

независимость от геометрии диска, т.е. при переходе к другому диску не требуется внесения изменений в конфигурации;

автоматическое определение поддержки LBA(Logical Block Address)-режима;

определение всей доступной оперативной памяти;

поддержка бездисковых станций и удаленных терминалов;

Особенно хотелось бы выделить то, что, собственно, и привлекло к нему пользователей, — простоту интерфейса для выбора необходимой операционной системы. Хотя сейчас LILO тоже может работать с графическим интерфейсом, но до GRUB ему еще далеко. Плюс ко всему, у GRUB’а удобный для редактирования конфигурационный файл. Находится он в каталоге /boot/grub и называется grub.conf. Примерное содержание его таково:

Параметр default указывает, какая система (точнее, метка, обозначенная title) загружается по умолчанию, если же загрузка не получилась по каким-либо причинам, грузится система, обозначенная как fallback. Закомментированный параметр boot указывает, куда будет установлен загрузчик; впрочем, место для установки удобно задавать в командной строке, поэтому можно не трогать данный параметр. Timeout указывает время ожидания ввода команды или выбора другой операционной системы. Параметр splashimage указывает, какой рисунок будет использован в качестве фона, — это должен быть зазипованный .xpm-файл с разрешением 640x480 и с 14-цветовой палитрой. Также обратите внимание на то, как обозначаются разделы дисков. Имя устройства должно быть заключено в круглые скобки, первая цифра обозначает номер диска в системе, а вторая — раздел на диске (начиная с нуля). В примере для файла изображения это первый жесткий диск (он у меня единственный (нулевой :-))) и пятый раздел на нем (считая со стороны MBR) —hda5 по-Linux'овски. Параметр rootnoverify указывает на корневой раздел системы, но который не требует монтирования (для ОС Windows в этом просто нет необходимости). А chainloader +1 необходим для систем, не поддерживающих Multiboot Specification для «цепочечной» их загрузки. Иногда данному параметру может предшествовать директива makeactive, если необходимо сделать данный раздел «активным» — например, вас угораздило установить Windows туда, где его создатели никак не ожидали бы увидеть (допустим, в расширенный раздел жесткого диска), или у вас — о ужас! — несколько Windows'ов. Для этой же цели также могут понадобиться команды hide и unhide, позволяющие скрыть какой-либо раздел жесткого диска на время загрузки. Например:

Остальные параметры, я думаю, очевидны. Как уже говорилось, с помощью GRUB можно загрузить и FreeBSD (вариант с GRUB мне представляется наиболее симпатичным); для того чтобы это сделать, добавьте в файл следующие строки:

С обозначением дисков в данном примере те, кому надо, разберутся сами, а остальным, чтобы не застревать на этом сейчас, обещаю вернуться к этому вопросу как-нибудь в отдельной статье. Для загрузки Windows со второго жесткого диска (сама она этого делать почему-то не умеет) применяется техника свопирования дисков; для этого в нужном пункте просто необходимо прописать что-то вроде этого:

Теперь система будет думать, что она грузится с первого жесткого диска.

Чтобы установить GRUB, воспользуйтесь командой [root@grinder sergej]# /sbin/grub-install /dev/hda (это для записи в MBR), и если все прошло благополучно, получите сообщение Installation finished. No error reported, скрипт же выведет карту устройств. При загрузке системы можно, как и в LILO, изменить некоторые параметры в командной строке (менее очевидная возможность, т.к. GRUB имеет графический интерфейс). Осуществить все это очень просто. Для того чтобы отредактировать последовательность команд, выполняемых при загрузке той или иной системы, переместите, при появлении меню GRUB, на нужную позицию курсор и нажмите e (edit); для того чтобы передать (изменить) аргументы, передаваемые ядру, нажмите a (add). А вот при нажатии c (command) произойдет самое интересное —вы попадете в командный режим работы с GRUB. В этом режиме с помощью bash-подобного командного интерфейса можно проделать множество различных операций, которые могут понадобиться для загрузки системы, причем доступно как и автодополнение команд и путей к файлам, так и распределение памяти и редактирование команд, введенных пользователем. Список всех доступных команд можно получить, введя help в командной строке; более подробная информация о команде вызывается так: > help command_name. Перечислять их целиком не буду — часть из них требует наличия определенных знаний, а о некоторых мы уже говорили. Приведу лишь самые часто используемые (и наиболее безопасные). Впоследствии опробованные команды при необходимости (удачном эксперименте) можно внести в конфигурационный файл.

Загрузить систему, удовлетворяющую Multiboot Specification (например, Linux), можно с помощью примерно такой команды:

Как видите, с раздела hda5 загружается ядро, хранящееся, в файле /boot/vmlinuz-2.4.18-3; данный раздел назначается корневым, после чего выбирается режим видеоадаптера 1024х768х16 (если данный режим вам не подходит, попробуйте, например, vga=788 — 800х600) и дополнительно для пишущего CD-RW привода устанавливается эмуляция SCSI-устройства. Для остальных систем используйте все те же makeactive и chainloader +1. Опробовать новый командный файл можно с помощью опции configfile path_to_file. Для того чтобы вывести содержимое какого-либо текстового (конфигурационного) файла, воспользуйтесь до боли знакомой командой cat, а сравнить два файла можно с помощью cmp file1 file2. Кстати, для поиска нужного файла тоже существует команда, которая так незамысловато и называется —find. Команда quit позволяет выйти из загрузчика, а halt и reboot — соответственно, выключить и перезагрузить компьютер. С помощью команды color можно изменить цвет меню, например: color light-gray/blue black/light-gray; первым идет параметр для выбранного пункта меню, а затем для невыбранного, основной/фоновый цвет соответственно. Впрочем, можно воспользоваться и отдельными командами — например, foreground ffffff (цвет в шестнадцатиричной форме), background 000000, а для установки рамки вокруг служит команда border. Кстати, можно изменить и режим вывода, с графического на текстовый — для этого воспользуйтесь командой GRUB> display text, а когда вам надоест этот режим, то вернуться можно, заменив параметр на vga16. Определить и вывести режимы видеоадаптера можно с помощью команды vbeprobe, а протестировать — с помощью testmode. Есть и команды, предназначенные для работы с разделами жесткого диска, так, команда partnew позволяет создать первичный раздел, а partype — изменить его тип, fstest тестирует файловую систему, geometry дает возможность работать с геометрией разделов жесткого диска. Для конфигурации сетевого интерфейса есть возможность воспользоваться командой ifconfig, для установки параметров СОМ-порта —serial, изменить раскладку клавиатуры —setkey [to_key from_key]. И естественно, не обошлось без возможности установки пароля — сами ведь видите, что с помощью командного режима можно существенно навредить системе. Для этого используется все та же команда password [`--md5'] собственно_пароль, которую все-таки лучше занести в конфигурационный файл; необязательная опция md5 указывает на использование алгоритма шифрования md5crypt. Для тех, у кого GRUB не входит в стандартную поставку системы, а очень захотелось с ним повозиться, данная утилита доступна на сайте производителя http://www.gnu.org/software/grub/grub-download.html. Причем есть варианты, предназначенные не для инсталляции загрузчика, а только для загрузки с любой из поддерживаемых файловых систем (в названии присутствует префикс -i386-pc).

Итак, с загрузчиками мы разобрались. Теперь давайте разберемся с вопросом, куда его устанавливать. Все дело в том, что некоторые системы уже имеют свой загрузчик, которым, естественно, можно воспользоваться им. Также нельзя обойти вниманием тот факт, что операционные системы семейства Windows вообще не заботятся о сохранении MBR, при инсталляции просто записывая туда то, что им нужно. После этого, как вы понимаете, до вашего Linux’а можно будет добраться только с помощью спасательной дискеты. Поэтому возникает вопрос: в какой последовательности устанавливать системы, чтобы потом не повторять заново некоторые операции. Разберем два наиболее популярных варианта: Windows 9x + Linux, Windows 9x + Windows NT(2000) + Linux. Другие, как правило, являются лишь частными случаями этих двух; главное — уловить принцип, а там разберетесь, я думаю, сами.

Итак, случай первый —Windows 9x + Linux. Первой желательно установить Windows 9x — причина, думаю, уже ясна. Впрочем, если есть загрузочная дискета, то загрузить Linux и восстановить загрузчик можно будет без проблем. Да, перед началом любых действий, затрагивающих MBR желательно сохранить, так сказать, его оригинальную версию с помощью команды dd:

# dd if=/dev/hda of=mbr_orig.bak bs=512 count=1

Правда, удобно? Ведь вы, надеюсь не забыли, что в Linux можно обратиться ко всему диску сразу или к любой его части, ведь система не накладывает никаких ограничений (кроме прав доступа, естественно). Если привыкли к Microsoft'овским разделам, отвыкайте, будет легче. Что мы сделали в этом примере? Откусили первые 512 байт жесткого диска (т.е MBR) и сохранили его в файле. В принципе, это можно проделать и в Windows, но там вам не обойтись без дополнительных утилит вроде Disk Doctor’a. Восстановить теперь старую версию MBR можно, введя # dd if=mbr_orig.bak of=/dev/hda bs=512 count=1 (или еще проще —# cat mbr_orig.bak > /dev/hda). Красота!

Во время инсталляции Linux программа установки спросит, куда устанавливать LILO. Давайте посмотрим, какие у нас варианты. Windows загружается в такой последовательности (Рис. 1). Из рисунка видно, что возможны два варианта установки — в MBR (Рис. 2) и в boot record раздела, куда установлена Windows (Рис. 3). Предпочтительным вариантом является установка в MBR (т.е. выбираем hda). Кстати, если вы просто удалили раздел с Linux, то восстановить MBR можно и в DOS, просто наберите fdisk /mbr.

Рис. 1   Рис. 2   Рис. 3

Теперь рассмотрим второй вариант. Последовательность установки систем такая: сначала Windows 9x, затем Windows NT/2000 — последняя корректно определяет родственную систему и заносит данные в свой загрузчик, — лишь после этого устанавливаем Linux. Можно в этом случае загружаться и по приведенной выше схеме, но это несколько неудобно, так как всякий раз придется выбирать дважды — сначала Windows в LILO (GRUB), а затем между Windows 9x и Windows NT/2000. Лучшим вариантом будет воспользоваться NT loader. Для этого установите загрузчик в корневой раздел Linux (например, hda5), загрузитесь с дискеты и введите в командной строке # dd if=/dev/hda5 of=/bootsect.lnx bs=512 count=1. Теперь скопируйте получившийся файл в раздел, где у вас установлена Windows (раздел С:), например, командой #cp /bootsect.lnx /mnt/win_c или через флоппи диск. Затем найдите в этом же разделе скрытый файл boot.ini (здесь все почему-то рекомендуют перегрузиться в Windows, но мне было лень бегать туда сюда и я все делал через mc) и добавьте в конец файла следующую строку C:\bootsect.lnx=«Linux». Теперь при загрузке вы получите возможность выбрать с помощью NT loader'a любую из трех систем; при выборе варианта Linux загрузится установленный загрузчик, который можно тоже настроить для загрузки Windows и гонять их так по кругу :-).

Если вы не создали загрузочную дискету при установке системы, то это упущение можно наверстать в Linux, воспользовавшись утилитой mkbootdisk. Например:

где опция device указывает на устройство, на котором будет создаваться загрузочный диск (если у вас один дисковод, то данную опцию можно опустить), а 2.4.18-3 показывает на используемую версию ядра, это название каталога в /lib/modules/. Можно и проще: # /sbin/mkbootdisk --device /dev/fd0 `uname -r`. Кстати, в Mandrake Control Center есть соответствующая опция.

Вот мы и разобрались (я надеюсь) с загрузчиками. Дополнительную информацию найдете в соответствующих man'ах; к тому же по мультизагрузке системы доступны различные варианты HOWTO в Интернете. Кстати, хотите верьте, хотите нет, но Windows загрузилась тогда последний раз. Бывает.

Linux forever.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov