После установки Arch Linux он просто показывает текст «Загрузочное устройство не найдено»


8

Я пытался установить Arch Linux. После установки отображается экран BIOS, после чего появляется сообщение «Загрузочное устройство не найдено».

Я повторил весь сценарий несколько раз, но он показывает то же сообщение ...

При установке я следовал неофициальному руководству для начинающих из ArchLinux wiki.

Вот что я сделал:

Прежде всего, я стер с жесткого диска (на котором до очистки была установлена ​​Windows Vista) и установил на него GPT с помощью gdisk. Затем я установил несколько разделов, которые теперь выглядят следующим образом (вывод parted):

Model: ATA ST9160310AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name                 Flags
 1      1049kB  2097kB  1049kB                  BIOS boot partition  bios_grub
 2      2097kB  107MB   105MB   ext2            Linux filesystem     
 3      107MB   21.6GB  21.5GB  ext4            Linux filesystem     
 4      21.6GB  30.2GB  8590MB  linux-swap(v1)  Linux swap           
 5      30.2GB  160GB   130GB   ext4            Linux filesystem     

Затем я смонтировал корневой раздел (sda2) в / mnt, после этого также загрузочный и домашний раздел (sda3 и sda5) в / mnt / boot и / mnt / home, а в конце отформатировал и активировал раздел подкачки (sda4) ,

Теперь я начал установку базовой системы. После выбора зеркал я установил base и base-devel.

В конце установки я сгенерировал fstab.

Затем я наконец-то подключился к / mnt, настроил несколько Locales, установил пароль root, а затем установил и настроил Grub2, в точности так, как описано здесь .

В конце я вышел из среды chroot, размонтировал разделы и перезагрузился. Вы знаете все остальное ... Он только что показал сообщение, что не может найти никаких загрузочных устройств.

Кстати, я пытался установить его на этот компьютер.


1
Выход dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump(или xxd вместо hexdump) равен 55aa? Если не MBR это плохо.
Runium

Вывод был следующий: 0000000 aa55 0000002 если MBR плохой, как вы говорите, могу ли я что-нибудь сделать, чтобы он снова стал хорошим?
августа

Это выглядит хорошо. (0000000 и 0000002 смещены) aa55- это правильная подпись MBR ( 55aaв системе с прямым порядком байтов).
Runium

@ Сукминдер, я могу что-то упустить, но ОП сказал, что он использовал GPT, а не MBR.
JMCF125

1
@ JMCF125: GPT также использует MBR. Вместо полной таблицы разделов он содержит один раздел максимального размера. Данные GPT обычно начинаются со смещения 512 (после MBR). upload.wikimedia.org/wikipedia/commons/0/07/… MBR содержит первый этап загрузки загрузки. Адрес логического блока 0 -> устаревшая MBR.
Runium

Ответы:


4

У меня возникла та же проблема, и, выполнив поиск, я обнаружил, что uuid root / partition неправильно в grub.cfg, вы можете попробовать это:

  1. Загрузка с живого носителя archlinux
  2. mount /dev/sdxx /mnt (sdxx - ваш корневой раздел)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

Конец.


Я сделал все это уже с первой попытки. Тем не менее, я попытался сделать это снова, как вы объяснили, и получил сообщение об ошибке grub-install: там сказано, что загрузочный раздел Bios не будет включен /dev/sda, хотя на самом деле он есть.
августа

2

ХОРОШО. Стало немного долго комментировать. Это не связано напрямую, но только для объяснения aa55комментария.

Когда Basic Input / Output System начинает (BIOS) она делает Power-On Self Test (POST), проверка аппаратных средств и т.д. Тогда это выглядит для устройств , которые одновременно являются загрузочным и активным по заказу заданной CMOS (Ваша конфигурация в BIOS - что в свою очередь дается Дополнительный металл-оксид-полупроводник ). Когда он находит диск 0xaa55со смещением 510, он загружает эту часть диска (сектор 1) в память и оставляет ему управление по адресу 0x00000 этого кода. Эти 512 байтов являются основной загрузочной записью (MBR).

Этот код, в данном случае « GRUB-boot» , дополнительно проверяет различные байты этих 512, чтобы запросить у BIOS различную информацию. В этом процессе он определяет, на каком диске находится GRUB, и загружает этот раздел диска в память - тогда эта часть кода получает контроль. Это монтирует ядро ​​и т. Д. И оставляет контроль над этим.

Используя GPT, образ GRUB, загружаемый из MBR, находится в bios_grub разделе, который у вас есть, и он достаточно большой, и т. Д., Поэтому вы не видите, как это может быть неправильно.


На «Загрузочное устройство не найдено». сообщение из BIOS - может случиться так, что MBR загрузочного диска поврежден, если MBR заканчивается, 0xaa55а MBR поврежден, обычно возникает другая ошибка - или система просто зависает.


Так или иначе. Это странно Я заметил, что у вас нет раздела, помеченного как «загрузочный» . Используя GPT, это правильно, но, хотя это запрещено, вы можете попробовать пометить один, например, sda5как загрузочный. В gparted: (узнал, что (g) расстался и измените GPT, который не хотите) fdisk:

# Toggle bootable:
a [DISK NUMBER]
# Check (could be an asterisk marking boot partition):
p
# Save changes:
w

Возможно, ваш BIOS делает больше, чем следует, и проверяет таблицу разделов в MBR.


