Страница 1 из 1

Ошыбка компиляции GRUB (pxegrub)

Добавлено: 2009-09-28 13:34:35
Orator
Всем доброго времени суток.

Имею следующую необходимость - скомпилировать pxegrub.
При стандартной установки grub из портов загрузчик pxegrub не создается.
Нагуглил следующие решение:

Код: Выделить всё

cd /usr/ports/sysutils/grub
make extract
cd /work/grub-0.97
./configure --enable-diskless --enable-eepro100
make
eepro100 - является указанием сетевухи.

После данных мытарств в папке согласно описанию должен появится искомый файл (pxegrub)
В моем случае компиляция вылетает с ошибкой:

Код: Выделить всё

main.c:57: error: static declaration of 'bootp_data' follows non-static declaration
./etherboot.h:534: error: previous declaration of 'bootp_data' was here
main.c:59: error: static declaration of 'end_of_rfc1533' follows non-static declaration
./etherboot.h:536: error: previous declaration of 'end_of_rfc1533' was here
main.c: In function 'udp_transmit':
main.c:231: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c:276: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c:290: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c: In function 'tftp':
main.c:462: warning: pointer targets in passing argument 1 of 'fnc' differ in signedness
main.c: In function 'rarp':
main.c:509: warning: pointer targets in passing argument 1 of 'eth_transmit' differ in signedness
main.c: In function 'udpchksum':
main.c:729: warning: dereferencing type-punned pointer will break strict-aliasing rules
main.c: In function 'await_reply':
main.c:893: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:895: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:925: warning: pointer targets in passing argument 1 of 'decode_rfc1533' differ in signedness
main.c: In function 'decode_rfc1533':
main.c:973: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:973: warning: pointer targets in passing argument 2 of 'grub_memcmp' differ in signedness
main.c:984: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:984: warning: pointer targets in passing argument 2 of 'grub_memcmp' differ in signedness
main.c:1057: warning: pointer targets in passing argument 1 of 'grub_memcmp' differ in signedness
main.c:1057: warning: pointer targets in passing argument 2 of 'grub_memcmp' differ in signedness
*** Error code 1

Stop in /usr/ports/sysutils/grub/work/grub-0.97/netboot.
*** Error code 1

Stop in /usr/ports/sysutils/grub/work/grub-0.97.
*** Error code 1

Stop in /usr/ports/sysutils/grub/work/grub-0.97.
Дальнейшее гугление привело к струганию следующего патча

Код: Выделить всё

#cat ../../patch_me
--- work/grub-0.97.orig/netboot/main.c       2004-05-21 00:19:33.000000000 +0200
+++ work/grub-0.97/netboot/main.c    2007-07-20 02:31:28.000000000 +0200
@@ -54,9 +54,9 @@

 static int vendorext_isvalid;
 static unsigned long netmask;
-static struct bootpd_t bootp_data;
+struct bootpd_t bootp_data;
 static unsigned long xid;
-static unsigned char *end_of_rfc1533 = NULL;
+unsigned char *end_of_rfc1533 = NULL;

 #ifndef        NO_DHCP_SUPPORT
 #endif /* NO_DHCP_SUPPORT */
Скармливаю патч:

Код: Выделить всё

 cd ../../
patch < patch_me
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- work/grub-0.97.orig/netboot/main.c       2004-05-21 00:19:33.000000000 +0200
|+++ work/grub-0.97/netboot/main.c    2007-07-20 02:31:28.000000000 +0200
--------------------------
Patching file work/grub-0.97/netboot/main.c using Plan A...
Hunk #1 succeeded at 54 with fuzz 2.
Hmm...  Ignoring the trailing garbage.
done
cd work/grub-0.97
снова пытаюсь собрать, получаю следующее^

Код: Выделить всё

In file included from timer.c:11:
timer.h:53: warning: no previous prototype for 'timer2_running'
timer.h:58: warning: no previous prototype for 'waiton_timer2'
make: don't know how to make %.o:. Stop
*** Error code 1

Stop in /usr/ports/sysutils/grub/work/grub-0.97.
*** Error code 1

Stop in /usr/ports/sysutils/grub/work/grub-0.97.
Есть еще у кого-то мысли?

Ось - FreeBSD 7.1-RELEASE-p7
на всякий случай gmake-3.81_3
больше ничего такого не стоит.

Re: Ошыбка компиляции GRUB (pxegrub)

Добавлено: 2009-09-28 14:19:57
hizel
загляните в дирикторию files/ , там полюбому патчи нужные для freebsd есть

Re: Ошыбка компиляции GRUB (pxegrub)

Добавлено: 2009-09-28 14:59:17
Orator
hizel писал(а):загляните в дирикторию files/ , там полюбому патчи нужные для freebsd есть
там 3 патча

Код: Выделить всё

-rw-r--r--  1 root  wheel  33480 Dec  3  2004 patch-graphics
-rw-r--r--  1 root  wheel    857 Jul  9  2008 patch-grub-install
-rw-r--r--  1 root  wheel    274 Dec 12  2008 patch-lib-device.c
скормил все 3, толку ноль.

дело в том что по умолчанию, банальным make install clean
grub ставится без ошибок, и патчи автоматом эти накладываются.

Но при установке по умолчанию не компилируется pxegrub, а мне нужен именно он.
make config никакого выбора настроек не дает.

Re: Ошыбка компиляции GRUB (pxegrub)

Добавлено: 2009-09-28 15:09:00
hizel
ну попробуйте добавить ваши опции в Makefile именно порта :-\

Re: Ошыбка компиляции GRUB (pxegrub)

Добавлено: 2009-09-28 15:18:53
Orator
hizel писал(а):ну попробуйте добавить ваши опции в Makefile именно порта :-\
можно примерчик как именно,
понятно что редактировать /usr/ports/sysutils/grub/MakeFile,
но что именно и куда именно дописать.
Там я добавлял посредством
./configure --enable-diskless --enable-eepro100

Re: Ошыбка компиляции GRUB (pxegrub)

Добавлено: 2009-09-28 15:22:46
hizel

Код: Выделить всё

CONFIGURE_ARGS+=        --libdir=${PREFIX}/share --enable-diskless --enable-eepro100
как то так :-)

...

опсля нет оно не собирается :-(