LINUX.ORG.RU

Ошибка установки загрузчика grub

 , ,


0

1

Привет всем, все, что я напишу дальше, может быть негативным, но не принимайте это на свой счет. Я не понимаю некоторых вещей в Linux по отношению к пользователям. Учитывая открытость системы и сообщества, почему так трудно сделать хотя бы установку Linux более лояльной к пользователю. Как только я начал изучать Linux и подумал, что хотя бы понял некоторые основы, вчера мое мнение сильно изменилось в негативную сторону. Возможно, установка с тех пор никак не изменилась, но по какой-то причине я столкнулся с проблемами (которых не было тогда), как только захотел снова прикоснуться к системе.

Суть проблемы в том, что у меня есть ноутбук (да, он старый), на который я хочу поставить Linux (второй системой) и продолжить изучение узнав немного глубже про железки, но во время первой установки, после долгого перерыва, я столкнулся с проблемой загрузчика. Первым дистрибутивом был Manjaro(GNOME), и в нем загрузчик не устанавливался, потому что нельзя было записать grub для загрузки в так называемую «NVRAM». Через несколько часов я нашел решение, зайдя через chroot в установленный дистрибутив и запустив команду grub-install с параметром --no-nvram (я не понимаю, почему было сложно дать пользователю возможность изменить команду, устанавливающую grub, во время установки, или, если обнаружится такая ошибка, дать возможность продолжить установку с этим параметром и предупредить, что система может не запуститься). На этой системе меня ждало разочарование в виде уе****ких ключей, что бы просто обновить пакеты. На след. день(то есть сегодня), я решил перейти на Fedora(GNOME), но и тут во время установки, я получил *** без масла, то есть ошибку:

'utf-8' codec can't decode byte 0xff in position 102: invalid start byte.

Это что-то связанное с загрузчиком и добавлением в очерёдность запуска загрузчиков (то есть возможно NVRAM)

Мне не нужно залазить в NVRAM и что-то там менять, я просто хочу, что бы установщик установился без этого NVRAM, так как у меня есть возможность загружать через Boot Menu, efi файл. Что мне в этом случае делать? (Я предполагаю решение, по типу установки или grub или ещё чего-то с USB на котором установочная система, и при этом не ставить /boot/efi, но настолько углубленно в этом не понимаю, так как надо что бы в загрузчик видел систему, а как это делать я не знаю)


Я не могу сказать почему конкретно у тебя были проблемы, при чём тут NVRAM, куда ты ставишь загрузчик и какого типа. Сейчас такая солянка из способов загрузки, мама дорогая... Если ты хочешь помощи - представь полезную информацию, а если хочешь повозмущаиься неспособностью линуксоидов написать на все случаи жизни - могу поговорить.

Просто покажи какая операционная система позволяет тебе легко и не принуждённо дуалбутить? И попробуй перечислить все варианты того что как должно загружаться. Новый ноут - много вариантов, старый ноут - не меньше. UEFI - тритыщисильён под каждого производителя. BIOS - не меньше. GPT добавь и MBR. И все варианты хотелок - только линукс,два линукса,три линукса, винда и линукс, линукс и винда, две винды и линукс и так далее. Если бы ты видел во что может одно только обновление винды дуалбутной привести линукс. В прямом смысле, удалению раздела с линуксом и потом ещё и невозможность загрузить винду, потому что в загрузчик был прописан grub и винда его снесла,а своего не поставила обратно. И проблемы подсовываемые производителями ещё припрмню. Официальная винда не устанавливаетсяналаптоп,потому что «качайте винду с сайтапроизводителя» и много, много проблем бывает с виндой,которую разрабатывает мегакораорация на всю планетуза деньги. И ты хочешь,чтобы разработчики дистрибутивов переплюнули их и решили всё разом?

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Как я уже писал не воспринимайте это всё лично, я не виню конкретно сообщество. Как я давно узнавал, в моём лаптопе очень упрощённый UEFI (то есть он загружает определённый efi файл и этот файл это винда), по этому любой другой загрузчик не воспринимается моими железками. К сожалению нормального дуалбута у меня на этом лаптопе невозможно, если не заниматься подменной/переименованием файлов, что бы под видом Windows загрузчика, заставить запустить совершенно другой (по этому никого дистрибутива в пример я не могу предоставить). Я хочу установить Linux рядом с Windows, при этом не трогая загрузчик винды и делаю такую разметку (диск в GPT):

