История изменений
Исправление intelfx, (текущая версия) :
Нет. Точнее, не совсем. Вся проблема в способе указания устройства, с которого просыпаться (параметр ядра resume=).
Вообще, значение этого параметра — путь к файлу устройства. Но ядро само по себе умеет парсить только самый примитивный вариант: resume=/dev/sdXY
. Думаю, не требуется пояснять, почему это ненадёжно.
Все остальные способы указания устройства (resume=/dev/disk/by-label/foo
, например) должны обрабатываться в initramfs. А именно: юзерспейс должен распарсить этот параметр, получить major:minor требуемого устройства и записать их в /sys/power/resume. При этом всё, что требуется от юзерспейса — это не писать в блочные устройства до попытки восстановления.
Раньше в initramfs инитом традиционно был шелл-скрипт, из которого весь этот парсинг и производился. А теперь имеется systemd, который претендует также и на роль инита в initramfs, но этой фичи там доселе не было. Теперь есть.
Исправление intelfx, :
Нет. Точнее, не совсем. Вся проблема в способе указания устройства, с которого просыпаться (параметр ядра resume=).
Вообще, значение этого параметра — путь к файлу устройства. Но ядро само по себе умеет парсить только самый примитивный вариант: resume=/dev/sdXY
. Думаю, не требуется пояснять, почему это ненадёжно.
Все остальные способы указания устройства (resume=/dev/disk/by-label/foo
, например) должны обрабатываться в initramfs. А именно: юзерспейс должен распарсить этот параметр, получить major:minor требуемого устройства и записать их в /sys/power/resume. При этом всё, что требуется от юзерспейса — это не писать в блочные устройства до попытки восстановления.
Раньше в initramfs инитом традиционно был шелл-скрипт, из которого весь этот парсинг и производился. А теперь у нас есть systemd, который претендует также и на роль инита в initramfs, но этой фичи там доселе не было. Теперь есть.
Исправление intelfx, :
Нет. Точнее, не совсем. Вся проблема в способе указания устройства, с которого просыпаться (параметр ядра resume=).
Вообще, значение этого параметра — путь к файлу устройства. Но ядро само по себе умеет парсить только самый примитивный вариант: resume=/dev/sdXY
. Думаю, не требуется пояснять, почему это ненадёжно.
Все остальные способы указания устройства (resume=/dev/disk/by-label/foo
, например) должны обрабатываться в initramfs. А именно: юзерспейс должен распарсить этот параметр, получить major:minor требуемого устройства и записать их в /sys/power/resume. При этом всё, что нужно обеспечить — это не писать в блочные устройства.
Исходная версия intelfx, :
Нет. Точнее, не совсем. Вся проблема в способе указания устройства, с которого просыпаться (параметр ядра resume=).
Вообще, значение этого параметра — путь к файлу устройства. Но ядро само по себе умеет парсить только самый примитивный вариант: resume=/dev/sdXY
. Думаю, не требуется пояснять, почему это ненадёжно.
Все остальные способы указания устройства (resume=/dev/disk/by-label/foo
, например) должны обрабатываться в initramfs. А именно: юзерспейс должен распарсить этот параметр, получить major:minor требуемого устройства и записать их в /sys/power/resume. Вот это я и запилил.