Summary: | Сломалась поддержка просыпания | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Andrey Rahmatullin <wrar> | ||||||
Component: | make-initrd | Assignee: | Alexey Gladkov <legion> | ||||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||
Severity: | normal | ||||||||
Priority: | P3 | CC: | glebfm, ldv, legion, placeholder | ||||||
Version: | unstable | ||||||||
Hardware: | all | ||||||||
OS: | Linux | ||||||||
Attachments: |
|
Description
Andrey Rahmatullin
2010-08-29 21:43:00 MSD
В bug 23943 я как раз дебажил просыпание. Правда я и resume и root в бутлоадере передаю UUID'ами. А у тебя ещё и root не находится. Поведение одинаково с resume=/dev/sda1 и resume=UUID=xxxx У меня есть подозрения насчёт udev. Приложите bug-report. А ещё, если есть возможность попробуйте udev-15x. Created attachment 4528 [details]
bug-report
После таймаута выводится initrd: udev: Unable to mount root initrd: Stage '' failed (В ответ на комментарий №6) > initrd: Stage '' failed Ой мама ... А можете приложить этот нерабочий initrd ? Created attachment 4529 [details]
initrd
В initrd не было модуля для ФС. Потому что без FEATURES = add-modules модули из MODULES_ADD теперь не добавляются. (В ответ на комментарий №10) > В initrd не было модуля для ФС. Потому что без FEATURES = add-modules модули из > MODULES_ADD теперь не добавляются. Эээ, disregard. (В ответ на комментарий №11) > Эээ, disregard. Что-то я ничего не понял :) Вобщем так: udev не отрабатывает, если драйвер контроллера диска собран не модулем, а в ядро. Осмелюсь предположить, что udev в этом случае думает, что контроллер недоступен. Происходит это всё не только при просыпании, но и при нормальной загрузке. Замечу также, что для просыпания корень может и нужен, но уж точно не нужно и даже вредно его монтировать, см.тж. #23183 (В ответ на комментарий №13) > Вобщем так: udev не отрабатывает, если драйвер контроллера диска собран не > модулем, а в ядро. Спасибо за анализ. Если udev не отрабатывает, то как же в живой системе появляется /dev/sdaX ... > Замечу также, что для просыпания корень может и нужен, но уж точно не нужно и > даже вредно его монтировать, см.тж. #23183 Разумеется. Вроде сейчас попытка просыпания происходит всегда перед попыткой монтирования. (В ответ на комментарий №14) > Если udev не отрабатывает, то как же в живой системе появляется /dev/sdaX ... Собсна, он есть прямо в шелле initramfs, и прекрасно монтируется. (В ответ на комментарий №15) > Собсна, он есть прямо в шелле initramfs, и прекрасно монтируется. Значит udev всё-таки дёргается, но правила make-initrd не ловят эти эвенты: $ cat 99-rootdev.rules SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_USAGE}=="filesystem", RUN+="/lib/filters/rootdev" В 0.3.7 появилась поддержка параметра debug=1. При этом в /tmp/uevents/ будут сваливаться эвенты. Не могли бы вы посмотреть как выглядит этот эвент для sda1 ? Это параметр ядра? /tmp в initramfs или в загруженной системе? Да. Это параметр ядра и директория внутри initramfs. 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 (В ответ на комментарий №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 ? Да, так нормально. /usr/share/make-initrd/features/lvm/data/etc/udev/rules.d/99-initrd-lvm.rules тоже надо править Я уже исправил все правила где ACTION==add http://git.altlinux.org/people/legion/packages/make-initrd.git?p=make-initrd.git;a=commitdiff;h=86c2ca12e142f7949ddeccc960b1033a8396e8f6 |