Показаны сообщения с ярлыком kernel. Показать все сообщения
Показаны сообщения с ярлыком kernel. Показать все сообщения

среда, 17 августа 2016 г.

nDPI, DKMS и здоровый сон сисадмина

DKMS (Dynamic Kernel Module Support) — шикарное решение, если требуемый модуль для ядра нельзя поставить и обновлять штатными средствами, но зато есть его исходники. Не требуется следить за обновлениями ядра и оперативно пересобирать нужный модуль или вовсе блокировать обновления ядра, чтобы ничего не отвалилось после очередного обновления.

Сначала устанавливаем dkms и другие необходимые пакеты:

$ sudo apt-get install dkms build-essential autoconf automake autogen libpcap-dev libtool xtables-addons-dkms pkg-config xtables-addons-source
Скачиваем исходники nDPI:
$ wget https://github.com/vel21ripn/nDPI/archive/netfilter.zip
Распаковываем скачанный архив в /usr/src:
$ sudo unzip netfilter.zip -d /usr/src
Переименовываем распакованную папку в ndpi-x.y.z, где x.y.z — версия модуля:
$ sudo mv /usr/src/nDPI-netfilter /usr/src/ndpi-1.7.0
Создаем файл dkms.conf в этой папке:
$ sudo tee /usr/src/ndpi-1.7.0/dkms.conf << EOF
# Версия модуля 
PACKAGE_VERSION="1.7.0"
# Название модуля в /usr/src
PACKAGE_NAME="ndpi"
# Папка для компиляции
BDIR="\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build"
# Аргументы для make 
ARGS="-C \${kernel_source_dir} SUBDIRS=\${BDIR} M=\${BDIR}/ndpi-netfilter/src"
# После компиляции созданный модуль перемещается туда, где DKMS может его найти
MAKE[0]="make \${ARGS} modules ; find \${BDIR} -name '*.ko' -exec mv -v {} \${BDIR} \;"
CLEAN="make \${ARGS} clean"
# Название модуля ядра
BUILT_MODULE_NAME[0]="xt_ndpi"
# Папка, где обычно устанавливается модуль в ядре
DEST_MODULE_LOCATION[0]="/extra/"
# Не пересобирать initrd ядра
REMAKE_INITRD="no"
# Установка модуля после компиляции
AUTOINSTALL="yes"
EOF
Теперь компилируем и устанавливаем библиотеку nDPI
$ cd /usr/src/ndpi-1.7.0
$ sudo ./autogen.sh
$ sudo sh -c './configure && make'
$ cd /usr/src/ndpi-1.7.0/ndpi-netfilter
$ sudo make install
После чего в DKMS добавляем запись о нашем модуле:
$ sudo dkms add -m ndpi -v 1.7.0
Собираем модуль из исходников:
$ sudo dkms build -m ndpi -v 1.7.0
Собранный модуль устанавливаем папке /dkms/:
$ sudo dkms install -m ndpi -v 1.7.0

вторник, 10 декабря 2013 г.

Установка параметров загрузки ядра Linux с помощью Grub

  1. В grub до версии 0.97 включительно
    В файле «/boot/grub/menu.lst» найти строку, начинающуюся с «# kopt=» и дописать в её конец через пробел новый параметр:
    # kopt=root=/dev/sda1 ro newparameter=newvalue

    В grub2 до версии 1.99 включительно
    Добавить (изменить) переменную «GRUB_CMDLINE_LINUX_DEFAULT» в файле «/etc/default/grub» и вписать через пробел новый параметр, как в примере:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet newparameter=newvalue"
  2. Далее обновить grub командой:
    $ sudo update-grub

вторник, 19 августа 2008 г.

Множественные таблицы маршрутизации в FreeBSD 7.0-STABLE

  • Обновляем исходные коды системы из CVS-ветки «RELENG_7»
    # csup cvsup.RELENG7
    Файл cvsup.RELENG7
    *default host=cvsup.ru.FreeBSD.org
    *default base=/usr
    *default prefix=/usr
    *default release=cvs tag=RELENG_7
    *default delete use-rel-suffix
    src-all
  • В опции ядра добавляем
    options ROUTETABLES=N
    где N - число используемых таблиц.
    Собираем ядро и систему
    # make buildworld kernel
    Переходим в однопользовательский режим и после установки системы перезагружаемся
    # init 1
    # mergemaster -p
    # make installworld
    # make delete-old
    # mergemaster
    # reboot
  • Таблицы маршрутизации управляются через команду setfib.
    Синтаксис команды
    setfib [-[F]]N command
    где N - номер таблицы маршрутизации.

    Просмотр таблиц
    # setfib N netstat -rn
    Изменение таблиц
    # setfib N route {add|change|delete|flush} ...
    Пример применения в консоли
    # setfib N traceroute www.domain.ru
  • В ipfw добавлены две дополнительные конструкции
    setfib N ip from any to any
    и
    count ip from any to any fib N
  • В PF для работы с таблицами маршрутизации предусмотрена опция «rtable N». Пример:
    pass out on fxp0 from any to any keep state rtable N

понедельник, 8 октября 2007 г.

Компилирование модулей ядра FreeBSD

Практически любой системный администратор, который сталкивался с FreeBSD, компилировал ядро под себя, выбрасывая оттуда лишние "детали" или вставляя недостающие. Между тем выброшенная из ядра "деталька" никуда не девается и при повторной компиляции превращается в модуль (за редким исключением), который всегда можно подгрузить.
Бороться с этим можно с помощью опций в файле make.conf:
# не компилировать все модули

NO_MODULES="YES"
# компилировать только указанные модули
# названия модулей пишутся через пробел
MODULES_OVERRIDE=acpi ipfw
# компилировать все модули, за исключением указанных

WITHOUT_MODULES=pf ntfs_iconv