3

Я помню, что когда mobos использовал BIOS и загрузчик находился в MBR, перемещение раздела Windows вызывало сбой загрузки системы. Я только что закончил (случайно) раздел C (пытаясь изменить его размер) на компьютере своего друга, который имеет таблицу разделов GPT и материнскую плату UEFI, и - к моему удивлению и восхищению, компьютер запустился идеально, не жалуясь на изменение первый сектор раздела (и мой друг не злится на меня). Я полагаю, это потому, что загрузчики UEFI используют UID разделов вместо адресов.

Это заставляет меня задуматься, означает ли это, что я могу свободно перемещать раздел ОС в системе GPT. Также это относится только к Windows или GRUB тоже?

1 ответ1

5

Я полагаю, это потому, что загрузчики UEFI используют UID разделов вместо адресов.

Это отчасти, но не совсем, правильно. Загрузчики в режиме BIOS, как подразумевается в приведенном выше заявлении, часто используют номера секторов, чтобы помочь идентифицировать следующий код. То есть BIOS считывает MBR и выполняет любой код, который он содержит. MBR слишком мал, чтобы содержать действительно гибкий загрузчик, поэтому он передает управление коду, расположенному в другом месте, обычно идентифицируя его по номеру своего сектора, находя раздел с установленным флагом загрузки и выполняя код в EBR (первый сектор ) этого раздела. Этот вторичный код загрузчика может повторить этот процесс, опять же часто полагаясь на номера секторов. Таким образом, перемещение разделов или изменение их размера с начальных точек может привести к невозможности загрузки ОС, поскольку сам код загрузчика перемещен.

В EFI, напротив, загрузчики не хранятся в MBR или в EBR разделов. Вместо этого загрузчики хранятся как программные файлы EFI в системном разделе EFI (ESP). Эти программные файлы могут быть настолько большими, насколько это необходимо (вплоть до ограничений, налагаемых размерами файлов, объемом ОЗУ и т.д.), Поэтому нет необходимости разбивать загрузчик так, как обычно делятся загрузчики BIOS. Кроме того, EFI понимает разделы, в отличие от BIOS, поэтому загрузчик в режиме EFI может ссылаться на разделы, если это необходимо.

Хотя загрузчик EFI может определить местонахождение раздела по его GUID или каким-либо другим способом, на самом деле это не ключевое различие, которое важно для вашего вопроса. Загрузчики в режиме BIOS часто ломаются при перемещении разделов, потому что сам код загрузчика перемещается; но в EFI загрузчик находится в файле, а не в коде, привязанном к определенному сектору. Таким образом, перемещение раздела ОС не перемещает код загрузчика. Даже если вы переместили ESP (там, где живет загрузчик), EFI понимает разделы и файловую систему FAT и, таким образом, может продолжать обнаруживать загрузчик до тех пор, пока идентификационная информация ESP и имя файла загрузчика не изменятся как результат.

Это заставляет меня задуматься, означает ли это, что я могу свободно перемещать раздел ОС в системе GPT. Также это относится только к Windows или GRUB тоже?

Как правило, безопаснее перемещать разделы в системах на основе EFI, чем в системах на основе BIOS. Я бы не сказал, что это абсолютно безопасно на 100%. Во-первых, всегда существует риск того, что операция перемещения раздела приведет к повреждению файловой системы. Это просто стандартное предостережение при обсуждении таких операций. Проблема, которая больше относится к вашему вопросу, заключается в том, что загрузчики могут делать все, что хотят, любым способом, каким они хотят. Хотя я не знаю примеров этого, загрузчик на основе EFI мог бы полагаться на номера сырых секторов для идентификации ядра ОС, что сделало бы небезопасным перемещение раздела, на котором находится ядро. Если загрузчик использует такие функции, как номера разделов, для идентификации раздела с ядром, и если перемещение раздела изменяет номер раздела, процесс загрузки может завершиться неудачно после перемещения раздела. OTOH, перемещение раздела может не создать проблем, если номер раздела не изменился. Таким образом, безопасность операции перемещения раздела зависит от загрузчика и деталей того, что происходит при перемещении раздела.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .