Portál AbcLinuxu, 10. května 2024 09:49


Dotaz: hotplug problem

24.3.2004 20:17 JUR
hotplug problem
Přečteno: 144×
Odpovědět | Admin
Ahoj, potreboval bych od nekoho vysvetlit jako to je s hotplugem. Mam ho nainstalovanej. Pouzivam Gentoo,kernel 2.6.3,UDEV.

Po uspani notebooku pomoci APM a nasledne probuzeni mi nefunguje mys. Po probuzeni je modul v jadre a kdyz ho chci odebrat se mi modprobe -r sekne. Kdyz ho odstranim pred uspanim a po probuzeni ho opet vlozim, tak mys nabehne v pohode a vse jede. Zatim to resim upravou v apmd_proxy .. kde se pred suspendem odstrani z jadra a po probuzeni opet nahodi. Dale mne to dela pcmcia karta Xircom combo modem/lan kdyz ji vlozim, tak do jadra nabehnout moduly, ale kdyz ji vyndam, tak moduly nevypadnou, misto toho tam zustanou a musim je odebrat rucne. WIFI pcmcia karta jede jak by mela....po vyndani moduly orinoco se automaticky unloadujou....

Proto se ptam, kde se ma co nastavit, aby to fungovalo tak, jak ma.

Protoze kdyz prohozuju pcmcia karty, je to dost otravny porad vyndavat ty moduly z jadra(oni tam sice nicemu nevadej, ale proc je tam mit, kdyz se zarizeni nepouziva)

diky za rady

