Я пытаюсь установить GRUB на свой не загружающийся настольный компьютер, но я сталкиваюсь с несколькими ошибками. Другие источники, обсуждающие эти ошибки, объясняют их либо отсутствием свободного дискового пространства перед первым разделом (у меня есть необходимое свободное место), либо проблемой с /boot/grub/grub.cfg
(проблема сохраняется даже после правильной регенерации этого файла).
Я загрузился с живого USB и попытался переустановить GRUB, используя следующие команды, но я столкнулся с ошибкой, которая не позволяет ему работать:
$ sudo mount /dev/sda1 /mnt $ sudo grub-install --root-directory=/mnt /dev/sda Installing for i386-pc platform. grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet.. grub-install: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. grub-install: error: will not proceed with blocklists.
Однако, /dev/sda
, кажется, правильно отформатирован для Установка grub:
$ sudo fdisk -l /dev/sda Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8d91017b Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 234440703 234438656 111.8G 83 Linux $ blkid /dev/sda1 /dev/sda1: UUID="84e9ff65-c4ba-42eb-8a6d-ebc703fae1f7" TYPE="ext4" PARTUUID="8d91017b-01"
В начале он имеет стандартное свободное пространство 1 МБ, и /dev/sda1
отформатирован правильно. Я попытался использовать grub-mkconfig
для перестройки конфигурационного файла:
$ for f in proc sys dev dev/pts ; do sudo mount --bind /$f /mnt/$f ; done $ sudo chroot /mnt # grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.19.0-26-generic Found initrd image: /boot/initrd.img-3.19.0-26-generic Found linux image: /boot/vmlinuz-3.19.0-23-generic Found initrd image: /boot/initrd.img-3.19.0-23-generic Adding boot menu entry for EFI firmware configuration done
Однако, я все еще получаю одно и то же сообщение об ошибке при запуске grub-install
, в среде или из среды chroot
.
При загрузке живого USB в устаревшем режиме я получаю ту же ошибку; единственное отличие - это результат работы grub-mkconfig
в среде chroot
:
# grub-mkconfig -o /boot/grub/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.19.0-26-generic Found initrd image: /boot/initrd.img-3.19.0-26-generic Found linux image: /boot/vmlinuz-3.19.0-23-generic Found initrd image: /boot/initrd.img-3.19.0-23-generic Found memtest86+ image: /boot/memtest86+.elf Found memtest86+ image: /boot/memtest86+.bin Found Windows 7 (loader) on /dev/sdc1 done
Как правильно установить grub?
Вот то, что я сделал, который получил его работающий снова:
Используемый gdisk
для преобразования раздела MBR в GPT вставьте раздел в вакуум (тип EF02 "Раздел начальной загрузки BIOS"), транспонировал его запись с моим исходным разделом и отметил его как загрузочный BIOS прежней версии.
Затем работал
$ sudo mount /dev/sda1 /mnt $ sudo grub-install --root-directory=/mnt /dev/sda
, Это затем установило успешно, и я способный загрузиться к моему основному диску.
Можно создать новое разделение, где отчет GPT, затем вытрите его, используя dd
. Тот путь, только отчет MBR останется.
проблемное устройство Принятия /dev/sda
:
Создают новое разделение в начальном 1 МИБ
$ parted /dev/sda
$ mkpart primary ext4 0MiB 1MiB
$ quit
Затем ноль недавно созданное разделение
$ dd if=/dev/zero of=/dev/sda2
Затем удаляют разделение
$ parted /dev/sda
$ rm 2
$ quit
grub-install
, должен теперь работать как ожидалось.
Имел подобную проблему с несколькими маркировками раздела, хотя я совершенно уверен это дело не в этом.
sudo grub-install target=i386-pc /dev/sda --force
то, что я раньше обходил это. Прикрепление на --force
не является "рекомендуемым" решением, но у меня не было проблем до сих пор =P
Уничтожьте разрыв между загрузочным сектором и первым разделом.
# dd if=/dev/zero of=/dev/sdX seek=1 count=2047
Это для того, если первый раздел запускается в секторе 2048. Некоторые запускают ранее, особенно на дисках, которые были разделены Windows. Безусловно, работайте
# fdisk -l /dev/sdX
прежде, чем запуститься и проверка для наблюдения, где первый раздел запускается. Используйте count=S-1
, где S является запуском первого раздела.
dd
на типичном жестком диске или SSD возьмет возрасты без разумного размера блока какbs=8M
или чего-то как этот. – David Foerster 19 November 2016 в 08:00