Aynı problemle karşılaştım, bu yüzden burada görebileceğiniz aynı senaryoyu anlatırken bir kez daha çekim yaptım . Sonrasında geçici olmayan herhangi bir depoya dokunmaz luksSuspend
, bu yüzden şifreli / önyüklemeli gerçek tam disk şifrelemesinde bile çalışır. Ancak, dikkatli olmanız gerekir - ara sıra beklendiği gibi çalışmayabilir!
Taşınan komut dosyası aşağıdakileri yapar:
- Bir yere ramfs yuvası oluşturun
- İnitramfs içeriğini oraya çıkarın (initramfs askıya alma komut dosyası dahil)
- (Örneğin ilgili dizinlerini bağlamak
/sys
, /proc
, /dev
, /run
ramfs monte) için
- Müdahale edebilecek hizmetleri durdurma (systemd-udevd, systemd-journald)
- Kök dosya sistemini (ext4 veya btrfs) nobarrier ile yeniden kurun, böylece Linux S3'e girmeye çalışırken askıda kalmaz, ardından senkronize edilir
- Tekrar senkronize olan, çalışan
luksSuspend
ve bilgisayarı uyku moduna geçiren initramfs yuvasına Chroot
- Uyandıktan sonra,
luksResume
dosya sistemlerini yeniden kurun, hizmetleri yeniden başlatın, initramfs bağlantısındaki bağlama bağlarını çıkarın
- Son olarak, initramfs mount'u çıkarın, böylece initramfs dosyaları için kullanılan RAM'i serbest bıraktık.
Senaryomda kapsamlı testler yapmadım, ancak benim için güvenilir bir şekilde çalışıyor gibi görünüyor. Başka bir dosya sistemi kullanıyorsanız (örneğin, ext4 veya btrfs değil), bariyerle ilgili sorunlar yaşayabilirsiniz; bu nedenle komut dosyasını da değiştirmeniz gerekecektir.
Her iki durumda da, önce komut dosyalarının çalıştığını test etmek ve doğrulamak iyidir. Linux'u S3'e yerleştirmeye çalışırken kilitlenme yaşarsanız (yani at echo mem > /sys/power/state
), o zaman aşağıdakileri kurtarabilmelisiniz:
- Askıya almadan önce, bir tty veya başka bir terminal açın (erişilebilir olacak, yani ideal bir tty)
- Şifreleme ve ilgili kitaplıkları RAM'e yükleyin:
sudo cryptsetup luksResume anything_here
- Komut dosyasını kullanarak askıya alın
- Chroot'un arkasına takılırsa (örneğin
starting version xxx
, yeni vt'de görüntülendikten sonra ), daha önce açtığınız tty'ye geçin vesudo cryptsetup luksResume your_luks_device_name_here
- Bu da askıda kalıyorsa, başka bir vt açın ve içine dalın
/run/initramfs
:sudo chroot /run/initramfs /bin/ash
- Koşmayı dene
luksResume
:cryptsetup luksResume your_luks_device_name_here && exit
- Bilgisayarınız daha sonra askıya alınmalıdır. Daha sonra uyandırabilir, hala çalışıyorsa betiği (ler) i öldürebilir, bağlama bağlarını sökebilir ve
/run/initramfs
varsa kök dosya sisteminizi bariyere takabilirsiniz.