Archlinux 設定休眠到swap檔案

jokerpoker發表於2024-07-26
系統:Archlinux
核心:Kernel: 5.13.10-arch1-1
桌面:KDE
引導:grub

檢視記憶體和交換分割槽大小

free -m          #預設單位為k, -m 單位為M

請先自行設定並建立交換分割槽檔案

dd if=/dev/zero of=/swapfile bs=1M count=8192 status=progress #建立8G的交換空間 大小根據需要自定
chmod 600 /swapfile #設定正確的許可權
mkswap /swapfile #格式化swap檔案
swapon /swapfile #啟用swap檔案

在/ect/fstab中追加swap檔案

/swapfile none swap defaults 0 0

[選] 修改swapfile大小,改完需要重新設定grub

sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=32768 status=progress #建立32G的交換空間
sudo mkswap /swapfile
sudo swapon /swapfile

設定grub

獲取resume

先進入到swap檔案所在目錄,執行

findmnt -no UUID -T /swapfile

得到以下返回內容

b793f058-d9f2-4657-9114-efba050c17e7

獲取resume_offset

filefrag -v /swapfile | awk '{ if($1=="0:"){print substr($4, 1, length($4)-2)} }'

得到以下返回資訊

4288512

隨後編輯grub配置檔案

nano /etc/default/grub

將以下內容新增到GRUB_CMDLINE_LINUX_DEFAULT= ""中

resume=UUID=b793f058-d9f2-4657-9114-efba050c17e7 resume_offset=4288512 quiet

注意將uuid和resume_offset的值修改為你獲取到的值

隨後重新生成grub配置

grub-mkconfig -o /boot/grub/grub.cfg

設定 Kernel Module

nano /etc/mkinitcpio.conf

將resume新增到hooks中,找到以下程式碼

HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)

修改為

HOOKS=(base udev resume autodetect modconf block filesystems keyboard fsck)

隨後重新生成映象即可

mkinitcpio -P linux

參考文獻:
[1] Power management (簡體中文)/Suspend and hibernate (簡體中文)

相關文章