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

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

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

При установке я следил за Неофициальным руководством для новичков из вики ArchLinux.

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

Прежде всего, я уничтожил жесткий диск (на котором перед тем, как стереть 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) ,

Теперь я начал устанавливать базовую систему. Выбрав зеркала, я установил базу и базовый уровень.

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

Затем я, наконец, chrooted в / mnt, настроил несколько локалей, установил пароль root, а затем установил и настроил Grub2, точно так, как здесь объясняется.

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

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

Надеюсь, кто-то узнает, что я сделал неправильно, спасибо заранее!

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

Когда запускается базовая система ввода / вывода (BIOS), выполняется самотестирование при включении питания (POST), проверяется аппаратное обеспечение и т. Д. Затем он ищет устройства, которые являются загрузочными и активными по заказу CMOS (ваша конфигурация в BIOS – которая в свою очередь, дает дополнительный полупроводниковый оксид металла ). Когда он находит диск с 0xaa55 при смещении 510, он загружает этот раздел диска (сектор 1) в память и оставляет управление ему по адресу 0x00000 этого кода. Эти 512 байт являются основной загрузочной записью (MBR).

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

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


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


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

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

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


EDIT – Обновить для комментариев:

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 на жестком диске i сырые байты – как в части не какой-либо секции и т. Д.

Здесь загрузочный раздел – это раздел 2, который представляет собой системный раздел с linux.

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

Также в системе GPT – GPT использует этот раздел диска для себя, поэтому нужно переместить эти файлы GRUB в другое место. Это то, что bios_grub для – для хранения core.img для GRUB 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 

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


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

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

Конец.

Возможно, я ошибаюсь и не поступил правильно, но у меня была такая же проблема, как и вы. Через некоторое время я нашел здесь, что 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, вы, вероятно, можете проверить вики. В этом случае я не могу помочь.

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