답변:
최대 절전 모드에서 파일을 교환 할 수 있지만 커널 매개 변수를 설정하여 systemd 최대 절전 모드와 작동합니다. 그러나 다시 시작할 수 없으므로 uswsusp (userspace software suspend) 사용으로 전환했습니다 . Ubuntu 17.04 / 17.10에서 사용한 단계는 다음과 같습니다.
포맷 된 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
sudo apt install uswsusp
작성 /etc/uswsusp.conf
하고 다시 작성 하려면 initramfs
다음을 수행하십시오.
sudo dpkg-reconfigure -pmedium uswsusp
Yes
' 유효한 스왑 공간없이 계속 하시겠습니까? ' (마법사는 아직 스왑 파일을 설정하지 않았습니다.)findmnt
위에서 세부 사항과 상호 참조하십시오 . ( 참고 : 하지 스왑 파일 자체 )참고 : 수동으로 변경 한 후에는이 명령으로 나중에 /etc/uswsusp.conf
다시 작성해야합니다 initramfs
.
sudo update-initramfs -u
sudo s2disk
이 있어야 snapshot
최대 절전 모드 및 이력서에 화면에 메시지를 표시합니다.
기본적으로 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
재정의 세부 정보가 포함 된 파일 이 생성 됩니다.
systemctl hibernate
참고 : systemd override.conf
가 작성되고로드되었으며 오류가 없는지 확인하려면 다음을 실행하십시오.
systemctl status systemd-hibernate.service
참고 문헌 :
enable
의 옵션 systemctl
심볼릭 링크 에서 /etc/systemd/system/
까지 /lib/systemd/system/
. 직접 복사해서는 안됩니다/etc/systemd/system/
sudo s2disk
로그 만 Saving snapshot
표시하고 디스플레이를 끄고 ~ 5 분 동안 정지 한 다음 컴퓨터를 종료합니다. 그러나 전원을 켠 후 최대 절전 모드가없는 것처럼 정상적으로 부팅됩니다.
sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swap
을sudo findmnt -no SOURCE,UUID -T /swapfile
다음은 Ubuntu 18.04에서 작동하도록 만든 것입니다.
귀하의 확인 /swapfile
당신의 RAM의 크기가 최소가
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=$(cat /proc/meminfo | grep MemTotal | grep -oh '[0-9]*') count=1024 conv=notrun
sudo mkswap /swapfile
sudo swapon /swapfile
다음을 포함하는 파티션의 UUID에 유의하십시오 /swapfile
.
$ sudo findmnt -no SOURCE,UUID -T /swapfile
/dev/nvme0n1p5 20562a02-cfa6-42e0-bb9f-5e936ea763d0
uswsusp
스왑 파일을 올바르게 사용 하려면 패키지 를 재구성하십시오 :
sudo dpkg-reconfigure -pmedium uswsusp
# Answer "Yes" to continue without swap space
# Select "/dev/disk/by-uuid/20562a02-cfa6-42e0-bb9f-5e936ea763d0" replace the UUID with the result from the previous findmnt command
# Encrypt: "No"
sudo systemctl edit systemd-hibernate.service
다음을 사용하여 SystemD 최대 절전 모드 서비스를 편집하고 다음 내용으로 채 웁니다.
[Service]
ExecStart=
ExecStartPre=-/bin/run-parts -v -a pre /lib/systemd/system-sleep
ExecStart=/usr/sbin/s2disk
ExecStartPost=-/bin/run-parts -v --reverse -a post /lib/systemd/system-sleep
의 이력서 오프셋에 유의하십시오 /swapfile
.
$ sudo swap-offset /swapfile
resume offset = 34818
/etc/default/grub
다음 줄 을 편집하여 스왑 파일에서 다시 시작하도록 Grub을 구성 하십시오.
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=20562a02-cfa6-42e0-bb9f-5e936ea763d0 resume_offset=34818 quiet splash"
그럽 업데이트 :
sudo update-grub
다음을 작성하십시오 /etc/initramfs-tools/conf.d/resume
.
RESUME=UUID=20562a02-cfa6-42e0-bb9e-5e936ea763d0 resume_offset=34816
# Resume from /swapfile
initramfs 업데이트 :
sudo update-initramfs -u -k all
이제와 최대 절전 모드로 전환 할 수 있습니다 sudo systemctl hibernate
.
이러한 스크립트를 만들 수도 있습니다.
sudo tee /usr/local/bin/gotosleep <<EOF
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
sleep 2
sudo /usr/sbin/s2both
EOF
sudo chmod +x /usr/local/bin/gotosleep
sudo tee /usr/local/bin/gotohibernation <<EOF
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
sleep 2
sudo systemctl hibernate
EOF
sudo chmod +x /usr/local/bin/gotohibernation
따라서와 함께 gotosleep
절전 모드 또는 최대 절전 모드를 수행 할 수 있습니다 gotohibernation
.
당신은 실행할 수 있어야 sudo s2both
, sudo s2ram
및 sudo systemctl hibernate
작업에 대한 이전의 스크립트에 대한 암호를 입력 할 필요없이.
예를 들어 powerdev
그룹 을 생성하고 현재 사용자를 그룹에 추가하고 다음 sudoers 구성을 구성하여이를 수행 할 수 있습니다 (로 편집 sudo visudo -f /etc/sudoers.d/powerdev
).
%powerdev ALL=NOPASSWD: /usr/sbin/s2both, /usr/sbin/s2ram, /bin/systemctl hibernate
사용 된 설명서 :
튜토리얼을 빠르게 읽었으며 올바르게 이해했다면 resume
Linux 명령 행에 옵션을 지정하면 됩니다. Grub2를 사용하면 정말 간단하며 변경 사항은 항상 유지됩니다. /etc/default/grub
파일, 특히이 줄 을 편집해야합니다 .
GRUB_CMDLINE_LINUX="resume=... resume_offset=..."
그런 sudo update-grub
다음 변경 사항을 적용하려면 실행 하십시오.
변경 GRUB_CMDLINE_LINUX
은 다른 Linux 설치에는 영향을 미치지 않습니다 ( /etc/grub.d/30_os-prober
이 변수를 사용하지 않기 때문에 ).
발생한 문제에 대해 : 스왑 파일의 파티션이 암호화되어 있습니까? 그렇다면 최대 절전 모드가 작동하지 않습니다. 그렇지 않으면 출력 filefrag -v /swapfile
이 도움 이 될 수 있습니다.
/etc/default/grub
를 실행해야합니다 update-grub
.
ExceStart=run-parts -a post /lib/systemd/system-sleep
할ExceStartPost=run-parts -a post /lib/systemd/system-sleep