Bug 29112 - подсказка virtualbox про модули ядра контрпродуктивна
: подсказка virtualbox про модули ядра контрпродуктивна
Status: ASSIGNED
: Branch p7
(All bugs in Branch p7/virtualbox)
: не указана
: x86_64 Linux
: P3 normal
Assigned To:
:
: http://altlinux.org/virtualbox
:
:
: 29180
  Show dependency tree
 
Reported: 2013-06-26 11:07 by
Modified: 2017-02-10 22:03 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2013-06-26 11:07:00
Устанавливаю Virtualbox 4.2.12 на новую систему. Репозиторий р7. Все обновления
стоят. 
Не устанавливаются модули ядра. 

При запуске любой машины выдает:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a
permission problem with /dev/vboxdrv. Please reinstall the kernel module by
executing

'/etc/init.d/vboxdrv setup'

as root. If it is available in your distribution, you should install the DKMS
package first. This package keeps track of Linux kernel changes and recompiles
the vboxdrv kernel module if necessary.

service vboxdrv setup -выдает ошибку
------- Comment #1 From 2013-06-27 13:32:59 -------
По-хорошему, это сообщение про '/etc/init.d/vboxdrv setup' и про компиляцию
модулей надобы вообще изжить из дистрибутивного virtualbox
------- Comment #2 From 2013-06-27 13:35:08 -------
И заменить его на предолжение установить пакет
kernel-modules-virtualbox-$flavour
где $flavour это значение для загруженного ядра (std-def, std-pae и т. д.)
А автоматически устанавливать модули вряд ли возможно. Разве что в составе
дистрибутива.
------- Comment #3 From 2014-01-08 19:48:34 -------
В p7 текущая версия virualbox - 4.2.16, а версии модулей ядра
kernel-modules-virtualbox-$flavour имеют версию 4.3.4
Потому и не работает.
------- Comment #4 From 2015-04-20 12:34:16 -------
_Возможно_, есть смысл добавить соответствующий мозг в update-kernel, чтоб
можно было в юзерспейсных пакетах подкладывать ему данные или скриптики,
которые добавят нужные kernel-modules в список на установку -- но это не снимет
саму проблему вида "не работает".
------- Comment #5 From 2017-02-06 13:21:21 -------
Да, эту запись, нужно поменять и добавить запуск сборки модулей. Только вот для
этого требуется дополнительно пакеты установить, если их не хватает (компилятор
нужной версии и заголовочные файлы ядра).

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

Первая проблема решается с помощью пакета apt-conf-etersoft-hold. Вообще, его
следует устанавливать, по умолчанию, я думаю.

[sin@base vbox]$ rpm -ql apt-conf-etersoft-hold
/etc/apt/apt.conf.d/apt.eter.conf
[sin@base vbox]$ cat /etc/apt/apt.conf.d/apt.eter.conf
RPM
{
        Hold {
                // kernel-headers* and kernel-headers-modules*
                "^kernel-(headers|headers-modules)-.*";
        };
};

Вторая требует дополнительной логики и предложения обновить сначала ядро.
------- Comment #6 From 2017-02-06 14:38:09 -------
*** Bug 31548 has been marked as a duplicate of this bug. ***
------- Comment #7 From 2017-02-06 14:41:22 -------
В общем, есть только один удобный вариант, который понятно как сделать - вместо
предложения о сборке скриптом, который всё равно не работает (или работает?
никогда не пробовал, честно говоря), нужно научиться доустанавливать модули,
если они имеются под текущую версию ядра. Либо просить сначала выполнить скрипт
обновления ядра - update-kernel.
------- Comment #8 From 2017-02-06 14:43:20 -------
Или разрешить обновлять ядро при dist-upgrade...
------- Comment #9 From 2017-02-06 15:02:09 -------
(In reply to comment #8)
> Или разрешить обновлять ядро при dist-upgrade...

Вот это было бы гораздо естественнее и лучше. 
Из-за устаревших и забытых к обновлению ядер возникают и подобные глюки...
А почему apt не может обновлять ядра, не удаляя их старые версии?
------- Comment #10 From 2017-02-07 18:03:03 -------
При всём при том, проблема установки пакета virtualbox всё равно остаётся -
установку модулей ядра приходится указывать вручную. По сути, это означает, что
установить через apt-get install virtualbox невозможно.

Если же написать скрипт устанавливающий модули для текущего flavour ядра и
научить virtualbox выдавать вместо '/etc/init.d/vboxdrv setup' другую строку, в
которой будет указан этот скрипт, то это будет простым и быстрым решением.

Если же это скрипт ещё и запускать научиться, то вообще всё автоматом будет
работать. Ну, а менять логику обновления ядра в apt - это совсем другая
история. Давайте этот вопрос решать в другой баге. А то всё упрётся в
мейнтенера apt, а проблема virtualbox так и не будет решена. К тому же, как уже
было сказано, всех проблема такой вариант не решает.
------- Comment #11 From 2017-02-10 22:03:28 -------
(In reply to comment #9)
> (In reply to comment #8)
> > Или разрешить обновлять ядро при dist-upgrade...
> 
> Вот это было бы гораздо естественнее и лучше. 
> Из-за устаревших и забытых к обновлению ядер возникают и подобные глюки...
> А почему apt не может обновлять ядра, не удаляя их старые версии?
Вроде, может. Одновременное наличие разных версий 1 пакета разрешено не только
для ядер, но и для видеодрайверов. Их обновляет apt.

(In reply to comment #10)
> При всём при том, проблема установки пакета virtualbox всё равно остаётся -
> установку модулей ядра приходится указывать вручную. По сути, это означает, что
> установить через apt-get install virtualbox невозможно.
> 
> Если же написать скрипт устанавливающий модули для текущего flavour ядра и
> научить virtualbox выдавать вместо '/etc/init.d/vboxdrv setup' другую строку, в
> которой будет указан этот скрипт, то это будет простым и быстрым решением.

Выдавать актуальное сообщение нужно. Из-за текущего много путаницы и вопросов у
новичков. А автоматически устанавливать не всегда возможно, т.к. в текущем
репозитории только 1 версия ядра, а запущено может быть и более старое.