Эта статья - дополнение к статье о переустановке Винды
А ты смелый! Добро пожаловать в мат. часть! Здесь ты можешь проникнуться духом БДСМ без необходимости жертвовать своим физическим здоровьем. Заметьте, про психологическое здоровье я вам ничего не обещал…
Пуск ёпта
Прежде чем ставить операционную систему, давайте представим себе как она запускается, как она работает. Нет, я сейчас не буду писать урок на 3 часа про архитектуру операционных систем, это лайтовый гайд для начинающих нормальных людей, а не для опытных садомазохистов. Потому, если какие-то разбирающиеся в теме люди это читают, то учтите - дальше идут некоторые упрощения. Тем не менее, я тут затрагиваю очень много важных тем, и после прочтения этой части вы можете уже клеить объявления “компьютерный мастер со стажем” - всё равно вы будете знать больше чем половина этих мастеров. 😁
BIOS/UEFI
В первую очередь, сразу после нажатия на кнопку питания, запускается программа, прошивка, живущая на чипе материнской платы, в простонародье называемая BIOS. Она существует вне мира вашей операционной системы, она - первый мостик из мира харда в мир софта. В терминах БДСМ, биос это мастер по отношению к слейву, которым выступает ваша операционная система.
BIOS, на самом деле, это устаревшее название стандарта прошивки на ПК, которое как и “жёсткий диск” осталось, чтобы означать что-то аналогичное, но другое. Сейчас на подавляющем большинстве компьютеров BIOS это не BIOS, а UEFI - новый стандарт прошивки, который подарил нам красивую графику до загрузки операционной системы, безопасную загрузку (Secure Boot), возможность загружать операционную систему по сети, TPM и многое другое. BIOS до сих пор существует лишь на очень небольшом количестве устройств, т.к. UEFI существует уже с 2006 года.
Хоть биос уже не тот, и вообще не биос, а UEFI - я буду всё равно называть его биосом.
Что BIOS, что UEFI - это лишь стандарты для прошивок, общее название для софта на материнский платах, потому на всех компьютерах они немного разные и сильно зависят по функционалу от компьютера - это затрудняет работу с ними по интернет-гайдам. Также затрудняет работу, что в их разработке активно участвует производитель материнской платы, потому, если у вас дешманский хард, то у вас, вероятно, будет и дешманский софт - с отсутсвием каких-то настроек, багами, непонятным дизайном и так далее.
Так вот, ты нажал на кнопку питания, компьютер запустил биос. Обычно это видно как логотип производителя материнки/ноутбука и надпись в жанре “нажмите X чтобы перейти в настройки”. В этот момент происходит самый первый этап работы биоса - тот самый, вызывающий вьетнамские флешбеки - POST (Power-On Self-Test). На этой стадии биос проверяет конфигурацию компьютера - инициализирует систему, настраивает оперативку, проверяет есть ли диски, настраивает клавиатуру и делает прочие приготовления для старта операционной системы. Если хоть что-то пошло не так - ну шо, пизда братья и сёстры, пора лезть внутрь компа - отсюда и флешбеки. Если же всё прошло успешно, а пользователь не нажал X, чтобы открыть настройки биоса, то биос переходит к следующему этапу - запуску загрузчика.
Какой загрузчик биос запустит зависит от порядка загрузки или по-нормальному Boot Order - кто первее, тот и загружается. Если какой-то загрузчик проебланился или не был найден, то загружается следующий за ним и так до конца, пока не будет найден и успешно запущен хотя бы один. Если ни один не будет запущен, то выводится сообщение “No boot device found” или что-то в этом жанре. Очередность загрузки настраивается в биосе. Что загрузится в этот конкретный раз можно выбрать при запуске компа в Boot Menu, куда можно попасть, зажав какую-то специфичную для производителя клавишу.
Что такое загрузчик и нахрен он мне сдался?…
Загрузчик - это такая программа, которая запускает операционную систему. В отличие от биоса, она живёт на жёстком диске и может работать на любом компе. У Windows свой загрузчик чисто для себя, на Linux используется целая плеяда загрузчиков (которые могут запустить любую ОС) и у MacOS также свой собственный загрузчик.
У пытливых умов может возникнуть вопрос - а нахер нужен загрузчик, почему бы сразу из биоса не загрузить операционную систему? Самый простой ответ - биос маленький и тупой, а операционок много и все как-то по-своему работают. Поэтому, каждая операционная система делает понятный биосу загрузчик, который уже дальше разбирается с запуском одной или более операционных систем.
Помимо этого, для пользователей это тоже удобно: ты минимально зависишь от производителя материнки и его кривого софта - всю загрузку операционных систем ты доверяешь нормальному софту. Ещё у тебя может быть зашифрованная операционная система - например у тебя включен BitLocker или LUKS - тогда загрузчик нужен, чтобы расшифровывать системный раздел.
О разметке дисков, разделах и файловых системах
Знакомтесь с новым героем этой увлекательной истории - GPT. Нет, не тот который ChatGPT, а GUID Partition Table (таблица guid-разделов), пришедший на смену MBR (Master Boot Record).
Это такой формат разметки диска под разделы - договорённость как и где записать какие есть на диске разделы и где они находятся. В случае GPT это буквально таблица в которой записано “от сектора A до сектора B находится раздел хуй-пиздец-ебать-говно-01234”. Всё на диске ставится в разделы. Разделы это куски жёсткого диска - они могут быть любого количества и размера, их можно двигать, уменьшать и увеличивать. Каждый раздел обладает своей файловой системой, они бывают разные, но зачастую состоят из папок и файлов. Например, раздел диска C хранит в себе файловую систему формата NTFS, в которой уже хранятся папки Program Files, Windows, Users и т.д.
Формат разметки GPT идёт на пару со стандартом прошивки UEFI. UEFI не реализует весь свой потанцевал без GPT, а GPT не работает так, как надо, без UEFI. В плане установки Винды всё ещё проще для понимания: GPT это хорошо, это модно, это молодёжно, это современно. MBR это плохо, это нехорошо, ай-ай-ай.
Если вам попался диск с MBR, то нужно сносить разметку диска и ставить GPT. О том как это сделать смотрите в гайде по переустановке Винды.
На примере Windows
У вас может быть немного другой порядок или количество разделов - это нормально.
Будем рассматривать исключительно случай с диском, размеченным GPT. Во время установки, Винда сохраняет свой загрузчик в EFI раздел, а если этого раздела нет - создаёт его сама. Также, Винда сохраняет в памяти биоса на материнской плате ссылочку на свой загрузчик в этом разделе - чтобы биос знал, откуда его взять. EFI раздел это такой раздел, где хранятся загрузчики - именно отттуда биос их запускает. Обычно, как на картинке, этот раздел меньше гигабайта и отформатирован под файловую систему FAT32. Обычно вам не приходится сильно о нём задумываться - он просто сидит тихо живёт со своими 100 мегабайт из вашего диска.
Зачастую сразу после EFI раздела идёт основной раздел для всех данных пользователей и винды. Он занимает почти всё место на диске, отформатирован как NTFS. Этот раздел и есть тот самый диск C.
В обычной конфигурации замыкает тройку раздел восстановления. На нём живёт мини-Винда, Винда-фиксик, который может попробовать починить большую Винду на разделе диска C, если она сломалась и не запускается. Этот раздел почти никогда не используется, но он есть на тот случай, если Винда съебанёт самое себя на обновлении или ещё как-нибудь себе выстрелит в ногу - тогда компьютер загрузится в режим фиксика и попробует всё починить. Впрочем, далеко не всегда это получается.
И зачем вот это всё было рассказывать?…
Итого, теперь вы знаете как себя Винда ставит и как она запускается. При установке на пустой диск она создаёт таблицу разметки GPT, создаёт раздел EFI, сохраняет туда свой загрузчик, потом создаёт раздел для диска C, выливает туда ушат говна все свои системные файлы и создаёт третий раздел - раздел восстановления. Когда компьютер включается, загружается биос, проводит POST, загружает первый рабочий загрузчик из очередности загрузки. Если этот загрузчик - Windows Boot Manager, то он дальше лезет в известный ему раздел с Виндой - тот самый диск C, отформатированный как NTFS - где уже стартует саму Винду. Теперь, также вы знаете, что вам нужен GPT, а MBR надо удалять, и почему так надо делать - ради UEFI функционала, по типу Secure Boot. Ах, да, я не рассказал про Secure Boot и TPM…
А что такое Secure Boot и TPM, и зачем они нужны?
Представьте, что у вас спиздили ноутбук. Дорогой попадос, но он может стать ещё неприятнее, если у вас не зашифрованны файлы. Ведь теперь все сохранённые пароли, все аккаунты, в которые вы вошли, все фото, файлы и переписки доступны новому владельцу вашего ноутбука. В большинстве случаев, действительно, им будет лень этим заниматься, но чтобы обойти защиту в виде пароля от аккаунта Винды достаточно просто вставить ваш жёсткий диск из ноутбука в другой компьютер или, что ещё проще, загрузиться с флешки - и бам, вся ваша коллекция интимок мемов и все данные браузера как на ладони, бери и изучай.
Железобетонной защитой от такой атаки является шифрование диска. Для Винды наиболее распостранены Bitlocker и Veracrypt. Bitlocker - проприетарное решение от мелкомягких, встроенное в Pro версию Винды, так что от ЦРУ или ФСБ ваши файлы вряд-ли спасёт (да и никто терморектальную криптографию не отменял 🙄), но от любого другого злоумышленника защитить в состоянии. Veracrypt - опен-соусное решение, но работает чутка менее красиво, имеет больший шанс конфликтовать с обновлениями Винды. Для нас, нормисов (⊙ˍ⊙), рекомендую Bitlocker.
Но, есть одна проблема: лень вводить пароль по 2 раза при каждом запуске компьютера - сначала от Bitlocker, а потом от аккаунта Винды. Ну вот впадлу и всё тут. Эту проблему решает TPM - Trusted Platform Module, который стал известен широкой публике после того, как мелкомягкие всех обязали такой заиметь для 11 Винды. Это охранник ключей для доверенных лиц, но лицом в данном случае выступает операционная система и программы, а не человек с паролем. Это такой кусочек процессора (или отдельный чип), не повинующийся вслепую ядру операционной системы, да и любому коду, который исполняется на процессоре, он от него изолирован - если вы сохраните туда ключ, то он отдаст этот ключ обратно только при строгом соблюдении заданных условий. Если запустить другую операционную систему на вашем же компьютере и запросить ключ, то, вместо ключа, атакующий получит фигу от TPM.
Поэтому, если шифрование сохранит ключ от диска в TMP, то без ключа из TPM расшифровать ваш жёсткий диск просто физически невозможно. Но, из этого следует одна проблема - если накрылась пиздой материнка, то накрылись залупой и все ваши данные на зашифрованных диска.
Помимо всех этих приблуд безопасности, существует ещё технология ограничения того, что можно запускать на компьютере - Secure Boot. Её задача состоит в том, чтобы запускать можно было только доверенные (разрешённые Microsoft) операционные системы, загрузчики или другие UEFI-программы. Я уже чувствую, как напряглись линуксоиды, и не без причины, ведь Linux плоховато работает с этой технологией (как обычно, не без изощрённого обряда эквилибристики). Защищает такая штука от того, чтобы каким-то образом малварь себя не прописал как загрузчик (или часть операционной системы) и не запустился на высшем уровне доступа к ресурсам компьютера. Такой малварь - страшненькая залупа - он может быть абсолютно не заметен для операционной системы и её пользователя, но иметь полный доступ ко всему - камере, клавиатуре, микрофону, интернету и т.д. Вкупе с TPM-шифрованием, Secure Boot закрывает почти все возможности для вируса как-то спрятаться, или для атакующего получить доступ к вашим файлам в обход механизмов безопасности операционной системы.
Ещё были бы у Винды нормальные механизмы безопасности…