USB құрылғысын пернетақтадан қолыңызды алмай-ақ ажыратудың және қосудың 5 әдісі

Көптеген жағдайларда, біз компьютерімізді қолданып жатқанда, USB құрылғысын ажыратамыз (қауіпсіз болуы керек), содан кейін бірден файлды көшіруді ұмытып кеткенімізді немесе деректер сақталғанына көз жеткізгенімізді түсінеміз. біздің қондырғы. Бұл жағдайларда қашықтан жұмыс істегенде USB дискілерін іс жүзінде ажырату өте пайдалы.

Құрылғыны шығарғаннан кейін, біз оны құрылғылар тізімінде көрмейміз, бірақ қатты диск немесе pendrive USB порты арқылы жалғасуда және бүгінгі күні көптеген дистрибутивтерде, дискіні қауіпсіз шығарып алғаннан кейін, біз құрылғыны да көрмейміз және Біз жасай алмаймыз аспаның біздің терминалдан. Ең жылдам шешім - кабельді ажырату және оны қайта қосу, кейбір жағдайларда тұруға тура келетін еріншектікке байланысты немесе біз компьютерге кіріп отырғандықтан, біз алдымызда емеспіз және айналамызда ешкім жоқ, біз оны жасай алмаймыз .

USB құрылғылары туралы ақпарат

Бастамас бұрын, жүйеге қосылған USB құрылғылары туралы ақпаратты қалай алуға болатынын қарастырайық. Бұл үшін біз пайдалана аламыз lsusb, ол қазір қосылған құрылғылардың тізімін береді. Мен дәл қазір компьютерімде алатын нәрселердің мысалдарын қоямын, бірақ ол сіз алатыннан мүлде өзгеше болуы мүмкін:

$ lsusb Bus 002 құрылғысы 001: ID 1d6b: 0003 Linux Foundation 3.0 түбірлік хабы Bus 001 құрылғысы 006: ID 8087: 0a2a Intel Corp. Bus 001 Device 007: ID 046d: c52b Logitech, Inc. : 001 Terminus Technology Inc. Hub Bus 005 құрылғысы 1: ID 40f: c0101a A-DATA Technology Co., Ltd. 001GB Pen Drive Bus 010 Device 125: ID 93f4: b001 Chicony Electronics Co., Ltd Автобус 003 Device 04: ID 2d424b : 001 Linux Foundation 001 түбір хабы

Егер көбірек ақпарат алғымыз келсе, модульдер туралы ақпараты бар ағаш түріндегі шығуды көрсететін -t модификаторын қолдана аламыз:

$ lsusb -t /: Автобус 02. 1-порт: Dev 1, Class = root_hub, Driver = xhci_hcd / 8p, 5000M /: Bus 01.Port 1: Dev 1, Class = root_hub, Driver = xhci_hcd / 16p, 480M | __ 4-порт: Dev 3, 0 болса, Class = Video, Driver = uvcvideo, 480M | __ Порт 4: Dev 3, 1, Class = Video, Driver = uvcvideo, 480M | __ 5-порт: Dev 10, 0, егер 480 = Mass Storage, Driver = usb-storage, 6M | __ 5 порт: Dev 0, егер 4, Class = Hub, драйвер = hub / 12p, 4M | __ 7 порт: Dev 0, 12 болса, Class = Адамның интерфейс құрылғысы, Драйвер = usbhid, 4M | __ Порт 7: Dev 1, If 12, Class = Адам интерфейсінің құрылғысы, Driver = usbhid, 4M | __ Порт 7: Dev 2, If 12, Class = Адам интерфейсінің құрылғысы, Driver = usbhid, 9M | __ 6-порт: Dev 0, егер 12, Class = сымсыз, драйвер = btusb, 9M | __ порт 6: Dev 1, егер 12, Class = сымсыз, драйвер = btusb, XNUMXM

Егер біз көбірек ақпарат алғымыз келсе, оны пайдалана аламыз lsusb -v (шығыс өте үлкен), біз, мысалы, құрылғыға жеткізілетін максималды қуатты келесі жолмен біле алдық:

$ lsusb -v 2> / dev / null | egrep «^ Bus | MaxPower» Bus 002 Device 001: ID 1d6b: 0003 Linux Foundation 3.0 root hub MaxPower 0mA Bus 001 Device 006: ID 8087: 0a2a Intel Corp. MaxPower 100mA Bus 001 Құрылғы 007: ID 046d: c52b Logitech, Inc. Біріктіретін қабылдағыш MaxPower 98mA Bus 001 Device 005: ID 1a40: 0101 Terminus Technology Inc. Hub MaxPower 100mA Bus 001 Device 010: ID 125f: c93a A-DATA Technology Co., Ltd. 4GB Pen Drive MaxPower 480mA Bus 001 Device 003: ID 04f2: b424 Chicony Electronics Co., Ltd MaxPower 500mA Bus 001 Device 001: ID 1d6b: 0002 Linux Foundation 2.0 түбір хабы MaxPower 0mA

Басқа өте пайдалы командалар usb-құрылғылар, hwinfo, немесе, мысалы, бізде құрылғының жолы болса (ішінде / dev /), біз жүйеден ол туралы және ол өтуі керек ішкі жүйелер туралы барлық мүмкін ақпаратты сұрай аламыз. Мысалы, егер біз USB қатты дискісін қосатын болсақ, құрылғының қалай пайдаланылатынын білу үшін бізге SCSI драйвері қажет (for / dev / sdX), сонымен қатар USB жад драйвері қажет, ол жұмыс істейтін PCI портына қосылған хабқа жататын USB порты, басқа аралық жүйелермен қатар. Біз бәрін көре алдық

$ udevadm info --query = path --name = / dev / sdX --attribute-walk

o

$ udevadm ақпараты -n / dev / sdX

Егер біз ниет білдіргіміз келсе, біз де кіре аламыз / sys / bus / usb және бардың бәріне көз жүгіртіңіз, біз көптеген ақпаратты көреміз, бірақ бақытымызға орай жоғарыда келтірілген командалар барлық ақпаратты жіктейді.

Артықшылықтар мен құрылғылар

Бұл тапсырманы орындау үшін біз қандай құрылғыға баратынымызды білуіміз керек қайта қосыңыз. Ол үшін біз жүгіре аламыз:

$ dmesg | tail [сре 24 қараша 19:50:04 2016] sd 7: 0: 0: 0: тіркелген scsi generic sg3 типі 0 [798339.431677] sd 7: 0: 0: 0: [sdc] 15806464 512 байттық логикалық блоктар: ( 8.09 GB / 7.54 GiB) [798339.431840] sd 7: 0: 0: 0: [sdc] Write Protect өшірілген [798339.431848] sd 7: 0: 0: 0: [sdc] Mode Sense: 00 00 00 00 [798339.431988] sd 7: 0: 0: 0: [sdc] кэш туралы деректерді сұрау сәтсіз аяқталды [798339.431996] sd 7: 0: 0: 0: [sdc] Драйвтың кэшін қабылдау: [798339.434157] арқылы жазу: sdc: sdc1 sdc2 [798339.446812] sd 7 : 0: 0: 0: [sdc] SCSI алынбалы дискісі [798360.808588] ISO 9660 кеңейтімдері: Microsoft Joliet 3-деңгей [798360.809353] ISO 9660 кеңейтімдері: RRIP_1991A

Бұл шығарылымда біз жұмыс істейтін құрылғы екенін көреміз sdc (sdc1 және sdc2 осы дискідегі бөлімдер болады). Мысалдар үшін мен бұл құрылғыны қолданамын, сіздің жағдайыңызда сізде қандай шот бар екенін елестету керек болады.

Төмендегі мысалдарда мен қолданамын sudo артықшылықтары бар командаларды орындау үшін түбір. Бірақ жеткілікті рұқсаты бар пайдаланушы болса жеткілікті. Егер біз қажетті артықшылықтарды көргіміз келсе, оны жасаңыз ls құрылғыға:

$ ls -latr / dev / sdc brw-rw ---- 1 түбірлік диск 8, 32 қараша 24 19:50 / dev / sdc

Онда біз иесінің түбір және топ екенін көреміз Диск. Топтық дискіге жататын пайдаланушының болуы жеткілікті.

Әдіс 1. Оны CD / DVD сияқты ұстаңыз

Бұл бәрінен қарапайым. Егер сіз GNU / Linux-ді бірнеше жылдар бойы қолданған болсаңыз, CD-ROM немесе DVD дискісімен жұмыс жасағанда сіз шығару командасын қолданған боларсыз. Шығару CDROM-ды ашу үшін, ал шығару н-науаны жабу үшін қолданылды. Егер біз мұны USB құрылғысынан бұрын жасасақ:

$ sudo eject -t / dev / sdc

Құрылғы біз оны қайта қосқандай көрінуі керек.

