LINUX.ORG.RU

История изменений

Исправление 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. Вот это я и запилил.