1. Overview

zram is a Linux kernel feature that creates a compressed block device in RAM. Pages on this block device are compressed and kept in memory. This can boost speed in systems with limited RAM by eliminating the requirement for swap space on slower disk storage.

However, there are several scenarios in which we may want to deactivate zram, such as when diagnosing memory issues, assessing system performance without compression, or installing a different swap scheme.

In this tutorial, we’ll look at how to disable zram at boot in Linux.

2. Checking zram Status

We can verify if zram is active and in use on our system, simply by using the zramctl command. Running this command provides comprehensive information on all active zram devices:

$ sudo zramctl
NAME       ALGORITHM DISKSIZE  DATA  COMPR  TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle       1.9G  512M   128M   132M       4 [SWAP]

In this example, the output shows details about each zram device, such as its name, compression algorithm, disk size, data written, compressed data size, total memory use, compression streams, and mount point. Additionally, if executing sudo zramctl yields no output, it indicates that zram is either not enabled or not in use on the system.

Using this method allows us to quickly verify the activation status of zram and understand its impact on system memory.

3. Using systemd

systemd is a system and service manager for Linux. It configures system components and controls services. Many recent Linux distributions use systemd to handle zram, therefore deactivating zram through systemd can often be the simplest option:

$ sudo systemctl disable zram.service
Removed /etc/systemd/system/multi-user.target.wants/zram.service.

In this example, we use the systemctl command to disable the service unit that manages zram, named zram.service in this instance:

$ sudo systemctl stop zram.service

Then we stopped the service to deactivate zram and free up whatever resources it was using:

$ systemctl status zram.service
   zram.service - LSB: Initializes ZRAM swap
   Loaded: loaded (/etc/init.d/zram; generated)
   Active: inactive (dead) since Thu 2024-07-04 12:34:56 UTC; 5s ago

After that, we stop the zram.service and confirm that it has stopped by checking its status. The output indicates that the service has been deactivated.

Additionally, using systemd to manage services is a reliable and flexible method for controlling which components of the system are active. This strategy is very effective for debugging and modifying our system to meet specific performance needs.

4. Using Kernel Parameters

To disable zram at the kernel level, we can modify the bootloader settings to provide specific parameters to the system. This approach ensures that the system deactivates zram during the boot process before any services or scripts can initialize it.

$ sudo nano /etc/default/grub

In this example, nano is used to access the GRUB configuration file. Next, we look for the line that begins with GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zram.enabled=0"

This line includes the default kernel parameters that GRUB sends to the Linux kernel during boot time. Then, we add a quiet splash option, which reduces the boot notifications. We also block zram related functionality by using the zram.enabled=0 option:

$ sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-42-generic
Found initrd image: /boot/initrd.img-5.4.0-42-generic
done

Additionally, to apply the changes and regenerate the GRUB configuration file, we run the GRUB update command:

$ sudo reboot

 Finally, we reboot the system for the changes to take effect.

5. Using Configuration Files

Some distributions use configuration files to set up zram. For example, in Debian-based systems, you can configure zram using a configuration script:

$ sudo nano /etc/default/zram

In this example, we use nano to open the zram configuration file. These files are commonly found in /etc/default/zram and /etc/default/zramswap:

ENABLED=0

In this file, we check for a line that enables zram, such as ENABLED=1. We then set the line ENABLED=0 to deactivate zram. This parameter directs the system not to establish zram during boot:

$ sudo update-rc.d zram remove

Furthermore, we save and exit the file after making these modifications. Additionally, we deactivate the initialization script with the last command.

Modifying configuration files and deactivating initialization scripts prevent zram from initializing on startup.

6. Conclusion

In this article, we discussed how to deactivate zram during boot in Linux. Methods such as systemd, modifying configuration files, and adding kernel settings all provide us with a means for controlling zram on our system.

Following these steps we can properly disable zram at startup time, allowing us to customize our system to meet specific needs.