GithubHelp home page GithubHelp logo

sjm112 / zram-generator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from systemd/zram-generator

0.0 0.0 0.0 281 KB

Systemd unit generator for zram devices

License: MIT License

Rust 96.04% Makefile 3.96%

zram-generator's Introduction

[email protected] generator for zram devices

Packaging status

This generator provides a simple and fast mechanism to configure swap on /dev/zram* devices.

The main use case is create swap devices, but devices with a file system can be created too, see below.

Configuration

A default config file may be located in /usr. This generator checks the following locations:

  • /run/systemd/zram-generator.conf
  • /etc/systemd/zram-generator.conf
  • /usr/local/lib/systemd/zram-generator.conf
  • /usr/lib/systemd/zram-generator.conf

… and the first file found in that list wins.

In addition, "drop-ins" will be loaded from .conf files in /etc/systemd/zram-generator.conf.d/, /usr/lib/systemd/zram-generator.conf.d/, etc.

The main configuration file is read before any of the drop-ins and has the lowest precedence; entries in the drop-in files override entries in the main configuration file.

See systemd.unit(5) for a detailed description of this logic.

See zram-generator.conf.example for a list of available settings.

Swap devices

Create /etc/systemd/zram-generator.conf:

# /etc/systemd/zram-generator.conf
[zram0]
zram-size = ram / 2

A zram device will be created for each section. No actual configuration is necessary (the default of zram-size = min(ram / 2, 4096) will be used unless overriden), but the configuration file with at least one section must exist.

Mount points

# /etc/systemd/zram-generator.conf
[zram1]
mount-point = /var/compressed

This will set up a /dev/zram1 with ext2 and generate a mount unit for /var/compressed.

In case you want this path to be user-writable, since util-linux v2.39 you can use

[zram1]
options = X-mount.mode=1777

(and/or the relevant X.mount.{owner,group}= arguments, cf. mount(8)).

Otherwise, you can use the following "high-quality hack": for the above example, create an override for [email protected], for example with systemctl edit, containing the following (note the sticky bit as required for [/var]/tmp):

[Service]
ExecStartPost=/bin/sh -c 'd=$(mktemp -d); mount "$1" "$d"; chmod 1777 "$d"; umount "$d"; rmdir "$d"' _ /dev/%i

Rust

The second purpose of this program is to serve as an example of a systemd generator in rust.

Installation

It is recommended to use an existing package:

To install directly from sources, execute make build && sudo make install NOBUILD=true:

  • zram-generator binary is installed in the systemd system generator directory (usually /usr/lib/systemd/system-generators/)
  • zram-generator(8) and zram-generator.conf(5) manpages are installed into /usr/share/man/manN/, this requires ronn.
  • units/[email protected] is copied into the systemd system unit directory (usually /usr/lib/systemd/system/)
  • zram-generator.conf.example is copied into /usr/share/doc/zram-generator/ You need though create your own config file at one of the locations listed above.

To install and configure with puppet puppet-zram_generator is available.

tl;dr

  • Install zram-generator using one of the methods listed above.
  • Create a zram-generator.conf config file.
  • Run systemctl daemon-reload to create new device units.
  • Run systemctl start /dev/zram0 (adjust the name as appropriate to match the config).
  • Call zramctl or swapon to confirm that the device has been created and is in use.

Once installed and configured, the generator will be invoked by systemd early at boot, there is no need to do anything else.

Testing

The tests require either the zram module to be loaded, or root to run modprobe zram.

Set the ZRAM_GENERATOR_ROOT environment variable to use that instead of / as root.

The "{generator}" template in units/[email protected]/binary-location.conf can be substituted for a non-standard location of the binary for testing.

Authors

Written by Zbigniew Jędrzejewski-Szmek <[email protected]>, Igor Raits <[email protected]>, наб <[email protected]>, and others. See https://github.com/systemd/zram-generator/graphs/contributors for the full list.

zram-generator's People

Contributors

keszybz avatar nabijaczleweli avatar ignatenkobrain avatar pheiduck avatar pdewacht avatar vilgotf avatar felixonmars avatar keruspe avatar hswong3i avatar polarathene avatar 610th avatar tomyo avatar traylenator avatar empee584 avatar lucab avatar jamacku avatar decathorpe avatar self-perfection avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.