Загрузчики, разметка диска и способы потыкать Линукс палочкой
Рассказать про необходисый минимум знаний для установки линукса на свой компьютер.
Сначала несколько друних вариантов знакомства с линуксом, если этого вы опасаетесь. Почему опасаться? Это шашни с жестким диском, на котором уже что-то стоит, и которая может не ожидать этих шашней.
Что нам делать, если ставить мы не хотим, а хотим посмотреть?
Виртуальные машины -- изображают из себя компьютер. VirtualBox, Vmware, VirtualPC. Нпрпнтия того, что если все заведется, то мы никому не будем мешать. Оно быстро создается. Вмвара и вовсе успешно торгует основанными на этом решениями, даже облачными. Нам же многого не надо -- просто потыкать палочкой. Главные недостатки
- быстродействие. Если нет аппаратной поддержки, то до 5 раз. Даже если есть аппаратная поддержка -- видеокарту пока никто толком пробрасывать не умеет, трехмерку толком в виртуалке не сделать. Зато сделать в, например, опенвз -- паравиртуализаторах, инструментах изоляции(jail, solaris zone). Но винду в них не запустишь. На википедии это называется "инструмент виртуализации уровня операционной системы". Не верьте википедии, это инструмент достижения всеобщего согласия, а не поиска истины. Гипервизоры -- zen, vespra, hyperland(?). Гипервизор это оратная ситуация -- предоставляют такой виртуальной железо на котором удобно запустить ос. В реальности ни один из смежных инструментов не может дать представление о работе дистрибутива в целом.
- мелкие глюки связанные с особенностями той или иной виртуалки.
Итак, ставим линукс в виртуалку -- он медленный и некрасивый.
Есть вариант live системы. Раньше были live cd, сейчас скорее live flash. Гарантия того, что ничего не испортится, только если мы сами не захотим (загрузимся с флешки и начнем форматировать жд). Правда, если оперативной памяти мало, то будет опять медленно. Недостатки
- все пропадает после перезагрузки. (правда ливфлеш обработанный напильником позволяет это поправить). В альтлинуксе напильником ливфлеш обработан.
- флешки выгорают. Есть легенды, что виндоус иногда откатывает своп на флещки и их убивает.
- запись на флешку беспорядочных терзаний -- медленна.
- в ливцд грязные хаки для работы на всевозможном железе. Плохо для знакомства. Если есть второй жесткий диск -- то вобще все совсем хорошо. Современный диски год назад были дешёвые, будем надеятся что скоро снова будут. Скорость работы с усб диском будет лучше, чем с флешки. И все таки, рассмотрим вариант 2 системной загрузки на 1 диске. Надо осуществить переразметку жесткого диска.
Разметка диска
До недавних пор все было достаточно однозначно. Диск -- последовательность блоков. Первый сектор -- Masterboot record. Он делится на 2 части --
- загрузчик
- таблица разделов (hdpt)
В hdpt 4 записи, primary партиции. Там указаны тип раздела, начало и конец в 2 форматах (цилиндр-головка-диск и lba logical block access), но ни то ни другое не описывает реальной геометрии диска. Существует тип раздела extended, в нем снова мбр в начале. Все 4 новые ссылки на партиции сделать нельзя(у некоторых ос снесет голову), можно только сделать на одну файловую систему с реальной фс и ссылку на следующую extended партицию. Получается список.
Как это все видно изнутри линкса? Партиции из первой таблицы будут sda1 sda2 da3 sda4. Далее sda5 и sda6 будут только для реальных фс, для extended партиций в которых только таблица ничего не будет.
Чем чревата эта логичная и понятная схема? Если сделали 4 праймари, то для экстендед не останется места.
Традиция предписывает ставить виндоус на праймари раздел, иначе кому-нибудь будет плохо. Если вы в биосе поменяли геометрию диска, то будет ужасное приключение.
Например, на мащине грузился либо виндоус, либо линукс, в зависимости от того, использовался цхс или лба.
Поэтому для установки линукса нужно место на диске где можно завести раздел (свободное место на диске цэ, таковым не является). Если есть свободное место, то можно ужать раздел с диском цэ инсталятором, и сделать место под новый раздел.
Загрузчик биос умеет посмотреть устройства и спросить у вас с чего вы хотите грузиться. Дальше биос передает управление первичному загрузчику. Первичный загрузчик занимает 446 байт. Но у неё есть плюс -- она знает как работать со своим жестким диском. Она загружает вторичный загрузчик, который уже не требуется запихивать в один сектор. Вторичный загрузчик грузит ядро.
Но так это работает только во фрибзд. Обратите внимание, что при таком подходе на каждом этапе можно делать выбор. Вторичный загрузчик фрибзд написан на форте.
Какой недостаток? Вторичный заггрузчик становится операционной системой. Она умеет работать с разными фс, компоновать модули ядра, итд, итп.
Как правило, спортсменов, пытающихся запихнуть мозг в первичный загрузчик -- нет. Лило -- Вторичный предлагает выбрать ядро из заранее указанных в карте размещения и всё. Минус -- что-то менять мы можем только после полной загрузки ос.
Поэтому нынче чаще используется граб. Коренное отличие -- он не использует карту размещения, он действительно понимает некоторые фс. Минусы -- груб это реально ос, у него есть свои драйверы, которые непонятно где хранятся. Есть мозг, который не всегда работает.
Отсюда идея -- а пусть грузить линукс будет простенький линукс.
20 лет назад можно было собрать генерик ядро со всеми-всеми драйверами. В современном линуксе драйверов за 200 мегабайт.
Итак, есть ядро, которое не видит диска. Чтобы его увидить диск, ему надо загрузиь драйвер с этого диска. Проблема. Поэтому классический вторичный загрузчик грузит две вещи -- ядро и ма-а-аленькую фс с самым необходимым(инитрд).
Первичный и вторичный загрузчик конфигурируется пользователем, а со всем остальным разбирается линукс.
У этого есть недостаток. Меняете материнскую плату и линукс не грузится вообще, потому что в инитрд модули для другого чипсета. А вот в ливцд запихнуты все возможные, кстати. Выход -- грузится с чего-нибудь другого и перегенерировать инитрд.
Вернемся к утверждению, что после ужатия диска ц виндоус перестаёт грузится. В виндоусе тоже есть карта размещения. Но её можно перегенерировать.
Потом у вам загрузится первичный загрузчик, при установке линукса он изменится. Попытка загрузить из груба виндоус -- мания величия. Тем не менее, груб умеет передавать управление загрузчику винды, и, тем самым, загрузить винду из груба можно.
Можно заставить нтлоадер грузить линукс, это тоже работает. Как -- искать в форумах.
Но, это всё уходит в прошлое.
Во-первых, появляется новый формат разбияения диска -- gpt. Отличия
- - нумерация блоков - нет матрешек, просто записи под 128 разделов - доп средства проверки целостности -- копия в конце диска и чексумма.
Первый сектор по прежнему отводится под мбр, а вот после мбра уже 128 записей под разделы.
Это вещь прогрессивная, но есть и неприятное
- - вручную таблицу разделов уже не поправишь, контрольную сумму без спец средств не посчиаешь. - типы разделов раньше были дурацкие, но вместо них теперь уиды -- громадные числа зверя. Запомнит его невозможно. В википедии написано что, уиды у разделов линукса и виндоуса -- одинаковые. Ещё есть какие-то странности с ендианностью записи уидов. Производители чипсетов намаялись с биосом и стали переходить на UEFI. Это ос на уровне биоса. Уефи умеет эмулировать биос.
Это наше ужасное будущее. Оно слабо документировано и изначально это не открытый проект. Поддержка его недостаточно хороша, но работа ведется. Надо в него всматриваться.
Что в этом хорщего? В уефи есть собственный байткод и механизм контроля целостности.
Есть несколько гораздо более разумных проектов, например openfirmaware.
На самом деле, чтобы установить дистрибутив раньше надо было настроить сеть и видеокарту. Нынешние линуксы делают это сами.