См. также статью В.Попова GRUB - GRand мира загрузчиков
Q. Средства ограничения доступа в GRUB.
A. Для ограничения доступа в GRUB в конфигурационном файле могут
быть применены следующие команды:
- строка
password PASSWORD
позволит только выбирать позиции меню. Редактирование и командный режим
будут блокированы, пока не будет нажата клавиша < p > и
введён правильный PASSWORD. Здесь PASSWORD -
буквально желаемый пароль;
- строка
password --md5 PASSWORD
делает то же самое, но PASSWORD, в данном случае -
кодированное значение, полученное из "человеческого" пароля командой:
grub> md5crypt
Password: **********
Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb
эту самую encrypted-строку и надо подставлять в конфигурационный файл.
Водить же, когда спросят, разумеется - действительный пароль;
- строка
password PASSWORD file
после введения правильного пароля загрузит file в качестве
конфигурационного;
- после команды
title можно ставить команду lock -
пароль тогда будет запрашиваться при выборе этой позиции меню (команда
password, разумеется, должна в этом случае присутствовать в
общей секции). Вместо lock можно ставить и password,
что даёт возможность иметь разные пароли для разных вариантов
загрузки.
Q. Как сохранить раздел Windows 2000?
A. Копирование Windows 2000 в виде образа (и последующее
восстановление) противоречат соображениям безопасности (как их трактует
MicroSoft). Результат их борьбы выглядит как невозможность загрузки
восстановленной системы.
А нужно так:
- На инсталляционном диске Windows 2000 в архиве
\SUPPORT\TOOLS\DEPLOY.CAB имеется утилитка
sysprep.exe;
- Находясь в win'2000, её и нужно запустить перед созданием образа. В
результате в системе будут аннулированы так называемые CID -
идентификаторы: при очередной загрузке скопированной системы потребуется
опять ввести регистрационный код - и всё восстановится "на круги
своя";
- Образ нужно создавать, загрузившись с дискеты или раздела win'98
(если он существует, разумеется);
- После загрузки восстановленного образа также потребуется ввести
регистрационный код.
Q. Зачем нужна метка активности раздела?
A. GRUB - не нужна, старому загрузчику от MicroSoft - нужна, её же
проверяют инсталляторы MicroSoft, даже современные. В общем, логической
потребности нет, но архитектурный замысел со времён рождения IBM PC не
менялся... Получается: хочешь - пользуйся, не хочешь: не пользуйся.
Q. Что такое stage1?
A. В общем - фаза загрузки, выполняемая сразу после передачи управления из BIOS. Файл, длиной всегда 512 байт - по размеру загрузочного блока. Именно содержимое этого блока BIOS, собственно, только и загружает в память в соответствии всё с тем же архитектурным замыслом.
Q. Что значит, "разделы нумеруются в порядке создания"?
Неужели в patrtition table записывается номер раздела?
A. Первичные разделы в partition table не нумеруются, но следуют друг за другом в определённом порядке. Этот порядок и можно пронумеровать. Linux и GRUB так и делают. Тем более, это справедливо для логических разделов, единой таблицы которых не существует, и каждый новый раздел адресуется предыдущим. С другой стороны, разделы физически расположены на диске в некотором порядке: от младших дорожек - к старшим. Поэтому, для Linux и GRUB возможна ситуация, когда hda3 (hd0,2) физически расположен на младших дорожках относительно, например, hda2 (hd0,1). Linux-овый fdisk характеризует такую ситуацию как "неверный порядок следования разделов" и предлагает её исправить. А бывает soft , который "исправляет" partition table не запрашивая согласия пользователя. Нетрудно догадаться, что после такого исправления и Linux, и GRUB будут неправильно адресоваться к разделам.
Q. Как получить новый GRUB на FAT-дискете?
A. Довольно просто:
- скачать свежий GRUB из Сети (можно только файл - образ
загружаемой дискеты);
- сделать из этого образа загружаемую дискету (в Linux или с помощью
rawwrite);
- на чистой DOS-дискете создать каталог \boot\grub и перенести в
него с новой GRUB-дискеты файлы stage1, stage2 и
stage1_5 (эти - только для требуемых файловых систем,
fat
- само собой). Как это сделать (переносить файлы с GRUB-дискеты
(файловая система ext2) на DOS-дискету (файловая система
fat) - очевидно для пользователя Linux, но невозможно для
пользователя MS Windows. Единственная для него возможность:
воспользоваться ПО "третьих" производителей, которое бы обеспечивало
чтение с дискеты ext2;
- загрузиться с GRUB-дискеты, вместо неё поставить
DOS-дискету, выполнить:
root (fd0)
setup (fd0)
Q. Когда я удаляю всё из /boot/grub, кроме menu.lst, grub грузится не хочет...
A. Да, здесь в тексте статьи допущена явная ошибка, в чём автор
сознаётся и искренне раскаивается. И для полной ясности в этом вопросе
придётся принять во внимание следующее:
"нулевая" дорожка, которой безбоязненно можно воспользоваться для размещения необходимого для загрузки кода имеет объём, равный количеству секторов на ней. Это число не может быть более 255. То есть: вмещает не более 128к. Казалось бы: вполне можно разместить всё необходимое для GRUB . И это - правда для тех винчестеров, количество секторов которых равно 255-ти. Однако... XXI-й век на дворе. И винчестера нынче эксплуатируются в LBA-моде, для которой число секторов принимается равным 63-м. То есть stage1, разумеется, поместится, stage1_5 и menu.lst, при желании - тоже, а вот для stage2 места "маловато будет"...
Поэтому-то setup (а это, как известно, скрипт, а не встроенная команда) сначала с помощью команды embed записывает в начальные блоки диска (начиная с первого) stage1_5, соответствующую той файловой системе, на которой GRUB обнаружил stage1, stage2 и menu.lst. Именно stage1_5 даёт возможность GRUB считать всё остальное, нужное для продолжения загрузки.
После этого setup выполняет команду install.
Например:
install /grub/stage1 (hd0) (hd0)1+16 p (hd0,4)/grub/stage2 /grub/menu.lst
которая записывает на устройство (hd0), начиная с нулевого блока
stage1 , а затем - перечень блоков (blocklist), которые
нужно загрузить во вторую очередь: (hd0)1+16, то есть, фактически
- stage1_5.
Опция p (от patch) заставляет install занести в первый из блоков stage1_5 информацию о местонахождении следующего в командной строке файла (а это - stage2), а наличие в командной строке ещё одного файла заставляет, в свою очередь, занести в stage2 данные о местонахождении конфигурационного файла menu.lst. Такая вот "связочка" получается...
Осталось выяснить: можно ли всё-таки уничтожить содержимое /boot/grub? Уничтожить, очевидно, - нет. Но скрыть "от дурного глаза" - можно. Для этого нужно помнить следующее:
- команда
install понимает под файлом как его имя, так и
blocklist. То есть: и stage2, и menu.lst могут
находиться в любых блоках винчестера. В том числе - и не принадлежащих ни
одному из разделов;
- универсальным инструментом помещения содержимого любого файла в любые
блоки в Linux служит команда
dd, для которой выходным
файлом назначается диск: of=/dev/hda, номер первого блока
задаётся, как seek=nnn, а количество блоков, как
count=mmm;
- количество блоков (и их местонахождение, хоть оно нас особенно и не
интересует) для любого файла можно получить с использованием команды
GRUB:
grub>blocklist FILE
Всё вышесказанное относится, безусловно, только к системам семейства *NIX и предполагает определённый уровень знакомства с вычислительной техникой. Нельзя так же сказать, что "спрятывание" содержимого /boot/grub исключительно полезно: даже 100% уверенность в сохранности stage2 и menu.lst не спасёт MBR от вируса, или "бесцеремонного" поведения инсталляторов MS Windows. Проще, всё-таки, иметь всё необходимое для восстановления GRUB на дискете, загружаемом CD ROM или flash-модуле.
Q. Можно ли из меню GRUB загрузиться с CD-ROM?
A. Средствами исключительно GRUB - нет, но "мир не без добрых людей". Существует мультизагрузчик, не такой многофункциональный, как GRUB, но, зато, умеющий грузить систему с CD ROM, даже если BIOS такой возможности не предоставляет.
Называется -
Smart Boot Manager и свободно доступен по адресу:
http://btmgr.sourceforge.net/. Размер очень скромный - около 100кб, но запускать-то его нужно с дискеты... А вот это преодолевается добавлением в меню следующих строк:
title SmartBootMngr
kernel /boot/grub/memdisk floppy
initrd /boot/grub/sbootmgr.dsk
Здесь: memdisk - "крохотный" файлик из пакета Питера Анвина syslinux, floppy - опция для него, предупреждающая, что загружаемый файл - образ дискеты, а sbootmgr.dsk - этот самый образ загружаемой дискеты из Smart Boot Manager.
Q. Можно ли MS Windows загрузить из логического раздела?
A. Конечно - можно. Точно так же, как и из первичного. Вопрос в том, как в этом логическом разделе MS Windows получить. Инсталлироваться куда-либо, кроме разделов первичных, ОС семейства Win9x просто отказываются, а NT - соглашаются, если у них есть возможность поставить в одном из первичных разделов собственный загрузчик NT Loader (ntldr). А вот если инсталлированную в первичный раздел Win9x, сохранить в виде образа (с помошью Norton Ghost, например), а потом этот образ "восстановить" в логическом разделе, то работать - будет.