Система: debian8, raspberry pi3, ядро 4.4, самосборное.
Словил неприятный косяк загрузки, когда по неизвестной причине загрузчик грузил не ту версию ядра. Вероятно я напортачил с именами образов ядра. Решение проблемы: отформатировать boot-раздел, залить все образы заново, ядро пересобрать, номер версии поменять. Отлично, всё грузится.
Но тут всплыла проблема: я использую 4 устройства zram, настраиваются они при запуске из скрипта /etc/rc.local через передачу параметров в /sys. Фрагмент скрипта:
echo 80 > /proc/sys/vm/swappiness
echo noop > /sys/block/mmcblk0/queue/scheduler
echo 300 > /proc/sys/kernel/panic
modprobe zram num_devices=4
echo 104857600 > /sys/block/zram0/disksize
echo 104857600 > /sys/block/zram1/disksize
echo 104857600 > /sys/block/zram2/disksize
echo 104857600 > /sys/block/zram3/disksize
#echo 12792627200 > /sys/block/zram4/disksize
echo lz4 > /sys/block/zram0/comp_algorithm
echo lz4 > /sys/block/zram1/comp_algorithm
echo lz4 > /sys/block/zram2/comp_algorithm
echo lz4 > /sys/block/zram3/comp_algorithm
#echo lz4 > /sys/block/zram4/comp_algorithm
#mkfs.ext2 -L tmp -N 300000 -m0 /dev/zram4
#mount /dev/zram4 /tmp
#chmod aoug+rwx /tmp
/sbin/mkswap /dev/zram0
/sbin/mkswap /dev/zram1
/sbin/mkswap /dev/zram2
/sbin/mkswap /dev/zram3
swapon /dev/zram0 -p 10
swapon /dev/zram1 -p 10
swapon /dev/zram2 -p 10
swapon /dev/zram3 -p 10
После апуска системы оказывается, что все действия до echo 104857600 > /sys/block/zram3/disksize были выполнены корректно, а после нет. В dmesg есть одно сообщение о неудачной смене алгоритма сжатия:
[ 7.947439] zram: Added device: zram0
[ 7.950359] zram: Added device: zram1
[ 7.953761] zram: Added device: zram2
[ 7.977159] zram: Added device: zram3
[ 7.979407] zram0: detected capacity change from 0 to 104857600
[ 7.979941] zram1: detected capacity change from 0 to 104857600
[ 7.980442] zram2: detected capacity change from 0 to 104857600
[ 7.981018] zram3: detected capacity change from 0 to 104857600
[ 7.981200] zram: Can't change algorithm for initialized device
Вероятно полсе одной неудачной попытки rc.local был прерван systemd, ведь обычные скрипты в таком случае всё равно выполняют все последующие операции.
Когда система запущена, оказывается, что доступ на запись в параметры /sys запрещён. Очевидно, что то запретило его в процессе запуска. Как найти, что это было? Как разрешить доступ?
P.S. Не надо предлагать zramctl и соответствующий юнит, эта утилита недоступна в текущей версии binutils/coreutils и она наверняка делает то же самое, что echo.