USB ෆ්ලෑෂ් ඩ්‍රයිව් එකක් යනු කුමක්ද?


162

මට USB ධාවකයක් සවි කිරීමට අවශ්‍යයි, ඒවායින් දෙකක් සහ මට වෙනස් සවි කිරීම් දෙකක් අවශ්‍යයි. අවාසනාවකට මෙන්, ලිනක්ස් කර්නලය නම වෙනස් කිරීමකට භාජනය වූ /devඅතර නිවැරදි ස්ථානය කුමක්දැයි මට සිතාගත නොහැක . බැලීම එහි ක්රමයක් dmesgහෝ /procnode එකක් මතම ඊට අදාල, USB ධාවකය වන උපාංගය සොයා ගැනීමට හෝ වෙන කොහේ හරි.

(මම ArchLinux භාවිතා කරන්නේ එය කිසියම් උදව්වක් නම් ... /dev/sdaපළමු දෘ hard තැටිය, ඩීවීඩී /dev/sr0ධාවකය යනාදියයි)

සංස්කරණය කරන්න: USB ධාවකය USB කේන්ද්‍රස්ථානයකට සම්බන්ධ කර ඇත. මම බැලූ විට dmesgඑය කේන්ද්‍රය සම්බන්ධ වී ඇති බවත් එය සම්බන්ධ කර ඇති උපාංග 3 සඳහා එය පරිලෝකනය කළ බවත් පවසයි. මගේ USB ධාවකය කොතැනදැයි තවමත් නොපෙනේ.


1
එය නොපෙනේද? සමහර විට ටිකක් ඉන්න. නැතහොත් වෙනත් USB පෝට් එකක් උත්සාහ කරන්න. 'Lsusb' හි ඇති වෙනස්කම් මොනවාදැයි බලන්න
නික්

ප්‍රශ්නය තරමක් නැවත ලිවීමට අවශ්‍ය විය හැකිය - සියලුම usb උපාංග තැටි නොවේ.
අරෆන්ජියන්

3
මෙම dfවිධානය සංදර්ශන, එය හොඳින් සවි කරමින් සිටි ඔබ
විල් අදහස් වාරණයක් සිදු

Answers:


84

පහසුම ක්‍රමය: dmesgUSB උපාංගය සම්බන්ධ කිරීමෙන් පසු ප්‍රතිදානය දෙස බලන්න . එය ඔබට /devපවරා ඇති නෝඩ් එක පෙන්විය යුතුය .


