不知道是否用了minimal版的原因。
在安装系统时,选了重建分区,包含了swap(with hibernate)分区,并选了加密磁盘。系统装好后,不能实现休眠(Hibernate)功能,每次休眠即是关机。启动时,报错提示 Disk doesn’t exist or access denied。
1、manjaro安装时加密磁盘分区的后台操作是
#(本例中,磁盘是hd1,ESP分区为sda1,系统区为sda2,swap分区为sda3) #对磁盘分区进行LUKS加密 cryptsetup luksFormat /dev/sda2 #打开加密的磁盘分区同时映射磁盘别名(加密的磁盘必须打开并映射才能格式化,挂载等) #用 cat /dev/mapper 可以看到系统生成的别名luks1234-2234-3234-423456789 cryptsetup luksOpen /dev/sda2 luks1234-2234-3234-423456789 #格式化刚映射的别名到需要的格式(系统区为ext4,swap区为swap) mkfs.ext4 /dev/mapper/luks1234-2234-3234-423456789 #因为这是系统盘,必须在启动前挂载,所以在 grub指定了该cryptdevice,并用了cryptomount挂载, #再用了root=指向。也用resume=指向了swap盘的映射别名。
2、启动后观察cat /etc/fstab,cat /etc/default/grub,sudo swapon -s,sudo free -m可以看出,swap盘已经成功使用并挂载,resume设置系统都设好了,但为什么总是不能休眠并报磁盘不存在错误呢?(此处需要手工处理一条:sudo vi /etc/systemd/logind.conf,设置HandleLidSwitch=hibernate)
3、回顾启动时,需要输入系统盘的加密密码来打开它并挂载,从输密码的提示(hd1,gpt2)也可以看出就是解密了系统分区,swap分区(hd1,gpt3)并没解密,这就造成访问拒绝,无法用swap区进行hibernate。
4、如果要同时实现磁盘加密和swap with hibernate,琢磨了几个解决方案:
- 进入系统后,不动加密系统盘分区,完全解密swap区,不加密使用。修改swap区的加密密码,把密码文件保存到文件中,再修改grub在启动前自动挂载。重新安装系统重新分区不设swap区,那么全盘就是加密了系统区,等进入系统后,建立swap文件并设置hibernate功能。
调试采取一号方案。二三号方案还没试就阵亡了。
#关闭加密swap区的使用 swapoff -a #关闭加密swap分区(luks**********************是swap区的映射别名) cryptsetup luksClose luks********************** #重新无加密格式化swap区 mkswap /etc/sda3 #重新挂载未加密的swap区 swapon /etc/sda3 #sudo vi /etc/default/grub,把swap分区指向给resume GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/sda3" #或者用 sudo blkid 查到 /dev/sda3 的UUID,指给resume GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=UUID=xxxxxxxxxxxxx"
然后……,就没然后了,对swap加密分区的解密及改动,或许是/etc/default/grub的处理有误,重启后系统竟然找不到加密的系统盘了,进入了rootfs界面,没那个本事重建启动,干脆重新安装manjaro,再改下设置,咚,又找不到启动盘了,试了三次,太酸爽,放弃调试了。
最终方案因为每次进系统都调调主题,试试小功能啥的,然后又重启重装,折腾了四五个小时,系统还是新的,放弃自虐了,用了磁盘不加密,带了分区swap with hibernate,只需要手工处理一条:sudo vi /etc/systemd/logind.conf,设置HandleLidSwitch=hibernate,就可成功休眠。
经验教训改了/etc/default/grub后,用 grub-mkconfig -o /boot/grub/grub.cfg 重建 /boot/grub/grub,cfg,多分析下这个cfg,没有语法错误再重启吧。
估计没有谁无聊地调试这个功能,只是做过了不要白做,聊记一笔。
ps:源用清华最快,华为有情结有速度亦可,北科大速度极坑,可能是我没教育网吧。fcitx直接sudo pacman -Sy fcitx就挺稳定好用,不要去锻炼yay,但不要sudo要 vi ~/.xprofile三句话不可少。



