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.