В статье Linux Journal, на которую вы ссылались, пропущен один шаг, который может быть важен для некоторых компьютеров - когда вы разбиваете новый диск, используя формат таблицы разделов MS-DOS, вы должны пометить ровно один основной раздел на диске как активный. Этот шаг часто забывают без видимых проблем; однако на некоторых компьютерах BIOS выполняет более строгие проверки и отказывается загружаться с диска без активного раздела.
Способ пометить раздел как активный в Linux fdisk
является использование команды; он запрашивает номер раздела и переключает активный флаг для этого раздела. Если вы распечатываете таблицу разделов с помощью команды a
, активные разделы отмечаются символом p
в столбце *
.
Если на диске установлен только Linux, а загрузчик установлен в MBR, не имеет значения, какой основной раздел помечен как активный, если существует только один такой раздел.
Более подробно ниже, если вы заинтересованы:
(Все это применимо только при использовании формата таблицы разделов MS-DOS; ситуация с таблицей разделов GPT существенно отличается, особенно при использовании вместе с UEFI.)
Когда была представлена таблица разделов MS-DOS, MBR должен был содержать небольшой фрагмент кода, который осуществляет поиск по основным разделам (их может быть до 4), и, если ровно один раздел имеет установленный активный флаг, загружает первый сектор из этого раздела (загрузочный сектор) и передает управление коду оттуда, который затем должен загрузить ОС из этого раздела. Если активных разделов либо нет, либо имеется более одного раздела с установленным активным флагом, код MBR печатает сообщение и вызывает int $0x18
чтобы сообщить о сбое загрузки в BIOS.
Однако многие загрузчики, используемые для загрузки Linux, обычно устанавливаются в MBR и заменяют стандартный код MBR кодом, который загружает оставшуюся часть загрузчика и, например, предлагает меню загрузки. Этот код не использует активный флаг в таблице разделов, поэтому, например, GRUB, установленный в MBR, может запускать и загружать ядро Linux, даже если на диске нет активного раздела; Linux также никак не использует флаг активного раздела.
Многие версии BIOS проверяют только магическое число 0xaa55
в конце MBR и начальный код команды jmp
чтобы определить, является ли MBR допустимым, и с радостью передадут управление коду в MBR независимо от содержимого таблицы разделов MS-DOS. Тем не менее, в некоторых случаях разработчики BIOS решают быть «более полезными» и добавляют дополнительные проверки к загрузочному коду - например, BIOS может посмотреть на таблицу разделов MS-DOS в MBR и считать диск не загрузочным, если есть там нет активного раздела. Эта проверка дает неправильные результаты, если MBR не содержит обычный код, который загружает загрузочный сектор из активного раздела, но разработчики BIOS, вероятно, не считают это проблемой. Если ваш компьютер имеет такой BIOS, у вас должен быть активный раздел на загрузочном диске, даже если активный флаг фактически не используется кодом в MBR и остальной части загрузчика.