nixp.ru v3.0

24 мая 2017,
среда,
22:42:52 MSK

DevOps с компанией «Флант»
Аватар пользователя DimkaS
DimkaS написал 1 августа 2007 года в 18:55 (875 просмотров) Ведет себя как мужчина; открыл 84 темы в форуме, оставил 922 комментария на сайте.

Ковыряюсь с virtualbox. После modprobe vboxdrv имеев в dmesg следующее:

vboxdrv: disagrees about version of symbol misc_deregister
vboxdrv: Unknown symbol misc_deregister
vboxdrv: disagrees about version of symbol __free_pages
vboxdrv: Unknown symbol __free_pages
vboxdrv: disagrees about version of symbol contig_page_data
vboxdrv: Unknown symbol contig_page_data
vboxdrv: disagrees about version of symbol misc_register
vboxdrv: Unknown symbol misc_register
vboxdrv: disagrees about version of symbol __alloc_pages
vboxdrv: Unknown symbol __alloc_pages

Как я понимаю, дело в разных версиях gcc:

debian:/usr/src/linux-2.6.22# gcc --version
gcc (GCC) 4.1.3 20070629 (prerelease) (Debian 4.1.2-13)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
debian:/usr/src/linux-2.6.22# dmesg|grep gcc
Linux version 2.6.22 (root@debian) (gcc version 4.1.3 20070601 (prerelease) (Debian 4.1.2-12)) #2 PREEMPT Fri Jul 13 23:58:17 MSD 2007

Вижу 2 варианта: пересобирать ядро с новым gcc или откатиться на старый. Первое не хочется, второе — не знаю как сделать. Дистр — Debian testing.

Что посоветуете?

Genie
пересобирать ядро с новым gcc

а в чём тут сложности-то? делается ж парой команд…

или откатиться на старый

aptitude и не такое выправляет..

хотя, насколько я помню, при компиляции ядра и модулей необходимо чтобы совпадали мажорная и минорная версия gcc, а подверсии и сборки не критичны.

скорее всего не совпадают опции компиляции — то есть конфиг несколько отличается.

DimkaS
а в чём тут сложности-то? делается ж парой команд…

Да, но потом нужно загрузиться с каким-нибудь другим ядром, чтоб заменить текущее.

aptitude и не такое выправляет..

Знать бы как… В synaptic в доступных версиях я только одну вижу.

конфиг несколько отличается

Копировал из /boot, потом делал make oldconfig && make prepare, как сказано в логах установщика драйвера.

Пересобирать?

pol

какая система?

под убунту фейсти все запустилось сразу с официальным пакетом

DimkaS
какая система?

Смотрим внимательно первое сообщение. Debian testing

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

DimkaS

Пересобрал ядро и модуль, всё работает. Для доступа к usb пришлось добавить в /etc/fstab такую строчку:

none            /proc/bus/usb   usbfs   devgid=46,devmode=666   0       0
DimkaS

В продолжение проблем с версией gcc: не могу собрать модуль kqemu.

debian:/usr/src/modules/kqemu# make
make -C /usr/src/linux-2.6.22/ M=`pwd` modules
make[1]: Entering directory `/usr/src/linux-2.6.22'
  CC [M]  /usr/src/modules/kqemu/kqemu-linux.o
/usr/src/modules/kqemu/kqemu-linux.c: In function ‘kqemu_lock_user_page’:
/usr/src/modules/kqemu/kqemu-linux.c:67: error: dereferencing pointer to incomplete type
/usr/src/modules/kqemu/kqemu-linux.c: In function ‘kqemu_schedule’:
/usr/src/modules/kqemu/kqemu-linux.c:180: warning: implicit declaration of function ‘need_resched’
/usr/src/modules/kqemu/kqemu-linux.c:181: warning: implicit declaration of function ‘schedule’
/usr/src/modules/kqemu/kqemu-linux.c:183: warning: implicit declaration of function ‘signal_pending’
make[2]: *** [/usr/src/modules/kqemu/kqemu-linux.o] Ошибка 1
make[1]: *** [_module_/usr/src/modules/kqemu] Ошибка 2
make[1]: Leaving directory `/usr/src/linux-2.6.22'
make: *** [kqemu.ko] Ошибка 2
debian:/usr/src/modules/kqemu# ls -ls /usr/bin/gcc
0 lrwxrwxrwx 1 root root 7 2007-01-23 22:45 /usr/bin/gcc -> gcc-4.1

Как я понял, с 4-й версией он не соберётся. Что ж мне, пересобирать ядро с 3-м gcc?

Linux version 2.6.22 (root@debian) (gcc version 4.1.3 20070629 (prerelease) (Debian 4.1.2-13)) #9 Sun Aug 12 00:24:44 MSD 2007
DimkaS

Никаких идей?