summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-oe/recipes-extended/zram/zram/dev-zram0.swap10
-rwxr-xr-xmeta-oe/recipes-extended/zram/zram/zram-swap-deinit19
-rwxr-xr-xmeta-oe/recipes-extended/zram/zram/zram-swap-init26
-rw-r--r--meta-oe/recipes-extended/zram/zram/zram-swap.service10
-rw-r--r--meta-oe/recipes-extended/zram/zram/zram.service12
-rw-r--r--meta-oe/recipes-extended/zram/zram/zramstop5
-rw-r--r--meta-oe/recipes-extended/zram/zram_0.1.bb33
-rw-r--r--meta-oe/recipes-extended/zram/zram_0.2.bb50
8 files changed, 120 insertions, 45 deletions
diff --git a/meta-oe/recipes-extended/zram/zram/dev-zram0.swap b/meta-oe/recipes-extended/zram/zram/dev-zram0.swap
new file mode 100644
index 0000000000..05eae7eedb
--- /dev/null
+++ b/meta-oe/recipes-extended/zram/zram/dev-zram0.swap
@@ -0,0 +1,10 @@
1[Unit]
2Description=Enable compressed swap in memory using zram
3Requires=zram-swap.service
4After=zram-swap.service
5
6[Swap]
7What=/dev/zram0
8
9[Install]
10WantedBy=swap.target
diff --git a/meta-oe/recipes-extended/zram/zram/zram-swap-deinit b/meta-oe/recipes-extended/zram/zram/zram-swap-deinit
new file mode 100755
index 0000000000..46248c401b
--- /dev/null
+++ b/meta-oe/recipes-extended/zram/zram/zram-swap-deinit
@@ -0,0 +1,19 @@
1#!/bin/sh
2set -e
3
4device=$1
5if [ "$device" = "" ]; then
6 echo "Usage: zram-swap-deinit <device>"
7 exit 1
8fi
9
10sysblockdev=/sys/block/$(basename $device)
11if [ ! -d $sysblockdev ]; then
12 echo "Block device not found in sysfs"
13 exit 1
14fi
15
16# zramctl -r is not suitable as it also removes the actual device. Recreating
17# it is non-trivial, especially if not /dev/zram0 is used...
18echo 1 > ${sysblockdev}/reset
19
diff --git a/meta-oe/recipes-extended/zram/zram/zram-swap-init b/meta-oe/recipes-extended/zram/zram/zram-swap-init
new file mode 100755
index 0000000000..0643dbca23
--- /dev/null
+++ b/meta-oe/recipes-extended/zram/zram/zram-swap-init
@@ -0,0 +1,26 @@
1#!/bin/sh
2set -e
3
4device=$1
5if [ "$device" = "" ]; then
6 echo "Usage: zram-swap-init <device>"
7 exit 1
8fi
9
10# Allocate zram to be size of actual system memory
11# Note: zram is only allocated when used. When swapped pages compress with a
12# a 2:1 ratio zram will require 50% of system memory (while allowing to use
13# 150% memory).
14ZRAM_SIZE_PERCENT=100
15ZRAM_ALGORITHM=lz4
16
17[ -f /etc/default/zram ] && ./etc/default/zram || true
18
19memtotal=$(grep MemTotal /proc/meminfo | awk ' { print $2 } ')
20memzram=$(($memtotal*${ZRAM_SIZE_PERCENT}/100))
21
22# Try loading zram module
23modprobe -q zram || true
24
25zramctl -a ${ZRAM_ALGORITHM} -s ${memzram}KB $device
26mkswap -L "zram-swap" $device
diff --git a/meta-oe/recipes-extended/zram/zram/zram-swap.service b/meta-oe/recipes-extended/zram/zram/zram-swap.service
new file mode 100644
index 0000000000..a4dc9514e6
--- /dev/null
+++ b/meta-oe/recipes-extended/zram/zram/zram-swap.service
@@ -0,0 +1,10 @@
1[Unit]
2Description=Create compressed swap in memory using zram
3DefaultDependencies=no
4
5[Service]
6Type=oneshot
7RemainAfterExit=yes
8TimeoutStartSec=30sec
9ExecStart=@LIBEXECDIR@/zram-swap-init /dev/zram0
10ExecStop=@LIBEXECDIR@/zram-swap-deinit /dev/zram0
diff --git a/meta-oe/recipes-extended/zram/zram/zram.service b/meta-oe/recipes-extended/zram/zram/zram.service
deleted file mode 100644
index 4a19367d93..0000000000
--- a/meta-oe/recipes-extended/zram/zram/zram.service
+++ /dev/null
@@ -1,12 +0,0 @@
1[Unit]
2Description=Enable zram compressed in-memory swap.
3After=multi-user.target
4
5[Service]
6RemainAfterExit=yes
7ExecStart=/usr/bin/zram-load.sh --load
8ExecStop=/usr/bin/zram-load.sh --unload
9Type=oneshot
10
11[Install]
12WantedBy=multi-user.target
diff --git a/meta-oe/recipes-extended/zram/zram/zramstop b/meta-oe/recipes-extended/zram/zram/zramstop
new file mode 100644
index 0000000000..07777978ed
--- /dev/null
+++ b/meta-oe/recipes-extended/zram/zram/zramstop
@@ -0,0 +1,5 @@
1#!/bin/sh
2
3for i in $(grep '^/dev/zram' /proc/swaps | awk '{ print $1 }'); do
4 swapoff "$i" && zramctl --reset "$i"
5done
diff --git a/meta-oe/recipes-extended/zram/zram_0.1.bb b/meta-oe/recipes-extended/zram/zram_0.1.bb
deleted file mode 100644
index dfd75e71ca..0000000000
--- a/meta-oe/recipes-extended/zram/zram_0.1.bb
+++ /dev/null
@@ -1,33 +0,0 @@
1SUMMARY = "Linux zram compressed in-memory swap"
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
4
5inherit update-rc.d systemd
6
7RDEPENDS_${PN} = "util-linux-swaponoff kmod"
8RRECOMMENDS_${PN} = "kernel-module-zram"
9
10PR = "r3"
11
12SRC_URI = " \
13 file://init \
14 file://zram.service \
15"
16
17do_install () {
18 # Sysvinit
19 install -d ${D}${sysconfdir}/init.d
20 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/zram
21
22 install -d ${D}${systemd_unitdir}/system
23 install -m 0644 ${WORKDIR}/zram.service ${D}${systemd_unitdir}/system
24}
25
26FILES_${PN} = "${sysconfdir}"
27INITSCRIPT_NAME = "zram"
28INITSCRIPT_PARAMS = "start 05 2 3 4 5 . stop 22 0 1 6 ."
29
30RPROVIDES_${PN} += "${PN}-systemd"
31RREPLACES_${PN} += "${PN}-systemd"
32RCONFLICTS_${PN} += "${PN}-systemd"
33SYSTEMD_SERVICE_${PN} = "zram.service"
diff --git a/meta-oe/recipes-extended/zram/zram_0.2.bb b/meta-oe/recipes-extended/zram/zram_0.2.bb
new file mode 100644
index 0000000000..98c47af7ac
--- /dev/null
+++ b/meta-oe/recipes-extended/zram/zram_0.2.bb
@@ -0,0 +1,50 @@
1SUMMARY = "Linux zram compressed in-memory swap"
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
4
5inherit update-rc.d systemd
6
7RDEPENDS_${PN} = "kmod \
8 ${@bb.utils.contains('DISTRO_FEATURES','systemd','util-linux','util-linux-swaponoff',d)}"
9RRECOMMENDS_${PN} = "kernel-module-zram"
10
11PR = "r3"
12
13SRC_URI = " \
14 file://init \
15 file://zram-swap-init \
16 file://zram-swap-deinit \
17 file://zram-swap.service \
18 file://dev-zram0.swap \
19"
20
21do_install () {
22 # Install systemd related configuration file
23 if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
24 install -d ${D}${sysconfdir}/init.d
25 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/zram
26 fi
27
28 if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
29 install -d ${D}${libexecdir}
30 install -m 0755 ${WORKDIR}/zram-swap-init ${D}${libexecdir}
31 install -m 0755 ${WORKDIR}/zram-swap-deinit ${D}${libexecdir}
32 install -d ${D}${systemd_unitdir}/system
33 install -m 0644 ${WORKDIR}/zram-swap.service ${D}${systemd_unitdir}/system/zram-swap.service
34 sed -i -e "s,@LIBEXECDIR@,${libexecdir},g" ${D}${systemd_unitdir}/system/zram-swap.service
35 install -m 0644 ${WORKDIR}/dev-zram0.swap ${D}${systemd_unitdir}/system/dev-zram0.swap
36 fi
37}
38
39FILES_${PN} = " \
40 ${sysconfdir} \
41 ${systemd_unitdir} \
42 ${libexecdir} \
43"
44INITSCRIPT_NAME = "zram"
45INITSCRIPT_PARAMS = "start 05 2 3 4 5 . stop 22 0 1 6 ."
46
47RPROVIDES_${PN} += "${PN}-systemd"
48RREPLACES_${PN} += "${PN}-systemd"
49RCONFLICTS_${PN} += "${PN}-systemd"
50SYSTEMD_SERVICE_${PN} = "dev-zram0.swap"