Linux Embedded Appliance Framework aka LEAF

Сегодня сообщество таки заанонсило 5.0-alpha1 версию LEAF - embedded дистрибутива, ориентированного на использование в первую очередь на роутерах/брасах и для прочих сервисов, не требующих для своей работы постоянно подмонтированного в RW-режиме хранилища данных. При желании его также можно юзать для NAS/SAN (нужные пакеты - самба, vsftpd, iscsi, а так же mdadm/lvm имеются), в качестве сервера телефонии (asterisk присутствует) и т.д.

 

Коротко о дистрибутиве: LEAF (в далеком прошлом - Linux Routing Project, отпочковавшийся в LEAF в 2001 году в связи с превращением оффсайта linuxrouter.org в площадку выражения личного политпротеста мэйнтейнером) многофункциональный embedded дистр, на современном ядре, для x86 архитектуры с поддержкой SMP (или без оной - для i486/geode ядер), с экспериментальной поддержкой x86_64 и возможностью портирования на не-x86 архитектуры, с uClibc в качестве libc библиотеки и busybox в качестве шелла и базового окружения, для своей работы - требует минимум памяти (способен в минимальном наборе запуститься на тазике с 16МБ памяти, для браса на 500+ абонентов и шейпингом аплоада htb+hash на 2к адресов - хватает с головой 512МБ памяти); работает с рамдиска, на который при старте подгружает указанные в конфиге пакеты (формата .lrp - .tgz архивы с присутствующими служебными файлами для менеджера пакетов). Запускается с устройства с FAT/FAT32/ISO9660 ФС, пользуя syslinux/isolinux - с сд-привода (с конфигом на флопике), IDE/SATA винта или с USB флэшки. Конфиг представляет собой также тарболл (configdb.lrp), как и пакет с подгружаемыми модулями (moddb.lrp).

 

Дистр подгружает только необходимые для работы устройств модули ядра; по дефолту в moddb.lrp включены драйверы наиболее популярных сетевых карт; имеется архив со всеми ядреными модулями + механизм автоматического поиска/загрузки требуемых железом дров из этого архива (эдакий plug'n'play, для запуска требует наличия минимум 64МБ оперативной памяти на машине). Недавно реализована подгрузка требуемых пакетов по зависимостям.

 

Статус альфа для данного релиза присвоен в связи с тем, что пока нет рабочего образа под какую-либо embedded платформу, только отдельные разработки-концепты, в связи с чем может быть дальнейшая серьезная модификация системы сборки и логики - в то время как бета-стадия подразумевает более-менее устоявшиеся основные пакеты/скрипты. В целом, альфа вполне годна к использованию в продакшне (где, собссно, уже и используется у меня не один месяц).

 

Ключевые отличия 5.0 от 4-й ветки:

1) переработан тулчейн и мейкфайлы, теперь возможна кросс-компиляция под любую платформу (в качестве эксперимента - собирались образы под ARM, + есть вполне работоспособный порт под x86_64 - хотя скорее всего прирост будет только для ipv6 роутинга), возможна компиляция пакета прямо из его каталога в source простым вызовом make, и не требуется наличие ld-uClibc.so в /lib для сборки; также компиляция проходит намного быстрее т.к. большинство пакетов собираются c распараллеливанием средствами make (исключения - где-то с десяток пакетов, где разработчики не озаботились зависимостями между целями make);

2) разделены окончательно ядро и initrd, из-за чего родился пакет initmod - второй cpio.gz рамдиск, несущий модули. Теперь ничего не мешает использовать неколько веток ядра в рамках одного и того же релиза;

3) обновлены ядро до 3.2.x ветки, uClibc до 0.9.33.2;

4) модули теперь хранятся в упакованном (.gz) виде - экономия памяти;

5) добавлена поддержка zram со свопом на zram диске - по умолчанию отключена;

6) добавлен accel-ppp.

 

Из ближайших перспектив: сборка образа для какой-то embedded железки с USB, возможно - обновление ядра до 3.4 или другой какой-то LTS ветки.

 

Используем данный дистр везде, где не требуется наличие полновесного линукса, уже не один год, ну и собссно активно допиливаем под наши нужды; сейчас брасы, роутеры и бордюры работают на нем - гораздо удобнее, чем полновесный дистр, как минимум - гарантированно не будет проблем со сбоями ФС при внезапном отключении питания, ну и грузится намного быстрее.

Ромка
2012-11-10 22:28:41
Avatar

Кульно... Но как почитал на НАГе с какой оно свистопляской ставится, аж пробовать стало страшно :)

NiTr0
2012-11-10 23:30:19
Avatar

Да нормально в принципе ставится. Разве что usb_wait подтюнить иногда надо (для USB медленных флэшек, и для некоторых древних IDE DOM, которые более секунды отзываются на NVidia IDE контроллере).

madf
2012-11-11 12:03:31
Avatar

Отлично, надо будет попробовать - давно присматривался к подобным проектам в качестве ОС для моих роботов. А то как-то задолбался все это руками велосипедить...

Правда, persistent storage мне все-таки нужен.

NiTr0
2012-11-11 12:35:07
Avatar

Никто не мешает монтировать нужный раздел после бута скриптом (в /etc/default/local.start к примеру). Лучше конечно (с т.з. надежности), если это будет отдельный раздел, а не системный.

NiTr0
2013-06-24 21:29:31
Avatar

14 июня зарелизили 5.0 стабильный билд.

Коротко об изменениях: обновлено ядро до 3.4.48, accel-ppp - собирается ветка master из гита (по отзывам, достаточно стабильная для пользования в продакшне) + добавлен LUA, добавлен freeradius, обновления софта, правки среды сборки с целью в перспективе полностью разделить сборку ядра (ядер), тулчейна и юзерленд софта.

Полный список изменений - тут.

Ви маєте увійти під своїм обліковим записом

loading