লিনাক্সে ডিভাইস সনাক্তকরণ এবং পরিচালনার জন্য কীভাবে ইউদেব ব্যবহার করবেন


কার্নেল সংস্করণ ২.6 থেকে ইউদেব (ইউজারস্পেস/দেব) ডায়নামিক ডিভাইস সনাক্তকরণ এবং পরিচালনার জন্য একটি লিনাক্স সাব-সিস্টেম। এটি ডেভস এবং হটপ্লাগের প্রতিস্থাপন।

এটি গতিশীলভাবে ডিভাইস নোডগুলি তৈরি করে বা মুছে ফেলে (কোনও ডিভাইস ড্রাইভারের ইন্টারফেস যা কোনও ফাইল সিস্টেমে প্রদর্শিত হয় যেন এটি একটি সাধারণ ফাইল,/dev ডিরেক্টরিতে সঞ্চিত) যদি আপনি কোনও ডিভাইস যুক্ত করেন বা অপসারণ করেন পদ্ধতি. এরপরে এটি কোনও ডিভাইস সম্পর্কিত তথ্য প্রচার করে বা তার স্থানে পরিবর্তিত হয়ে ব্যবহারকারী স্পেসে পরিণত হয়।

এটির কাজটি হল) 1) ডিভাইস ইভেন্টগুলির সাথে সিস্টেম অ্যাপ্লিকেশন সরবরাহ করা, 2) ডিভাইস নোডগুলির অনুমতি পরিচালনা করা এবং 3) ডিভাইসগুলিতে অ্যাক্সেসের জন্য/ডেভ ডিরেক্টরিতে দরকারী সংলগ্নতা তৈরি করতে পারে বা এমনকি নেটওয়ার্ক ইন্টারফেসের নতুন নামকরণ করতে পারে।

উদেবের অন্যতম সুবিধা হ'ল এটি আবিষ্কারের ক্রম সত্ত্বেও, রিবুটগুলিতে ডিভাইসগুলির নিয়মিত নামকরণের গ্যারান্টি দিতে অবিচ্ছিন্ন ডিভাইসের নাম ব্যবহার করতে পারে। এই বৈশিষ্ট্যটি দরকারী কারণ কার্নেলটি আবিষ্কারের ক্রমের ভিত্তিতে অনাকাঙ্ক্ষিত ডিভাইসের নাম নির্ধারণ করে।

এই নিবন্ধে, আমরা কীভাবে লিনাক্স সিস্টেমে ডিভাইস সনাক্তকরণ এবং পরিচালনার জন্য ইউদেব ব্যবহার করব তা শিখব। মনে রাখবেন যে সমস্ত মূলধারার আধুনিক লিনাক্স ডিস্ট্রিবিউশনগুলি ইউদেবের সাথে ডিফল্ট ইনস্টলেশনটির অংশ হিসাবে আসে না।

লিনাক্সে উদেবের বুনিয়াদি শিখুন

Udev ডেমন, systemd-udevd (বা systemd-udevd.service) কার্নেলের সাথে যোগাযোগ করে এবং আপনি যখনই সিস্টেম থেকে কোনও ডিভাইস যুক্ত করবেন বা মুছবেন তখনই এটি থেকে সরাসরি ডিভাইস uevents প্রাপ্ত হয়, বা কোনও ডিভাইস তার অবস্থার পরিবর্তন করে।

উদেব নিয়মের উপর ভিত্তি করে - এটির নিয়মগুলি নমনীয় এবং খুব শক্তিশালী। প্রতিটি প্রাপ্ত ডিভাইস ইভেন্টটি /lib/udev/rules.d এবং /run/udev/rules.d এ থাকা ফাইলগুলি থেকে পঠিত নিয়মের সেটগুলির সাথে মিলে যায়।

আপনি /etc/udev/rules.d/ ডিরেক্টরিতে কাস্টম বিধি ফাইল লিখতে পারেন (কোনও ডিভাইস প্রক্রিয়া করার জন্য ফাইলগুলি .rules এক্সটেনশনের সাথে শেষ হওয়া উচিত)। নোট করুন যে এই ডিরেক্টরিতে নিয়মের ফাইলগুলির সর্বোচ্চ অগ্রাধিকার রয়েছে।

