Vytvořeno: 12.5.2020
Poznámka k aktuálnosti: Toto je dobový článek. Postup odpovídá tehdejší větvi Armbianu a kernelu 4.19 pro Espressobin a dnes už nemusí být potřeba nebo může fungovat jinak.
Na Espressobinu jsem při připojování CIFS sdílení narazil na problém s českými znaky. Chyběl mi modul nls_utf8.ko, takže jsem musel zkompilovat jádro nebo aspoň jeho moduly pro existující verzi kernelu.
Při mountování síťového disku s iocharset=utf8 jsem dostal chybu:
mount -t cifs -o iocharset=utf8 //cubieboard/movies /movies mount error(79): Can not access a needed shared library
Příčina byla v tom, že v jádře chyběl modul nls_utf8.ko. Ověření přes konfiguraci jádra:
grep -i nls_utf8 /boot/config*
Výstup:
# CONFIG_NLS_UTF8 is not set
Pro úplnost jsem si zkontroloval i běžící verzi jádra:
uname -a
Linux espressobin 4.19.113-mvebu64 #20.02.7 SMP PREEMPT Sat Mar 28 16:42:32 CET 2020 aarch64 GNU/Linux
Abych si nezaplnil samotný Espressobin balíčky pro build, dělal jsem kompilaci ve VirtualBoxu na Ubuntu 20.04. Pro build bylo rozumné počítat s 25–30 GB volného místa.
Základní příprava podle Developer Guide Build Preparation:
git clone --depth 1 https://github.com/armbian/build cd build
Nejdřív jsem zjistil, že build bere jinou větev jádra, než jakou jsem měl na zařízení. Chtěl jsem ale zůstat u existující verze a jen do ní dopočítat chybějící modul. Proto bylo potřeba vynutit konkrétní větev:
echo "KERNELBRANCH='tag:v4.19.113'" > userpatches/lib.config
Pak už šla spustit kompilace pro Espressobin:
./compile.sh BOARD=espressobin BRANCH=current BUILD_DESKTOP=no KERNEL_ONLY=yes KERNEL_CONFIGURE=yes
Ukázky z build procesu:
Po kompilaci vznikly balíčky ve složce build/output/debs. Zajímal mě hlavně balíček linux-image-current-mvebu64_20.05.0-trunk_arm64.deb. Po rozbalení jsem z něj vytáhl soubor nls_utf8.ko z cesty:
/lib/modules/4.19.113-mvebu64/kernel/fs/nls
Ten jsem zkopíroval do aktuálního systému na Espressobinu a pak aktualizoval databázi modulů:
depmod -a
Tím znovu začalo fungovat mountování CIFS sdílení s UTF-8 kódováním.