Чтобы с диска можно было загружаться и хранить на нем программы и данные, он должен быть соответствующим образом подготовлен.
В дисковых операционных системах (CP/M, DOS, OS/2, Windows) диски и разделы на дисках именуются буквами (C: D: E:), файлы отсчитывают свой путь от буквы диска (C:\Windows\System32\Drivers\etc\hosts, D:\backup). В UNIX-подобных системах это не так. Есть виртуальная файловая система, к которой подключаются дисковые устройства, в одной иерархии. Скажем / — корень — это точка подключения (монтирования) виртуальной файловой системы, к ней подключается дисковой раздел, используемый файловой системой. CDROM здесь будет уже не E:, а /cdrom или /mnt/cdrom. Таким образом, файл, который в Windows выглядит как E:\autorun.inf, в Linux будет выглядеть как /cdrom/autorun.inf
Но /cdrom — это не имя устройства, равно как и E: — не имя и не тип устройства. Если в Windows E: может быть как CD-диском, так и разделом на жестком диске, так и в Linux CDROM может быть подключен (смонтирован) в /cdrom, /mnt/cdrom или /mnt/disk. Более того, в /mnt/disk может быть подключен (смонтирован) не обязательно CDROM, но и флеш-диск, и раздел на жестком диске, или даже сетевое хранилище.
В UNIX-подобных архитектурах имеется концепция, согласно которой все есть файл. Впрочем, подобная особенность была частично реализована и в DOS. В DOS имелись особые файлы устройств, не привязанные к файловой системе. Так как нельзя было создать файл с таким именем, они присутствовали в любой директории — con nul prn. Копирование файла в con выводило его на экран, в nul — не делало ничего, в prn — выводило на принтер. Попытка скопировать con в файл заставляла набирать строчки с клавиатуры, а команда copy nul file создавала в текущей директории пустой файл). Если вы работаете в windows, вы и сейчас можете выполнить команду:
Кстати, обратите внимание, что в c:\ никакого con (как и nul, как и prn) нет. С тем же успехом можно было бы писать d:\con или просто con.
Ctrl-Z (^Z) в Windows посылает спецсимвол конец файла (EOF), после чего управление вновь возвращается в командную оболочку. В Linux Ctrl-Z имеет другое назначение, а чтобы послать EOF, используется комбинация Ctrl-D (^D). Запомните это.
Итак, мы узнали, что в DOS и WINDOWS есть специальные файлы устройств, которые якобы присутствуют в любой директории. Аналогичные устройства есть и в Linux, только, чтобы не замусоривать другие директории, для устройств в Linux есть специальная директория /dev.
Там аналогом con будет файл /dev/tty, аналогом nul — файл /dev/null, аналогом com1 — /dev/ttyS1.
Эта аналогия неспроста. Файлы устройств, как и многие утилиты для DOS, Билл Гейтс подглядел как раз в UNIX.
Все устройства, с которыми предполагается работа, в Linux (и других UNIX-подобных системах) находятся в директории /dev, в том числе и дисковые устройства. Например, /dev/hda, /dev/hda1, /dev/hdb, /dev/sda, /dev/sda1.
Что это такое, мы разберемся чуть позже. Кстати, в Windows тоже присутствует скрытый, не привязанный к диску, раздел \Devices, в котором тоже присутствуют аналогичные дисковые устройства. Во внутреннем представлении путь к файлу может выглядеть так \Devices\Harddisk0\Partition1\Windows\system32\imageres.dll.
Итак, если имеется диск, его можно задействовать под систему полностью. В DOS или Windows он будет выглядеть как диск C:
Что делать, если мы хотим установить две операционные системы? Даже две Windows себя не будут комфортно чувствовать в одном C:, что уж говорить о Windows и Linux, которые даже файловые системы используют разные. В Windows это, как правило, NTFS, в Linux, как правило, ext4.
Таким образом, нам надо сделать на одном диске два раздела. Если оба будут использоваться в Windows, на одном физическом диске будут присутствовать C: и D:. Если мы используем Linux, Windows будет видеть файлы в разделе C: и все, а Linux — файлы в своем разделе, смонтированные в корень /.
Каким образом осуществляется разбиение диска на разделы?
Все зависит от того, какая таблица разделов используется: GPT или содержащая MBR. Ранее все диски использовали MBR, сейчас все большее распространение получает GPT.
Диск с MBR — Main Boot Record (главная загрузочная запись) содержит исполняемый код, необходимый для передачи управления, загрузчик и таблицу разделов (partition table). Может содержать только 4 первичных (primary) раздела, а при необходимости большего количества разделов вместо одного из первичных можно создать расширенный раздел (extended partition). Такой раздел будет содержать внутри себя еще несколько (до 16) разделов, называемых логическими (logical). Есть определенные ограничения, связанные с созданием разделов и установленными на нем ОС. Например, Windows необходимо обязательно устанавливать в первичный раздел, помеченный как активный (загрузочный). Для разделов GNU/Linux таких ограничений сейчас нет.
MBR может работать только с дисками емкостью до 2 Тб, для больших дисков следует использовать GPT. GPT — более современный стандарт, который, кроме того, можно использовать и с дисками меньшей емкости.
Диски с GPT (GUID Partition Table) в отличие от MBR, больше не содержат загружаемый код в самом начале, эти функции отнесены к UEFI. Более того, GPT является частью стандарта UEFI. Блок MBR все равно присутствует в начале для совместимости и защиты от повреждения утилитами, не умеющими работать с GPT, но понимающими MBR. В совместимом MBR указан один раздел, охватывающий весь диск. Это сделано для предотвращения ошибочной разметки и форматирования диска программами, не распознающими GPT.
GPT не накладывает ограничений на разделы, поэтому понятия расширенных и первичных разделов не используются.
fdisk не будет работать с gpt, вместо него следует использовать gdisk. Можно использовать и gparted, но надо учитывать, что parted и gparted не могут увеличить размер раздела, если в его конец добавить неразмеченные блоки для расширения.
Если в Windows разделы именуются С:, D:, E: и т.д., в Linux диски именуются в формате /dev/hdX (для ATA) или /dev/sdX (для SATA), где X – буква. Но если в Windows принята нумерация с буквы C, так как A и B использовались для дисковода, здесь диски нумеруются с А. Для дисковода имеется устройство /dev/fd0. Первый HDD-диск будет иметь наименование /dev/sda, второй — /dev/sdb, третий — /dev/sdc.
Разделы обозначаются цифрами. Если два HDD будут в Windows иметь разделы с именами C:, D:, E:, вне зависимости от их местоположения, в Linux будут разделы /dev/sda1, /dev/sda2, /dev/sdb1, /dev/sdb2 и т.д. При этом имена с /dev/sda1 по /dev/sda4 предназначены для первичных разделов, логические разделы именуются /dev/sda5, /dev/sda6 и т.д.
Это не единственный подход именования в UNIX-подобных системах. Например, /dev/da0s1a, dev/da1s1b и т.д.
В загрузчике GRUB применяется свое именование разделов. Первый раздел /dev/sda1 будет иметь вид (hd0,msdos1), /dev/sda5 будет иметь вид (hd0,msdos5), /dev/sdb1 — (hd1, msdos1).
Пример разметки (система используется в Windows, тем не менее, даны наименования разделов и для Linux)