LINUX.ORG.RU

udev, отремонтировать и удалить

 ,


0

4

Приветствую.
Пара вопросов:
1. Имею 3g usb модем. Он нуждается в переключении usb_modswitch'ем. Если на работающей системе вытащить->втащить в гнездо, то udev как положено дергает за usb_modswitch. Но если перезагрузиться с подключенным модемом, то переключение не всегда срабатывает, приходится выполнять # usb_modeswitch -v 12d1 -p 1446 -J (ну не убивать же гнездо постоянным втыканием). Может кто сталкивался? (думал о ручном переключении в profile файле login оболочки, но может можно заставить правильно работать udev?).

2. Как из системы выкорчевать udev? В USE добавил -udev, запустил # emerge --newuse --deep --update -p @world, а мне такая ерунда вывалилась:

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

x11-base/xorg-server:0

  (x11-base/xorg-server-1.17.4:0/1.17.4::gentoo, ebuild scheduled for merge) pulled in by
    (no parents that aren't satisfied by other packages in this slot)

  (x11-base/xorg-server-1.17.4:0/1.17.4::gentoo, installed) pulled in by
    >=x11-base/xorg-server-1.12[udev] required by (x11-drivers/xf86-input-evdev-2.9.2:0/0::gentoo, installed)

It might be possible to solve this slot collision
by applying all of the following changes:
   - x11-base/xorg-server-1.17.4 (Change USE: +udev)
Т.е. без сноса evdev от udev не избавиться?
ЗЫ: если просто отключить службу /etc/init.d/udev, то система намертво виснет при запуске X сервера.

Лол, до сих пор остались udev-хейтеры. Ничего не умеет, но один из фундаментальных компонентов юзерспейса всё равно хейтит.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)

У меня вообще не загружается гента, если вставлена флешка или 3г-модем, так что приходится вынимать. Это даже при выключенном hdparm, не разбирался почему.

А по сабжу, у тебя sys-fs/eudev + virtual/udev или таки sys-fs/udev?

kep ()

Как из системы выкорчевать udev? В USE добавил -udev

Ты уж определись. Выкорчевать udev (который теперь часть systemd) чаще всего означает «перейти на eudev». То есть от работы с оборудованием, которую udev предоставляет, ты не отказываешься, лишь меняешь реализацию и ещё пару нюансов (можешь переходить смело, что бы тебе не писали: я перешёл сразу, как оно появилось, и никаких проблем не замечал; к тому же, оно сейчас вообще в stage3 идёт). Если же ты хочешь именно отказаться от всего этого (вот тут тебе USE=-udev и понадобится, равно как и package.mask), то учти, что крупные проекты, как DE, так или иначе нуждаются в этой функциональности (через тот же udisks, например).

Ну и было бы неплохо вывод сислога дать, да и dmesg заодно просмотреть на предмет разных сообщений

XMs ★★★★★ ()
Ответ на: комментарий от kep

У меня вообще не загружается гента, если вставлена флешка или 3г-модем

sys-fs/eudev

если эта срань, то смело сноси и вкатывай sys-fs/udev.

Чтоб вообще не грузилось

netam ()
Ответ на: комментарий от netam

Быть может проблема конкретно в моих флешках, модемах или настройке системы в целом, есть вероятность, что у тебя может быть по-другому.

В любом случае, udev лучше eudev, тебе ничто не мешает попробовать.

kep ()
Ответ на: комментарий от kep

У меня вообще не загружается гента, если вставлена флешка или 3г-модем, так что приходится вынимать. Это даже при выключенном hdparm, не разбирался почему.

Быть может проблема конкретно в моих флешках, модемах или настройке системы в целом

Типичный wannabe-гентушник :DD

Deleted ()
Ответ на: комментарий от kep

у меня eudev и проблем с флешками нет, а вот у ТС похоже что-то с правилами для udev, но он же партизан ни выхлопа dmesg не показывает, ни версии udev (eudev)

netam ()

Нужно замаскировывать systemd'нутую версию udev, удалять и только потом накатывать eudev. В идеале этот квест проходится сразу после распаковки и настройки stage3 - меньшей кровью, так сказать.

