Grub2 на табличном разделе msdos не загружается


0

мой ноутбук имеет:

  1. 500 ГБ HDD / Dev / SDA
  2. 22 ГБ SDD / Dev / SDB

Раньше я загружал archlinux из небольшого раздела ext2 в / dev / sda. BIOS настроен на использование режима BIOS (не UEFI), безопасная загрузка отключена, AHCI автоматически. Эта настройка используется для работы.

Вчера я сделал здесь много изменений: установил windows 7 и поменял раздел. Сейчас ситуация такова:

  1. / dev / sda1 загрузчик windows 7
  2. / dev / sda2 windows 7
  3. расширенный раздел, начинающийся здесь
  4. / dev / sda5 boot (логический раздел, флаг "boot")
  5. / dev / sda6 swap (логический раздел)
  6. / dev / sda7 home (логический раздел)

Примечание: после установки win7, windows запустился просто отлично (его загрузчик был установлен правильно).

Когда восстановление раздела linux было завершено, я подключился к моей системе archlinux и переустановил grub на sda. В результате ноутбук запускается, но биос жалуется на отсутствие загрузочной системы .

Я могу запустить свой archlinux с супер-диска , и это подтверждает, что конфигурация grub просто в порядке. Я миллион раз пытался переустановить grub на sda, он просто завершается без ошибок, но конечный результат всегда один и тот же.

К сожалению, моя оригинальная система archlinux была установлена ​​более двух лет назад, и я не уверен, что в то время я установил grub на загрузочный раздел (а не на весь диск).

Я что-то здесь упускаю?

Таблица разделов - msdos , работает ли она с grub2? Требуется ли таблица разделов GPT?

Загрузочный раздел имеет флаг «boot», достаточно?

Просто чтобы уточнить: BIOS запускается, но не может найти что-то «загрузочное», поэтому я получаю сообщение об ошибке на уровне BIOS. Я никогда не получаю grub или ошибку, связанную с grub.

Что я могу сделать, чтобы мой ноутбук снова загрузился?

Ответы:


0

Во-первых, полезным инструментом для исследования практически любой проблемы с загрузкой, связанной с Linux, является Boot Info Script. Этот инструмент выдает файл с именем, RESULTS.txtкоторый содержит большую часть информации, необходимой для устранения большинства проблем с загрузкой, связанных с Linux. Пожалуйста, запустите этот скрипт и изучите результаты. Если вы сами не можете в этом разобраться, вы, вероятно, захотите опубликовать его на сайте для вставки и разместить здесь URL, чтобы его могли прочитать другие.

Во-вторых, вы написали:

Биос настроен на использование режима BIOS (не UEFI)

Хотя некоторые компьютеры поддерживают такую ​​конфигурацию, многие (я подозреваю большинство) не поддерживают; включение BIOS / CSM / устаревшего режима просто делает возможным использование этого режима загрузки . Микропрограмма может по-прежнему произвольно выбирать загрузку в режиме EFI / UEFI, даже если включен BIOS / CSM / устаревший режим. Это важно, потому что вполне возможно, что вы установили Windows в режиме BIOS и Linux в режиме EFI; или машина может пытаться выполнить загрузку в режиме EFI, несмотря на то, что у вас нет загрузчика в режиме EFI. Конфигурации смешанного режима могут быть кошмарами для обслуживания. (См. Мою веб-страницу на эту тему для получения дополнительной информации.)

Вы можете проверить свой режим загрузки Linux, найдя каталог с именем /sys/firmware/efi. Если он присутствует, вы определенно загрузились в режиме EFI; но если он отсутствует, вы, вероятно, загрузились в режиме BIOS. (Существуют способы загрузки в режиме EFI и отсутствия /sys/firmware/efiкаталога, но этот результат необычен.) Конечно, поскольку вы загружаете Linux через отдельный загрузочный диск, его режим загрузки ничего не скажет о том, какие загрузчики ) вы установили на жесткий диск.

Я миллион раз пытался переустановить grub на sda, он просто завершается без ошибок, но конечный результат всегда один и тот же.

Какую именно команду вы использовали? Какие пакеты GRUB вы установили? (Большинство дистрибутивов имеют разные пакеты для BIOS-режима и EFI-режима GRUB, хотя я не уверен, верно ли это для Arch.)

