Bug 23985 - Сломалась поддержка просыпания
Summary: Сломалась поддержка просыпания
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Alexey Gladkov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-29 21:43 MSD by Andrey Rahmatullin
Modified: 2010-09-06 18:34 MSD (History)
4 users (show)

See Also:


Attachments
bug-report (138.25 KB, application/octet-stream)
2010-08-29 23:34 MSD, Andrey Rahmatullin
no flags Details
initrd (2.69 MB, application/octet-stream)
2010-08-30 12:03 MSD, Andrey Rahmatullin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Rahmatullin 2010-08-29 21:43:00 MSD
После регенерации initrd с 0.3.7-alt1 система перестала просыпаться: ждёт какой-то таймаут, после чего пишет unable to mount root и показывает шелл. Если сказать в шелле bin/resume /dev/sda1, система просыпается, как и было раньше.
Comment 1 Sir Raorn 2010-08-29 22:10:21 MSD
В bug 23943 я как раз дебажил просыпание.  Правда я и resume и root в бутлоадере передаю UUID'ами.

А у тебя ещё и root не находится.
Comment 2 Andrey Rahmatullin 2010-08-29 22:15:32 MSD
Поведение одинаково с resume=/dev/sda1 и resume=UUID=xxxx
Comment 3 Alexey Gladkov 2010-08-29 23:22:23 MSD
У меня есть подозрения насчёт udev.
Comment 4 Alexey Gladkov 2010-08-29 23:26:56 MSD
Приложите bug-report. А ещё, если есть возможность попробуйте udev-15x.
Comment 5 Andrey Rahmatullin 2010-08-29 23:34:57 MSD
Created attachment 4528 [details]
bug-report
Comment 6 Andrey Rahmatullin 2010-08-30 09:25:33 MSD
После таймаута выводится
initrd: udev: Unable to mount root
initrd: Stage '' failed
Comment 7 Alexey Gladkov 2010-08-30 11:57:36 MSD
(В ответ на комментарий №6)
> initrd: Stage '' failed

Ой мама ...
Comment 8 Alexey Gladkov 2010-08-30 11:58:50 MSD
А можете приложить этот нерабочий initrd ?
Comment 9 Andrey Rahmatullin 2010-08-30 12:03:14 MSD
Created attachment 4529 [details]
initrd
Comment 10 Andrey Rahmatullin 2010-08-31 23:39:38 MSD
В initrd не было модуля для ФС. Потому что без FEATURES = add-modules модули из MODULES_ADD теперь не добавляются.
Comment 11 Andrey Rahmatullin 2010-09-01 09:42:08 MSD
(В ответ на комментарий №10)
> В initrd не было модуля для ФС. Потому что без FEATURES = add-modules модули из
> MODULES_ADD теперь не добавляются.
Эээ, disregard.
Comment 12 Alexey Gladkov 2010-09-01 11:23:08 MSD
(В ответ на комментарий №11)
> Эээ, disregard.

Что-то я ничего не понял :)
Comment 13 Andrey Rahmatullin 2010-09-01 12:11:10 MSD
Вобщем так: udev не отрабатывает, если драйвер контроллера диска собран не модулем, а в ядро. Осмелюсь предположить, что udev в этом случае думает, что контроллер недоступен. Происходит это всё не только при просыпании, но и при нормальной загрузке.
Замечу также, что для просыпания корень может и нужен, но уж точно не нужно и даже вредно его монтировать, см.тж. #23183
Comment 14 Alexey Gladkov 2010-09-01 13:17:58 MSD
(В ответ на комментарий №13)
> Вобщем так: udev не отрабатывает, если драйвер контроллера диска собран не
> модулем, а в ядро.

Спасибо за анализ.

Если udev не отрабатывает, то как же в живой системе появляется /dev/sdaX ...

> Замечу также, что для просыпания корень может и нужен, но уж точно не нужно и
> даже вредно его монтировать, см.тж. #23183

Разумеется. Вроде сейчас попытка просыпания происходит всегда перед попыткой монтирования.
Comment 15 Andrey Rahmatullin 2010-09-01 13:26:23 MSD
(В ответ на комментарий №14)
> Если udev не отрабатывает, то как же в живой системе появляется /dev/sdaX ...
Собсна, он есть прямо в шелле initramfs, и прекрасно монтируется.
Comment 16 Alexey Gladkov 2010-09-01 13:31:54 MSD
(В ответ на комментарий №15)
> Собсна, он есть прямо в шелле initramfs, и прекрасно монтируется.

Значит udev всё-таки дёргается, но правила make-initrd не ловят эти эвенты:

$ cat 99-rootdev.rules 
SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", RUN+="/lib/filters/rootdev"
Comment 17 Alexey Gladkov 2010-09-01 13:53:52 MSD
В 0.3.7 появилась поддержка параметра debug=1. При этом в /tmp/uevents/ будут сваливаться эвенты.

