Интересно, пробовал ли кто-то создать действительно минимальный образ MetaROUTER? Под «действительно минимальным» я подразумеваю прошивку без Linux, которая выполняет только одну функцию — обслуживание виртуальных прерываний «VIRQ», связанных с виртуальными интерфейсами (и, опционально, с виртуальной консолью). Такой подход обеспечил бы крайне низкое потребление оперативной памяти и меньшую загрузку CPU, позволяя запускать несколько Meta-образов даже на таких небольших устройствах, как RB750.
Нет особого смысла запускать несколько мегабайт виртуализированного Linux-кода, если нужно только обработать пакеты. Основная трудность здесь — попытка восстановить API интерфейса VIRQ и нужную аппаратно-зависимую инициализацию, разбирая патчи Mikrotik к Linux. Мне не известна никакая официальная документация, и, по моим предположениям, этот интерфейс может со временем изменяться.
Для тех, кому это интересно, кажется, лучшие результаты можно получить, изучая исправленный исходный код ядра Linux с поиском по ключам «VIRQ_BASE» и «get_virq_nr» (разные участки кода по-разному обращаются к VIRQ). Что касается аппаратно-зависимой инициализации, сложно понять, что действительно важно, а что просто нужно для Linux.
Образ MetaROUTER, судя по всему, представляет собой .tgz-архив с распакованным .elf-файлом ядра и файлами файловой системы. Исходя из этого, «действительно минимальный» образ — это просто .tgz с .elf-файлом под названием «kernel», содержащим чистый MIPS-код обработки VIRQ.
Нет особого смысла запускать несколько мегабайт виртуализированного Linux-кода, если нужно только обработать пакеты. Основная трудность здесь — попытка восстановить API интерфейса VIRQ и нужную аппаратно-зависимую инициализацию, разбирая патчи Mikrotik к Linux. Мне не известна никакая официальная документация, и, по моим предположениям, этот интерфейс может со временем изменяться.
Для тех, кому это интересно, кажется, лучшие результаты можно получить, изучая исправленный исходный код ядра Linux с поиском по ключам «VIRQ_BASE» и «get_virq_nr» (разные участки кода по-разному обращаются к VIRQ). Что касается аппаратно-зависимой инициализации, сложно понять, что действительно важно, а что просто нужно для Linux.
Образ MetaROUTER, судя по всему, представляет собой .tgz-архив с распакованным .elf-файлом ядра и файлами файловой системы. Исходя из этого, «действительно минимальный» образ — это просто .tgz с .elf-файлом под названием «kernel», содержащим чистый MIPS-код обработки VIRQ.