JUR
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.3.2004 12:21 JUR
Rozbalit Rozbalit vše hotplug problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
opravdu byste nikdo nevedel? diky
25.3.2004 12:21 JUR
Rozbalit Rozbalit vše hotplug problem
Odpovědět | | Sbalit | Link | Blokovat | Admin
opravdu byste nikdo nevedel? diky
25.3.2004 12:27 jm
Rozbalit Rozbalit vše hotplug problem
Obavam se, ze problem je v udev, ktereho jsem se zase rychle zbavil. Zatim to je spis nocni mura nez cokoliv jineho, je to priserne neodladeny a jsou s tim jenom problemy. :-(
25.3.2004 12:50 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše hotplug problem
Odstraňování modulů s udev nijak nesouvisí, to jen vytváří a odstraňuje soubory v /dev. Už nějakou dobu ho používám a po počátečním nastavení bez problémů (na rozdíl od devfs, se kterým bylo problémů mnohem více).

Hotplug standardně moduly neodstraňuje, pokud to nutně potřebuješ je potřeba upravit příslušné agenty (/etc/hotplug/*.agent) aby se při ACTION=remove pokusily odstranit modul, který při ACTION=add nahráli.
25.3.2004 13:10 JUR
Rozbalit Rozbalit vše hotplug problem
jsem trochu zmaten ... nedavno jsem sem psal podobny dotaz a poradili mi, ze nemam pouzivat devfs v gentoo a ze mam zkusit udev -- co teda bych mel pouzivat? jinak nemam zadne jine problemy... akorat nevim jak nastavit, aby hotplug odstranil uhci_hcd pred uspanim pc (aby se to nezasekavalo)
25.3.2004 13:17 jm
Rozbalit Rozbalit vše hotplug problem
Znovu rikam, zkusenosti s devfs bez problemu, udev uplne na houby (slusne receno). Co se tyce konkretne Gentoo, zde si muzete precist, jak si tuto vymozenost uzivatele "pochvaluji" plus nejaky navod, jak na to.

Ke me to zase aspon pul roku nesmi na komp, nebudu si porad psat skripty, ktere budou delat to, co by melo udev delat automaticky. :-(
25.3.2004 14:51 JUR
Rozbalit Rozbalit vše hotplug problem
jeste bych potreboval upresnit, co vlastne udev,devfs delaji? Myslel jsem, ze jen vytvori v adresari dev patricnej soubor po zjisteni, ze existuje napr. cdromka. Co maji ale spolecneho s moduly?
25.3.2004 14:52 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše hotplug problem
udev jen vytváří zařízení a pokud nechceš nějaký extra nastavení (persistetní jména pro konkrétní věci a podobně) tak to funguje okamžitě po instalaci (nebo aspoň na Debianu :-)).
25.3.2004 14:50 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše hotplug problem
Hotplug nijak nesouvisí s uspáním pc, odstraňování modulů musí řešit to, co uspává PC. V SUSE se seznam modulů pro odstranění/nahrání nastavuje v /etc/sysconfig/powersave/common a řeší to powersave_proxy. Jak je na tom Gentoo netuším....
25.3.2004 15:07 JUR
Rozbalit Rozbalit vše hotplug problem
aha, tak to jsem si myslel tedy spatne. Myslel jsem, ze to, co uspava pc rekne hotplugu,aby odpojil zarizeni a po probuzeni, rekne hotplugu aby je zase zapojil. Takze musim tedy apmd_proxy rict, aby pred uspanim pomoci modprobe -r vypnul usb a po probuzeni ho zase zapnul. Takhle to mam, takze se nic nezmeni. Myslel jsem, ze to mam jen provizorne a ne uplne spravne.

Dale bych se chtel zeptat, kde mam tedy rict, aby po vyndani pcmcia karty se odebraly potrebne moduly.

v etc/hotplug/ mam pouze tyto:
dasd.agent      
ieee1394.agent
net.agent
scsi.agent
usb.agent
firmware.agent 
input.agent  
pci.agent  
tape.agent
25.3.2004 15:21 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše hotplug problem

Pro pcmcia se IMHO používá pci.agent, takže tam přidat (upravit) remove akci. Mohlo by to vypadat nějak takhle:

pci_map_modules < $MAP_CURRENT
for MODULE in $DRIVERS ; do
rmmod $MODULE
done

To jsem teď napsal do prohlížeče, takže netuším, jestli to vůbec může fungovat :-))

25.3.2004 15:46 JUR
Rozbalit Rozbalit vše hotplug problem
jeste nechapu jak to pozna, ze tam je ta, ci ona pcmcia karta -- ktera se vyndala? A take nevim, kam bych mel tu remove akci napsat. Nasel jsem jeste soubor pci.rc -- co ten dela?

#!/bin/sh
# vim: syntax=sh
#
# pci.rc        mostly to recover lost boot-time pci hotplug events
#
# $Id: pci.rc,v 1.7 2003/06/06 18:27:23 dbrownell Exp $
#

PATH=/sbin:/bin:/usr/sbin:/usr/bin

cd /etc/hotplug

. hotplug.functions

sys_file ()
{
    cut -f2 -dx $DEVICE/$1
}

pci_boot_events ()
{
    #
    # FIXME on 2.5, /sys/bus/pci/devices gives some of this
    # information, and more can be gotten with 'lspci'.
    # don't expect pcimodules to exist!!
    #
    LISTER=`type -p pcimodules`
    if [ "$LISTER" = "" -o ! -f /proc/bus/pci/devices -o ! -x pci.agent ]; then
            echo $"** can't synthesize pci hotplug events"
            return 1
    fi

   # make sure the pci agent will run
    ACTION=add
    PCI_CLASS=0
    PCI_ID=0:0
    PCI_SLOT=0:0.0
    PCI_SUBSYS_ID=0:0
    export ACTION PCI_CLASS PCI_ID PCI_SLOT PCI_SUBSYS_ID

    case $KERNEL in
        2.5*|2.6*)
            for DEVICE in /sys/bus/pci/devices/*; do
                PCI_CLASS=`sys_file class`
                PCI_ID=`sys_file vendor`:`sys_file device`
                PCI_SLOT=`echo $DEVICE | cut -d: -f2-`
                PCI_SUBSYS_ID=`sys_file subsystem_vendor`:`sys_file subsystem_device`
                /sbin/hotplug pci
            done
            ;;
        2.4*)
        # these notifications will be handled by pcimodules
        for BUS in `cd /proc/bus/pci;find * -type d -print`; do
            for SLOT_FUNC in `cd /proc/bus/pci/$BUS; echo *`; do
                PCI_SLOT=$BUS:$SLOT_FUNC
                : hotplug pci for $PCI_SLOT
                /sbin/hotplug pci
            done
        done
        ;;
    esac
}

# See how we were called.
case "$1" in
  start)
        pci_boot_events
        ;;
  stop)
        # echo $"pci stop -- ignored"
        ;;
  status)
        echo $"PCI Status for kernel: "  `uname -srm`
        echo ''


        if [ -f /proc/bus/pci/devices ]; then
            COUNT=`ls /proc/bus/pci | wc -l`
            if [ $COUNT -gt 1 ]; then
                COUNT=`expr $COUNT - 1`
                echo $"PCI up; bus count is $COUNT"
                if [ -x /sbin/lspci ]; then
                    /sbin/lspci
                fi
            else
                echo $"no PCI busses?"
            fi
            echo ''
        else
            echo $"no PCI /proc support?"
        fi
        echo ''

        ;;
  restart)
        # always invoke by absolute path, else PATH=$PATH:
        $0 stop && $0 start
        ;;
  *)
        echo $"Usage: $0 {start|stop|status|restart}"
        exit 1
esac



na co je /etc/pcmcia/config? nasel jsem tam zaznam o sve karte:

card "Xircom R2BEM56G-100 CardBus 10/100 Ethernet + 56K Modem" version "Xircom", "*", "R2BEM56G" bind "tulip_cb" to 0, "serial_cb" to 1

na co tam je?

jeste jsem zjistil, ze kdyz vyndam wifi kartu(moduly orinoco_cs,orinoco) tak se moduly z jadra automaticky odstrani, ale kdyz vyndam tu xircom, tak tam zustanou. A take me vadi, ze kdyz vyndam wifi kartu a zastrcim tu xircom, tak musim znovu nastavit pomoci ifconfig sit. Ale kdyz vyndam wifi a znovu ji zandam, tak sit se sama zase nahodi.

JUR
25.3.2004 16:53 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše hotplug problem
jeste nechapu jak to pozna, ze tam je ta, ci ona pcmcia karta -- ktera se vyndala?

Kernel hotplugu preda informace o tom co přibylo/bylo odstraněno.

A take nevim, kam bych mel tu remove akci napsat.

Do pci.agent.

Nasel jsem jeste soubor pci.rc -- co ten dela?

Ten se spouští po nabootování, pro natažení modulů pro existujícíc věci na pci.

na co je /etc/pcmcia/config?

Netuším, pcmcia jsem nikdy nepoužíval a navíc se u mě ani nevyskytuje :-)

O nahazování/shazování sítě by se měl starat net.agent...
25.3.2004 19:32 JUR
Rozbalit Rozbalit vše hotplug problem
co tedy presne mam upravit v pci.agent?

tohle mam pridat na konec? pci_map_modules < $MAP_CURRENT for MODULE in $DRIVERS ; do rmmod $MODULE done

ja to upravit pro tu moji XIRCOM?

Moc se jeste v Linuxu nevyznam (zacal jsem poradne teprve pred 3 mesici)

Vadi, kdyz notebook uspim ve spanku vyndam wifi pcmcia kartu a vlozim tu xircom lan? a probudim ho? Mne se totiz pokazde zasekne, protoze moduly pro orinoco wifi zustanou natazene a tudiz i je aktivovano rozhrani eth0. a nahle tedy pribudou i moduly k te xirco a take rozhrani eth0 ... Pokazde system zatuhne .... tohle bych asi nemel delat co? Melo by se nejdriv to rozhrani eth deaktivovat?
25.3.2004 19:54 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše hotplug problem
Na konci pci.agent je
case $ACTION in

    add)
[...]
    remove)
Tak za to remove ... pokud to tam neni, tak to do toho case pripis...
26.3.2004 16:44 JUR
Rozbalit Rozbalit vše hotplug problem
Tak jsem to tam vlozil, ale porad nic.
case $ACTION in

add)
    pci_convert_vars

    LABEL="PCI slot $PCI_SLOT"

    # on 2.4 systems, modutils maintains MAP_CURRENT
    if [ -r $MAP_CURRENT ]; then
        load_drivers pci $MAP_CURRENT "$LABEL"
    fi

    if [ "$DRIVERS" == "" ]; then
        mesg "... no modules for $LABEL"
        exit 2
    fi
    ;;

remove)
    pci_map_modules < $MAP_CURRENT
    for MODULE in $DRIVERS ; do
    rmmod $MODULE
    done

*)
    debug_mesg PCI $ACTION event not supported
    exit 1
    ;;

esac

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.