РЕДАКТИРОВАТЬ - Обновить, чтобы комментировать:

AFAIK, не имеет значения, какой из них вы установили, поскольку он на самом деле не используется. Скорее всего, для тех, кто никогда не скажет «загрузочное устройство найдено» , они будут удовлетворены. В sda1традиционном смысле это не загрузочный раздел, а место для загрузочных файлов GRUB.

В традиционной схеме разделов (не GPT) у вас обычно есть что-то вроде:

0x000 [Master Boot Record] <- Partition table say Partition 2 is active
                                                       |
0x200 [ GRUB module 1    ] <- core.img from GRUB       |
                                                       |
0x400 [ Partition 1 Swap ]                             |
      |                  |                             |
      |                  |                             |
      |__________________|                             |
                                                       |
0x... [ Partition 2 ext4 ]                             |
      | * Active         | <- AKA boot ----------------+
      |                  |
      |__________________|

0x... [ Partition 3 ext4 ]
      |                  |
      |                  |
      |__________________|

Это будет означать 3 раздела. Все до смещения 0x400 на жестком диске в необработанных байтах - как не в любом разделе и т.д.

Здесь загрузочным разделом является Раздел 2, который является системным разделом с Linux.

Файлы GRUB модуля 1 находятся сразу после MBR и перед первым разделом. Он может находиться где угодно, но обычно на одном диске со смещением 512 MBR-диска.

Также в системе GPT - GPT использует этот раздел диска для себя, поэтому необходимо переместить эти файлы GRUB в другое место. Для этого и bios_grubнужно хранить core.imgGRUB 2.


«Набор загрузочный флаг» является лишь выстрел в темноте, - и был бы удивлен , если он работает. Но у кого-то есть начало.


EDIT2:

Что делать, если вы делаете это:

  1. Резервное копирование текущей MBR:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Создайте изображение Code TESTснизу, сохраните в файл test.s:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Скопируйте test.imgфайл в MBR:

    dd if=test.img of=/dev/sda bs=512 count=1
    
  4. ботинок

Код ТЕСТ:

    .file "test.s"
    .text
    .code16
.globl start, _start
start:
_start:
    jmp go
    nop
go:
    movb $0x48, %al
    call prnt_chr
    movb $0x65, %al
    call prnt_chr
    movb $0x6c, %al
    call prnt_chr
    movb $0x6c, %al
    call prnt_chr
    movb $0x6f, %al
    call prnt_chr
    movb $0x21, %al
    call prnt_chr
    ret
prnt_chr:
    movb $0x0e, %ah
    int  $0x10
    ret
    . = _start + 0x1fe 
    .word   0xaa55

Для восстановления MBR выполните:

dd if=/path/mbr-backup of=/dev/sda bs=512 count=1

Это должно просто напечатать "Привет!" на экран, если MBR был загружен, затем остановите. Протестировал его, запустив под управлением qemu-system-x86_64, qemu-system-i386, VirtualBox, стационарные ПК Intel 32 и 64 бит.



Прежде всего, спасибо за вашу помощь. Не могли бы вы объяснить мне, почему я должен установить в sda5качестве загрузочного раздела. Не sda1лучше ли установить загрузочный раздел, так как он здесь только для этого?
августа

Хорошо, я попробовал это сейчас, но, к сожалению, с тем же результатом ...
BRGR

Что это должно было перечислить?
августа

Хорошо, теперь я также попробовал ваш второй совет, но
безрезультатно

Да, это в списке.
13

0

Я могу ошибаться и не поступил правильно, но сначала у меня была та же проблема, что и у вас. Через некоторое время я нашел здесь это GRUB has to have a 512MB EFI partition, with a vfat filesystem. Это в случае, если вы устанавливаете свою систему как EFI:

Для EFI вы ищете небольшой (512 МБ или меньше) раздел с файловой системой vfat и включенным флагом загрузки.

Это означает, что вы должны предвидеть этот факт при создании ваших разделов. При этом (например, с помощью cfdisk) вам нужно установить / dev / sdX1 как EFI, а затем отформатировать его в файловую систему FAT32 (с помощью команды mkfs.vfat -F32 /dev/sdX1во время процесса установки). Только тогда личинка будет признана.

Я предполагаю, что Syslinux может работать с вашим разделом ext2, хотя, если вы хотите попробовать это.

Если вы не устанавливаете Arch как EFI, вы, вероятно, сможете проверить вики. Я не могу помочь в этом деле.

Я знаю, что этот пост старый, но это на тот случай, если кто-то придет сюда и надеется найти решение.


1
Отвечать на старые сообщения хорошо и даже поощряется. Однако, пожалуйста, отредактируйте свой ответ и выделите ту часть, которая действительно отвечает . Какое решение вы нашли? Какое заявление? Предоставление ссылки на другую страницу, которая может содержать ответ, не является ответом. Вместо этого, пожалуйста, укажите соответствующий раздел непосредственно в своем ответе, чтобы вся информация содержалась здесь.
Terdon

Ответ был там, только что процитирован по ссылке, которую я предоставил, но не выделен. Спасибо что подметил это. Пожалуйста, скажите мне, если вы чувствуете, что что-то еще необходимо.
Разахель

Реальная цитата добавлена ​​сейчас. И исправил 512MB (at least), это было наоборот ...
Разахель
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.