/dev/sda1 - gpt зарезервированный
/dev/sda2 - Windows Boot Manager
/dev/sda3 - NTFS (Сама Windows)
/dev/sda4 - /boot/efi
/dev/sda5 - linuxswap
/dev/sda6 - ext4 (Сам Linux)
/dev/sda7 - раздел восстановления Windows

Во время установки Manjaro, вылезла ошибка загрузчика и как я узнал из журнала ошибка была следующая:

Could not prepare Boot variable: No space left on device
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

Полазил в интернете узнал что загрузчик пытается в память NVRAM записать себя, что бы лаптоп при загрузке загружался в grub.

При установке Fedora, тоже получил ошибку на этапе загрузчика (ошибку написал в посте).

Я бы хотел в результате получить, просто установленный grub (без ошибок) который знает какой Linux установлен (знать ему про Windows мне не обязательно, так как я уже написал, UEFI упрощённый и в винду я легко запущусь), а загрузить grub у меня не будет проблем, так как при запуске лаптопа, я могу зайти в Boot Menu и загрузить grub через efi файл. Каким способом будет установлен grub, мне тоже не важно, установит сам дистрибутив при установке или я его заранее установлю и при установке дистрибутива, просто не буду ставить загрузчик.

Я надеюсь смог донести мысль.

Xiean
() автор топика

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

Ты меня ранил в самое сердце.

у меня есть ноутбук (да, он старый)

Тогда может тебе надо отключить UEFI и ставить grub в mbr?

rupert ★★★★★
()
Ответ на: комментарий от rupert

Я бы хотел UEFI и GPT диск. При чём надо будет в MBR переводить диск

Xiean
() автор топика
Ответ на: комментарий от Xiean

К сожалению нормального дуалбута у меня на этом лаптопе невозможно, если не заниматься подменной/переименованием файлов, что бы под видом Windows загрузчика, заставить запустить совершенно другой (по этому никого дистрибутива в пример я не могу предоставить).

Что-то странное.

/dev/sda1 - gpt зарезервированный
/dev/sda2 - Windows Boot Manager
/dev/sda3 - NTFS (Сама Windows)
/dev/sda4 - /boot/efi
/dev/sda5 - linuxswap
/dev/sda6 - ext4 (Сам Linux)
/dev/sda7 - раздел восстановления Windows

Вот это солянка... Нет, я не возьмусь разгребать... Почему тут и «/dev/sda1 - gpt зарезервированный» и «/dev/sda4 - /boot/efi»? Не понимаю.

Could not prepare Boot variable: No space left on device
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

Место кончилось на efi разделе и всё. Но который из???

Я понимаю, ты тыкался, что-то пробовал, не всё получается, потому что непонятно. Я тебя понимаю. Но виноваты в этом не разработчики дистрибутивов, или загрузчиков. Линукс - это мир в который приходят те, кому надо именно так как они хотят. А для этого надо разбираться. Не существует способа для всех. Манджару ставить очень просто, но даже этого ты не смог потому что она не может предусмотреть бардака на твоём диске. Я не ругаюсь и не принимаю близко к сердцу. Но я сразу понял, что у тебя проблемы с тем что и как наразделялось. А ведь Манджара у тебя спрашивала.

R_He_Po6oT ★★★★★
()
Последнее исправление: R_He_Po6oT (всего исправлений: 1)
Ответ на: комментарий от R_He_Po6oT

