← All posts tagged FreeBSD

Ах да, Shairport требует для работы либо Avahi, либо mDNSResponder. Первый — свободный проект, но ему не повезло оказаться основанным на быдлобиблиотеках GNOME, всякие там gobject-introspection и прочее. Они написаны настолько криво, что под ARM не собираются. mDNSResponder — от Apple, зависимостей практически нет, однако всё потребовалось добавить в одном месте __packed__ в хедерах, потому что ребята из Apple тестят всё на CLang, у которого на ARM, похоже, структуры __packed__, даже если это явно не сказано, у GCC же с этим проблемы. Вот они и проебали __packed__ в одном месте :-)

водрузил на DreamPlug программку Shairport — теперь в iTunes на Маке видно ещё один канал вывода звука. Можно переключить на него и музыка идёт по WiFi на Дримплаг и оттуда на колонки. Прикольно :-)

поймал прикольный баг с типизацией переменных. Вот 'char foo' — это signed или unsigned? Вроде как implementation specific. Вот arm-gcc считает, что это unsigned, а clang-amd64 — что signed. Как результат — баг в geom_label_ntfs на ARM. github.com

Штатный u-Boot, установленный на Dreamplug, не поддерживает uBoot API и команду bootelf. Пересобрал новую версию uboot и добавил обе возможности. Через OpenOCD и JTAG запускается, можно грузануть ubldr и далее фряшное ядро. Осталось только зашить обновлённую версию в NOR.

Ядро с миром, собранные Clang, практически неработоспособны. Очень странные эффекты, хотя система грузится в мультиюзер, но работать невозможно — локауты в самых неожиданных местах.

Поигрался тут с Dreamplug. Интересная железка. Порадовало, что аудио у неё висит на USB — на FreeBSD легко и непринуждённо заводится драйвером uaudio. eSATA также рулит. Проц не самый быстрый в мире, конечно.

Обновил систему на сервере до 9.1-RELEASE. При апгрейде PF отказался признать запись "rdr on $ext_if proto tcp from any to $ext_if port 443 -> $rdr_ip" валидной. Ему надо непременно '... inet proto tcp ...', иначе ругается, что не может найти адрес в нужной Address Family.