在 Windows 和 Ubuntu 之间共享交换空间

在 Windows 和 Ubuntu 之间共享交换空间

Linux 交换空间迷你指南描述了如何在 Windows 和 Linux 之间共享交换空间。**这些说明在 2011 年还适用于 Ubuntu 吗?我应该如何修改 Ubuntu 的步骤?

有没有更好的方法来共享交换空间?**

根据 HOWTO,最好创建一个专用的 NTFS 交换分区:

  • 专用的,因此交换文件将是连续的,并且保持不碎片化。
  • NTFS,因此 Windows 和 Ubuntu 都可以读取/写入它。(或者 FAT32 更适合此目的?)

然后,配置 Ubuntu 准备交换空间,供 Linux 在启动时使用;供 Windows 在关闭时使用。

我想在我的 X301 笔记本电脑上双启动 Ubuntu 和 Windows 7。但是,我的笔记本电脑只有 64 GB 的 SSD,所以我想尽可能节省磁盘空间。


更新:有一个替代方法使用适用于 Windows 的特殊驱动程序,您可以使用 Linux 交换分区作为 RAM 磁盘等临时存储,但效果似乎不太好……

答案1

Windows 的交换空间通常是存储在驱动器上的 pagefile.sys 文件。它的大小是任意的,并且不能超过该大小。

Ubuntu 和 Linux 需要专用的“交换”分区或指定的交换空间。但是,Linux 和 Windows 之间的交换空间格式不正确,无法让每个系统理解对方的交换空间。这导致共享交换空间的能力受到限制。但是,您不需要共享交换空间。它以 RAM 为前提:内存的每一位都填充了数据并根据需要进行分配。当不需要那里的数据时,它会被标记为可以覆盖。这意味着其他一些程序可以过来并用新数据覆盖最后分配的区域。然后这个循环继续。

答案2

不可能。pagefile.sys 的格式是专有的且未知。

答案3

在 Linux 中仍然可以使用 Windows pagefile.sys 作为交换文件,而且并不那么复杂。

首先,您需要在启动时自动挂载 Windows 分区。将此行添加到/etc/fstab

UUID=<MY_UUID> /mnt/Windows_C auto auto 0 0

然后创建一个脚本,如果需要的话,该脚本将格式化交换文件并挂载它。例如home/<username>/swap.sh

#!/bin/bash
pagefile=/mnt/Windows_C/pagefile.sys
type=$(blkid -s TYPE -o value $pagefile)
if [[ $type != swap && $type != swsuspend ]]; then
    mkswap $pagefile
fi
swapon $pagefile

使脚本可执行并创建一个服务以在 Windows 分区挂载后启动它:创建/etc/systemd/system/swap.service包含以下内容的文件

[Unit]
Description=Use Windows swap file
After=local-fs.target

[Service]
Type=simple
ExecStart=/home/<username>/swap.sh

[Install]
WantedBy=multi-user.target

启动服务来检查它是否正常工作:

sudo systemctl start swap

如果脚本正常运行,命令swapon应该返回类似以下内容:

NAME                        TYPE SIZE USED PRIO
/mnt/Windows_C/pagefile.sys file 8,5G   0B   -2

如果没有,请尝试systemctl status swap.service看看发生了什么。

如果一切顺利,您可以启用该服务:

sudo systemctl enable swap

现在您基本已经完成了。如果您想避免 pagefile.sys 上的一些不安全权限警告,您需要在 Windows 和 Linux 之间设置权限映射。

为此,请卸载 Windows 分区,然后生成用户映射文件:

sudo ntfsusermap /dev/disk/by-uuid/<UUID>

重新挂载分区并将用户映射文件移动到名为的新文件夹.NTFS-3G

sudo mkdir /mnt/Windows_C/.NTFS-3G
sudo mv UserMapping /mnt/Windows_C/.NTFS-3G/

据我所见,您不需要在 Windows 端执行任何操作,pagefile.sys 的重新格式化在启动时是自动的。

https://linuxize.com/post/create-a-linux-swap-file/

fstab 之后运行脚本

如何在 NTFS(或 FAT32)分区上使用“chmod”?

相关内容