2-әдіс. Ажыратылған және виртуалды жалғанған

Кейбір жүйелерде (аппараттық құрал оны қолдайтын болса), USB құрылғысын қауіпсіз шығарып алғанда, құрылғы ток бермейді және құрылғы пайда болмайды. Бұл сіз жасаған кездегідей:

udisksctl өшіру -b / dev / sdc

Бұл жағдайда, / dev / sdc бұл менің құрылғым, және осы команданың көмегімен виртуалды қуат ажыратуды имитациялады.

Мәселе мынада: қазір / dev / sdc жоқ, одан да көп, егер dmesg-ге қарасақ, біз келесідей нәрсе аламыз:

$ dmesg | құйрық [281954.693298] usb 1-5: USB ажырату, құрылғы нөмірі 3

Сондықтан біз әдісі бойынша тырыссақ шығару ол жұмыс істемейді. Ескерту usb 1-5 және не үшін екенін жақын арада білетін боламыз.

Егер сіз қашықтан жұмыс жасасаңыз, бұл жақсы идея болуы мүмкін. Сақтық көшірмелерді жасау үшін сізде USB дискілері қосылған деп елестетіп көріңіз. Көшірмелерді жасаған кезде жүйенің дискілердің қосылғанын білгені жақсы, бірақ біз оларды пайдаланбайтын болсақ, бір жағынан энергияны үнемдеу және дискінің тозуын болдырмаңыз, сондықтан керісінше токты кесіп тастаған дұрыс, зиянды қолданбалардың олардың бар екенін көруін қаламаймыз жұқтырмас үшін бұл дискілер. (Иә, GNU / Linux-те вирустар бар).

Біз қазір токты қалай қосамыз?

Біз USB портына қоңырау шалуымыз керек, ол үшін жоба бар қуаттылық (Мен түпнұсқа жобаның шанышқысына сілтеме жасаймын, себебі бұл жерде біз қалағанды ​​ғана емес, көптеген құрылғылардан ток алып тастайтын қате жойылды). Көптеген жобалар бар (мысалы uhubctl), бірақ мұнда бізде hubpower.c файлын құрауға байланысты ешқандай тәуелділік жоқ.
Біріншіден, біз оны құрастырамыз,

$ gcc -o hubpower hubpower.c

Енді, сандарынан қарамен жазылған сандар есіңізде ме dmesgБіз оларды қолданамыз, құрылғыны ажыратып, оны қайта қосу керек болады:

$ sudo ./hubpower 1: 1 қуат 5 өшіру порт 5 күйі: 0000 қуат өшіру $ sudo ./hubpower 1: 1 қуат 5 порт 5 күйі: 0100 қосылу

Егер құрылғы бізді анықтамаса, біз:

$ sudo ./hubpower 1: 1 байланыстыру драйверінің сұранысы ядроға жіберілді

Осылайша, біз қосылған USB құрылғысын қайтадан көретін боламыз.

Егер біз C бағдарламасын қаламасақ ... Менде бұл перлде бар

С бағдарламасын құрастыру қиын және егер біз не істейтіндігімізді тексеретін болсақ, сондықтан біз осы шағын портты 10 жолмен perl түрінде жасап көрейік:

#! / bin / perl «sys / ioctl.ph» талап етеді; $ device = «05«; ашық (my $ usbdev,»> «,» / dev / bus / usb/ 001/001 «); $ data = pack («H *», «23010800». $ device. «000000FFFFFF8813»); ioctl ($ usbdev, 0xC0185500, $ деректер); $ data = pack («H *», «23030800». $ device. «000000FFFFFF8813»); ioctl ($ usbdev, 0xC0185500, $ деректер); жабу ($ usbdev);

Біз сыйлауымыз керек $ device, порт нөмірі (менің жағдайда ол 5 болған), бұл оналтылық мән, сондықтан 10 A, 11 B, 15 F, 16 10 болады ... Сонымен, біз құрылғыны бақылауымыз керек және / dev / bus / usb / кіретін автобус001/001, біз бұл файлға қоңырау шалып жатқандықтан, сандар жетекші нөлдермен бірге болуы керек.

Көріп отырғанымыздай, кілт ioctl () -де, бұл файлдық жүйеде құрылғының параметрлерін арнайы файлдан басқаратын функция. Қолданылатын оналтылық мәндердің ішінен біз табамыз 0хС0185500, тұрақты USBDEVFS_CONTROL деп аталады, оның көмегімен біз USB құрылғысына басқару пәрменін жібереміз, Қалған кодтар ажырату және қосылу сұранысына жатады (қосымша ақпаратты C тілінде таба аласыз).

