Abhik Bose Asked: 2018-03-29 13:37:16 +0800 CST2018-03-29 13:37:16 +0800 CST 2018-03-29 13:37:16 +0800 CST 为什么不能将文件作为交换文件用于 Linux 中的休眠? 772 我试图使用交换文件暂时休眠我的 Fedora 27 系统但失败了。以下问题的答案还说必须使用专用交换分区来休眠系统,并且交换文件将不起作用。 为什么 Linux 使用交换分区而不是文件? 我正在使用创建交换文件的 ext3 文件系统。是什么阻止它被用于休眠? linux swap 2 个回答 Voted Anthony O. 2019-04-09T05:50:34+08:002019-04-09T05:50:34+08:00 你可以这样做,我在这个 SO 回复中写了一个大文档,它在全球范围内通过正确使用uswsusp和配置 initramfs 和 Grub 来工作。 Best Answer dr_ 2018-03-30T02:43:31+08:002018-03-30T02:43:31+08:00 正如这里所说(@don_crissti 提供的链接),系统必须找到交换文件的头,但为了做到这一点,必须挂载包含交换文件的文件系统,并且不能在期间挂载日志文件系统(如 ext3)从磁盘恢复。 引用文档: 为了在 swsusp 中使用交换文件,您需要: 1)创建交换文件并使其处于活动状态,例如。 # dd if=/dev/zero of=<swap_file_path> bs=1024 count=<swap_file_size_in_k> # mkswap <swap_file_path> # swapon <swap_file_path> 2) 使用将在 FIBMAP ioctl 的帮助下 bmap 交换文件的应用程序,并确定文件交换头的位置,作为<PAGE_SIZE>从保存交换文件的分区开始的偏移量,以单位为单位。 3)在内核命令行中添加以下参数: resume=<swap_file_partition> resume_offset=<swap_file_offset> 其中<swap_file_partition>是交换文件所在的分区,是<swap_file_offset>由应用程序在 2) 中确定的交换头偏移量(当然,此步骤可以由确定交换文件头偏移量的同一应用程序自动执行,使用FIBMAP ioctl) 或者 使用用户级挂起应用程序,该应用程序将借助 Documentation/power/userland-swsusp.txt 中描述的 SNAPSHOT_SET_SWAP_AREA ioctl 设置分区和偏移量(这是挂起到交换文件的唯一方法,允许从initrd 或 initramfs 映像)。
你可以这样做,我在这个 SO 回复中写了一个大文档,它在全球范围内通过正确使用
uswsusp
和配置 initramfs 和 Grub 来工作。正如这里所说(@don_crissti 提供的链接),系统必须找到交换文件的头,但为了做到这一点,必须挂载包含交换文件的文件系统,并且不能在期间挂载日志文件系统(如 ext3)从磁盘恢复。
引用文档: