Какое расширение имеет длительно работающая фоновая служба/исполняемый файл Linux?

Выяснилось, что занесенные в черный список модули были явно загружены одной из служб Systemd/Network Manager:pullin-bcm43xx-firmware.service.

Я просто отключил подозрительную службу с помощью вызова systemd:
systemctl disable pullin-bcm43xx-firmware.service
и перезагрузил..и вуаля..драйверы b43 больше не грузятся; ssb, b43, b43legacy, mac80211; присутствует только wl. Счастливый конец.. пока.

Как я нашел pullin-bcm43xx-firmware.service? Немного детективной работы. Путем поиска в системном журнале journalctl -b, поиска b43. Я нашел эту подозрительную строку:
install_bcm43xx_firmware_wrapper/etc/systemd/system/multi-user.target.wants/pullin-bcm43xx-firmware.service: Downloading b43 firmware
сразу после запуска Network Manager. Поиск install_bcm43xx_firmware_wrapperв /etcдал /etc/systemd/system/multi-user.target.wants/pullin-bcm43xx-firmware.service... а остальное вы уже знаете.

Что беспокоит, я нашел его в основном по счастливой случайности. Если бы этот скрипт не упоминал b43и его имя, я мог бы делать любые ссылки. Беспокоит отсутствие формальной лог-трассировки того, какие драйверы были загружены, когда и кем:(

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

Blacklist only prevents loading of module due to hardware autodetection (strictly speaking, it tells modprobe to ignore internal aliases provided by module). It does not prohibit loading of module by any other means (explicit modprobe, install line in modprobe.conf, explicit alias in modprobe.conf).

Ядро должно иметь надлежащее средство внесения в черный список!

0
06.05.2020, 19:19
2 ответа

Код, начинающийся с [Unit], является служебным файлом systemd. Когда вы распространяете свой пакет, вам нужно использовать средства, специфичные для системы пакетов, будь то dpkg, RPM или что-то еще, чтобы поместить служебный файл в соответствующий каталог (скорее всего /usr/lib/systemd/system )и запустите его автоматически в соответствии с разделом [Install](systemctl enable). Обратитесь к документации systemd и рассматриваемой системы пакетов.

Расширение служебного файла должно быть .service.

1
28.04.2021, 23:16

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

Для первого примера с установленными разрешениями на выполнение:

Текущий каталог:

./installed_file

Любой другой каталог:

/path/to/installed_file

Без набора разрешений на выполнение:

bash installed_file

python /path/to/installed_file

Последние два исполняют файл с помощью Bash или Python.

Если вы пытаетесь установить его с помощью менеджера пакетов, такого как yum, dnf, rpm, apt, dpkg, zypper, pacman, вам понадобится sudo или, как вы его называете, admin.

То же самое верно, если вы собираетесь создать его иначе и поместить в каталог, где только root имеет право записи, например /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /opt/и т. д.

1
28.04.2021, 23:16

Теги

Похожие вопросы