#!/bin/ash 
#-vx
#220109 sfs
E(){
    modprobe zram
    mem=`grep MemTotal /proc/meminfo | cut -d" " -f2- | sed s/kB//`; size=`echo $zsize | sed 's/%//'`
    
    #lzo [lzo-rle] lz4 lz4hc 842 zstd
    [ "`grep zstd /sys/block/zram0/comp_algorithm`" ] &&  echo zstd >/sys/block/zram0/comp_algorithm

    # https://www.linux.org.ru/forum/admin/16261387?cid=16263422 Нужен CONFIG_ZRAM_WRITEBACK=y в ядре
    #несжатое zram -> в своп на винте
    #echo /dev/sda2 > /sys/block/zram0/backing_dev

    echo $(($mem*1024*$size/100)) > /sys/block/zram0/disksize
    mkswap /dev/zram0 >/dev/null
    swapon -p 100 /dev/zram0
}
case "$1" in
    start)
	#zsize="$(awk -F"zram=" '{print $2}' /proc/cmdline |awk '{print $1}')"
	zsize="`egrep -o " zram=[^ ]+" /proc/cmdline | cut -d= -f2`"
	#zsize=150
	
	[ "$zsize" ] && E
	exit 0
    ;;
    stop)
	swapoff /dev/zram0 && rmmod zram
    ;;
    status)
	zramctl
    ;;
    *%)
	if [ ! "$zsize" ] ;then
	    [ "`echo "$1" | grep "%"`" ] && zsize="$1" && E
	fi
    ;;
    *)
        echo "Minirc `basename $0`: $@ - unknown action" ;;
esac