একটি ডিভাইস নোড ফাইল তৈরি করতে, ইউদেবকে নির্দিষ্ট বৈশিষ্ট্য যেমন লেবেল, সিরিয়াল নম্বর, ব্যবহৃত প্রধান এবং গৌণ সংখ্যা, বাস ডিভাইস নম্বর এবং আরও অনেক কিছু ব্যবহার করে একটি ডিভাইস সনাক্ত করতে হবে। এই তথ্যটি সিএসএফএস ফাইল সিস্টেম দ্বারা রফতানি করা হয়।

আপনি যখনই কোনও ডিভাইসটিকে সিস্টেমে সংযুক্ত করেন, কার্নেল এটি সনাক্ত করে এবং আরম্ভ করে এবং ডিভাইসের নামের সাথে একটি ডিরেক্টরি/sys/ডিরেক্টরিতে তৈরি করা হয় যা ডিভাইসের বৈশিষ্ট্যগুলি সঞ্চয় করে।

ইউদেবের প্রধান কনফিগারেশন ফাইলটি হ'ল /etc/udev/udev.conf, এবং রানটাইম আচরণ নিয়ন্ত্রণ করতে udev ডেমন, আপনি udevadm ইউটিলিটি ব্যবহার করতে পারেন।

প্রাপ্ত প্রাপ্ত কার্নেল ইভেন্টগুলি (uevents) এবং udev ইভেন্টগুলি প্রদর্শন করতে (যা নিয়মে প্রসেসিংয়ের পরে udev প্রেরণ করে) মনিটর কমান্ডের সাহায্যে udevadm চালান। তারপরে কোনও ডিভাইসটিকে আপনার সিস্টেমে সংযুক্ত করুন এবং টার্মিনাল থেকে ডিভাইস ইভেন্টটি কীভাবে পরিচালনা করা হয় তা দেখুন।

নিম্নলিখিত স্ক্রিনশটটি পরীক্ষামূলক সিস্টেমে একটি ইউএসবি ফ্ল্যাশ ডিস্ক সংযুক্ত করার পরে একটি এডিডি ইভেন্টের একটি অংশ দেখায়:

$ udevadm monitor 

আপনার ইউএসবি ডিস্কে নির্ধারিত নামটি সন্ধান করতে, lsblk ইউটিলিটি ব্যবহার করুন যা প্রক্রিয়াজাত ডিভাইসগুলি সম্পর্কিত তথ্য সংগ্রহের জন্য sysfs ফাইল সিস্টেম এবং udev db পড়বে।

 
$ lsblk

পূর্ববর্তী কমান্ডের আউটপুট থেকে, ইউএসবি ডিস্কটির নাম দেওয়া হয়েছে এসডিবি 1 (পরম পাথ /dev/sdb1 হওয়া উচিত)। Udev ডাটাবেস থেকে ডিভাইস বৈশিষ্ট্যগুলি জিজ্ঞাসা করতে, তথ্য কমান্ডটি ব্যবহার করুন।

$ udevadm info /dev/sdb1

লিনাক্সে উদেব বিধিগুলি নিয়ে কীভাবে কাজ করবেন

এই বিভাগে, আমরা কীভাবে udev বিধি লিখতে হবে তা সংক্ষেপে আলোচনা করব। একটি নিয়মে কমা-বিভাজিত এক বা একাধিক কী-মান জোড়ের তালিকা রয়েছে। বিধিগুলি আপনাকে ডিফল্ট নাম থেকে কোনও ডিভাইস নোডের নাম পরিবর্তন করতে, ডিভাইস নোডের অনুমতি এবং মালিকানা সংশোধন করতে, যখন কোনও ডিভাইস নোড তৈরি হয় বা মুছে ফেলা হয় তখন কোনও প্রোগ্রাম বা স্ক্রিপ্টের কার্য সম্পাদন শুরু করে,

যখন কোনও ইউএসবি ডিভাইস যুক্ত হয় এবং যখন এটি চলমান সিস্টেম থেকে সরানো হয় তখন আমরা কোনও স্ক্রিপ্ট চালু করতে একটি সাধারণ নিয়ম লিখব।

দুটি স্ক্রিপ্ট তৈরি করে শুরু করা যাক:

$ sudo vim /bin/device_added.sh

ডিভাইস_ডেড.শ স্ক্রিপ্টে নিম্নলিখিত লাইনগুলি যুক্ত করুন।

#!/bin/bash
echo "USB device added at $(date)" >>/tmp/scripts.log

