스왑 파일에서 최대 절전 모드 및 재개


23

스왑 파티션을 사용하는 대신 스왑 파일을 사용하도록 노트북에 새 Ubuntu 설치를 구성했습니다.

기본적으로 스왑 파일을 사용하여 Ubuntu를 최대 절전 모드로 전환 할 수 없으므로이 자습서를 시도했지만 grub1 에만 해당 되며 Ubuntu는 이제 grub2를 사용 합니다 .

아무도 이것을하는 방법을 알고 있습니까?

답변:


21

uswusp를 사용하여 스왑 파일로 최대 절전 모드

최대 절전 모드에서 파일을 교환 할 수 있지만 커널 매개 변수를 설정하여 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

사용자 공간 소프트웨어 일시 중단 설치 (uswsusp)

sudo apt install uswsusp

uswsusp 구성

작성 /etc/uswsusp.conf하고 다시 작성 하려면 initramfs다음을 수행하십시오.

sudo dpkg-reconfigure -pmedium uswsusp
  • Yes' 유효한 스왑 공간없이 계속 하시겠습니까? ' (마법사는 아직 스왑 파일을 설정하지 않았습니다.)
  • 스왑 파일이 있는 파티션 을 선택하고 findmnt위에서 세부 사항과 상호 참조하십시오 . ( 참고 : 하지 스왑 파일 자체 )

참고 : 수동으로 변경 한 후에는이 명령으로 나중에 /etc/uswsusp.conf다시 작성해야합니다 initramfs.

sudo update-initramfs -u

Uswusp 최대 절전 모드 테스트

sudo s2disk

이 있어야 snapshot최대 절전 모드 및 이력서에 화면에 메시지를 표시합니다.

시스템 최대 절전 모드에서 s2disk 사용

기본적으로 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

참고 문헌 :


이 지침은 작동하는 것 같지만 시스템 최대 절전 모드가 작동하지 않습니다. 이것을 직접 테스트 했습니까? 이해야 ExceStart=run-parts -a post /lib/systemd/system-sleepExceStartPost=run-parts -a post /lib/systemd/system-sleep
호아킨 Aramendía

테스트되고 작동했지만 추가가 필요할 수 있습니다. 내 답변을 업데이트했습니다.
Cas

이것은 잘 보이지 않습니다. enable의 옵션 systemctl 심볼릭 링크 에서 /etc/systemd/system/까지 /lib/systemd/system/. 직접 복사해서는 안됩니다/etc/systemd/system/
Auspex

1
나는이 일을 할 수 없었다 😞. 스왑 파일을 설정하고 uswsusp를 설치 및 구성했지만 sudo s2disk로그 만 Saving snapshot표시하고 디스플레이를 끄고 ~ 5 분 동안 정지 한 다음 컴퓨터를 종료합니다. 그러나 전원을 켠 후 최대 절전 모드가없는 것처럼 정상적으로 부팅됩니다.
m93a

1
이 줄 sudo findmnt -no SOURCE,UUID -T /mnt/4GiB.swapsudo findmnt -no SOURCE,UUID -T /swapfile
user1915011에서

12

다음은 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 s2ramsudo systemctl hibernate작업에 대한 이전의 스크립트에 대한 암호를 입력 할 필요없이.

예를 들어 powerdev그룹 을 생성하고 현재 사용자를 그룹에 추가하고 다음 sudoers 구성을 구성하여이를 수행 할 수 있습니다 (로 편집 sudo visudo -f /etc/sudoers.d/powerdev).

     %powerdev ALL=NOPASSWD: /usr/sbin/s2both, /usr/sbin/s2ram, /bin/systemctl hibernate

사용 된 설명서 :


감사합니다! 나는 많은 방법을 시도했지만 우분투 18.04에서 나를 위해 작동합니다 :)
jirislav

이로 인해 거의 다시 최대 절전 모드를 시도하는 것처럼 느껴집니다. 디스크에서 가끔 손상이 발생하는 문제가 있었으며 이는 최대 절전 모드와 관련이있었습니다. 그런 일이 있었습니까?
Charles Green

감사합니다, @Anthony! 나는 최대 절전 모드를 작동시키기 위해 많은 것들을 시도했습니다. 너의 것이 마지막 해결책이었다. 이것이 올바르게 설정되지 않았다는 것은 매우 이상하게 보입니다 . :(
Mike Williamson

이 안내서에 감사드립니다. 단계를 수행 한 다음 $ sudo systemctl 최대 절전 모드를 사용하여 최대 절전 모드를 시도한 후 최대 절전 모드를 시도한 후 몇 초 후에 노트북이 깨어납니다. / var / log / syslog에는 많은 오류가 표시되지만 가장 관련성이 높은 것으로 보입니다.-출력 eDP-1의 절전 모드를 설정하지 못했습니다 : 권한이 거부되었습니다.-Object .Gjs_AppIndicatorIconActor__1 (0x561c60a4d150)은 이미 완료되었습니다. 속성을 설정할 수 없습니다. ...-s2disk : 재개 장치를 사용할 수 없습니다 (swapon -a 시도). 이유 : 해당 장치 없음-systemd-hibernate.service : 주 프로세스 종료, 코드 = 종료, ...
Jelani Nelson

1
이것은 나를 위해 일한 유일한 솔루션입니다. 이 답변을 찬성하기 위해 로그인했습니다. 감사.
dpetrini

8

튜토리얼을 빠르게 읽었으며 올바르게 이해했다면 resumeLinux 명령 행에 옵션을 지정하면 됩니다. 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이 도움 이 될 수 있습니다.


감사! 노력하겠습니다. 그러나 나는이 라인으로 모든 리눅스 항목을 grub으로 구성한다고 생각합니다.
tfmoraes

잊지 마십시오 : 변경 후 /etc/default/grub를 실행해야합니다 update-grub.
JanC

@ tfmoraes : 왜 모든 리눅스 항목에 이것을 추가하고 싶지 않습니까?
JanC

@ JanC : 다른 Linux 배포판이 설치되어 있기 때문에.
tfmoraes

1
이 코멘트는 8 년 전에 작성된 @ didi_X8. 그 이후로 상황이 변경되었을 수 있습니다. 공유해 주셔서 감사합니다.
Andrea Corbellini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.