Таблица разделов - msdos, работает ли она с grub2? Требуется ли таблица разделов GPT?

GRUB 2 поддерживает как MBR ( msdosкак описано в GParted и parted), так и GPT. Это не ваша проблема - но таблица разделов MBR указывает на то, что Windows определенно установлена ​​в режиме BIOS, поскольку Windows довольно сильно связывает режим загрузки с типом таблицы разделов. (MBR означает BIOS, GPT означает EFI.) Linux гораздо более гибок в этом отношении, что может стать проблемой в таких случаях, как ваш.

Загрузочный раздел имеет флаг «boot», достаточно?

На MBR-диске «загрузочный флаг» идентифицирует раздел, который содержит загрузчик второго уровня. Он используется загрузчиком Windows, SYSLINUX (IIRC) и несколькими другими загрузчиками. Это не (IIRC), используемый GRUB, так что это в принципе не имеет значения в вашем случае.

Просто чтобы уточнить: BIOS запускается, но не может найти что-то «загрузочное», поэтому я получаю сообщение об ошибке на уровне BIOS. Я никогда не получаю grub или ошибку, связанную с grub.

Всегда сообщайте точное и полное сообщение об ошибке. Часто полезно сделать снимок экрана (цифровое фото), так как контекст может дать подсказки тем, кто испытал подобные вещи.

Если бы мне пришлось угадывать, я бы сказал, что происходит одна из двух вещей:

  • Ваша прошивка пытается загрузиться в режиме BIOS, но что-то уничтожено или повреждено загрузчиком в MBR, что приводит к сбою загрузки. В этом случае переустановка GRUB должна решить проблему. Я знаю, что вы говорите, что сделали это, но не зная, какую именно команду вы использовали, я не могу сказать, использовали ли вы правильную команду; и, как я подразумевал ранее, вы, возможно, неоднократно устанавливали загрузчик в режиме EFI, который не принесет вам пользы, если компьютер пытается выполнить загрузку только в режиме BIOS.
  • Несмотря на то, что в вашей прошивке включена поддержка BIOS / CSM / legacy, он пытается загрузиться в режиме EFI и сбивается с толку из-за отсутствия загрузчика в режиме EFI - или, возможно, он находит что-то, что повреждено и поэтому не возвращается к загрузка в режиме BIOS.

Выходные данные Boot Info Script и дополнительные детали, которые я запросил, должны помочь определить, какая из этих двух вещей происходит (или может ли это быть чем-то совершенно другим).

В качестве альтернативы, если вы хотите начать все заново, я рекомендую отключить BIOS / CSM / устаревший режим. Обычно это приводит к более простому пути загрузки в микропрограмме, поскольку все параметры BIOS отключены. Затем вы можете решить любые проблемы, возникающие как в Windows, так и в Linux при загрузке их установщиков, и быть уверенным, что вы устанавливаете обе ОС в собственном режиме загрузки машины.


Я действительно благодарю вас за вашу помощь и потраченное время, чтобы попытаться помочь мне. Короче говоря, я не могу объяснить почему, но единственный способ заставить BIOS запустить grub - установить «активный» один из двух разделов, используемых в Windows (sda1 или sda2): после загрузки в windows 7 я отметил как активный один из этих разделов (какой из них не имеет значения, как дела) и после перезагрузки, наконец появляется grub. Это совершенно бессмысленно. Просто для того, чтобы попробовать, я загрузил Ubuntu LiveUSB, установил флаг «загрузки» на sda5 (afaik, это то же самое, что пометить «активный» из Windows), и, опять же, компьютер зависает при загрузке.
— Десмонд

Если это может быть полезным или просто интересным, я все равно могу запустить сценарий, о котором вы написали. В любом случае, спасибо за вашу помощь.
— Десмонд

Скорее всего, вы смотрите на ошибку прошивки. Возможно, он настаивает на том, чтобы видеть не просто раздел с установленным флагом загрузки, а раздел с кодом определенного типа с установленным флагом загрузки, прежде чем он загрузится в режиме BIOS / CSM / legacy. Легче и безопаснее просто оставить все как есть и не беспокоиться об этом; но вы можете попробовать поискать обновление прошивки и, если оно недоступно или если его установка ничего не меняет, сообщить об ошибке производителю.
— Род Смит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.