দ্বিতীয় স্ক্রিপ্ট খুলুন।

$ sudo vim /bin/device_removed.sh

তারপরে ডিভাইস_ম্রেভড.শ স্ক্রিপ্টে নিম্নলিখিত লাইনগুলি যুক্ত করুন।

#!/bin/bash
echo "USB device removed  at $(date)" >>/tmp/scripts.log

ফাইলগুলি সংরক্ষণ করুন, বন্ধ করুন এবং উভয় স্ক্রিপ্টগুলি কার্যকর করতে সক্ষম করুন।

$ sudo chmod +x /bin/device_added.sh
$ sudo chmod +x /bin/device_removed.sh

এরপরে, উপরের স্ক্রিপ্টগুলির সম্পাদনকে ট্রিট করার জন্য একটি নিয়ম তৈরি করি, যাকে বলা হয় /etc/udev/rules.d/80-test.rules।

$ vim /etc/udev/rules.d/80-test.rules

এটিতে নিম্নলিখিত দুটি নিয়ম যুক্ত করুন।

SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device",  RUN+="/bin/device_added.sh"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_removed.sh"

কোথায়:

  • "==" : সাম্যের জন্য তুলনা করার জন্য অপারেটর "+ =" : এমন একটি অপারেটর যা কোনও কীতে প্রবেশের তালিকা ধারণ করে add
  • সাবসিস্টেম: ইভেন্ট ডিভাইসের সাবসিস্টেমের সাথে মেলে।
  • ক্রিয়া: ইভেন্ট ক্রিয়াকলাপের নামের সাথে মেলে।
  • ENV {DEVTYPE}: কোনও ডিভাইসের সম্পত্তি মান, ডিভাইসের প্রকারের সাথে এই ক্ষেত্রে মিল রয়েছে
  • রুন: ইভেন্ট হ্যান্ডলিংয়ের অংশ হিসাবে কার্যকর করার জন্য একটি প্রোগ্রাম বা স্ক্রিপ্ট নির্দিষ্ট করে

ফাইলটি সংরক্ষণ করুন এবং এটি বন্ধ করুন। তারপরে রুট হিসাবে, চালিত হয়ে নিয়ম ফাইলগুলি পুনরায় লোড করতে systemd-udevd কে বলুন (এটি অন্যান্য ডেটাবেস যেমন কার্নেল মডিউল সূচক পুনরায় লোড করে) চালিয়ে।

$ sudo udevadm control --reload

এখন আপনার মেশিনে একটি ইউএসবি ড্রাইভ সংযুক্ত করুন এবং ডিভাইস_ডেড.এসএস স্ক্রিপ্টটি কার্যকর হয়েছে কিনা তা পরীক্ষা করুন। সবার আগে ফাইল স্ক্রিপ্ট.লগ/টিএমপি এর আওতায় তৈরি করা উচিত।

$ ls -l /tmp/scripts.log

তারপরে স্ক্রিনশটটিতে যেমন দেখানো হয়েছে তেমন ফাইলটির একটি এন্ট্রি থাকা উচিত যেমন "ডেটটাইম সময়ে ইউএসবি ডিভাইস সরানো হয়েছে"।

$ cat /tmp/scripts.log

কীভাবে ইউদেব বিধি লিখতে হবে এবং ওদেব পরিচালনা করতে হবে সে সম্পর্কে আরও তথ্যের জন্য, চালিয়ে যথাক্রমে udev এবং udevadm ম্যানুয়াল এন্ট্রিগুলির পরামর্শ নিন:

$ man udev
$ man udevadm

উদেব একটি উল্লেখযোগ্য ডিভাইস ম্যানেজার যা /dev ডিরেক্টরিতে ডিভাইস নোড সেটআপ করার গতিশীল উপায় সরবরাহ করে। এটি নিশ্চিত করে যে ডিভাইসগুলি প্লাগ ইন করা এবং আবিষ্কার করার সাথে সাথেই তা কনফিগার করা আছে। এটি কোনও প্রক্রিয়াজাত ডিভাইস সম্পর্কিত তথ্য বা তার স্থানে পরিবর্তিত হয়ে ব্যবহারকারী স্পেসে প্রচার করে।

আপনার যদি এই বিষয়টিতে ভাগ করে নিতে কোনও প্রশ্ন বা চিন্তা থাকে তবে প্রতিক্রিয়া ফর্মটি ব্যবহার করুন।