අලුතෙන් සාදන ලද එකක් ක්රියාත්මක වීමට හැකි වන පරිදි යමෙක් udev නීති රීලෝඩ් කළ යුත්තේ කෙසේද?
මම ආරුක්කු ලිනක්ස් ධාවනය කරමි, මට udevstart
මෙහි විධානයක් නොමැත.
එසේම පරීක්ෂා කර ඇත /etc/rc.d
, එහි udev සේවාවක් නොමැත.
udev
? එය කළමනාකරු ද /dev
?
අලුතෙන් සාදන ලද එකක් ක්රියාත්මක වීමට හැකි වන පරිදි යමෙක් udev නීති රීලෝඩ් කළ යුත්තේ කෙසේද?
මම ආරුක්කු ලිනක්ස් ධාවනය කරමි, මට udevstart
මෙහි විධානයක් නොමැත.
එසේම පරීක්ෂා කර ඇත /etc/rc.d
, එහි udev සේවාවක් නොමැත.
udev
? එය කළමනාකරු ද /dev
?
Answers:
# udevadm control --reload-rules && udevadm trigger
udevtrigger
පසුව අවශ්යද?
udevtrigger
වෙනුවට (හෝ udevadm trigger
බොහෝ බෙදාහැරීම් මත) අවශ්ය විය හැකිය (එනම්, හෝ උපාංගය පිටතට ගෙන එය පිටුපසට). --reload-rules
එය ස්වයංක්රීයව සිදුවන බැවින් සෑම විටම පාහේ නිෂ් less ල වේ.
udevadm trigger
CentOS 6 හි උපක්රමය මා වෙනුවෙන් කළා.
udevtrigger
නැත්නම් udevadm trigger
මට වැඩ කළේ නැහැ. මොඩියුලය මුදා හැරීම සහ පැටවීමෙන් පසුව සමහර උපාංග ක්රියා කරන බව මට පෙනී ගියේය (එය පැටවිය හැකි මොඩියුලයක් යැයි උපකල්පනය කර). මා සොයාගත් දෙය නම් පද්ධතිය නැවත ආරම්භ කිරීම අවශ්ය නොවේ. ජාල උපාංගයක් සඳහා උදාහරණයක් ලෙස, මම rmmod ixgbe
, rmmod tg3
, rmmod e1000
පසුව modprobe ixgbe
, modprobe tg3
, modprobe e1000
ජාල ධාවකය වර්ගය මත රඳා පවතී.
sudo udevadm trigger
පසුව කළ යුතුව තිබුනේ , සුඩෝ ඉවත් කිරීමෙන් කිසිදු දෝෂයක් නොපෙනුනත්, මම එය ධාවනය කරන තුරු කිසිදු වෙනසක්
පුස්තකාලයේ සහ දේශීය වින්යාසකරණ ගස්වල (සාමාන්යයෙන් පිහිටා ඇති සහ ) නීති නාමාවලියෙහි වෙනස්කම් නිරීක්ෂණය කිරීම සඳහා උදෙව් විසින් inotify යාන්ත්රණය භාවිතා කරයි . එබැවින් බොහෝ විට ඔබ නීති ගොනුවක් වෙනස් කරන විට කිසිවක් කිරීමට අවශ්ය නොවේ./lib/udev/rules.d
/etc/udev/rules.d
ඔබ අසාමාන්ය දෙයක් කරන්නේ නම් ඔබට udev ඩීමන් වෙත පැහැදිලිව දැනුම් දිය යුතුය, උදාහරණයක් ලෙස ඔබට වෙනත් නාමාවලියක ගොනු ඇතුළත් වන රීතියක් තිබේ නම්. එවිට ඔබට ඩීමන්වරුන්ගේ වින්යාසය නැවත පූරණය කිරීමට ඉල්ලීම සඳහා සුපුරුදු සම්මුතිය භාවිතා කළ හැකිය: SIGHUP ( pkill -HUP udevd
) යවන්න . නැතහොත් ඔබට udevadm
විධානය භාවිතා කළ හැකිය : udevadm control --reload-rules
.
කෙසේ වෙතත්, udev හි විවිධ අනුවාදයන් rules තිහාසිකව රීති ස්වයංක්රීයව නැවත පූරණය කිරීම සඳහා විවිධ ප්රේරක ඇති බව පරෙස්සම් වන්න. එබැවින් සැකයක් ඇත්නම් අමතන්න udevadm control --reload-rules
: එය කෙසේ හෝ හානියක් නොකරනු ඇත.
Udev නීති ක්රියාත්මක වන්නේ උපාංගයක් එකතු කළ විට පමණි. දැනටමත් සම්බන්ධ කර ඇති උපාංගයකට නීති රීති නැවත යෙදීමට ඔබට අවශ්ය නම්, udevadm trigger
වින්යාසය වෙනස් වී ඇති උපාංග (ය) සමඟ ගැලපීම සඳහා නිවැරදි විකල්ප සමඟ ඇමතීමෙන් ඔබ මෙය පැහැදිලිව කළ udevadm trigger --attr-match=vendor='Yoyodyne' --attr-match=model='Frobnicator 300'
යුතුය.
inotify
යාන්ත්රණය හැම විටම udev පාලනය ගොනුව වෙනස් අල්ලා නැත. උදාහරණයක් ලෙස cat > 10-name.rules
, අන්තර්ගතය ඇලවීමෙන් මම රීති ගොනුව වෙනස් කිරීමට භාවිතා කරන විට , මට අතින් භාවිතයෙන් රීති නැවත පූරණය කළ යුතුය udevadm
. රාස්බියන් ස්ට්රෙච් මත පරීක්ෂා කර ඇත.
--reload-rules
එය අවශ්ය වූයේ අසාමාන්ය අවස්ථාවන්හිදී පමණි.
inotify
යාන්ත්රණය ක්රියාත්මක විය.
මම මෙය එකතු කරන්නේ යම් දවසක මට එය අවශ්ය වනු ඇති නිසාය ... නැවතත්.
සමහර විට ඔබට ඊතර්නෙට් උපාංග අංක සහ MAC ලිපින වල වැරදි ගැලපීමක් ලැබේ. සමහර විට මෙය VM එකක ධාවනය වන විට මෙන් වැදගත් වන අතර සෑම උපාංගයක්ම වෙනත් VLAN වෙත පවරා ඇත.
/etc/udev/rules.d/70-persistent-net.rules
(හෝ ඊට සමාන)udevadm control --reload-rules
udevadm trigger --attr-match=subsystem=net
මෙය කොතරම් හොඳින් ක්රියාත්මක වේදැයි මම පුදුමයට පත් වීමි.
service network stop && udevadm control --reload-rules; udevadm trigger --attr-match=subsystem=net; service network start
මෙය අදාළ වේදැයි මට විශ්වාස නැත, මෙය නියත වශයෙන්ම පැරණි පෝස්ට් එකක් වන නමුත් එය udev තොරතුරු සඳහා මගේ වෙබ් සෙවුම ඉතා ඉහළ මට්ටමක පැවතුනි, එබැවින් මම යම් දැනුමක් බෙදාගනු ඇතැයි සිතුවෙමි.
විශේෂිත උපාංග සඳහා ඔබට udev නීති අතින් ක්රියාත්මක කළ හැකිය. මෙය අදාළ වන්නේ රෙඩ්හැට් ආශ්රිත ඩිස්ට්රෝ (සෙන්ටෝස් ෆෙඩෝරා යනාදිය) සඳහා පමණි
ඔබගේ නීති ගොනුවේ ( /etc/udev/rules.d/whateveryoucalledyourrules
) අදාළ වෙනස්කම් සිදු කළ පසු , ඔබට change
උපාංගයේ uevent වෙත ප්රතිරාවය කළ හැකිය .
echo change > /sys/block/devname/partname1/uevent
මෙම උපාංගය සඳහා පමණක් udev රීතිය කියවීමට මෙය බල කරයි. මගේ මතය අනුව වඩා හොඳ සහ වඩා ඉලක්ක කර ඇත.
මට නම්, පහත දැක්වෙන විධාන අනුක්රමය අවශ්ය පරිදි ක්රියා කර ඇත.
අංකය /etc/udev/rules.d/70-persistent-net.rules
වෙනස් කිරීමට eth
සහ නැවත පණගැන්වීමකින් තොරව ඒවා නැවත පූරණය කිරීමට මම වෙනස් කිරීම් කර ඇත .
/etc/init.d/networking stop
/etc/init.d/udev stop
udevadm control --reload-rules
/etc/init.d/udev start
/etc/init.d/networking start
මෙය අනුගමනය කිරීමෙන්, යන්ත්රය නැවත ආරම්භ නොකර ධාවන කාලය තුළ එය සාර්ථකව පටවා ඇත.
මෑන් පිටු කියවීමෙන් මම මෙය තනිවම සොයාගෙන ඇති බැවින් මේ පිළිබඳ ඕනෑම යෝජනාවක් හෝ නිර්දේශයක් සාදරයෙන් පිළිගනිමු.
මම නිවැරදි පිළිතුර මෙහි එක් කරන්නේ @enthusiasticgeek හි අදහස් දැක්වීමේදී එය දැකීමට මට යම් කාලයක් ගත වූ බැවිනි. ඔබ කළ යුතු සියල්ල (ඔබ සේවාදායකයේ කොන්සෝලයෙහි සිටින බව උපකල්පනය කරන්න - පැහැදිලිවම ඔබ ඇතුල් වී ඇත්නම් මෙය කිරීම නරක ය!):
cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | perl -pe 's/.*\((\w+)\).*/$1/g'| uniq
මගේ නඩුවේ, එය igb
, එබැවින් එය මුද්රණය කරයි.
sudo rmmod igb
( igb
පළමු පියවරෙන් ලබාගත් ඔබගේ කාඩ් ධාවකය සමඟ ප්රතිස්ථාපනය කරන්න.ඊළඟට, /etc/udev/rules.d/70-persistent-net.rules
අවශ්ය පරිදි සංස්කරණය කරන්න , ඉන්පසු මොඩියුලය නැවත භාවිතා කර modprobe igb
නැවත igb
ඔබ සමඟ ප්රතිස්ථාපනය කරන්න.
මෙය ප්රධාන පිළිතුරෙන් සුළු වෙනසක් වේ : sudo
විධාන දෙකෙහිම මට අවශ්ය බව පෙනේ.
සාර්ථක සාක්ෂි: කිරීමට sudo udevadm trigger
තත්පර 2 ක් ගතවිය, නමුත් සුඩෝ සමඟ එය කිරීමට ගත වූයේ ගත වූයේ තත්පර 0.2 ක් පමණි. ඉතින් පැහැදිලිවම ඔවුන් මා වෙනුවෙන් එකම දේ කරන්නේ නැහැ. ඒ වෙනුවට මෙය කරන්න:
sudo udevadm control --reload-rules
sudo udevadm trigger
අවසාන වශයෙන් (පහත 2 වන සබැඳිය අනුව), ඔබගේ උපාංගය විසන්ධි කර නැවත එය ඇතුල් කරන්න .
ඉහත පිළිතුරු දෙකම යටතේ අදහස් බලන්න.
බහු ජාලයක නම්
cat /etc/udev/rules.d/70-persistent-net.rules | grep "PCI device" | awk '{print $NF}'|sed -e 's/(//g' -e 's/)//g'| uniq > /tmp/listnet
rm -rf /etc/udev/rules.d/70-persistent-net.rules
for i in $(cat /tmp/listnet); do rmmod $i; modprobe $i;done
service network restart
rm -rf /tmp/listnet