Bfgeshka ★★★★★ ()

А по сабжу, у тебя sys-fs/eudev + virtual/udev или таки sys-fs/udev?

virtual/udev + sys-fs/udev

Ты уж определись. Выкорчевать udev (который теперь часть systemd) чаще всего означает «перейти на eudev». То есть от работы с оборудованием, которую udev предоставляет, ты не отказываешься, лишь меняешь реализацию и ещё пару нюансов (можешь переходить смело, что бы тебе не писали: я перешёл сразу, как оно появилось, и никаких проблем не замечал; к тому же, оно сейчас вообще в stage3 идёт). Если же ты хочешь именно отказаться от всего этого (вот тут тебе USE=-udev и понадобится, равно как и package.mask), то учти, что крупные проекты, как DE, так или иначе нуждаются в этой функциональности (через тот же udisks, например).

Ну и было бы неплохо вывод сислога дать, да и dmesg заодно просмотреть на предмет разных сообщений

Хотел отказаться полностью, ну полезно поковыряться без всяких наворотов, в образовательных целях так сказать. Да systemd этот ... не нравится он мне. Если не смогу снести полностью (драйвер evdev сопротивляется), то буду пытаться поставить eudev.

Извиняюсь, что не очень оперативно отвечаю, иначе не выходит.

pavlick ★★ ()
Ответ на: комментарий от pavlick

Хотел отказаться полностью, ну полезно поковыряться без всяких наворотов

Отказываясь от [e]udev ты себе понимания не добавишь, зато добавишь сложностей.

Да systemd этот

В генте нет systemd, если только ты сам его не поставишь

XMs ★★★★★ ()
Ответ на: комментарий от kep

Чот для гентушника с 7-летним стажем не понимать, почему может не грузиться система при воткнутой флэшке - это ппц как-то.

Deleted ()
Ответ на: комментарий от kep

Можно я за него повангую. Убери из параметров ядра quiet и поставь verbose. Если не проходит дальше загузки initrd, то смотри параметры отдаваемые ядру, всякие root= realroot=. Поставь вместо путей к блочному устройству uuid раздела.
Еще вариант, удали grub2 и поставь lilo.
Чувствую systemd, а значит у тебя есть возможность доказать, что systemd отличный инструмент для диагностики.

netam ()
Ответ на: комментарий от netam

Убери из параметров ядра quiet и поставь verbose

стоит, это дефолт.

Если не проходит дальше загузки initrd,

я не использую initrd

отдаваемые ядру, всякие root= realroot=

ядро собрано с:

CONFIG_CMDLINE="root=PARTUUID=a6850df2-b228-40b4-afb8-8737192d2f08 ioummu=pt vfio-pci.ids=13f6:0111 net.ifnames=0"

Поставь вместо путей к блочному устройству uuid раздела.

см. выше

Еще вариант, удали grub2 и поставь lilo.

я не использую какие-либо сторонние загрузчки кроме прямой загрузки ядра через UEFI

Чувствую systemd

OpenRC

kep ()
Ответ на: комментарий от kep

Слабый из меня менталист. Подскажи: на каком этапе глохнет загрузка, загрузка ядра проходит? Если проходит, то лопать init. Отключи параллельную загрузку демонов в /etc/rc.conf и разреши их пошаговую загрузку там же. Трассерни загрузку демонов.

netam ()
Ответ на: комментарий от netam

Да в общем-то и проблемы уже никакой нет, только что проверил, загружает (с включенным hdparm при этом) и с флешкой, и с 3г-модемом и с wifi-свистком.

Очевидно, это ранее была либо проблема в ядре (я сейчас на git-sources-4.6_rc2), либо же в openrc, а теперь пофиксили.

Так что всё нормально.

pavlick, ставь udev (без systemd конечно), всё работает, загружается с флешками/модемами и т.п.

kep ()
Ответ на: комментарий от pavlick

И да, тебе не важные системные компоненты менять надо, а логи приводить. Какие, я выше писал

XMs ★★★★★ ()

Выхлоп dmesg. Первый случай - после перезагрузки модем не перключился, второй - переключился, третий - на работающей системе вытащить/втащить (всегда переключается).

  GNU nano 2.4.3                                    Файл: b                                                                    Изменён  

