Выбрать главу

Во-первых, не спешите и внимательно читайте те сообщения, которые появляются на экране, а также вдумывайтесь в то, какие варианты вы выбираете из числа предлагаемых вам на появляющихся экранных формах. В подтверждение этого совета могу рассказать, что когда я ставил Red Hat 7.1, то автоматически давил на кнопку Next, считая, что предлагаемый по умолчанию вариант вполне приемлем. В результате, после завершения инсталляции, я не смог достучаться до компьютера ни по одному из сетевых протоколов (telnet, ftp, NFS, Samba), хотя вроде бы задавал работу компьютера в сети. Оказалось, что в варианте, предлагаемом по умолчанию, устанавливается firewall, который закрывает доступ из сети. Чтобы такой доступ открыть, надо в ходе инсталляции явно задать, какие сервисы оставить открытыми. Но мы же так спешим!

Во-вторых, я не рекомендую соглашаться с тем, что система при загрузке автоматически выходит в графический режим. В конце концов, набрать в командной строке startx вовсе не сложно, а справиться с настройками графической оболочки новичку вряд ли удастся, если с ее загрузкой что-либо не в порядке.

После того, как необходимые меры предосторожности приняты, необходимо решить, каким образом вы будете осуществлять многовариантную загрузку, и подготовить диск к установке нескольких ОС, для чего разбить его на соответствующее число разделов (partition). Но прежде, чем перейти к конкретным процедурам подготовки диска, мне представляется необходимым хотя бы кратко рассмотреть устройство диска и процедуры загрузки ОС, чтобы не вклинивать теоретические вопросы и объяснения в изложение конкретных процедур. У кого не хватает терпения на чтение этих теорий, тот может пропустить их и перейти сразу к вопросу о выборе программы-загрузчика.

2.3. Разделы на диске и процесс загрузки

2.3.1. Что такое "геометрия диска"?

Как вы знаете, жесткие диски представляют собой несколько пластин с магнитным покрытием, расположенных на одной оси и вращающихся с большой скоростью. Считывание/запись информации осуществляется с помощью головок диска, расположенных одна под другой между пластинами и перемещающихся от центра к краям пластин. Окружность на магнитной пластине, которую описывает головка при вращении пластин, называется дорожкой, а совокупность таких дорожек, расположенных одна под другой (определяемая каждым фиксированным положением головок), называется цилиндром. Каждая дорожка разбита на сектора, и в сектор можно записать 512 байт полезной информации. Поэтому диски часто характеризуются совокупностью трех цифр: числом цилиндров/числом дорожек в цилиндре/числом секторов на дорожке или C/H/S (от первых букв соответствующих английских терминов: Cylinder/Head/Sector, т. е. цилиндр/головка/сектор). Эти три цифры называют "геометрией диска". Диск с геометрией C/H/S имеет объем C*H*S*512 байт.

Диски являются блочными устройствами, т. е. считывание и запись информации производится блоками, и минимальный размер блока равен одному сектору (512 байт). Для того чтобы записать информацию на диск, надо "позиционировать головку", т. е. указать контроллеру, в какой сектор эту информацию записать. Сектора как раз адресуются путем указания номера цилиндра, номера считывающей головки (или дорожки) и порядкового номера сектора на дорожке.

2.3.2. Разделы диска и таблица разбиения диска.

Физические диски в Intel-системах принято разбивать на разделы. Повелось это, кажется, из-за того, что первые версии MS-DOS не могли обеспечить доступ к большим дискам (а объемы дисков росли быстрее, чем возможности DOS). Тогда придумали разбиение дисков на разделы. Для этого в нулевой сектор диска (нулевой сектор первой дорожки на нулевом цилиндре) стали записывать так называемую таблицу разбиения диска на разделы (partition table). Каждый раздел может трактоваться как отдельный физический диск. В частности, в разные разделы могут быть установлены разные операционные системы.

Таблица разделов содержит 4 записи по 16 байт для 4 разделов, которые называют первичными. Каждая запись имеет следующую структуру:

struct partition {

  char active;      /* 0x80: раздел активный (загрузочный), 0: не активный */

  char begin[3];   /* CHS первого сектора, 24 бита

  char type;        /* тип раздела (например, 83 — LINUX_NATIVE, 82 — LINUX_SWAP, 85 — LINUX_EXTENDED) */

  char end[3];      /* CHS последнего сектора, 24 бита */

  int start;            /* номер начального сектора (32-бита, счет начинается с 0) */