linux在非root路径下使用交换文件(swapfile)
ICE-冰棍
2022年07月27日 23:48

本人刚接触linux不久,使用的是manjaro系统+kde桌面环境,长久的windows使用习惯让我还不习惯命令行,更习惯于图形界面操作。

最近因为折腾yuzu模拟器,玩某个游戏需要大量的虚拟内存(在linux下叫作交换空间?),原本我使用了一个10G的分区作为交换空间分区,后来感觉不够用,就想着换成交换文件(swapfile)。

根据官方文档:https://wiki.manjaro.org/index.php/Swap

使用交换文件只能在根目录下,即/swapfile,但我安装的时候只给root分配了50G空间,这样会使我的系统空间显得捉襟见肘。

于是我尝试在个人文件夹,即/home/username(替换为自己用户名,下略)/下创建交换文件,但根据官方文档(也自行尝试过),虽然能通过终端swapon /home/username/swapfile来加载交换文件,但添加至/etc/fstab始终无效。

因此想到了创建开机自启动脚本的办法,经百度【manjaro 开机脚本】,找到了第一篇结果:http://t.zoukankan.com/fb010001-p-14252015.html

根据此方法,确实能够做到开机自动挂载交换文件,而脱离根目录的限制。

只不过我不太习惯用纯命令行操作,所以对vim什么的敬而远之,既然都在图形界面桌面环境下了,为啥非要在命令行里一个个打字呢?打字还容易出错,不如直接复制粘贴。

但在有特殊权限的路径下进行文件管理,依旧摆脱不了命令行的舒服,毕竟很多操作都需要root权限,sudo太好用了……所以小改了一下操作步骤,如下:

#创建启动服务

sudo touch /etc/systemd/system/rc-local.service

#用图形界面文本编辑器打开

kate /etc/systemd/system/rc-local.service

#复制如下内容(ctrl+s保存,需要输入密码,确认后退出

1 [Unit] Description="/etc/rc.local Compatibility&#​34;  [Service] Type=oneshot ExecStart=/etc/rc.local start TimeoutSec=0 StandardInput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target

#创建 /etc/rc.local 文件

sudo touch /etc/rc.local

#用图形界面文本编辑器打开

kate /etc/rc.local

#复制如下内容(ctrl+s保存,需要输入密码,确认后退出

#!/bin/sh # /etc/rc.local if test -d /etc/rc.local.d; then     for rcscript in /etc/rc.local.d/*.sh; do         test -r "${rcscript}&#​34; && sh ${rcscript}     done     unset rcscript fi

#添加执行权限

sudo chmod a+x /etc/rc.local

#添加存放脚本的文件夹

sudo mkdir /etc/rc.local.d

#设置开机自启动服务

systemctl enable rc-local.service

#创建开机自动挂载交换文件脚本

sudo touch /etc/rc.local.d/swapfile.sh

#打开脚本文件

kate /etc/rc.local.d/swapfile.sh

#复制如下内容(ctrl+s保存,需要输入密码,确认后退出

#!/bin/sh swapon /home/username/swapfile

#创建交换文件

sudo dd if=/dev/zero of=/home/username/swapfile bs=1M count=4096 status=progress

其中,username为你的用户名,4096为交换文件大小,这里是4096M大小,即4G。根据你的情况来选择。

#为交换文件赋予权限

sudo chmod 600 /home/username/swapfile

#格式化交换空间

sudo mkswap /swapfile

#手动启用交换空间(但由于刚才我们已经在脚本中启用,因此这步非必要

sudo swapon /swapfile

#启用或重启后查看交换空间

在终端中输入swapon,即可看到当前挂载的交换空间(文件)情况了。

以上大功告成。

其他开机自启动脚本也可放置于此目录。

暂未找到其他设置交换空间(文件)的图形界面工具,如果大家知道,还望推荐一下。

这里只是提供一种办法。

我使用linux的时间尚短,很多东西都是靠摸索和看文档,也不会编程,只是个普通用户。尽管在许多时候,我无法高效地完成一些事情,但我依然认为,linux值得拥有。

小小工作,希望能帮到一些朋友。