Почему тут и «/dev/sda1 - gpt зарезервированный» и «/dev/sda4 - /boot/efi»?

Gpt(зарезервированный раздел) создался сам при установке Windows, если бы я мог спросить зачем и для чего он делает без спроса, я бы хотя бы попробовал. sda4-6 сейчас представляют из себя одно пустое место на 100гб (без файловой системы и разметки), так как установить это всё адекватно не получилось. Сколько не изучал как делать дуалбут винды с Linux, все подчистую говорят делать отдельный от загрузчика винды раздел, под загрузчик grub (то есть sda4 как я написал)

Место кончилось на efi разделе и всё

Я может реально чего-то не понимаю, но даже на других форумах по этой ошибке говорят про NVRAM

There have been a number of reports that if the NVRAM is more than 50% used, the efibootmgr will fail because there's a concern about being able to garbage collect EFI variables properly, or some such. Unfortunately, I couldn't find a clear way to determine the used/free space in NVRAM, so I'm going on suspicion.

Да я возможно не прав, и не хватает места на EFI разделе, но зачем мне тогда программа установки и много текста в ней. Я использовал ручную разметку и уже не знаю насколько детально я должен линуксу объяснить что где и куда, что бы оно правильно понимало мои хотелки. Вот и сам прикол если Windows Boot Manager не примонтирован и sda4 указан как /boot/efi, в чём сложность во время установки только туда и устанавливать, или 500мб это мало????

А ведь Манджара у тебя спрашивала.

Единственное что оно меня спросило, как я хочу поставить (рядом, стереть диск, ручная разметка). Рядом меня не устраивает, так как я не знаю, что хотелки манджары сделают (будет swap раздел или не будет, как оно мне корень определит, сделает ли /home который мне не нужен)

Xiean
() автор топика
Ответ на: комментарий от Xiean