Не могли бы вы посмотреть как выглядит этот эвент для sda1 ?
Comment 18 Andrey Rahmatullin 2010-09-01 13:57:24 MSD
Это параметр ядра?
/tmp в initramfs или в загруженной системе?
Comment 19 Alexey Gladkov 2010-09-01 14:02:06 MSD
Да. Это параметр ядра и директория внутри initramfs.
Comment 20 Andrey Rahmatullin 2010-09-01 15:35:44 MSD
ID_BUS=ata
DEVNAME=/dev/sda1
ID_ATA_FEATURE_SET_AAM_VENDOR_RECOMMENDED_VALUE=128
ACTION=change
ID_SERIAL_SHORT=WD-WCAU50059919
SEQNUM=684
ID_ATA_WRITE_CACHE=1
ID_ATA_WRITE_CACHE_ENABLED=1
ID_FS_UUID_ENC=e0bc790f-e4e1-42c0-b28a-3c4a27b5ea1d
ID_ATA_FEATURE_SET_AAM_CURRENT_VALUE=128
ID_TYPE=disk
MAJOR=8
ID_ATA_FEATURE_SET_SMART=1
ID_ATA_FEATURE_SET_PM=1
ID_FS_UUID=e0bc790f-e4e1-42c0-b28a-3c4a27b5ea1d
ID_PART_TABLE_TYPE=dos
ID_ATA_FEATURE_SET_SMART_ENABLED=1
ID_ATA_FEATURE_SET_PM_ENABLED=1
DEVPATH=/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/sda1
ID_MODEL_ENC=WDC\x20WD7500AACS-65D6B0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
ID_WWN_WITH_EXTENSION=0x50014ee2ac8b5edc
ID_FS_VERSION=2
ID_WWN=0x50014ee2ac8b5edc
ID_MODEL=WDC_WD7500AACS-65D6B0
ID_SERIAL=WDC_WD7500AACS-65D6B0_WD-WCAU50059919
ID_ATA=1
DEVLINKS=/dev/block/8:1 /dev/disk/by-id/ata-WDC_WD7500AACS-65D6B0_WD-WCAU50059919-part1 /dev/disk/by-id/scsi-SATA_WDC_WD7500AACS-_WD-WCAU50059919-part1 /dev/
disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part1 /dev/disk/by-uuid/e0bc790f-e4e1-42c0-b28a-3c4a27b5ea1d /dev/disk/by-id/wwn-0x50014ee2ac8b5edc-part1
SUBSYSTEM=block
STARTUP=1
ID_ATA_FEATURE_SET_PUIS=1
ID_ATA_SATA=1
ID_ATA_FEATURE_SET_PUIS_ENABLED=0
MINOR=1
ID_ATA_FEATURE_SET_AAM=1
ID_FS_TYPE=swap
ID_ATA_FEATURE_SET_AAM_ENABLED=1
ID_ATA_DOWNLOAD_MICROCODE=1
ID_PATH=pci-0000:00:1f.2-scsi-0:0:0:0
ID_ATA_SATA_SIGNAL_RATE_GEN1=1
PWD=/
ID_ATA_SATA_SIGNAL_RATE_GEN2=1
ID_SCSI_COMPAT=SATA_WDC_WD7500AACS-_WD-WCAU50059919
DEVTYPE=partition
ID_FS_USAGE=other
ID_REVISION=01.01A10
Comment 21 Alexey Gladkov 2010-09-01 15:45:43 MSD
(В ответ на комментарий №20)
> ID_BUS=ata
> DEVNAME=/dev/sda1
> ID_ATA_FEATURE_SET_AAM_VENDOR_RECOMMENDED_VALUE=128
> ACTION=change

Вот и разгадка. Правило для udev должно быть ACTION!="remove".
Спасибо вам, Андрей.

Можете попробовать поправить /usr/share/make-initrd/data/etc/udev/rules.d/99-{resume,rootdev}.rules ?
Comment 22 Andrey Rahmatullin 2010-09-01 16:08:14 MSD
Да, так нормально.
Comment 23 Andrey Rahmatullin 2010-09-04 12:48:56 MSD
/usr/share/make-initrd/features/lvm/data/etc/udev/rules.d/99-initrd-lvm.rules тоже надо править
Comment 24 Alexey Gladkov 2010-09-04 12:52:32 MSD
Я уже исправил все правила где ACTION==add

http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=86c2ca12e142f7949ddeccc960b1033a8396e8f6
Comment 25 Repository Robot 2010-09-06 18:34:47 MSD
make-initrd-0.3.8-alt1 -> sisyphus:

* Sun Sep 05 2010 Alexey Gladkov <legion@altlinux> 0.3.8-alt1
- Add multipath subpackage (ALT#24009).
- Fix typo in module name (ALT#24008).
- Fix udev rules for builtin kernel modules (ALT#23985).