Процедура (не)загрузки модуля в ядре linux

Использованиеsed:

$ sed -f script.sed file
dn : Does not matter
 uid=321 456 678
foo=/234
bar=/456
git=/543

dn : Does it matter
 uid=321 456 678
foo=/543
bar=/423
git=/501

...где script.sedэто

H              # Append a newline and the current line to the hold space
/^$/bout       # Empty line: branch to ':out'
$bout          # Last line: branch to ':out'
d              # Delete line, start again from the top
:out
x              # Swap in the data from the hold space
/uid.*uid/d    # Delete the data if it contains two "uid"
s/\n//         # Remove the first embedded newline
               # (implicit print)

Это собирает прочитанные строки в «пространстве хранения» (буфере общего назначения в sed), и когда он достигает пустой строки или конца ввода, пространство хранения содержит один из «блоков» в исходный файл. Если такой блок содержит два экземпляра строки uid, он отбрасывается, иначе выводится.

0
16.05.2020, 12:00
1 ответ

Загрузка модуля выполняется с помощью одного изinit_moduleили finit_module. Первый копирует модуль из указателя, второй читает его из файлового дескриптора. Оба поддерживают передачу дополнительных параметров модулю и пару флагов для ядра.

Выгрузка модуля выполняется с помощью delete_module, которая принимает имя выгружаемого модуля.

Если вы хотите написать код, который делает это, вы можете вместо этого использовать libkmod; он является частьюkmodи доступен во всех дистрибутивах.

1
28.04.2021, 23:13

Теги

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