# 3г модем не переключился в режим модема
[    3.767017] usb 2-1: new high-speed USB device number 4 using ehci-pci
[    3.803871] random: nonblocking pool is initialized
[    3.883416] usb 2-1: New USB device found, idVendor=12d1, idProduct=1446
[    3.883750] usb 2-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[    3.884081] usb 2-1: Product: HUAWEI Mobile
[    3.884879] usb 2-1: Manufacturer: HUAWEI Technology
[    3.887843] usb-storage 2-1:1.0: USB Mass Storage device detected
[    3.888284] scsi host6: usb-storage 2-1:1.0
[    3.888786] usb-storage 2-1:1.1: USB Mass Storage device detected
...
[    6.084061] udevd[1363]: starting version 3.1.5
[    6.562164] udevadm (1375) used greatest stack depth: 6136 bytes left


# 3г модем переключился в режим модема
[    2.574778] usb 2-1: New USB device found, idVendor=12d1, idProduct=1436
[    2.575069] usb 2-1: New USB device strings: Mfr=4, Product=3, SerialNumber=0
[    2.575337] usb 2-1: Product: HUAWEI Mobile
[    2.575735] usb 2-1: Manufacturer: HUAWEI Technology
[    2.578951] usb-storage 2-1:1.0: USB Mass Storage device detected
[    2.579338] option 2-1:1.0: GSM modem (1-port) converter detected
[    2.579696] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
[    2.580103] usb-storage 2-1:1.1: USB Mass Storage device detected
[    2.580714] usb-storage 2-1:1.2: USB Mass Storage device detected
[    2.581380] usb-storage 2-1:1.3: USB Mass Storage device detected
[    2.581906] option 2-1:1.3: GSM modem (1-port) converter detected
[    2.582551] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
[    2.583213] usb-storage 2-1:1.4: USB Mass Storage device detected
[    2.583820] option 2-1:1.4: GSM modem (1-port) converter detected
[    2.584474] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
[    2.585159] usb-storage 2-1:1.5: USB Mass Storage device detected
[    2.586546] scsi host11: usb-storage 2-1:1.5
[    2.587026] usb-storage 2-1:1.6: USB Mass Storage device detected
[    2.587668] scsi host12: usb-storage 2-1:1.6

...
[    6.099390] udevd[1383]: starting version 3.1.5
[    6.574002] udevadm (1408) used greatest stack depth: 6136 bytes left
[    6.647017] cfg80211: Calling CRDA to update world regulatory domain
[    8.863305] rtl8187 2-5:1.0 wlp0s29f7u5: renamed from wlan0
[    9.789017] cfg80211: Calling CRDA to update world regulatory domain
[    9.789422] udevd (1390) used greatest stack depth: 6100 bytes left


# вытащить/втащить модем
[  646.652015] usb 2-1: new high-speed USB device number 8 using ehci-pci
[  646.768343] usb 2-1: New USB device found, idVendor=12d1, idProduct=1446
[  646.768348] usb 2-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[  646.768352] usb 2-1: Product: HUAWEI Mobile
[  646.768355] usb 2-1: Manufacturer: HUAWEI Technology
[  646.770148] usb-storage 2-1:1.0: USB Mass Storage device detected
[  646.770239] scsi host24: usb-storage 2-1:1.0
[  646.770429] usb-storage 2-1:1.1: USB Mass Storage device detected
[  646.770521] scsi host25: usb-storage 2-1:1.1
[  647.327028] usb 2-1: USB disconnect, device number 8
[  651.290015] usb 2-1: new high-speed USB device number 9 using ehci-pci
[  651.406593] usb 2-1: New USB device found, idVendor=12d1, idProduct=1436
[  651.406598] usb 2-1: New USB device strings: Mfr=4, Product=3, SerialNumber=0
[  651.406601] usb 2-1: Product: HUAWEI Mobile
[  651.406604] usb 2-1: Manufacturer: HUAWEI Technology
[  651.409270] usb-storage 2-1:1.0: USB Mass Storage device detected
[  651.409374] option 2-1:1.0: GSM modem (1-port) converter detected
[  651.409477] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
[  651.409608] usb-storage 2-1:1.1: USB Mass Storage device detected
[  651.409778] usb-storage 2-1:1.2: USB Mass Storage device detected
[  651.409981] usb-storage 2-1:1.3: USB Mass Storage device detected
[  651.410072] option 2-1:1.3: GSM modem (1-port) converter detected
[  651.410166] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
[  651.410267] usb-storage 2-1:1.4: USB Mass Storage device detected
[  651.410346] option 2-1:1.4: GSM modem (1-port) converter detected
[  651.410441] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
[  651.410542] usb-storage 2-1:1.5: USB Mass Storage device detected
[  651.410865] scsi host31: usb-storage 2-1:1.5
[  651.411059] usb-storage 2-1:1.6: USB Mass Storage device detected
[  651.411358] scsi host32: usb-storage 2-1:1.6
[  652.412131] scsi 31:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
[  652.413242] scsi 32:0:0:0: Direct-Access     HUAWEI   SD Storage       2.31 PQ: 0 ANSI: 2
Я что думаю? Иногда модем сразу определяется ядром правильно (idProduct=1436), иногда нет (idProduct=1446), а udev запускается уже потом и никаких сообщений об обнаруженных устройствах не получает.

