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

Одно решение со скриптом bash:

for i in $(<input); do [ ${#i} -le 3 ] && printf '%s:%s\n' $ip $i || ip=$i; done

Это сохраняет IP-адрес в переменной, если длина входной строки превышает 3 символа, и печатает ip:portв противном случае. Замените inputвашим входным файлом. (Вы можете выбрать большее значение, если номера ваших портов содержат более 3 символов)

Еще один:

while read i; do [ ${i/.} != $i ] && ip=$i || printf "%s:%s\n" $ip $i; done <input

Это присваивает IP-адрес переменной ip, если она содержит точку, и печатает ip:portв противном случае.

1
19.08.2019, 17:12
1 ответ

Общий подход заключается в отправке объектного файла, содержащего проприетарный код, и «прокладки», предоставляемой в виде исходного кода, который при необходимости перестраивается для соответствующих ядер. Код интерфейса обрабатывает весь интерфейс модуля для ядра, включая импорт символов со строками версий и т. д.

Например, драйверы NVIDIA содержат файл nv-kernel.o, который предоставляется только в виде двоичного файла и заканчивается в модуле ядра.

1
27.01.2020, 23:40

Теги

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