Добрый день,
Немного пообщался с Zyxmon-ом в привате. Дело в том, что чуть обновляю свою версию Entware для Cortex-A15, Обновления включают также обновление glibc с версии 2.26 до 2.27. Здесь пишу, чтобы не забылось.
Проблема 1: после
с предыдущей версии, т.е. с 2.26 на 2.27 в /opt/lib остается символьный линк ld-linux.so.3 на уже несуществующий ld-2.26.so. После этого никакие программы из Entware, естественно, не работают.
Решил для себя добавкой в Makefile пакета toolchain использование postinst скрипта:
Код: Выделить всё
. . .
ifeq ($(CONFIG_USE_GLIBC),y)
PKG_RELEASE=9
define Package/libc/postinst
#!/bin/sh
if [ -e /opt/lib/$(DYNLINKER) ]; then
rm -f /opt/lib/$(DYNLINKER)
fi
cd /opt/lib
$(LN) ld-$(CONFIG_GLIBC_VERSION).so $(DYNLINKER)
exit 0
endef
endif
. . .
возможно команде Entware пригодится в случае миграции на более новый glibc.
Минорная проблема 2, в entware-opt в Makefile создается postinst:
Код: Выделить всё
. .
#!/bin/sh
if [ -e /opt/bin/busybox ]; then
exit 0
fi
if [[ -f /sbin/ifconfig && ! -f /opt/sbin/ifconfig ]]; then
ln -s /sbin/ifconfig /opt/sbin/ifconfig
fi
if [[ -f /sbin/route && ! -f /opt/sbin/route ]]; then
ln -s /sbin/route /opt/sbin/route
fi
if [[ -f /sbin/ip && ! -f /opt/sbin/ip ]]; then
ln -s /sbin/ip /opt/sbin/ip
fi
if [[ -f /bin/netstat && ! -f /opt/bin/netstat ]]; then
ln -s /bin/netstat /opt/bin/netstat
fi
if [[ ! -f /opt/bin/sh ]]; then
ln -s /bin/sh /opt/bin/sh
fi
if [[ ! -f /opt/bin/ash ]]; then
ln -s /bin/ash /opt/bin/ash
fi
. . .
что, вроде как неправильно. Во всяком случае мой /bin/sh на роутерах ругается и пишет про "missing ']]'". Я заменил на
Код: Выделить всё
#!/bin/sh
if [ -e /opt/bin/busybox ]; then
exit 0
fi
if [ -f /sbin/ifconfig ] && [ ! -f /opt/sbin/ifconfig ]; then
ln -s /sbin/ifconfig /opt/sbin/ifconfig
fi
if [ -f /sbin/route ] && [ ! -f /opt/sbin/route ]; then
ln -s /sbin/route /opt/sbin/route
fi
if [ -f /sbin/ip ] && [ ! -f /opt/sbin/ip ]; then
ln -s /sbin/ip /opt/sbin/ip
fi
if [ -f /bin/netstat ] && [ ! -f /opt/bin/netstat ]; then
ln -s /bin/netstat /opt/bin/netstat
fi
if [ ! -f /opt/bin/sh ]; then
ln -s /bin/sh /opt/bin/sh
fi
if [ ! -f /opt/bin/ash ]; then
ln -s /bin/ash /opt/bin/ash
fi
Возможно вам пригодится.
Не болейте,
Voxel.