2. Снёс udev и поставил eudev (замаскировал fs-sys/udev)

В генте нет systemd, если только ты сам его не поставишь

Да, но зачем udev начал вошкаться с systemd? Нерукопожатные они )).

pavlick ★★ ()
Ответ на: комментарий от pavlick

я тут погуглил по модели твоего свистка и вот, что нашлось http://askubuntu.com/questions/6001/how-to-configure-tata-photon-ec1261-huawei/8928#8928
В кратце, создай файл /etc/udev/rules.d/15-huawei-e161.rules с вот этим содержимым:

SUBSYSTEM="usb"
SYSFS{idProduct}="1446"
SYSFS{idVendor}="12d1"
RUN+="/lib/udev/modem-modeswitch --vendor 0x12d1 --product 0x1446"

netam ()
Ответ на: комментарий от kep

Попробовал, не срабатывает.

netam, какой-то кривой синтаксис правила, посыпались ошибки. Создал правило /etc/udev/rules.d/15-huawei-e173.rules c таким содержанием:

ATTR{idVendor}=="12d1", ATTR{idProduct}=="1446", RUN+="usb_modeswitch '-v 12d1 -p 1446 -J'"
без толку.

Я почти уверен, что дело в слишком поздней загрузки udev, попробую сделать его загрузку более ранней.

pavlick ★★ ()
Ответ на: комментарий от pavlick

как вариант могу предположить, что при загрузке ядро не успевает загрузить какой-то модуль к моменту первого прерывания генерируемого свистком
Когда после перезагрузки модем не определится, попробуй выгрузить модуль usb_storage и подгрузить usbserial

# rmmod usb_storage
# modprobe usbserial vendor=0x12d1 product=0x1446

netam ()
Ответ на: комментарий от kep

<< он и так (должен быть) в sysinit, ранее некуда, boot позже идет. Да, скрипты из /etc/init.d запускается когда все устройства определены. Запустить udev раньше не вижу возможности. Может можно как-то настроить udev на генерацию запроса ядру на генерацию последним сообщений об обнаруженных устройств (однократно, после загрузки udev)? Х.з. других вариантов не вижу. Кстати, нашел закономерность в том, когда модем не переключается: *если ос загружается после telinit 0, то модем будет непереключённым *если после telinit 6, то переключённым. Т.е. конфигурация устройства сохраняется при перезагрузке.

netam, спасибо поковыряю.

ЗЫ: благодарю всех за помощь.

pavlick ★★ ()

Оффтопик

Читал Федорчука за 2007 год, он пишет что udev создан, чтобы не было предварительно созданных /dev/sdx на все случаи жизни. То есть нет udev - нет динамического добавления/убирания устройств? И альтернативы тоже нет?

ZenitharChampion ★★★★★ ()
Ответ на: Оффтопик от ZenitharChampion