По нормальному EFI раздел - один. И он же зарезервированный по сути(конечно если этот диск являеся загрузочно-системным.
Откуда взята текстовка с разделами? Сделай обычный

fdisk -l /dev/ТВОЙ_ДИСК_sdX


Если формировал разделы вручную, то обычно делают следующие разделы.
1. EFI, он ж подключается как /boot/efi
2. Резервный раздел от windows(по сути аварийная системы восстановления) - делается windows при установке
3. Бывает ещё один раздел от винды (зависит от поставщика оборудовния)
4. Системный диск винды (C:)
5. Linux раздел под /boot ( отдай ему хотя бы 500MiB, ядра порой тяжелые, иногда даже этого может не хватить тогда нужно удалять старьё)
6. Linux раздел под grub(1 Мбайт, или и того меньше - не помню) под grub(тип «BIOS boot» в fdisk, его GUID 21686148-6449-6E6F-744E-656564454649) там типа часть загрузчика grub будут хранится.
7. Linux раздел под «/» ~ 10..50GiB , размер зависит от того сколько программ будешь ставить
8. Linux раздел под «/home»
9. Для серверов ещё добавляют разделы под /var , /opt

Это если по классике. А можно сделать один раздел LVM и уже его нарезать для /boot, «/», /home, и так далее.
Только рекомендую так же добавить раздел для «BIOS boot» вне LVM.

Atlant ★★★★★
()
Последнее исправление: Atlant (всего исправлений: 2)
Ответ на: комментарий от Atlant
  1. Я немного не могу понять. Как тогда делают два FAT32 раздела (на одном Windows Boot Manager, другой grub) и успешно устанавливается.
  2. Мне больше по душе один раздел под систему (то есть корень /)
Xiean
() автор топика
Ответ на: комментарий от Atlant

Я бы не стал делать отдельный /boot – нафига? Гораздо проще сделать один раздел под ESP и его же монтировать как /boot. Linux отлично грузится с FAT32. Раздел под GRUB – такое же излишество. Более того, на EFI системе GRUB ставится как /boot/EFI/BOOTx64.efi (хотя у каждого дистрибутива есть свое мнение на этот счет), так зачем заставлять его искать свои файлы (конфиг, темы, модули) где-то на отдельном разделе, не проще ли положить эти файлы рядышком в /boot/grub? У меня «BIOS boot» раздела уже давным-давно нет, а до перехода на EFI там жил код GRUB-а, который не вмещался в первый сектор. И размер его был в районе полутора мебибайт.

yars068 ★★★★★
()
Ответ на: комментарий от Dimez
Disk /dev/sda: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: Prologix-2.5-100
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: gpt
Disk identifier: 681FB62E-0C33-492A-B3FB-A930CB2BE8FA

Device          Start        End    Sectors   Size Type
/dev/sda1          34      32767      32734    16M Microsoft reserved
/dev/sda2       32768     237567     204800   100M EFI System
/dev/sda3      237568 1794652763 1794415196 855.6G Microsoft basic data
/dev/sda4  1999454208 2000409199     954992 466.3M Windows recovery environment

Сейчас линукс не стоит, по этому нет разделов с ним нет https://ibb.co/KcDwcrXL

Xiean
() автор топика
Ответ на: комментарий от Xiean

У тебя по какой-то причине переполнилась nvram (один раз на такое натыкался в китайском mini pc)

В Linux livecd зайди в консоли в cd /sys/firmware/efi/efivars/ и выполни там команду ls | wc -l

P.S. НИ В КОЕМ СЛУЧАЕ НИЧЕГО не удаляй пока только!

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от Xiean

Не совсем про вашу модель, но всё же.

Вкратце, путь к EFI-загрузчику EFI/Microsoft/Boot/bootmgfw.efi намертво зашит в UEFI. Поэтому и ошибка записи в NVRAM. Можно пожмакать F9 - и выбрать другой загрузчик, но этот выбор, естественно, ноутбук не запомнит.

ALiEN175
()
Ответ на: комментарий от ALiEN175

Вкратце, путь к EFI-загрузчику EFI/Microsoft/Boot/bootmgfw.efi намертво зашит в UEFI.

Если бы так было, никакой Linux даже бы не стартовал с usb/dvd, поэтому как максимум зашит bootx64.efi, что уже ненамного, но лучше.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Xiean

Ну я имел ввиду efi файл вручную выбираю

Т.е. без ручного выбора efi-файла не стартует?

А в каком виде в биосе опция «Secure Boot», если она есть (хотя 2011 год, какой secure boot?)?

https://www.reddit.com/r/linuxmint/comments/1ft6sr6/linux_mintor_my_laptop_doesnt_work/ - тут пишут, что её надо отключить.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 3)
Ответ на: комментарий от Dimez

Т.е. без ручного выбора efi-файла не стартует?

да

А в каком виде в биосе опция «Secure Boot», если она есть (хотя 2011 год, какой secure boot?)?

Да, его нет

Xiean
() автор топика
Ответ на: комментарий от Xiean

да

Ну тогда @ALiEN175 выше прав: Ошибка установки загрузчика grub (комментарий)

Можно для проверки попробовать переименовать EFI/Microsoft/Boot/bootmgfw.efi в, например, EFI/Microsoft/Boot/bootmgfz.efi (заменить w на z) и grubx64.efi скопировать в дефолтный путь EFI/Microsoft/Boot/bootmgfw.efi.

Но так надо будет делать каждый раз при обновлении grub (или забить :)

Dimez ★★★★★
()
Ответ на: комментарий от ALiEN175

Проблема в том, что моя основная система Windows. В линукс я хочу заходить через boot menu (efi файл) + к тому же при установке системы выдаёт ошибку про это грёбаный NVRAM. Как я понимаю, система устанавливается, но не настраивает grub, так как после этой ошибки я вручную запустил grub и получил его терминал, а не выбор загрузки системы (или непосредственно её запуск).

Xiean
() автор топика
Ответ на: комментарий от Xiean

Ты же в стартовом посте указал всё правильно - сразу после установки (и ошибки установки загрузчика) сделай chroot в установленную систему без загрузчика и сделай grub-install с параметрами --no-nvram --no-uefi-secure-boot

Он тебе разложит все файлы по /dev/sda2 (который будет потом подмонтирован как /boot/efi), но не будет трогать nvram (куда его не пускает экспериментальный EFI).

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 2)
Ответ на: комментарий от Dimez

