понедельник, 6 декабря 2021 г.

Debian 11: настройка VirtualBox

При настройке VirtualBox под Debian 11 столкнулся с загадочной проблемой. По заветам официального сайта скачал и развернул дистрибутив, всё выглядит привычно и работоспособно, виртуальная машина создалась, но вот запускаться категорически не захотела:

vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.
There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

Оказывается, теперь есть механизмы защиты от загрузки всяких нежелательных компонентов, поэтому системе надо как-то сообщить, что подсовываемые ей модули - не злодейские. Делается это путем их подписания.

С учетом этого требуются следующие дополнительные шаги:

1. генерируем модули, требующиеся VirtualBox-у (впрочем, пока у меня дело дошло до вышеописанной ошибки, модули уже были созданы)

sudo /sbin/vboxconfig

2. создаём так называемый ключ владельца (machine owner key)

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -days 36500 -subj "/CN=huhmuh/" -nodes

3. подсовываем созданный ключ в систему:

sudo mokutil --import MOK.der

4. перезагружаем компьютер. Тут потребуется пароль, заданный на этапе 2.

5. подписываем ключом владельца модули, сгенерированные VirtualBox-ом:

sudo /usr/src/linux-kbuild-5.10/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/misc/vboxdrv.ko
sudo /usr/src/linux-kbuild-5.10/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/misc/vboxnetadp.ko
sudo /usr/src/linux-kbuild-5.10/scripts/sign-file sha256 ./MOK.priv ./MOK.der /lib/modules/$(uname -r)/misc/vboxnetflt.ko

6. наконец, добавляем модули в ядро:

sudo modprobe vboxdrv
sudo modprobe vboxnetadp
sudo modprobe vboxnetflt

По завершении этой процедуры VirtualBox запустилась без ошибок.

Литература:

пятница, 3 декабря 2021 г.

Маленькая заметочка про сервисы в debian дистрибутивах

Понадобилось расшарить папку для общего доступа. Задача знакомая: добавляем пару строк в файл конфигурации, включаем пользователя, перезапускаем сервис. Последний пункт вызвал некоторые затруднения. Если раньше делал просто /etc/init.d/smbd restart, то теперь захотелось по-модному, через systemctl. Однако выполнение соответствующей команды слегка озадачило:

# systemctl status samba
● samba.service
   Loaded: masked (/dev/null)
   Active: inactive (dead)

# systemctl start samba
Failed to start samba.service: Unit samba.service is masked.

Что за чудеса? Оказывается, в моём случае статус masked означает, что сервис отключён:

$ ls -l /lib/systemd/system/samba.service
lrwxrwxrwx 1 root root /lib/systemd/system/samba.service -> /dev/null

Пришлось покопаться в памяти и вспомнить, что нужный мне сервис называется по-другому, smbd. А этот сервис перезапустить не составило труда:

# systemctl status smbd
# systemctl restart smbd

Ну, и на будущее: посмотреть сервисы можно командой:

# systemctl list-units

Посмотреть файлы - командой:

# systemctl list-units

Посмотреть зависимости - командой:

# systemctl list-dependencies smbd

и так далее...

Литература:

  1. Почему некоторые системные сервисы находятся в «маскированном» состоянии?