18.08.2006
Современный компьютер для решения разнообразных задач позволяет использовать различные операционные системы. И если совсем недавно у ОС от Microsoft практически не было конкурентов, то теперь они появились и начинают претендо- вать на место в наших домашних компьютерах. Я имею в ви- ду ОС семейства Unix — Linux и FreeBSD.
Эти ОС пришли из мира серверов, где занимают значительную нишу, как бы в ответ на вторжение туда Microsoft. А предложить нам они могут многое: это и надежность, и стабильность в работе, и нетребовательность к ресурсам, и производительность, и открытость исходного кода. До недавнего времени у этих ОС был не востребован развитый графический интерфейс пользователя, поскольку в мире серверов вполне достаточно было аскетичной командной строки. Но с появлением современных графических оболочек в Linux популярность этой ОС среди пользователей домашних компьютеров начала стремительно расти. Многие ставят подобные ОС просто из любопытства, кому-то удобнее работать в Linux, а запускать игры в Windows. Причин может быть много. В статье мне хотелось бы показать, насколько просто эти разные ОС могут делить место на винчестере вашего компьютера.
Строение жесткого диска
Жесткий диск хранит информацию фиксированными порциями, так называемыми блоками. Блок — это минимальный объем данных, который имеет уникальный адрес на жестком диске. Для того чтобы прочесть или записать определенную информацию в отведенное для нее место, необходимо знать адрес блока для передачи его контроллеру жесткого диска. Размер блока для всех жестких дисков стандартен — 512 байт. Для того чтобы однозначно адресовать блок данных, необходимо указать три числа — номер цилиндра, номер сектора на дорожке и номер головки. Такой способ адресации диска называют CHS (Cylinder, Head, Sector). Именно этот способ был первоначально реализован в BIOS, но вследствие возникших ограничений, связанных с ростом объемов жестких дисков, его заменил другой способ — LBA (Logical Block Addressing). Блоки на диске стали описывать одним параметром — линейным адресом блока, однозначно связав с его CHS-адресом: lba = (C*Head’s + H)*Sector’s + (S-1). Дальнейший рост объемов жестких дисков сделал увеличение адресуемых объемов диска с использованием прежних сервисов BIOS принципиально невозможным. Был разработан расширенный интерфейс BIOS, к сожалению, не совместимый с прежним. И прежние ОС (как, например, MS-DOS), использующие старые интерфейсы BIOS, не смогут преодолеть ограничение в 8 Гбайт (проблема 1024 цилиндра). Все современные ОС уже не используют BIOS, имея собственные драйверы для работы с жесткими дисками. Поэтому кажется, что данное ограничение на них не распространяется. Но прежде чем ОС сможет воспользоваться собственным драйвером, она должна его загрузить, и поэтому на этапе начальной загрузки вынуждена использовать BIOS. Это и вызывает ограничения на размещение разделов многих ОС за пределами 8 Гбайт. Совокупность всех блоков жесткого диска разделяется на части из смежных блоков, называемые разделами (partitions). Их может быть минимум один, а максимум — четыре. Это так называемые первичные разделы (primary partition). Один из них можно объявить расширенным разделом (extended partition). Расширенные разделы сами по себе не используются и могут лишь хранить логические разделы (logical partitions). Один расширенный раздел может содержать в себе также другой расширенный раздел. Такой механизм позволяет разбить большой жесткий диск на необходимое количество разделов. Логические разделы называются логическими дисками, или просто дисками. Для ОС под диском понимается или первичный раздел, или логический диск. Нулевой сектор каждого жесткого диска, называемый Master Boot Record (MBR), содержит таблицу разделов (partition table). Первые 446 байт MBR заняты программой-загрузчиком, которая и управляет загрузкой компьютера. Далее следует таблица разделов длиной 64 байт. И наконец, последние 2 байта используются для проверки. Таблица разделов содержит четыре записи по 16 байт каждая, определяющие первичные разделы. Каждая запись имеет следующую структуру:
struct partition { char active; /* 0x80: загрузочный,0: незагрузочный */ char begin[3]; /* CHS первого сектора */ char type; /* тип раздела */ char end[3]; /* CHS последнего сектора */ int start; /* 32 bit номер сектора (отсчет с 0) */ int length; /* 32 bit число секторов */ }; где CHS это Cylinder/Head/Sector.
Один из четырех разделов помечается как активный. Это означает, что программа загрузки должна загрузить в память первый сектор именно этого раздела и передать туда управление. Расширенный раздел также имеет некий аналог MBR (называемой EBR — Extended Boot Record), которая хранит таблицу разделов с двумя записями: одна используется для определения логического раздела (внутри расширенного), другая — для определения еще одного расширенного раздела. Таким образом, получается как бы цепочка из таблиц разделов. Каждый первичный раздел и каждый логический раздел содержат загрузочные секторы (нулевой сектор раздела), содержащие информацию о структуре файловой системы данного раздела. Каждый логический диск характеризуется размером и файловой системой, которая для каждого диска может быть единственной. Не может быть на одном логическом диске двух или больше файловых систем. В Linux для обозначения физического диска используют имена устройства:
1 Master /dev/had
1 Slave /dev/hdb
2 Master /dev/hdÒ
2 Slave /dev/hdd
В Windows логические разделы получают однобуквенные имена, начиная с последнего задействованного имени первичного раздела. Если, скажем, есть один жесткий диск с двумя первичными разделами (C: и D:) и одним расширенным разделом, в котором созданы два логических раздела, то эти логические разделы получатследующие буквы E: и F:. Впрочем, в Windows 2000/XP с помощью диспетчера дисков разделам можно присвоить другие буквенные имена. В FreeBSD для обозначения физического диска с IDE-интерфейсом используются следующие имена:
1 Master Ad0 1 Slave Ad1 2 Master Ad2 2 Slave Ad3
Программы управления разделами
Для создания разделов на жестком диске каждая ОС оснащается специальными утилитами. Со времен MS-DOS их называют fdisk и традиционно не снабжают каким-либо серьезным графическим интерфейсом. Оно и понятно — процедура достаточно серьезна, и подразумевается, что работать будут профессионалы. Из программ сторонних производителей можно отметить: 3 утилита fdisk имеет стандартный интерфейс fdisk от Microsoft, поддерживает жесткие диски до 128 Гбайт, понимает Non-DOS разделы, позволяет использовать загрузчик из других ОС, доступен исходный код утилиты; 3 Partition Magic — программа c удобным графическим интерфейсом, позволяющая изменять разделы жесткого диска без потери хранящейся на нем информации, преобразовывать файловую систему раздела из одного типа в другой; 3 DiskDrake из дистрибутива Mandrake Linux или ALTLinux.
Порядок установки ОС
В дальнейшем будем рассматривать комбинации наиболее распространенных ОС, оставив за бортом устаревшие Windows NT4, 95, 3.1 и MS-DOS. Также не рассматриваем OS/2 в силу ее малой распространенности.
Windows 9x/Me + Windows 2000/XP
Первой в соответствии с рекомендациями Microsoft устанавливаем любую Windows 9x/Me (обычно она уже стоит на жестком диске вашего компьютера). Для нее выделяем первый первичный раздел размером примерно 1-2 Гбайт, файловая система раздела — FAT32. Размер раздела зависит от того, будете ли вы располагать на этом же разделе файл подкачки Windows и прикладные программы. Затем на другой раздел, не выбирая режим обновления старой ОС, устанавливаем Windows 2000/XP. На этом этапе проблем обычно не возникает, и мультизагрузка работает прекрасно. Несколько сложнее будет обстоять дело, если у вас уже установлена Windows 2000/XP и вы хотите поставить Windows 9x/Me. Для этого необходимо, чтобы системный раздел (на котором размещаются файлы для загрузки ОС (для Windows 2000/XP — ntldr и ntdetect.com)) был отформатирован в FAT16 или FAT32. Загрузочный раздел (на который будет инсталлироваться Windows 9x/Me), также должен иметь формат FAT16 или FAT32. Если это не так — конвертируем соответствующие разделы. Поскольку программу установки Windows 9x/Me нельзя запустить из-под Windows 2000/XP, ее придется запускать с загрузочного диска Windows 9x/Me. Прежде чем это сделать, следует создать диск аварийного восстановления (Emergency Repair Disk, ERD) для Windows 2000/XP. Это связано с тем, что Windows 9x/Me перезапишет сектор начальной загрузки, после чего загрузка Windows 2000/XP, к сожалению, станет невозможна. Для восстановления возможности загрузки и понадобится диск ERD и загрузочные дискеты Windows 2000/XP (их можно создать с помощью утилиты makeboot.exe с дистрибутива Windows 2000/XP). После установки Windows 9x/Me перезагружаемся с загрузочных дискет Windows 2000/XP. На запрос о режиме следует выбрать восстановление поврежденной установки Windows 2000/XP, после чего будет предложено вставить диск ERD. В результате этой процедуры будут перезаписаны файлы загрузочного раздела, и при следующей загрузке пользователю будет предложено выбрать ОС Windows 2000/XP или Windows 9x/Me. Если этого не произошло, следует вручную отредактировать файл boot.ini на диске C, добавив в конец раздела [operating systems] следующую строку C:= «Microsoft Windows», после перезагрузки должна появиться возможность выбора нужной операционной системы.
Windows 9x/Me + Linux
Первой устанавливаем любую Windows 9x/Me, но обычно она уже стоит, и ее загрузчик прописан в MBR. Для Linux теоретически желательно иметь два раздела: корневой (/) и раздел подкачки (linux swap). Для повышения надежности и производительности системы целесообразно выделение небольшого раздела (20 Мбайт) под каталог /boot, в котором разместятся ядро и необходимые для его загрузки файлы. Раздел должен находиться в пределах первых 8 Гбайт, и тип файловой системы раздела под каталог /boot должен быть ext2. Также создаем еще два раздела: корневой (/) и раздел подкачки (linux swap). Размер первого устанавливаем исходя из того, что полная установка всей системы может занять свыше 2,5 Гбайт. Для созданного раздела выбираем файловую систему ext2, или журналируемые ext3, или ReiserFS. Рекомендованный размер раздела подкачки для современных ядер равен удвоенному размеру ОЗУ (минимум 128 Мбайт, но и не более 2 Гбайт). Тип файловой системы выбираем Linux Swap. Раздел рекомендуется размещать ближе к началу диска. Как разбить винчестер в этом случае? При инсталляции Linux надо указать, что загрузчик Linux, например LiLo, должен быть размещен в MBR. LiLo заменит имеющийся загрузчик и создаст меню загрузки, вызываемое клавишей TAB в ответ на приглашение boot:. Обязательно создайте загрузочный диск для Linux. Имейте в виду, что если вы позже переустановите Windows 9x/Me, то Linux больше не загрузится. Если у вас есть загрузочный диск для Linux, загрузитесь с него, войдите в систему как root и введите команду lilo, после чего перезагрузите компьютер командой reboot.
Windows 9x/Me + Windows 2000/XP + Linux
Устанавливаем пару ОС от Microsoft, как описано в разделе «Windows 9x/Me + Windows 2000/XP». Затем устанавливаем ОС Linux. Для размещения этой ОС выделяем место, пользуясь соображениями, описанными в разделе «Windows 9x/Me + Linux». При инсталляции этой ОС надо сделать выбор, куда устанавливать загрузчик LiLo — в MBR или в первый сектор того раздела, куда установлена Linux (rootpartition — «/»). В отличие от реко- мендаций предыдущего раздела — выберите второй вариант, то есть установку загрузчика в первый сектор. Теперь необходимо выполнить следующее: 3 смонтировать чистую, отформатированную при помощи Windows FAT-дискету командой: mount -t vfat /dev/ fda0 /mnt/floppy; 3 скопировать загрузочный сектор Linux на эту дискету командой dd if=/dev/ hdaX of=/mnt/floppy/bootsect.lnx bs= 512 count=1, где hdaX — раздел, на который установлена Linux; 3 перезагрузить компьютер, выбрав в меню загрузку Windows 2000/XP; 3 скопировать файл a:bootsect.lnx в корневой каталог системного диска (там, где расположены отвечающие за загрузку файлы boot.ini и ntldr); 3 добавить строку с:bootsect.lnx=«Linux» в файл boot.ini в конец раздела [operating systems], где с — системный диск; 3 перезагрузить компьютер, выбрав в меню появившийся пункт «Linux».
Windows 9x/Me + FreeBSD
Сначала установите Windows 9x/Me. Выделите неразмеченное место на винчестере размером минимум 1 Гбайт. Установите на это место FreeBSD. Согласитесь с установкойзагрузчика в MBR.
Windows 2000/XP + FreeBSD
Устанавливаем Windows 2000/XP, выделяем неразмеченное место для FreeBSD. Устанавливаем ее и настраиваем на загрузку с ее собственного раздела, а не с MBR! Монтируем дискету, отформатированную в DOS, в каталог /mnt командой: mount_msdos /dev/fd0 /mnt. Ищем загрузочный сектор — это первый сектор в «/». Если вы не знаете, какой раздел смонтирован как корень, наберите команду «df» и в столбце «Mounted on» найдите «/». В соответствующей строке столбца «Filesystem» вы увидите имя устройства, которое и содержит нужный нам сектор, например: ad0s3a. Kопируем его командой: # dd if= /dev/rad0s3a of=/mnt/bootsect.bsd bs= 512 count=1, где: if — откуда, of — куда, bs — размер сектора, count — количество секторов данного раздела. В результате получаем файл bootsect .bsd, содержащий копию нужного нам сектора. Теперь размонтируем дискету командой: umount/mnt. Перезагружаемся и копируем файл bootsect.bsd с дискеты в корень системного диска Windows. Редактируем файл boot.ini, добавив строку в конец раздела [operating systems]: C:BOOTSECT.BSD= «FreeBSD» где C: — системный диск. Остается перезагрузить компьютер, выбирая в меню нужную операционную систему.
Windows 9x/Me + Windows 2000/XP + FreeBSD
Пару ОС Windows 9x/Me+ Windows 2000/XP устанавливаем, как описано в разделе «Windows 9x/Me + Windows 2000/XP». Далее следуем рекомендациям раздела «Windows 2000/XP + FreeBSD» для настройки мультизагрузки.
Windows 9x/Me + Windows 2000/XP + Linux + FreeBSD
Действуем, как описано в разделе «Windows 9x/Me + Windows 2000/XP + Linux», а затем — «Windows 2000/XP + FreeBSD».
Совместное использование дискового пространства Windows 9x/ME и 2000/XP Поскольку операционные системы семейства Windows, размещенные у вас на компьютере, запускаются по одной, то ничего не мешает им использовать один общий файл подкачки. Поскольку параметры файла подкачки в Windows 9x/Me задаются в разделе [386Enh] файла SYSTEM.INI, то открываем любой текстовый редактор и добавляем следующие строки (или если они есть, то редактируем):
PagingDrive=С:
PagingFile=С:Pagefile.sys
MinPagingFileSize=262144
MinPagingFileSize=262144
Первые два параметра задают размещение файла подкачки. Здесь C — логический диск, на котором размещен файл подкачки, Pagefile.sys — имя файла подкачки (стоит отметить, что путь может быть и более сложным, например C:Folder1Folder2Folder3 Pagefile.sys, только зачем?). Следую- щие два параметра задают его размер (в Кбайт). Почему такие значения? Просто в Windows 2000/XP размер файла подкачки, размещаемого на диске, задается в Мбайт, а 1 Мбайт=1024 Кбайт. Поэтому, задав 256 Мбайт, получим 262144 Кбайт. Впрочем, здесь имеется один тонкий момент. Если диск С: окажется недоступным, Windows 9x/Me не сможет загрузиться, выдав сообщение о фатальной ошибке. Поэтому следует внимательно следить за тем, чтобы файловая система диска С: была доступна обеим Windows без дополнительных драйверов. Если же, несмотря на это, фатальная ошибка все же произошла — воспользуйтесь загрузочной дискетой или многовариантной загрузкой, загрузившись в Windows 2000/XP, и просто поправьте файл SYSTEM.INI.
Источник: Журнал Chip. Автор Игорь Козловский
|