ไฮเบอร์เนตกับไฟล์ Swap โดยใช้ uswusp
แม้ว่ามันจะเป็นไปได้ที่จะจำศีลในการสลับไฟล์และมันควรจะทำงานกับ systemd hibernate โดยการตั้งค่าพารามิเตอร์เคอร์เนล อย่างไรก็ตามฉันไม่สามารถกลับมาใช้งานได้อีกต่อไปดังนั้นให้เปลี่ยนไปใช้uswsusp แทน (ระงับซอฟต์แวร์ของผู้ใช้)ระงับ) นี่คือขั้นตอนที่ฉันใช้กับ Ubuntu 17.04 / 17.10
สร้างไฟล์ Swap
คำสั่งเพื่อสร้างไฟล์สลับ 4GiB ที่จัดรูปแบบแล้วติดตั้งและเพิ่มลงใน/etc/fstab
:
sudo fallocate -l 4g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
ตรวจสอบการสลับพาร์ติชันไฟล์
sudo findmnt -no SOURCE,UUID -T /swapfile
> /dev/sda1 11cc33ee-1234-abcd-1234-ddeeff112233
ติดตั้งซอฟแวร์ Userspace ระงับ(uswsusp)
sudo apt install uswsusp
กำหนดค่า uswsusp
วิธีสร้าง/etc/uswsusp.conf
และสร้างใหม่initramfs
:
sudo dpkg-reconfigure -pmedium uswsusp
Yes
เป็น ' ดำเนินการต่อโดยไม่มีพื้นที่สว็อปที่ถูกต้องหรือไม่ ' (ตัวช่วยสร้างยังไม่ได้ตั้งค่าไฟล์สลับ)
- เลือกพาร์ติชันที่มีไฟล์ swap อยู่อ้างอิงไขว้พร้อมรายละเอียดจาก
findmnt
ด้านบน ( หมายเหตุ: ไม่ใช่ไฟล์ swap เอง )
หมายเหตุ: การเปลี่ยนแปลงใด ๆ ที่ทำด้วยตนเอง/etc/uswsusp.conf
จะต้องสร้างใหม่initramfs
ภายหลังด้วยคำสั่งนี้:
sudo update-initramfs -u
ทดสอบโหมดไฮเบอร์เนต
sudo s2disk
ควรมีsnapshot
ข้อความบนหน้าจอไฮเบอร์เนตและดำเนินการต่อ
ใช้ s2disk กับ systemd hibernate
โดยค่าเริ่มต้น systemd จะใช้คำสั่งจำศีลของตัวเองดังนั้นแทนที่ด้วยคำสั่ง uswusp โดยการแทนที่systemd-hibernate.service
:
sudo systemctl edit systemd-hibernate.service
ในเท็กซ์เอดิเตอร์ที่เปิดให้ใส่ข้อความต่อไปนี้ (จำเป็นต้องมี ExecStart ที่ว่าง) จากนั้นบันทึกและออก:
[Service]
ExecStart=
ExecStart=/usr/sbin/s2disk
ExecStartPost=/bin/run-parts -a post /lib/systemd/system-sleep
สิ่งนี้จะสร้าง/etc/systemd/system/systemd-hibernate.service.d/override.conf
ไฟล์ที่มีรายละเอียดการแทนที่
ทดสอบ systemd hibernate:
systemctl hibernate
หมายเหตุ: ในการตรวจสอบว่า systemd override.conf
ถูกสร้างขึ้นให้โหลดและไม่มีข้อผิดพลาดให้รัน:
systemctl status systemd-hibernate.service
อ้างอิง:
ExceStart=run-parts -a post /lib/systemd/system-sleep
เป็นเช่นนี้ExceStartPost=run-parts -a post /lib/systemd/system-sleep