无法在 /tmp 上安装 zram 设备(引导问题)

无法在 /tmp 上安装 zram 设备(引导问题)

我有一个简单的脚本,它创建一个 zram 设备并将其格式化为 ext4,最后将 zram 安装在 /tmp 上。

#!/bin/bash

# create zram with size 1.5G
# $zram_dev is created device path (eg. /dev/zram1)
zram_dev=$(/usr/sbin/zramctl -f -s 1536M)

# format it to ext4
yes | /usr/sbin/mkfs.ext4 $zram_dev 

# mount it on /tmp
/usr/bin/mount $zram_dev /tmp

当我手动运行它时它有效。但显然,我不想在每次登录后运行它。

我将该脚本放入根 crontab 中,然后重新启动系统,然后我无法获得图形界面,我将其从 crontab 中删除,一切正常。

最后,我将挂载目录更改为其他目录,例如 /zram 并重新启动系统,令人惊讶的是系统出现了。 (zram 设备已创建并安装在 /zram 上)

我应该提到,我尝试使用 systemd 服务进行自动化,并且得到了相同的结果,我只是想知道为什么我无法在 /tmp 上安装 zram 设备?

操作系统:Linux fedora 5.17.5-300.fc36.x86_64 #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux

答案1

我也在问自己如何手动访问/mout/“打开”zram-swap(默认情况下似乎在/var中)-出于与您相同的原因,顺便说一句,但我还没有找到任何有关它的信息然而。

但我能说的是:afaik,zramfs-thing 是压缩的;想象它是加密的,无论如何都无法像(几乎?)整个二进制文件一样显示......所以我怀疑您是否能够访问它,因为它是一些普通的 ext4 分区。这解释了为什么它可以“格式化”它,而您的系统不知道如何安装“这个奇怪的东西”(您甚至可以卸载 /boot 并将其粉碎或通过 su(do) 软件包“apt purge”,否则您的系统根本无法启动或执行任何操作...无论如何,您可以删除 root 可以执行的所有操作(“#rm -r”-ing /etc/、/bin、/sbin,这些非常重要的文件。但只有一个(只有一个问题)尚未登录时和/或您的系统已启动/正在运行。然后->“启动问题”,如果之前没有任何问题,则关闭。我认为越重要,它就越早加载到内存/RAM 中。你猜不到我在这种情况下“玩弄”一些东西并弄乱了所有或几乎所有事情(有点偏离主题:备份到另一个驱动器和/或某些网络空间/云,后者是最重要的)文件给你;我什至自动化了,实际上除了 zip/tar/rar 和 rsync/cp (版本化名称或覆盖/替换而无需任何确认),KDE 自 Debian 11 以来有systemsettings5一个用于计划和定期备份的 GUI,我的意思是一些简单的图形用户界面,没有人需要花哨的备份工具,如果# crontab -e启动时甚至单行程序可以保存您的数据,否则会严重失败(总是(!!)crontab -e使用“-e”运行,否则您的cronta将被重置!)虽然奇怪的是它允许你格式化/更改它,甚至以root身份......

无论如何,我建议您发布 /etc/fstab 的(相关行,如果不是全部)以及您自己编写或修改的任何其他脚本,以安装(/tmp 或更多),以便人们如果可以为您的问题找到肯定的答案,那么比我更有经验的人可能会帮助您。

还要查看$ man zramctl并运行$ df -hand $ mount(后两者的输出可能对解决方案有用)。我现在收到以下信息:

    # sudo swapon --all
    # sudo zramctl
    NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
    /dev/zram0 lz4             2G 14.7M  1.7M  2.1M      12 [SWAP]
    
    # sudo swapon --show
    NAME       TYPE      SIZE USED PRIO
    /dev/dm-2  partition 980M   0B   -2
    /dev/zram0 partition   2G  48M   90

好吧,您看,mountpoint "[SWAP]"...不记得“传统”磁盘交换使您可以手动访问它。我猜想如果某个程序在任何 (zram-)swap(-partition) 上执行 I/O,系统甚至内核会管理写入和读取的内容以及交换设备内的位置。找不到它,但我很确定我的 zram0 是 /var(subdir...?) 内的一个文件,其默认大小是几个月前的。 dm-2 是磁盘交换,它是空的,因为它已关闭。就像手册页告诉你的那样,无论如何 zram#-s 也是块设备和磁盘交换设备,至少我从它的名称中得知这一点(dm-2,代表磁盘映射器#2)

好吧,我相当怀疑我们能否找到我们所寻求的解决方案。但如果可能的话,我也有兴趣。我希望我能给你任何想法、想法或灵感......

相关内容