Intereting Posts
Установка wpscan и metasploit Ключи модификатора в последовательности компоновки Проверка времени с помощью регулярного выражения Что означает поле «flags» в getfacl? Включая Linux Mint при продаже оборудования? Может ли 25 лет развития ядра Linux быть квалифицированным или абстрагированным в условиях неспециалиста? Как скопировать символические ссылки как символические ссылки с одной машины на другую? Инструмент сетевого мониторинга для Linux Изменить путь в sql-скрипте с помощью sed Баш-скрипт, вычисляющий среднее значение зарплат Беспроводная связь постоянно подключается к Ideapad running Arch Настройка прав доступа к файлам в сценарии bash Альтернатива iotop для пользователей без полномочий root без привилегий sudo Передача вывода средства просмотра VNC на устройство / dev печать чашек на сетевом принтере со встроенным пользовательским управлением

Как протестировать модифицированный исходный код FreeBSD?

Я пытаюсь изменить алгоритм управления перегрузкой по умолчанию в FreeBSD (NewReno), создав копию исходного файла ( cc_newreno.c , находящегося в /usr/src/sys/netinet/cc ) с именем cc_newreno_mod.c и внося изменения в него ,

Предположим, я внес некоторые изменения. Как проверить их? Компиляция cc_newreno_mod.c напрямую (с использованием встроенного компилятора C) приводит к нескольким ошибкам, некоторые из которых кажутся странными (например, netinet/cc/cc_module.h file not found , хотя файл явно присутствует).

Должен ли я построить новое ядро? Будет ли автоматически создан модуль из измененного файла? Или я совершенно неправ, и я должен придерживаться другого подхода?

Для компиляции модуля ядра вы должны создать Makefile и включить файл makefile ядра /usr/src/share/mk/bsd.kmod.mk например:

 # Note: It is important to make sure you include the <bsd.kmod.mk> makefile after declaring the KMOD and SRCS variables. # Declare Name of kernel module KMOD = module # Enumerate Source files for kernel module SRCS = module.c # Include kernel module makefile .include <bsd.kmod.mk> 

И, наконец, вы запустите make, чтобы скомпилировать его, чтобы вы могли проверить его, если он правильно компилируется.
И поскольку он не представлен в модулях ядра ( /boot/kernel/*.ko ), но он указан в sys/conf/files я думаю, вы должны перекомпилировать ваше ядро ​​для применения изменений. Для получения дополнительной информации вы можете увидеть эту страницу . Поскольку это копия cc_newreno.c вы можете переименовать исходный /usr/src/sys/netinet/cc/cc_newreno.c в другое место, чтобы сохранить его, скопировав новый и перекомпилировав.

netinet в настоящее время не является модулем ядра, поэтому я предлагаю вместо этого добавить измененный файл в sys / conf / files.