ইউডিউডিটি বিধিগুলিতে ইউডিউইড ব্যবহার করুন এবং / মিডিয়া / UID ইউআইডি-তে ইউএসবি ড্রাইভ মাউন্ট করুন


13

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

blkidকমান্ড একটি ডিস্কের UUID আউটপুট কিন্তু শুধুমাত্র মাউন্ট উপর।


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

সাম্প্রতিক ডেবিয়ানের উপর পরীক্ষিত fstab, systemd এবং automount ব্যবহার করে এই সমাধানটি দেখুন: unix.stackexchange.com/a/347007/31228
জোনাথন বেন-

উত্তর:


14

যদিও ইউআইডিগুলি সরাসরি উদেব দ্বারা অ্যাক্সেসযোগ্য না হয়, কমপক্ষে ফেডোরা এবং উবুন্টুতে সেগুলি পরিবেশের ভেরিয়েবল ( ENV) হিসাবে সেট করা থাকে । আপনি কল করে কোনও ডিভাইসের সমস্ত পরিবেশের ভেরিয়েবলগুলি পড়তে পারেন udevadm info /dev/sdc। যেমন একটি বহিরাগত ড্রাইভে এনটিএফএসের জন্য আমি পাই:

$ udevadm info /dev/sdc2
P: /devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/host7/target7:0:0/7:0:0:0/block/sdc/sdc2
N: sdc2
[…]
E: ID_FS_TYPE=ntfs
E: ID_FS_USAGE=filesystem
E: ID_FS_UUID=4A6F2ABC1232FA37
[…]

একটি সঙ্গে সবকিছু E:সামনে একটি এনভায়রনমেন্ট ভেরিয়েবল হিসাবে সেট করা হয়।

ইউআইডি-র বিরুদ্ধে মিলছে

আপনি এর সাথে ম্যাচ করতে পারেন ENV{ID_FS_UUID}=="4A6F2ABC1232FA37"। প্রথম ফিল্টার হিসাবে আমি মেলেছি KERNEL=="sd?2"তা নিশ্চিত করার জন্য যে আমি কেবলমাত্র সঠিক পার্টিশন নম্বর দিয়ে ব্লক ডিভাইসগুলি পরিচালনা করছি। সম্পূর্ণ নিয়মটি এর মতো দেখায়:

KERNEL=="sd?2", ENV{ID_FS_UUID}=="4A6F2ABC1232FA37", RUN+="/usr/bin/logger --tag my-manual-usb-mount Mounting the device with UUID 4A6F2ABC1232FA37", RUN+="/usr/bin/mount [Your mount options here]"

লগার কমান্ডটি নিয়মটি আসলে চালিত হয়েছে তা দৃ to়তার জন্য কার্যকর। পরবর্তী আপনার পরীক্ষা করা উচিত যে নিয়মে কোনও সিনট্যাক্স ত্রুটি নেই udevadm test /dev/sdc2। আপনার নিয়ম ফাইল আউটপুট তালিকাভুক্ত করা উচিত এবং এর পরে কোনও ত্রুটি বার্তা প্রদর্শিত হবে না। এখন আপনি আপনার ডিভাইস কিনা আপনার নিয়ম কাজ করে পরিকল্পনা চেক করতে জন্য সব নিয়ম করা যাবে: sudo udevadm trigger /dev/sdc2। যদি আপনার বিধিটি মিলে যায় তবে আপনি সিস্টেম লগ ( /var/log/syslogবা মাধ্যমে journalctl -b) কাস্টম লগ বার্তাটি খুঁজে পাবেন ।

সম্পাদনা: ali_m নির্দেশ করেছে যে পরিবেশের ভেরিয়েবলগুলি পূর্ববর্তী বিধি দ্বারা সেট করা থাকে এবং কেবলমাত্র যদি আপনার .rulesফাইলে পর্যাপ্ত উচ্চতর ডিক্সিকোগ্রাফিক ক্রম থাকে তবে অ্যাক্সেসযোগ্য । "60" দিয়ে শুরু করা যথেষ্ট হবে। এক নজরে পূর্বনির্ধারিত নিয়মগুলি থেকে আলাদা করতে ব্যক্তিগতভাবে আমি আমার নিয়মগুলি "জেডজেড" দিয়ে শুরু করি (যদি সম্ভব হয়)।

RUNকমান্ড এবং অন্য কোথাও ইউআইডি ব্যবহার করে

উদেবের বেশ শক্তিশালী ভেরিয়েবল এবং অ্যাট্রিবিউট সাবস্টিটিউশন সিনট্যাক্স রয়েছে । বিশেষত প্রতিটি $env{ID_FS_UUID}ঘটনাকেই ড্রাইভের ইউআইডি দিয়ে প্রতিস্থাপন করা হবে। সুতরাং আপনার অধীনে কোনও ডিভাইস মাউন্ট /media/UUIDকরতে এই বিধিটি ব্যবহার করতে পারেন:

KERNEL=="sd??", RUN+="/usr/bin/mkdir /media/$env{ID_FS_UUID}", RUN+="/usr/bin/mount $devpath /media/$env{ID_FS_UUID}"

পরিবর্তে আপনি সম্ভবত ইউডিস্কগুলি কনফিগার করতে চান, তবে এটি যে সমস্যার জায়গাটি আপনি সমাধান করতে চান তার জন্য এটি বিশেষায়িত। একটি সূচনা পয়েন্ট হিসাবে https://wiki.archlinux.org/index.php/udisks#udisks2:_mount_to_.2Fmedia দেখুন ।

/etc/fstabUdev বা udisks এর পরিবর্তে ডিভাইসগুলি মাউন্ট করার ক্ষেত্রে আমার আসল ব্যবহারের ক্ষেত্রটি হল zfs ফাইল সিস্টেমগুলি মাউন্ট করা যা কিছু আইডিয়োসিগ্র্যাসিগুলিকে স্বাভাবিক সরঞ্জামগুলিতে পুরোপুরি ফিট করে না।


1
একটি গুরুত্বপূর্ণ বিষয় যা আমাকে খুঁজে পেতে কিছুটা সময় নিয়েছিল: পরিবেশের ভেরিয়েবলের সাথে মেলে তুলতে , আপনার নিয়মটি অবশ্যই সেই ভেরিয়েবলগুলি সেট আপ করার পরে প্রয়োগ করতে হবে। এটি অর্জন করতে আপনার .rulesফাইলের নাম> 60 নম্বর দিয়ে শুরু হওয়া দরকার
ali_m

@ অলি_ম: ধন্যবাদ, আমি উত্তরে আপনার তথ্য যুক্ত করেছি।
পার্সেইডস

উবুন্টু 18.04, কিছু udevadm কমান্ডগুলি / dev / sdXX (উদাহরণস্বরূপ udevadm তথ্য), অন্যকে কিছু কারণে / sys / block / sdXX এর দিকে নির্দেশ করা প্রয়োজন (উদাঃ udevadm পরীক্ষা)।
গ্রেগ বেল

0

আমার মনে একটা মোটামুটি সমাধান এসেছে। ইউইউডি দ্বারা আইডিডযুক্ত কোওরস্পন্ডিং fstab এন্ট্রি সেট করুন। এবং উদেব বিধিগুলিতে, প্রতিটি mount -aনতুন এসডি * ডিভাইস যুক্ত হওয়ার সময় কার্যকর করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.