Ошибка при установке grub (Решено)

anode
Такое сообщение об ошибке во всем дереве исходников grub есть только в файле ./util/grub-mkimagexx.c и выдается только в случае если

(!is_relocatable (image_target) && grub_host_to_target_addr (s->sh_addr) != image_target->link_addr)
Верно подмечено - описал выше ...
Ошибки не исчезают с опытом - они просто умнеют
В части разных кирпичиков …
Решил сравнить выводы objdump -f /…/kernel.img
- мой вывод
/usr/lib/grub/i386-pc/kernel.img:     формат файла elf32-i386
архитектура: i386, флаги 0x00000002:
EXEC_P
начальный адрес 0x00009000
- твой нормальный вывод, кстати такой же, как и у меня
Chips
BUILD/grub-old/usr/lib/grub/i386-pc/kernel.img: формат файла elf32-i386
архитектура: i386, флаги 0x00000002:
EXEC_P
начальный адрес 0x00009000
- твой проблемный
Chips
BUILD/grub/usr/lib/grub/i386-pc/kernel.img: формат файла elf32-i386
архитектура: i386, флаги 0x00000102:
EXEC_P, D_PAGED
начальный адрес 0x00009074
Разница имеется

Но также заметил и отличие в информации о файле /usr/bin/grub-install
- мой вывод
/usr/bin/grub-install:     формат файла elf64-x86-64
архитектура: i386:x86-64, флаги 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
начальный адрес 0x000000000000a8a0
- твой вывод нормальный вывод
Chips
BUILD/grub-old/sbin/grub-install: формат файла elf64-x86-64
архитектура: i386:x86-64, флаги 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
начальный адрес 0x00000000004038c0

EDIT 1 - предположу, что линковщик (или что там ...) при присвоении entry point все это учитывает ...
Ошибки не исчезают с опытом - они просто умнеют
Я уже думаю написать в багтрекер binutils может там что посоветуют
Chips
Я уже думаю написать в багтрекер binutils может там что посоветуют
Если не пошлют, то может что и посоветуют ...
В части флагов в выводе objdump -f .... флаги 0x00000112
Это когда то читал, как они считаются, например, в данном случае
EXEC_P -------- #define EXEC_P ........... 0x02
HAS_SYMS --- #define HAS_SYMS ...... 0x10
D_PAGED ----- #define D_PAGED ......... 0x100
...............................................................................
складываем и получаем ................ 0x112
Но вот влияет ли их значение на entry point - хрен знает

EDIT 1 - в принципе можно и поэкспериментировать, пересобрать какой нибудь простенький файлик, убрав несколько флагов, например, nano
objdump -f /usr/bin/nano
/usr/bin/nano:     формат файла elf64-x86-64
архитектура: i386:x86-64, флаги 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
начальный адрес 0x0000000000006410
#define DYNAMIC вроде бы равно 0x40

PS - похоже их и не изменить так просто, вот что пишут на этот счет
Это битмаски, специфичные для BFD. В дереве источников binutils см. Bfd/bfd-in2.h ...
Эти значения флагов не будут отображаться в вашем объектном файле; они просто представляют собой представление в памяти, которое использует libbfd.
... и опять выходим на этот binutils
Ошибки не исчезают с опытом - они просто умнеют
Chips, если не трудно выложи выводы, приведенные выше (на предыдущей странице) ... просто интересно для информации.
Ошибки не исчезают с опытом - они просто умнеют
vasek Об этом?

Это ранний билд grub 2.04 который работает

chip@chip-pc:~$ od -A d -t x1 /usr/lib/grub/i386-pc/kernel.img | grep "74 90 00 00"
chip@chip-pc:~$ file /usr/lib/grub/i386-pc/kernel.img
/usr/lib/grub/i386-pc/kernel.img: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
chip@chip-pc:~$ file /sbin/grub-install
/sbin/grub-install: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, stripped

а это последний билд который не хочет работать
chip@chip-pc:~/BUILD/grub/grub$ od -A d -t x1 ./usr/lib/grub/i386-pc/kernel.img | grep "74 90 00 00"
0000016 02 00 03 00 01 00 00 00 74 90 00 00 34 00 00 00
0000128 89 86 64 01 00 00 b9 30 71 00 00 bf 74 90 00 00
0000976 00 00 0f 09 0f 09 b8 a4 01 11 00 2d 74 90 00 00
0029168 0b 00 00 00 01 00 00 00 06 00 00 00 74 90 00 00
chip@chip-pc:~/BUILD/grub/grub$ file ./usr/lib/grub/i386-pc/kernel.img
./usr/lib/grub/i386-pc/kernel.img: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
chip@chip-pc:~/BUILD/grub/grub$ file ./usr/bin/grub-install
./usr/bin/grub-install: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=80692428660a354735c72cbd5ab10bee6743e303, stripped
chip@chip-pc:~/BUILD/grub/grub$
Chips
а это последний билд который не хочет работать
а можно для сравнения этот же вывод для работающего файла - od -A d -t x1 /usr/lib/grub/i386-pc/kernel.img | grep "00 90 00 00"
Ошибки не исчезают с опытом - они просто умнеют
Вот это рабочий
chip@chip-pc:~$ od -A d -t x1 /usr/lib/grub/i386-pc/kernel.img | grep "00 90 00 00"
0000016 02 00 03 00 01 00 00 00 00 90 00 00 34 00 00 00
0000048 06 00 05 00 01 00 00 00 78 00 00 00 00 90 00 00
0000064 00 90 00 00 8c 6e 00 00 48 e5 00 00 07 00 00 00
0000144 00 90 00 00 f3 a4 be 25 90 00 00 ff e6 bf 8c fe
0000976 b8 00 90 00 00 f7 d8 05 8c fe 10 00 a3 38 14 01
0028496 0b 00 00 00 01 00 00 00 07 00 00 00 00 90 00 00
vasek, для сборщика своего дистрибутива вы предлагаете даже не костыль. В его, ТС, собственном дистрибутиве загрузчик просто не рабочий. И я подозреваю, что это еще не все тараканы, которые вылезут ночью из под плинтусов. Нужна причина, по которой
grub_host_to_target_addr (s->sh_addr) != image_target->link_addrж
Ладно, зачеркивать не буду, написано топором - фиг вычеркнешь тегом.
Древо зависимостей: grub -> device-mapper -> systemd-libs.
Chips
Я пробую собрать свой дистр основываясь на Arch только с openrc в место systemd и другим пакетным менеджером
Как вы эту зависимость разрешили?
ЗЫ.Chips, я дал вам ссылку, где openrc и все уже скомпилировано до вас.
anode
Как вы эту зависимость разрешили?
ЗЫ.Chips, я дал вам ссылку, где openrc и все уже скомпилировано до вас.
Ну я не с самого нуля собирать начал, за основу взял старенькую слаку выкинув всё по максимум и вот её "насилую" хотя я уже прихожу к выводу что нужно было собирать LFS и от неё отталкиваться прикручивая пакетный менеджер...

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