Да, но это на Manjaro. Но так как Manjaro меня вывел с ключами, что бы просто обновить систему, я решил перейти на Fedora. Я пытался после установки Fedora, сделать тоже самое, но Fedora не знает такой команды.

Xiean
() автор топика
Ответ на: комментарий от Dimez

Понял. То есть мне указать точку /boot/efi в уже существующий 100мб раздел? И хватит ли ему столько?

Xiean
() автор топика
Ответ на: комментарий от Xiean

То есть мне указать точку /boot/efi в уже существующий 100мб раздел?

Да.

И хватит ли ему столько?

Да. Туда установится менее мегабайта файлов (если без поддержки secure boot)

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

Я просто в а**е с этих установщиков. Сделал как в Manjaro, после ошибки зашёл через chroot в систему сделал grub2-install для grub2 не нашёл update-grub нашёл какой-то grub2-mkconfig, оно там чё-то сделало: добавило винду, какие-то настройки uefi firmware. А после перезапуска Федоры нет.

Xiean
() автор топика
Ответ на: комментарий от Xiean

Т.е. то, что производитель когда-то наделал говна (я про «экспериментальный win-only UEFI», куда нельзя записать другой загрузчик), а программисты не стали делать жутких костылей под это старое говно - вина программистов и вызывает к ним негатив, я правильно понял? :)

Федора на месте, просто надо её загрузить. Например, почитать, как происходит EFI-загрузка (efi -> grub), какие нужны конфиги (и с чем именно) и сделать grub.cfg.

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

то, что производитель когда-то наделал говна

Здесь я не спорю, ещё додуматься надо такое сделать, там явно iq<70

Может ли быть такое, что на этапе конфигурации системы (на котором загрузчик выдаёт ошибку), не появилось ядра системы (или ещё что-то) и grub его не видит? И то, что grubd видит винду, значит у него уже есть файл, куда надо что-то добавить, правильно?

Xiean
() автор топика
Ответ на: комментарий от Xiean

Я федору щупал плотно очень давно, поэтому точно подсказать не смогу, но насколько я помню сейчас с телефона, есть grub.cfg на efi-разделе, где указан grub.conf «основной» (который уже на ext4 в /boot/grub/grub.conf), проверь, чтобы у тебя были оба и правильно заполнены.

Dimez ★★★★★
()
Ответ на: комментарий от cetjs2

Так они просто более удобные дополнительные уровни абстракций для управления shim + grub (или просто grub, если нет/выключен secure boot)

Dimez ★★★★★
()
Ответ на: комментарий от Xiean

Ну и отлично. Я по посту сразу понял, что обязательно получится :)

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

Можно для проверки попробовать переименовать EFI/Microsoft/Boot/bootmgfw.efi в, например, EFI/Microsoft/Boot/bootmgfz.efi (заменить w на z) и grubx64.efi скопировать в дефолтный путь EFI/Microsoft/Boot/bootmgfw.efi.

Я же правильно понимаю, что запустив bootmgfz, я запущу винду? (То есть суть вопроса, что переименовав файл, вручную винду всё равно запущу)

Xiean
() автор топика
Ответ на: комментарий от andytux

Ух, опять туда лезть. Спасибо за ответ, попробую пошаманить

Xiean
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.