2016-01-27 6 views
0

Я запускаю сервер Ubuntu 14.04.3.Изменение максимального количества виртуальных интерфейсов в ядре

У меня установлена ​​smcroute - Версия 0.95, Build 130523. Когда я пытаюсь запустить демона, я получаю сообщение об ошибке: ERRO: addVIF, out of VIF space;, это происходит после попытки добавить 33-й сетевой интерфейс моей машины.

Глядя в mroute.h в /usr/include/linux/ папке, я увидел MAXVIFS определяется как 32, поэтому я увеличил его 100 и сохранил файл.

После перезагрузки я все еще вижу ограничение на 32, но файл все еще указывает 100. Как я могу заставить ОС читать из этого файла?

ответ

0

Вам необходимо перестроить (и переустановить) ядро ​​с измененной конфигурацией. Есть Ubuntu конкретные инструкции here

0

Во-первых, вы должны понять, почему это число 32. И это происходит от линии ниже, где MAXVIFS определяется:

typedef unsigned long vifbitmap_t;  /* User mode code depends on this lot */ 

На 32-битной машине (что, где этот древний дерьмо начался), это будет 32-битный регистр. Когда вы хотите, чтобы растровое изображение было больше регистра, все становится беспорядочным. (см. также: макросы FD_SET()) 64 безопасен на 64-битной машине.

Чтобы увеличить количество интерфейсов, вам необходимо изменить как в пользовательском пространстве определяет (файл, изменено) И Определить в ядре (include/linux/mroute.h в исходном коде ядра.) Затем, пересобрать ядро ​​и каждое приложение, использующее многоадресную рассылку.

** Изменение этого определения изменяет структуру данных ioctl. **