4
dmesgවිශිෂ්ට ලෙස ක්‍රියා කරයි, නමුත් මට නඩුව dmesgනොපෙන්වන අවස්ථාවක් තිබේ /dev: [421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcdමෙහි තේරුම කුමක්ද? මෙම උපාංගය සවි කරන්නේ කෙසේද? උපාංගය දර්ශනය වේ lsusb...
මොඩියුලිටෝස්

1
ඇත්තටම, මම ඒක හොයාගත්තා. මගේ අවසන් නැවත පණගැන්වීමෙන් පසුව කර්නල් යාවත්කාලීන කිරීමක් මෙම ගැටළුවට හේතු විය. නැවත පණගැන්වීමෙන් පසු, මගේ යූඑස්බී සවිකර තිබේ. මෙය යමෙකුට උපකාරී වේ යැයි සිතමු!
modulitos

55

ඔබ udev ධාවනය කරන තාක් කල් , ඔබට / dev / disk / by-id / usb- නිෂ්පාදකයාගේ නම _ serialnumber සඳහන් කිරීමෙන් ඔබට මෙය පහසුවෙන් කළ හැකිය . මේවා සංකේතාත්මක සබැඳි ලෙස දිස්වන අතර එය ඔබට ඔබේ fstab තුළ කෙලින්ම යොමු කළ හැකිය, නැතහොත් ආශ්‍රිත වාරණ උපාංගය තීරණය කිරීම සඳහා ඔබට readlink -e භාවිතා කර විරූපණය කළ හැකිය .

මෙන්න සැබෑ ලෝක උදාහරණයක්. මගේ යන්ත්‍රයේ, මට USB දෘ hard තැටි 3 ක් සම්බන්ධ කර ඇත. මේ සෑම එකක්ම අද්විතීය අනුක්‍රමික අංක සහිත / dev / disk / by-id වලින් පෙන්වයි (ඒවා පොදු නිෂ්පාදක නූලක් බෙදා ගත්තද). මම මෙම එක් එක් සුවිශේෂී ඇතුළත් කිරීම් තුනට සංකේතාත්මක සබැඳි නිර්මාණය කර ඇති අතර, දැන් කියවීම් - සම්බන්ධක නාමය ධාවනය කිරීමෙන් කුමන ධාවකය (සහ එක් එක් ධාවකය සමඟ සම්බන්ධ වන්නේ කුමන උපාංගයද ) යන්න ඉක්මනින් තීරණය කළ හැකිය . උදාහරණයක් ලෙස, මගේ යන්ත්‍රයේ කියවීම් සබැඳිය -e / root / disk2 ධාවනය කිරීමෙන් දැනට " / dev / sde " දර්ශනය වන අතර readlink -e / root / disk3 කිසිදු ප්‍රතිදානයක් ලබා නොදේ.


15
කෙටි හා සරලව:for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done
ෆෙලිපේ අල්කාසිබාර්

54

මේ සියල්ලම හොඳ යෝජනා වේ, නමුත් ඉක්මන් හා අවම වාචික ක්‍රමය වන්නේ පර්යන්තයේ පහත සඳහන් දේ ටයිප් කිරීමයි:

mount

එය සවිකර ඇති සියලුම උපාංග ලැයිස්තුවක් ලබා දෙනු ඇත (මෙය උපකල්පනය කරන්නේ USB ධාවකය සවිකර ඇති අතර එය සාමාන්‍යයෙන් නූතන ලිනක්ස් ඩිස්ට්‍රෝස් වල තත්වයයි).


6
නැත, එය ඔබගේ උපාංගය ඉන්ද්‍රජාලිකව සවි නොකරයි. ඔබ එය සමඟ නියම කළ යුතුය mount /dev/id /mount/point, එවිට එය ක්‍රියා නොකරයි.
පොලිම්

10
මගේ පිළිතුර පරිශීලකයාගේ ප්‍රශ්නයට ආමන්ත්‍රණය කරයි 'dmesg හෝ / proc හරහා හෝ වෙනත් තැනකින් බැලීමට ක්‍රමයක් තිබේද? එය කුමන උපාංග නෝඩ් එකක් USB ධාවකයක්ද යන්න සොයා ගැනීමට.', සහ ලිනක්ස් යටතේ ධාවකයක් සවිකිරීමේ ප්‍රායෝගිකභාවය පිළිබඳ මග පෙන්වීමක් ලබා දීමට අදහස් නොකෙරේ. .
දිගු පරිශීලක නාමයක්

මෙම පිළිතුර මට බොහෝ දුරට සමාන ප්‍රශ්නයක් විසඳීය.
මැතිව් බ්‍රවුන් හෝ සාමිවරයා මැට්

1
මම හිතන්නේ ස්වයංක්‍රීය හැසිරීම ඩිස්ට්‍රෝ වර්ගය මත රඳා පවතී.
jiggunjer

1
dfමමත් හිතනවා.
ඇලෙක්සි

26

ඔබේ තැටියට යන මාර්ගය udevinfo -q all -n /dev/sdaකොහේදැයි විධානය උත්සාහ කරන්න /dev/sda. මෙය ඔබ සොයන තැටිය පිළිබඳ තොරතුරු බෝට්ටුවක් ලබා දෙයි - එය සම්බන්ධ කර ඇති බස් රථය ගැන ඔබට පවසන ප්‍රවේශයක් ඇත.

ඇත්ත වශයෙන්ම මෙය dmesg සහ / හෝ ලොග් හරහා ග්‍රහණය වීමෙන් ඔබව ගලවා ගනී.

යාවත්කාලීන කරන්න

udevadm info --query=all -n /dev/sda 

අවම වශයෙන් ජුලි 2010 සිට [ 1 ] udevinfo ඩෙබියන් භාෂාවෙන් ආදේශ කර ඇත (සහ ව්‍යුත්පන්න කර ඇත්තේ) udevadm infoඉතා සුළු අස්ථිර භාවයකින් වන අතර එමඟින් සිම්ලින්ක්ස් ඉක්මනින් ඉවත් කර ඉවත් කරන ලදි (ඔබට ඒවා තවමත් යාවත්කාලීන නොකළ පැරණි යන්ත්‍රවලින් සොයාගත හැකිය). සෑම විටම [ 1 ] සිට අපට කියවිය හැකිය:

Udev 117 හි udevadmහඳුන්වා දුන් udevinfoඅතර අනෙකුත් වැඩසටහන් අනුකූලතා සමමුහුර්ත බවට පත් විය. Udev 128 හි සිම්ලින්ක් ඉවත් කර udev 147 හි හොඳ සඳහා ඉවත් කරන ලදී .


8
ඩේබියන් භාෂාවෙන් udevinfoනම් කර udevadmඇත.
ස්ටීව් පොමරෝයි

8
උබුන්ටු හි, විධානය "udevadm info --query = all -n / dev / sda" ලෙස පෙනේ
machineghost

මම හිතන්නේ ඔවුන් යම් අවස්ථාවක දී විධානය නැවත නම් කළා - මම පිළිතුර ලියන විට (මීට වසර
ගණනාවකට

අණ තවමත් උබුන්ටු වල ක්‍රියාත්මක වේ,udevadm info --query=all -n /dev/ttyUSB1
සිද්ධාර්ත්

1
udevadm info --query=all -n /dev/ttyUSBෆෙඩෝරා වලත්.
slm

23

සිදුවන්නේ කුමක්දැයි බැලීමට ඇති සරලම ක්‍රමය ටයිප් කිරීම පමණි (ඇත්ත වශයෙන්ම මුල ලෙස):

blkid -c /dev/null

සවිකර නොමැති වුවද සියලුම වාරණ උපාංග පිළිබඳ සම්පූර්ණ දළ විශ්ලේෂණයක් මෙය ඔබට ලබා දෙයි


සියලුම ඩිස්ට්‍රෝ වලට මෙය නොමැත. ඔබ භාවිතා කළේ කුමක්ද?
නිව් ඇලෙක්සැන්ඩ්‍රියාව

මෙය මගේ රාස්බියන් ඩිස්ට්‍රෝ හි කිසිවක් ප්‍රතිදානය නොකරයි.
ඉගෝර්ගනාපොල්ස්කි

විධානය හමු නොවීය: blkid
IgorGanapolsky

උබුන්ටු 14.04 64-බිට් මත මෙම විධානයෙන් ප්‍රතිදානයක් නොමැත.
gbmhunter

11

/dev/disk/by-* මෙම නඩුවේ ඇති පහසුම ක්‍රමය නම්, යම් හේතුවක් නිසා ඔබට ජීවිතය වඩාත් රසවත් කිරීමට අවශ්‍ය නම් ඔබට HAL භාවිතා කළ හැකිය.

ඔබ භාවිතා කරන සියලුම උපාංග ලැයිස්තුගත කිරීමට:

hal-device

ඔබ භාවිතා කරන නිශ්චිත දේපලක් ලබා ගැනීම සඳහා (මෙය /dev/sd*USB ආචයන උපාංගයක් මත නැවත පැමිණේ ):

hal-get-property --udi $UDI --key block.device

එසේම ඇත:

hal-find-by-capability
hal-find-by-property

ඔබට එය වඩාත් සංකීර්ණ කිරීමට අවශ්‍ය නම් ඔබට සාපේක්ෂව පහසුවෙන් ඔබට HAL මත පදනම් වූ ස්වයංක්‍රීය සවිකිරීමක් ලිවිය හැකිය, ඔබට දේවල් සම්පුර්ණයෙන්ම ස්වයංක්‍රීය කිරීමට අවශ්‍ය නම් එය බෙහෙවින් පහසුය .

සම්පූර්ණත්වය සඳහා ද තිබේ:

lsusb -v
lshw

එමඟින් USB සහ පොදුවේ ඔබේ දෘඩාංග පිළිබඳ සාමාන්‍ය තොරතුරු සපයයි.


2
/ dev / disk / by-id / * usb * ඉතා ප්‍රයෝජනවත් වේ.
රොබ්

/ dev / disk / by-label ftw. ස්තූතියි :)
ට්‍රිප්ටිච්

10
sudo fdisk -l

ප්‍රති result ලය විශ්ලේෂණය කරන්න.


1
fdisk man page "උපාංග කිසිවක් ලබා දී නොමැති නම්, / proc / කොටස් වල සඳහන් කර ඇති ඒවා තිබේ නම් (භාවිතා වේ නම්)." Fdisk ධාවනය කිරීම විකල්පයක් නොවිය හැකිය ... එක් ඩෙබියන් පද්ධතියක් මත පදනම්ව එය ස්ථාපනය කර නොමැති බව මගේ අනුමානය නම් සමහර GPT පද්ධති අනවශ්‍ය මෘදුකාංග ස්ථාපනය නොකරනු ඇත. කෙසේ වෙතත්, / proc / කොටස් පරීක්ෂා කිරීම විකල්පයක් විය යුතුය.
ටූගාම්

මට හොඳින් වැඩ කළ එකම විකල්පය මෙයයි. එය ඔබට ප්‍රයෝජනවත් නොවන්නේ නම් මට කණගාටුයි!
ෆෙලිපේ

8

භාවිත

ls -l /dev/disk/by-id/usb*

සුපුරුදු udev රීති යටතේ, එය ඔබට බොහෝ usb උපාංග පෙන්වනු ඇති අතර එය පද්ධතියේ ඒවායේ බ්ලොක්-උපාංග නාමයට සමමුහුර්ත පෙන්වයි.

එය ක්‍රියාත්මක නොවන්නේ නම්, /dev/disk/by-id/කෙලින්ම බලන්න .


7

USB උපාංග සඳහා ඔබට සරලව කළ හැකිය

REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
    if echo $(readlink -f "$_device")|egrep -q "usb"; then
        _disk=$(echo "$_device" | cut -f4 -d/)
        REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
    fi
done
echo Removable drives found: "$REMOVABLE_DRIVES"

1
+1. කාර්යය ස්වයංක්‍රීයව කිරීමට සරල හා සංක්ෂිප්ත පිටපතක්.
leesei

2

යට ඇති ගස දෙස බලන්න /dev/disk. එය විවිධ යෝජනා ක්‍රම මඟින් තැටි සහ ඒවායේ කොටස් (ගොනු පද්ධති) ලැයිස්තුගත කරයි.


2

/ var / log / message dmesg හි තවදුරටත් තොරතුරු නොමැති නම්.


0

ඔබ USB ධාවකය විසන්ධි කර එය නැවත ප්ලග් ඉන් කළහොත්, එය කර්නලයෙන් (dmesg) ආරම්භ වන බව ඔබට පෙනෙනු ඇත.


0

කුණාටු පහරින් ලැබෙන විශිෂ්ට පිළිතුර මත පදනම්ව සහ "/ dev / disk / by-id / usb" උපාංග ගස ජනගහනය කිරීම සඳහා udev මත යැපීම මත පදනම්ව, ඔබට පහත දැක්වෙන පරිදි පුරෝකථනය කළ හැකි (Bash) අර්ථ දැක්විය හැකිය:

is_usb_device() {
    local device_path=$1        # such as /dev/sdc
    for devlink in /dev/disk/by-id/usb*; do
        if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
            return 0
        fi
    done
    return 1
}

ඉන්පසු එය භාවිතා කරන්න:

if is_usb_device "/dev/sdg"; then
    echo "/dev/sdg is a usb device"
else
    echo "/dev/sdg is not a usb device"
fi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.