LINUX.ORG.RU

Ядро 3.0.4 не могу установить virtualbox-ose-dkms


0

1

Добрый день.

Четыре дня мучился с попыткой установить сабж. Ругался на отсутствующий linux/autoconf.h. Прочитал, что в новых ядрах используется каталог generated/autoconf.h. В результате я создал символическую ссылку на него. Больше не ругался. Но проблема осталась. Ведь помимо ругани на autoconf.h были ещё ошибки в логах компиляции:

make: Entering directory `/usr/src/linux-3.0.4'

  WARNING: Symbol version dump /usr/src/linux-3.0.4/Module.symvers
           is missing; modules will have no dependencies and modversions.

  LD      /var/lib/dkms/virtualbox-ose/3.2.10/build/built-in.o
  LD      /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/built-in.o
  CC [M]  /var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.o
/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c: In function ‘VBoxDrvLinuxInit’:
/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: ‘nmi_watchdog’ undeclared (first use in this function)
/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: (Each undeclared identifier is reported only once
/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: for each function it appears in.)
/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:451: error: ‘NMI_IO_APIC’ undeclared (first use in this function)
/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.c:465: error: ‘nmi_active’ undeclared (first use in this function)
make[2]: *** [/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv/linux/SUPDrv-linux.o] Ошибка 1
make[1]: *** [/var/lib/dkms/virtualbox-ose/3.2.10/build/vboxdrv] Ошибка 2
make: *** [_module_/var/lib/dkms/virtualbox-ose/3.2.10/build] Ошибка 2
make: Leaving directory `/usr/src/linux-3.0.4'

Как выяснилось, в каталоге с «новым» ядром нет папки arch/x86/include/asm/ в которой лежат заголовочные файлы, которые, кстати, есть в папке исходниками «старого» ядра, откуда он и подключает их. Кстати, почему он их ищет в папке со «старым» ядром?

Гугл с яндексом молчат. Ребята. Есть у кого-нибудь соображения по этому поводу? Может у кого-то всё-таки получилось установить сабжевый пакет...

Ответ на: комментарий от xsektorx

Почему нет. Есть бинарник. Его и пытаюсь поставить. Он запускает компиляцию модулей. А они не компилируются. То есть сам пакет устанавливается, но это не даёт никакого результата, потому, что виртуалбоксу нужны модули.

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

нужны хэдеры для компиляции модулей, а не сырцы

Во-во. В Debian нужны пакеты linux-headers-* и только. Смотрите только, чтобы соответствовали используемой версии ядра.

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

А разве есть различия у ядер? Честно говоря всегда думал, что ядро оно и для генту, и для опенсуса и для дебиана одно. И ни разу не видал чего-то похожего на kernel-debian-x.x.x ... И не из сырцов ли ядра берутся хедеры? В частности, когда компилировал ядро, я явно указал, чтобы компилятор собрал мне kernel_image и kernel_headers. После чего и получилось (скажем так) «одноимённых» 2 deb пакета в ../

Может я ошибаюсь где-то???

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

>Честно говоря всегда думал, что ядро оно и для генту, и для опенсуса и для дебиана одно

OMFG!

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

>А разве есть различия у ядер? Честно говоря всегда думал, что ядро оно и для генту, и для опенсуса и для дебиана одно

дистростроители канладывают какие-то патчи, конфигурируют по-разному

И ни разу не видал чего-то похожего на kernel-debian-x.x.x

и не надо, оно просто в репах дебиана содержится, а не лежит в тарболлах на кернел.орг или дебиан.орг

И не из сырцов ли ядра берутся хедеры?

угую и бинарники тоже берутся из сырцов, если так рассматривать. но модели требуют особым образом оформленную директорию с хэдерами, а не сырцы твоего ведра

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

Файлик-то установлен. Вся проблема в том, что, судя из сообщений компилятора, nmi_watchdog не описан. Функции, на сколько мне известно, не описывают в заголовочных файлах. Да и не функция это, судя по исходному коду, а внешняя переменная. Причём ранее в коде она не раз встречается, а ругается именно на эту строку... Не совсем понятно.

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

сделайте поиск linux-headers в своём пакетном менеджере
если, например, архитектура системы - amd64, то заголовочные файлы подтянутся через метапакет linux-headers-amd64

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

Пробовал. У меня архитектура i386(i686). Точно так же ругается. Если в репозитории нет пакета kernel-headers именно 3.0.4 (его нет так же и в sid, и в прочих ветках дебиана) где его скачать? Может есть способы сборки модуля без заголовочных файлов ядра (хотя глупо наверное...)?

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

Если в репозитории нет пакета kernel-headers именно 3.0.4

Насколько знаю, точное соответствие версии не обязательно. Заголовочные файлы могут быть для более ранней.
linux-headers-3.0.0-1-all или linux-headers-3.0.0-1-686-pae у вас доступен (если рассматривать Debian wheezy)?

Может есть способы сборки модуля без заголовочных файлов ядра (хотя глупо наверное...)?

Лучше всё-таки не заморачиваться, а освоить штатный способ.

frozen_twilight ★★ ()

А если просто перекомпилировать ядро из дебиановских исходников? Должно заработать.

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

Если речь о том ядре, что «шло в комплекте» (?), то пробовал и его. С ним виртуалбокс работает. С ним другая проблема: причиной компиляции ядра является то, что с ним отлично работает вебкамера (контроллер pixart). В «новом» ядре по, большому счёту, работает всё, кроме одного виртуалбокса... А в старом, хоть и есть этот модуль, который даже включен по умолчанию, но с ним камера не определяется в системе. В интернете я находил ссылки на исходники модуля, но ни одна из них не работает...

frozen_twilight: Попробовал скачать linux-headers-3.0.0-1-686-pae + все зависимости. С ним тоже не получается собрать vboxdrv и иже с ним. Сутки в синаптике провёл, чтобы всё обратно вернуть, как было))). У меня же squeeze.

tetramin ()

В общем победил я эти модули!

Оказалось немного проще всё. Напишу решение, мало ли, кому пригодится.

Я выполнил:

m-a prepare virtualbox-ose

он, как обычно ругнулся на неописанный nmi_watchdog в функции VBoxDrvLinuxInit. Затем в другом терминале (пока в первом открыт module-assistent) распаковал virtualbox-ose.tar.bz2 в новую папку.

В файле modules/virtualbox-ose/vboxdrv/linux/SUPDrv-linux.c перед строкой

#ifdef CONFIG_X86_LOCAL_APIC

дописал

#undef CONFIG_X86_LOCAL_APIC

Таким образом отменил выполнение этой директивы. Затем запаковал обратно в virtualbox-ose.tar.bz2, закинул его в /usr/src и в первом терминале нажал build. После удачной сборки он вежливо предложил «install now?», на что я согласился. И заработало!

Надеюсь эта информация будет полезной кому-нибудь.

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