То есть нет udev - нет динамического добавления/убирания устройств?

Да.

Deleted ()
Ответ на: комментарий от kep

> У меня вообще не загружается гента, если вставлена флешка или 3г-модем, так что приходится вынимать.

У меня тоже. Пишет что-то про -152 еррор хаба. Не хватает питания. Вытаскиваю - загрузка сразу начинается. А вообще я хочу найти для хаба дополнительное питание. Но оно не продаётся. Хотя дырочка под него есть.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от pavlick

в догонку, если трюк с выгрузкой usb_storage сработает, то можно и костыль уже делать: в /etc/modprobe.d/blacklist.conf добавить

black usb_storage
и грузить usb_storage позже, например, из /etc/local.d/

netam ()
Ответ на: Оффтопик от ZenitharChampion

То есть нет udev - нет динамического добавления/убирания устройств?

Не буду утверждать на 100%, это не так. Попробуйте сам: остановите сервис # /etc/init.d/udev stop и повтыкайте какую-нибудь sdx

pavlick ★★ ()
Ответ на: комментарий от redgremlin

Любезный флудер, снизайди до поддержания темы в рамках установленных ТС тегов и расскажи нам как правильно готовить udev в генте.

netam ()
Ответ на: комментарий от ZenitharChampion

попробуй обновить ядро до 4.6-rc2 и самый свежий openrc, у меня теперь загружается в любом случае, что бы не было подключено.

kep ()
Ответ на: комментарий от redgremlin

4.2 на 4.2 сидит и 4.2 погоняет, двухлетней давности письмецо едва ли отражает действительность.

Дверь, яйца, щемить.

redgremlin ★★★★★ (04/08/2016 19:23:24) Сторонник systemd

Я понимаю, что у тебя есть свои убеждения, но тут ТС чётко спрашивает о том, как избавиться от udev, он уже всё для себя решил.

Bfgeshka ★★★★★ ()

Добился некоторого положительного результата. Похоже, что при запуске udev недоступен sda4 (всё дерего каталогов кроме /boot на нём) и как следствие недоступен usb_modeswitch. После выполнения

# rc-update del udev sysinit
# rc-update add udev default
udev начал переключать модем. Выхлоп dmesg связанный с монтированием sda4 (на нём ext4):
[    3.475395] EXT4-fs (sda4): couldn't mount as ext3 due to feature incompatibilities
[    3.476021] EXT4-fs (sda4): couldn't mount as ext2 due to feature incompatibilities
[    3.501016] cfg80211: Calling CRDA to update world regulatory domain
[    3.541474] EXT4-fs (sda4): mounted filesystem with ordered data mode. Opts: (null)
...
[    6.765520] EXT4-fs (sda4): re-mounted. Opts: (null)
Когда модем не переключался, запуск udev попадал между mount и re-mount. После переноса запуска udev в default, запуск udev стал происходить после re-mount. Вопрос - [ 3.475395] что-то пошло не так с монтированием, как исправить?
cat /etc/fstab/dev/sda2
/dev/sda2               /boot           ext2            defaults,noatime        0 2
/dev/sda3               none            swap            sw                      0 0
/dev/sda4               /               ext4            noatime                 0 1
/dev/cdrom              /mnt/cdrom      auto            noauto,user             0 0

pavlick ★★ ()

Вроде разобрался. udev не запускал usb_modeswitch из-за того, что корень были примонтирован «только для чтения» во время запуска первого. Решил проблему следующим образом:
1. в /etc/default/grub, GRUB_CMDLINE_LINUX_DEFAULT=«rootfstype=ext4 rw» (rootfstype выбирать свою, можно вообще не указывать, обзор опция ядра в /usr/src/linux/Documentation/kernel-parameters.txt). 2. также добавил в конфиг ядра DEV_TMPFS_MOUNT=y (automount devtmpfs at /dev, after the kernel mounted). Вдргу udev захочет ссылку в /dev создать, а его нет, думаю надо.

Запуск системы стал немного более долгим, udev требует время на обработку сообщений.

У меня только один вопрос - зачем корень монтируется «только для чтения» по умолчанию, а потом перемонтируется «для чтения/записи»

pavlick ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.