mirror of
https://git.yoctoproject.org/meta-raspberrypi
synced 2026-06-04 14:09:51 +00:00
rpi-zram-service: Add little systemd service to enable zram on the RPi.
* Needs to move to something more generic in time.
This commit is contained in:
@@ -0,0 +1,30 @@
|
|||||||
|
DESCRIPTION = "Linux zram compressed in-memory swap systemd service"
|
||||||
|
LICENSE = "MIT"
|
||||||
|
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
|
||||||
|
|
||||||
|
inherit allarch systemd
|
||||||
|
|
||||||
|
PR = "r0"
|
||||||
|
|
||||||
|
SRC_URI = "file://rpi-zram.service \
|
||||||
|
file://rpi-load-zram.sh \
|
||||||
|
"
|
||||||
|
|
||||||
|
do_compile() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
do_install () {
|
||||||
|
install -d ${D}/${bindir}
|
||||||
|
|
||||||
|
install -m 0755 ${WORKDIR}/rpi-load-zram.sh ${D}/${bindir}
|
||||||
|
|
||||||
|
install -d ${D}/${base_libdir}/systemd/system
|
||||||
|
install -m 0644 ${WORKDIR}/rpi-zram.service ${D}/${base_libdir}/systemd/system/
|
||||||
|
}
|
||||||
|
|
||||||
|
SYSTEMD_PACKAGES = "${PN}"
|
||||||
|
SYSTEMD_SERVICE_${PN} = "rpi-zram.service"
|
||||||
|
|
||||||
|
FILES_${PN} += "${base_libdir}/systemd"
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
num_cpus=$(grep -c processor /proc/cpuinfo)
|
||||||
|
[ "$num_cpus" != 0 ] || num_cpus=1
|
||||||
|
|
||||||
|
last_cpu=$((num_cpus - 1))
|
||||||
|
|
||||||
|
mem_by_cpu=$(awk -v cpus=$num_cpus '/MemTotal/ { print (($2 * 1024) / cpus) }' /proc/meminfo)
|
||||||
|
|
||||||
|
if [ "$1" = "--load" ] ; then
|
||||||
|
echo zram: Trying to load kernel module.
|
||||||
|
|
||||||
|
# Linux 3.2 workaround - value name changed :o.
|
||||||
|
# modprobe -q zram zram_num_devices=$num_cpus
|
||||||
|
|
||||||
|
# Linux < 3.2.
|
||||||
|
modprobe -q zram num_devices=$num_cpus
|
||||||
|
|
||||||
|
echo zram: Enable in-memory compressed swap of $mem_by_cpu bytes.
|
||||||
|
for i in $(seq 0 $last_cpu); do
|
||||||
|
echo $mem_by_cpu > /sys/block/zram$i/disksize
|
||||||
|
mkswap /dev/zram$i
|
||||||
|
swapon -p 100 /dev/zram$i
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" = "--unload" ] ; then
|
||||||
|
echo zram: Disable in-memory compressed swap.
|
||||||
|
for i in $(seq 0 $last_cpu); do
|
||||||
|
grep -q "/dev/zram$i" /proc/swaps && swapoff /dev/zram$i
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep 1
|
||||||
|
echo zram: Unload kernel module.
|
||||||
|
rmmod zram
|
||||||
|
fi
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Enable zram compressed in-memory swap.
|
||||||
|
After=multi-user.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
RemainAfterExit=yes
|
||||||
|
ExecStart=/usr/bin/rpi-load-zram.sh --load
|
||||||
|
ExecStop=/usr/bin/rpi-load-zram.sh --unload
|
||||||
|
Type=oneshot
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Reference in New Issue
Block a user