Сайт | Скачать | Видео | Wiki

Автор Тема: [Grub FAQ]  (Прочитано 4001 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zloy_T

  • Почетный участник
  • Старожил
  • *
  • Сообщений: 326
  • Репутация: +74/-2
  • Автор темы
[Grub FAQ]
« : 04 Май 2009, 02:03:25 »
Q. Средства ограничения доступа в GRUB.

A. Для ограничения доступа в GRUB в конфигурационном файле могут быть применены следующие команды:

   1. строка

         
Код
password PASSWORD
         

      позволит только выбирать позиции меню. Редактирование и командный режим будут блокированы, пока не будет нажата клавиша < p > и введён правильный PASSWORD. Здесь PASSWORD - буквально желаемый пароль;
   2. строка

         
Код
password --md5 PASSWORD
         

      делает то же самое, но PASSWORD, в данном случае - кодированное значение, полученное из "человеческого" пароля командой:

         
Код
grub> md5crypt
      Password: **********
      Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb
         

      эту самую encrypted-строку и надо подставлять в конфигурационный файл. Водить же, когда спросят, разумеется - действительный пароль;
   3. строка

     
Код
	password PASSWORD file
         

      после введения правильного пароля загрузит file в качестве конфигурационного;
   4. после команды title можно ставить команду lock - пароль тогда будет запрашиваться при выборе этой позиции меню (команда password, разумеется, должна в этом случае присутствовать в общей секции). Вместо lock можно ставить и password, что даёт возможность иметь разные пароли для разных вариантов загрузки.

Q. Как сохранить раздел Windows 2000?

A. Копирование Windows 2000 в виде образа (и последующее восстановление) противоречат соображениям безопасности (как их трактует MicroSoft). Результат их борьбы выглядит как невозможность загрузки восстановленной системы.
А нужно так:

   1. На инсталляционном диске Windows 2000 в архиве \SUPPORT\TOOLS\DEPLOY.CAB имеется утилитка sysprep.exe;
   2. Находясь в win'2000, её и нужно запустить перед созданием образа. В результате в системе будут аннулированы так называемые CID - идентификаторы: при очередной загрузке скопированной системы потребуется опять ввести регистрационный код - и всё восстановится "на круги своя";
   3. Образ нужно создавать, загрузившись с дискеты или раздела win'98 (если он существует, разумеется);
   4. После загрузки восстановленного образа также потребуется ввести регистрационный код.

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. Довольно просто:

   1. скачать свежий GRUB из Сети (можно только файл - образ загружаемой дискеты);
   2. сделать из этого образа загружаемую дискету (в Linux или с помощью rawwrite);
   3. на чистой DOS-дискете создать каталог \boot\grub и перенести в него с новой GRUB-дискеты файлы stage1, stage2 и stage1_5 (эти - только для требуемых файловых систем, fat - само собой). Как это сделать (переносить файлы с GRUB-дискеты (файловая система ext2) на DOS-дискету (файловая система fat) - очевидно для пользователя Linux, но невозможно для пользователя MS Windows. Единственная для него возможность: воспользоваться ПО "третьих" производителей, которое бы обеспечивало чтение с дискеты ext2;
   4. загрузиться с 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, например), а потом этот образ "восстановить" в логическом разделе, то работать - будет.
« Последнее редактирование: 05 Май 2009, 15:42:52 от Zloy_T »