| Summary: | grub-mkconfig некорректно определяет доступность раздела /boot на запись | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Oleg Bulavsky <bulavskyoleg> | ||||
| Component: | grub-common | Assignee: | Egor Ignatov <egori> | ||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | bulavskyoleg, nickel, placeholder, rider, sem, zerg | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
Приложенный патч необходимо применять к /usr/share/grub/grub-mkconfig_lib Данный вариант сгенерирован в Simply 10.4, но к Simply 11 тоже подходит. |
Created attachment 18518 [details] Патч для исправления генерации grub.cfg При создании конфигурационного файла для grub, для проверки, возможна ли запись переменных в /boot/grub/grubenv (для обеспечения функционала saved_entry/next_entry), grub-mkconfig использует для проверки доступности на запись из grub (на тему расположения на той или иной файловой системе или "абстракции") переменную GRUB_DEVICE. GRUB_DEVICE в общем случае указывает на / , а на /boot указывает переменная GRUB_DEVICE_BOOT . В случае, когда /boot находится на отдельном разделе это очевидно разные значения. В ситуациях, когда / располагается на файловой системе или менеджере томов, на которые grub не умеет писать (например btrfs или lvm), а /boot - на вполне себе "записываемой" (например ext2 на обычном разделе), grub-mkconfig некорректно (по / вместо /boot) определяет, что в /boot/grub/grubenv запись невозможна, и "отключает" в итоговом grub.cfg функционал save_entry/next_entry. Как воспроизвести. При разбивке диска создать /boot на отдельном разделе диска с ФС ext2, а / создать на btrfs, zfs или любой ФС внутри тома lvm. Убедиться, что при генерации grub.cfg в функцию savedefalt будет подставлено "# GRUB lacks write support for XYZ" вместо ожидаемого функционала.