LINUX.ORG.RU
решено ФорумAdmin

ELF header smaller than expected/invalid arch independent ELF magic

 ,


0

1

Пытаюсь с арча поставить grub2, а он не грузится (показывает чёрный экран). При запуске через kvm оно в 90% случаев после установки выдаёт одну из двух ошибок: ELF header smaller than expected или invalid arch independent ELF magic .

Если же пощёлкать опциями в /etc/default/grub и подобавлять/снести конфигов и пустых строк в /etc/grub.d/40_custom то он иногда взлетает (в kvm, ребутаться уже надоело т.к. каждый раз секс с восстановлением загрузчика). Причём содержимого 40_custom в финальном /boot/grub/grub.cfg нет, вернее, вместо него вот это:

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

Неужели grub настолько поломан?

40_custom который почему-то не подключается:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry 'Arch' {
        set gfxpayload=text
        insmod gzio
        insmod part_gpt
        insmod ext2
        #set root='(hd0,msdos2)'
        search --no-floppy --set=root --label ARCHROOT
        echo    'Loading Linux core repo kernel ...'
        linux   /boot/vmlinuz-linux root=LABEL=ARCHROOT ro
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs-linux.img
}

★★★★★

Последнее исправление: true_admin (всего исправлений: 1)

мде, grub грузится только если вставлена флешка в комп. Сразу скажу что grub-install я делал при вынутой флешке, т.е. ситуация что загрузчик на самом деле на флешке исключена.

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

ситуация что загрузчик на самом деле на флешке исключена

На флешке мог быть просто загрузчик сам по себе, а который ты пилишь просто посчитал его одним из указанных.

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

sudo bash -x /usr/sbin/grub-mkconfig

выдаёт всё корректно:

localhost@~$ bash -x /etc/grub.d/40_custom 
+ exec tail -n +3 /etc/grub.d/40_custom
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry 'Arch' {
        set gfxpayload=text
        insmod gzio
        insmod part_gpt
        insmod ext2
        #set root='(hd0,msdos2)'
        search --no-floppy --set=root --label ARCHROOT
        echo    'Loading Linux core repo kernel ...'
        linux   /boot/vmlinuz-linux root=LABEL=ARCHROOT ro
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initramfs-linux.img
}
localhost@~$ 
true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Я предлагал отдебажить /usr/sbin/grub-mkconfig

Предполагаю, что в нем неправильно устанавливается grub_mkconfig_dir, и используется другой 40_custom

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

А, пардон, ступил. Ох я лох, я думал grub-install генерит конфиг (по аналогии с update-grub2 в убунтах/дебианах). Оказалось grub-install сам по себе.

Чтож, спасибо за помощь. Хоть одной проблемой разобрался.

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

Кстати, раз в ходе моих экспериментов конфиг в действительности не менялся то, выходит, grub как-то дико глючит.

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

ух ты, теперь если сделать kvm -hda /dev/sda то я вижу окошко grub, но ядро оно не грузит, пишет

error: relocation 0x0 is not implemented yet.                                   
Loading Linux core repo kernel ...                                              
error: invalid arch-independent ELF magic.                                      
Loading initial ramdisk ...                                                     
error: invalid arch-independent ELF magic.                                      
                                                                                
Press any key to continue...
true_admin ★★★★★
() автор топика
Ответ на: комментарий от true_admin

Т.е. до грабовского шела добраться получается? Можно дать ему команду set debug=all (в /boot/grub/grub.cfg её писать не стоит, тогда система будет грузится пару часов). Но судя по ошибке битое ядро или модули не для той архитектуры %)

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

битое ядро

ядро точно рабочее, оно и загружено.

На счёт модулей интереснее, но я пока попробую просто откатить grub и посмотреть что это даст. Спасибо за помощь.

true_admin ★★★★★
() автор топика

grub2

За это персонально тебе спасибо, но покуда в тегах не останется grub-legacy и grub-2, вопрос останется на плаву. Как плохо, что ЛОРом никто не занимается.
А то можно было бы без нервов просто отдать шкворца за переименование тега в топике.

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

А kvm глючить не может?

kvm может глючить, но на реальном железе проблем у меня ещё больше. Если оно сыпет ошибками в kvm то при ребуте компа оно вообще чёрный экран показывает.

Проблема в том что для восстановления загрузчика приходится бутаться с флешки, чрутиться в убунту, монтировать /sys и /proc, делать grub-install, ребутаться в arch и снова пытаться поставить загрузчик. Это всё занимает кучу времени, поэтому я пока через kvm работаю с физическим диском и смотрю какие параметры влияют на загрузку.

модули не для той архитектуры

на всякий случай задал явно kvm -cpu core2duo и проверил версию grub, всё правильно. Щас поищу другой grub....

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

поставил grub из bzr, всё без проблем взлетело с моим старым конфигом.

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

покуда в тегах не останется grub-legacy и grub-2

я поставил grub2 в теги.

true_admin ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.