Әдіс 3. Құрылғыны жасыру және көрсету

Құрылғыны ажыратудың тағы бір әдісі:

echo '1-5' | sudo tee / sys / bus / usb / drivers / usb / unbind

Біз мұны қалпына келтіре аламыз:

echo '1-5' | sudo tee / sys / bus / usb / drivers / usb / bind

Бұл әдіс құрылғының толық ажыратылуына әкелмейді. Бұл тек амалдық жүйені онымен сөйлеспеуге мәжбүр етеді және көптеген құрылғылар компьютер олар туралы ештеңе білгісі келмегенде, қуаты аз режимге қосылады, өйткені біз ешнәрсе сұрамаймыз.

4-әдіс. Құрылғыны авторизациялау

Бұл әдістің минусы - көптеген жүйелерде уақытша ажыратылатын көптеген құрылғылар болуы мүмкін, бұл бізге қажет нәрсе ғана емес, сонымен қатар біз бүкіл USB хабына шабуыл жасаймыз. Мысалға:

$ echo 0 | sudo tee / sys / bus / usb / devices / usb1 / авторизацияланған $ echo 1 | sudo tee / sys / bus / usb / devices / usb1 / авторизацияланған

Әрине, біз бәрін қатарынан орындай аламыз:

$ echo 0 | sudo tee / sys / bus / usb / devices / usb1 / авторизацияланған; жаңғырық 1 | sudo tee / sys / bus / usb / devices / usb1 / авторизацияланған

Егер бізде бір USB портына қосылған дискілер көп болса (және біздің компьютерлерде әрдайым дерлік болса, біз көргеннен бірнеше USB порттары хабқа ішкі байланысты, сондықтан бірдей USB порттарының топтары бар) әке, оны қандай да бір жолмен қойыңыз.

5-әдіс. USB ішкі жүйесін қайта жүктеңіз

Егер біз USB ішкі жүйесін қайта қосқымыз келсе. Яғни, бәрін ажырату және қосу сияқты барлық USB құрылғыларын жаңартыңыз, бір жағынан USB ядросының модулін жүктеп, қайта жүктей аламыз:

$ sudo modprobe -r ehci_hcd; sudo modprobe ehci_hcd # USB2 үшін $ sudo modprobe -r xhci_hcd; sudo modprobe xhci_hcd # USB3 үшін

Ubuntu және оның туындыларының кейбір таралымдарында соңғы нұсқалары бар кіріктірілген USB модульдері және оларды жүктеу мүмкін емес. Екінші жағынан, жүйе оларды жүктеуге мүмкіндік бермеуі мүмкін, өйткені олар басқа модульдерге байланысты (принтерлер, сақтау орны, интерфейс құрылғылары және т.б.), ал егер біз модульдерді жүктеп, заттарды бұза бастасақ, бізге соңында компьютерді қайта қосыңыз. Сонымен, басқа жолмен біз мынаны жасай аламыз:

$ echo '0000: 00: 14.5'| sudo tee / sys / bus / pci / drivers / xhci_hcd / unbind $ echo '0000: 00: 14.5'| sudo tee / sys / bus / pci / drivers / xhci_hcd / bind

Құрылғымызды табу үшін / sys / bus / pci / drivers / xhci_hcd ішінде ls жасай аламыз, бірнеше нәрсе пайда болады, біз осындайды іздеуіміз керек ааа: bb: cc: dd.e. Сіздің USB портыңыз xhci_hcd (USB3) түрінде емес, керісінше ehci_hcd (USB2) түрінде келуі мүмкін


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

14 пікір, өз пікіріңізді қалдырыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады.

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.

  1.   Кристиан дижо

    Тамаша мақала!

    1.    газпарфм дижо

      Кристианға көп рахмет! Сізге бұл пайдалы болды деп сенемін.

  2.   Антонио Хуан дижо

    Бұл мақалада сіз оны қайда салғыңыз келсе, сол жаққа қарама-қарсы жақта орналасқан және оны айналдыру керек деп айтпайды ... хехех. Керемет мақала.

    1.    газпарфм дижо

      Антонио Хуанға рахмет! Қараңызшы, мен постқа салғанның бәрін сынап көргенімде менімен қанша рет болғанын білмейсіз! 🙂

  3.   ROMSAT дижо

    Жарқын. Жоғары деңгейлі зат. Оны атау керек: «USB-таяқшаны ағытып, қосу арқылы Linux жүйесі туралы біліңіз». Құттықтаймын.
    Малагадан сәлем!

    1.    газпарфм дижо

      Иә, біреу С-де бағдарламалауды және құрылғыларға кіруді осы жазбадан бастайтынын білмеймін! Сондай-ақ Малагадан !! Біз барлық жерде are

  4.   HO2Gi дижо

    Әсерлі мақала. Сіз осындай материалмен шектен шығып кеттіңіз.

    1.    газпарфм дижо

      Рахмет HO2Gi !! Менің жеке блогымда ( http://totaki.com/poesiabinaria ) сонымен қатар көптеген стиль оқулықтары бар 🙂

  5.   Атахуалпа дижо

    үлкен рахмет досым. Мен Linux-тен бастаймын, атап айтқанда Linux жалбызынан және менде келесідей мәселе бар: консольде менің телефоным машинаға қосылғанын көремін, бірақ файл менеджерінде жоқ. Сондықтан мен оны интернетке қосылу үшін модем ретінде қолдана алмаймын. Мен не істей аламын?

    1.    Гаспар Фернандес дижо

      Модем ретінде қосылуға мүмкіндік бермейтін телефондар бар, бірақ сіз Tethering жасай аласыз

  6.   Milazzo дижо

    Керемет құжаттама!
    Тәжірибемен бөлісуге уақыт бөлгеніңіз үшін рақмет.
    Мен оны проблеманың басқа түріне сілтеме ретінде қолданамын: Ubuntu-дағы USB порттарын ажырату (№ 42 ~ дәл1-Ubuntu SMP сәрсенбі 14 тамыз 15:31:16 UTC 2013)
    Жүйе dmesg-ге -110 жіберіп, компьютерді қайта іске қосатын уақыт келеді, бұл сәтсіздік құрылғы қосылған жерде USB-де қуаттың болмауына байланысты болады (USB3.0).

    Енді мен құрылғының қуат деңгейін тексеру үшін lsusb -v-ді қолданамын, бірақ ол 2мА тастайды, бұл мүлдем ақылға қонымсыз ... тек жарық диодтары одан көп тұтынады ...

    Мен huawei E4 USB-8372G модемін қосамын, алайда максималды қуат 2мА көрсетеді, бұл керемет, енді күмән өзгерді және басқалары пайда болды:
    MaxPower құрылғыда немесе ОЖ-де әдепкі бойынша келетін атрибут па?
    Бұл usb порты жеткізетін максималды қуат параметрі ме?
    Параметр болған жағдайда
    Бұл параметрді USB порты (900mAh- 3.0 / 500mAh- 2.0) беретін максимумға өзгертуге бола ма?
    Егер параметр болмаса,
    Бұл USB тұтынудың нақты уақыттағы өлшеу мәні ме (мүмкін емес)?
    Егер бұл басқа нұсқа болса, маған түсіндіріп беріңіз, өйткені мен анықтамалық ақпаратқа күмәнданамын.

    Осы MaxPower мәніне қатысты бірнеше күмәнім бар, егер сізде қосымша ақпарат болса, мен өте ризамын.

    lsusb -v 2> / dev / null | egrep «^ Bus | MaxPower | bDeviceClass | iProduct»

    Автобус 002 құрылғысы 006: ID 1a86: 7523 QinHeng Electronics HL-340 USB-сериялық адаптері
    bDeviceClass 255 жеткізушінің арнайы класы
    iProduct 2 USB2.0-сериялық
    MaxPower 96mA
    Автобус 002 Құрылғы 008: ID 12d1: 14db Huawei Technologies Co., Ltd.
    bDeviceClass 2 байланыстары
    iProduct 2 HUAWEI_MOBILE
    MaxPower 2mA

  7.   Anonimo дижо

    Оны терезелерге қолдануға бола ма?

  8.   Чело дижо

    Көп рақмет. Сыртқы дискідегі udisksctl өшіру -b / dev / sdc көмегімен бас ауруын шешу жеткілікті болды. Мұны монтаждаушы өзі істейтін мүмкіндігі болса жақсы емес пе?

  9.   Мариса дижо

    Құдай -ай, не деген сұмдық! Осы өсиетті толық оқыған адам бар ма? Пластинадан кейін біз DAC / USB дыбыстық интерфейсін, принтерді, графикалық планшетті қалай өшіру керектігін білмейміз. Қандай уақыт жоғалту ...

bool(шын)