স্বয়ংক্রিয় পরিমাণে ইউএসবি লাঠি দেয়


10

আমি একটি প্লাগ কম্পিউটারে ডেবিয়ান স্কুইজ চালিয়ে যাচ্ছি (সুতরাং কেবল এসএসএইচ, কোনও জিইউআই নেই) এবং আমি যা করার চেষ্টা করছি তা এটি পাওয়া যাতে কোনও ইউএসবি স্টিকটি প্লাগ ইন করা হয় তা স্বয়ংক্রিয়ভাবে মাউন্ট হয়ে যায়।

আমি autofsযা করেছি তা ইনস্টল যা আমি যা সংগ্রহ করি তা থেকে স্বয়ংক্রিয় গণনা পরিচালনা করে যে এটি ডিভাইসটি কোথায় আছে তা জানে /dev

সমস্যাটি হ'ল ইউএসবি স্টিক সর্বদা একই ডিভাইসের নামে থাকে না। কখনও কখনও এটি /dev/sdc1, কখনও কখনও /dev/sdd1, ইত্যাদি।

আমি এর সমাধানের জন্য এটি সংগ্রহ করি, udevইউএসবি স্টিকটি সর্বদা একই নাম দেওয়া উচিত তা নিশ্চিত করার জন্য আমার ব্যবহার করা উচিত ।

আমি নিম্নলিখিত তথ্য পেয়েছি udevadm:

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/block/sdd/sdd1':
    KERNEL=="sdd1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{partition}=="1"
    ATTR{start}=="63"
    ATTR{size}=="129339"
    ATTR{ro}=="0"
    ATTR{alignment_offset}=="0"
    ATTR{discard_alignment}=="0"
    ATTR{stat}=="      31      244      275      190        0        0        0        0        0      190      190"
    ATTR{inflight}=="       0        0"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0/block/sdd':
    KERNELS=="sdd"
    SUBSYSTEMS=="block"
    DRIVERS==""
    ATTRS{range}=="16"
    ATTRS{ext_range}=="256"
    ATTRS{removable}=="1"
    ATTRS{ro}=="0"
    ATTRS{size}=="129439"
    ATTRS{alignment_offset}=="0"
    ATTRS{discard_alignment}=="0"
    ATTRS{capability}=="51"
    ATTRS{stat}=="      56      727      783      520        0        0        0        0        0      520      520"
    ATTRS{inflight}=="       0        0"
    ATTRS{events}=="media_change"
    ATTRS{events_async}==""
    ATTRS{events_poll_msecs}=="-1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0/8:0:0:0':
    KERNELS=="8:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="3"
    ATTRS{vendor}=="        "
    ATTRS{model}=="Flash Disk      "
    ATTRS{rev}=="2.00"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x90"
    ATTRS{iodone_cnt}=="0x90"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{modalias}=="scsi:t-0x00"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"
    ATTRS{max_sectors}=="240"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8/target8:0:0':
    KERNELS=="target8:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0/host8':
    KERNELS=="host8"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2/1-1.2:1.0':
    KERNELS=="1-1.2:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb-storage"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="02"
    ATTRS{bInterfaceClass}=="08"
    ATTRS{bInterfaceSubClass}=="06"
    ATTRS{bInterfaceProtocol}=="50"
    ATTRS{modalias}=="usb:v1976p6025d0100dc00dsc00dp00ic08isc06ip50"
    ATTRS{supports_autosuspend}=="1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1/1-1.2':
    KERNELS=="1-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="383"
    ATTRS{idVendor}=="1976"
    ATTRS{idProduct}=="6025"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="00"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="12"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="11"
    ATTRS{devpath}=="1.2"
    ATTRS{version}==" 1.10"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"

  looking at parent device '/devices/platform/orion-ehci.0/usb1/1-1':
    KERNELS=="1-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="197"
    ATTRS{idVendor}=="1a40"
    ATTRS{idProduct}=="0101"
    ATTRS{bcdDevice}=="0111"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="2"
    ATTRS{devpath}=="1"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="4"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{product}=="USB 2.0 Hub"

  looking at parent device '/devices/platform/orion-ehci.0/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="24"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="1"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38.8 ehci_hcd"
    ATTRS{product}=="Marvell Orion EHCI"
    ATTRS{serial}=="orion-ehci.0"
    ATTRS{authorized_default}=="1"

  looking at parent device '/devices/platform/orion-ehci.0':
    KERNELS=="orion-ehci.0"
    SUBSYSTEMS=="platform"
    DRIVERS=="orion-ehci"
    ATTRS{modalias}=="platform:orion-ehci"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""

udevনামটি নিতে ইউএসবি স্টিককে বাধ্য করার জন্য আমি বিধিগুলি লেখার চেষ্টা করছি /dev/usbstickতবে এখনও আমি সফল হতে পারি নি।

সর্বদা একই নামটি পেতে এই ইউএসবি স্টিকটি পেতে আমার নিয়ম ফাইলে আমার কী নিয়ম নির্দিষ্ট করতে হবে তা সম্পর্কে কেউ সাহায্য করতে পারেন?

- বা, আমি যে ইউএসবি স্টিকটি পুরোপুরি অনুপস্থিত তা স্বয়ংক্রিয়ভাবে চালানোর আরও সহজ কোনও উপায় আছে?

হালনাগাদ

ঠিক আছে তাই আমি কিছু অগ্রগতি করেছি। আমি নিম্নলিখিত নিয়মটি যুক্ত করেছি:

SUBSYSTEMS=="scsi", ATTRS{model}=="Flash Disk ", DRIVERS=="sd", NAME="usbstick-%k" RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"

আমি জানি অ্যাড / রিমুভাল পরিচালনা করার ক্ষেত্রে এটি এখনও কিছু কাজ দরকার, তবে এটি এখনকার জন্য একটি প্রাথমিক পরীক্ষা।

এর প্রভাব হ'ল আমি এখন তিনটি নতুন ডিভাইস নোড /dev, যথা /dev/usbstick-sdc, /dev/usbstick-sdc1এবং এগুলি পেতে পরিচালনা করি usbstick-sg2

যাইহোক, আমি যা পেয়েছি তা হল যে RUNবিভাগে কোডটি কেবল একবার কার্যকর করে কেবল একটি ডিরেক্টরি তৈরি করে mnt/usbstick-sdc। আমি এটিও খুঁজে পেয়েছি যে ডিরেক্টরিটি সর্বদা খালি থাকে তাই কিছু স্পষ্টতই এখনও ভুল হয়ে যাচ্ছে! (যদিও আমি অগ্রগতি করছি)।


দ্বিতীয়টি হওয়ার /dev/sdc1কথা ছিল sdd1? এবং আপনি blkidড্রাইভটি অনন্যরূপে সনাক্ত করতে ব্যবহার করতে পারেন (ভাল, আসলে পার্টিশন; এটি পুনরায় ফর্ম্যাট করলে এটি পরিবর্তিত হবে)।
কেভিন

ঠিক আছে, ঠিক আছে। আমি যা করতে চাই তা হ'ল যখন কোনও ইউএসবি স্টিকটি প্লাগ করা হয় তখন কোনও ডিরেক্টরিতে মাউন্ট হয়। আমি নিশ্চিত আমি udevপ্রতিটি বিভাজনের জন্য ডিভাইস নোড তৈরি করতে একটি নিয়ম ব্যবহার করা উচিত , তবে আমি নিশ্চিত নই যে udevadmআউটপুটটি কোন স্তরের জন্য নিয়ম বানাবে!
জন

আপনার নিয়মটি খুব জটিল দেখাচ্ছে। কেবল একটি ACTION==, এক KERNEL==এবং একটি দিয়ে একটি সহজ একটি তৈরি করার চেষ্টা করুন ATTRS{something}==(এটি সম্পূর্ণভাবে কার্যকরযোগ্য - এটি আমি ব্যবহার করি)। এছাড়াও, কমান্ডের শৃঙ্খলে ইনস্টল করে একটি একক স্ক্রিপ্ট চালানো বিবেচনা করুন RUN+=
rozcietrzewiacz

পরামর্শের জন্য ধন্যবাদ, তবে প্রশ্নটি রয়ে গেছে: আমার নিয়মের সাথে ডিভাইস ট্রিটির কোন স্তরের লক্ষ্যবস্তু করা উচিত? এগুলি সমস্ত ভয়ঙ্কর বিভ্রান্ত বলে মনে হচ্ছে এবং এটি ব্যাখ্যা করার জন্য অনলাইনে খুব বেশি তথ্য নেই। আমার কাছে এ পর্যন্ত এটি ব্যাখ্যা করতে আপনি যে সময়টি নিয়েছেন তা আমি সত্যিই প্রশংসা করি, আমার মনে হয় আমি প্রায় আছি তবে লক্ষ্যমাত্রার মাত্রাটি অনুপস্থিত।
জন

আমি এখন এই খুব বেসিক নিয়মটি চেষ্টা করেছি: KERNEL=="sd??", NAME="%k", RUN+="mkdir /mnt/usbstick-%k; mount /dev/usbstick-%k /mnt/usbstick-%k"- তবে না, অবশ্যই এটি কাজ করে না। আমি প্রায় পুরো দিন ব্যয় করার পর এখন ক্রমশ হতাশ হয়ে পড়ছি যে কেবল নিজের মাউন্টে চলে আসা একটি ইউএসবি স্টিক কীভাবে পাওয়া যায় সে জন্য কীভাবে চেষ্টা করার চেষ্টা করছি। জিনিস কি আসলেই এই কঠিন হওয়া উচিত? আউটপুটটি udevadm test /sys/block/sddঅবশ্যই - ব্যবহারিকভাবে অপঠনযোগ্য, তাই আমি কোথায় ভুল করছি তা জানার কোনও উপায় নেই। কেউ কি আমাকে এই দিকে সঠিক দিকে নির্দেশ করতে পারে?
জন

উত্তর:


13

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

sudo apt-get install usbmount

ইউএসবি স্টিক প্লাগ ইন, সম্পন্ন! আমার লাঠিটি এখন অ্যাক্সেসযোগ্য /media/usb

বিটিডব্লিউ, ইউএসবিমাউন্টের কোনও ম্যান পেজ নেই, দয়া করে /usr/share/doc/usbmount/README.gzপরিবর্তে পড়ুন। মনে হচ্ছে ইউএসবিমাউন্ট আপনার স্টিকটি সিঙ্ক বিকল্পের সাথে ডিফল্টরূপে মাউন্ট করে। এটি আপনার কাঠিটিকে এ্যাসিঙ্ক মাউন্ট করে চালানো syncবা umountআনপ্লাগ করার আগে এটি পুরোপুরি ভাল । এটি কনফিগারযোগ্য।


আরও দেখুনpumount
অ্যালেক্স

মনোযোগ দিন যে ডিবিয়ানusbmount জেসি থেকে আর আর এনটিএফএস সমর্থন করে না: বাগস.ডেবিয়ান.আর
ম্যালাত

এটি ডেবিয়ান জেসির উপর চালানো, ইউএসবিমাউন্ট কখনই এটি মাউন্ট করে নি। প্যাকেজ পৃষ্ঠাটি বলছে যে এটি এখন অবিস্মরণীয়, এবং আমি সিস্টেমড চালাচ্ছি। আমি ভাবছি যদি এই প্যাকেজটি আর সিস্টেমড পরিবর্তনগুলির সাথে কাজ করে না?
ট্র্যাভিস গ্রিগস

আসলে, জেসির জন্য আমার পক্ষে কাজ হয়নি, আমার উত্তর দেখুন (এটি: ddumont.wordpress.com/2015/09/27/… কাজ করেছে)
পল

2

লক্ষ্য করুন যে কোনও সম্ভাব্য পেনড্রাইভ সংযুক্ত করার জন্য আপনার কেবল একটি একক ডিভাইস নোড থাকতে পারে না । আপনি যদি তাদের দুটি প্লাগ করেন? বা যখন পেনড্রাইভের একাধিক পার্টিশন থাকে?

সাধারণত, আপনি কাস্টম-নামযুক্ত ডিভাইস নোড তৈরি করতে যা ব্যবহার করেন তা হ'ল SYMLINK+=। নিয়ম এটা জন্য grep দেখতে কতটা ব্যবহার করে: grep SYMLINK /etc/udev/rules.d/*। সমস্ত udev- ট্রিগারযুক্ত কমান্ড হিসাবে, আপনি বর্ণিত কিছু অর্থবহ ভেরিয়েবল ব্যবহার করতে পারেন man udev। আপনি বুঝতে পারেন যে ডিভাইসে আপনার কোনও কাস্টম নাম দেওয়ার দরকার নেই, যেহেতু আপনি কোনও স্ক্রিপ্টে ( %kভেরিয়েবলের মাধ্যমে ) এটির নাম দিতে পারেন ।

অটো-মাউন্ট সমাধান হিসাবে, ইউএএম দেখুন , যা আমি এই প্রশ্নের উত্তরে কিছুটা বর্ণনা করেছি ।


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

তারপরে আমি সবেমাত্র সম্পাদনাটি করেছি (মাঝের অংশটি) দেখুন। এটি কি যথেষ্ট হবে?
rozcietrzewiacz

এছাড়াও লক্ষ করুন যে ইউএএম আসলে প্রোগ্রাম নয় - এটি udevস্ক্রিপ্টগুলির সাথে দুর্দান্ত নিয়মের একটি গোছা । আপনি নিয়মগুলি একবার দেখতে পারেন এবং এগুলি সহজেই আপনার প্রয়োজনের সাথে খাপ খাইয়ে নিতে পারেন।
rozcietrzewiacz

পরামর্শের জন্য ধন্যবাদ. অন্য একটি জিনিস: আপনি কি মনে করেন যে আপনি আমার আউটপুটটি দেখে নিতে পারেন udevadmএবং আমাকে বলতে পারেন যে আমার ডিভাইসটি আসলে আমার নিয়মের সাথে লক্ষ্যবস্তু করা উচিত? আমি অনলাইনে যে সমস্ত উদাহরণ দেখেছি সেগুলি অনেকগুলি ছোট খাটো গাছের সাথে জড়িত বলে মনে হয় এবং প্রতিটি উদাহরণে একটি আলাদা স্তরের ডিভাইসকে লক্ষ্যবস্তু করা হয়, কোনটি লক্ষ্যবস্তু করা উচিত এবং কেন তা ব্যাখ্যা করা হয়নি।
জন

শুধু উপরে একটি আপডেট যোগ করেছেন, কোন ধারণা? ধন্যবাদ!
জন

2

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

পূর্বশর্ত: আপনার কাছে udev + অটোফ ইনস্টল করতে হবে।

ধাপ 1)

নিম্নলিখিত "/etc/udev/rules.d/90-usbsd-auto.rules" ফাইলটি তৈরি করুন (অবশ্যই ".rules" দিয়ে শেষ হওয়ার পরে আপনি কোনও নাম ব্যবহার করতে পারেন)। :

# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9] 
# for automounter support

ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660", \
    RUN+="/bin/rm /media/usb/%k", \
    RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"

# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660"


# When device is removed, also remove /media/usb/<...>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    RUN+="/bin/rm /media/usb/%k"

এটি কী করে: এটি দুটি সিমলিংক তৈরি করে, একটি "/ dev / usbdisks / <...>" এর অধীনে ইউএসবি স্টোরেজ ডিভাইস বিভাজনের জন্য।

দ্বিতীয় সিমলিংকটি "/ মিডিয়া / ইউএসবি / <...>" থেকে "/ মিডিয়া / অটোসব / <...>" এ লিঙ্ক করবে এটি স্বতঃআপনার সমর্থনের জন্য করা হয়েছে (দ্বিতীয় পদক্ষেপ দেখুন)।

নিশ্চিত হন যে উদেব এই নিয়মগুলি ব্যবহার করেছেন reads

sudo udevadm control --reload-rules

দ্রষ্টব্য: একই ইউএসবি স্টিকের একই নাম: সম্ভাব্য তবে সম্ভবত বিপজ্জনক: আপনি উদাহরণস্বরূপ "k env {ID_FS_LABEL_ENC।" ব্যবহার করতে পারেন, উপরের ইউডিইভি নিয়মের পরিবর্তে "% কে"। এটি / মিডিয়া / ইউএসবি / <...> তৈরি করতে ভলিউম লেবেলটি ব্যবহার করবে, তবে আপনি যদি দুটি ইউএসবি স্টিক প্লাগ করেন এবং উভয়ই একই ভলিউম লেবেল ব্যবহার করেন তবে কি হবে ...

এই udev নিয়ম ফাইলের সাথে ইউএসবি স্টোরেজ ডিভাইস বিভাজনটি স্বতঃপরিবর্তনের জন্য সবকিছু সেটআপ করা হয়। যদিও এখনই তা লক্ষ করুন, ডিভাইসটি স্বয়ংক্রিয়ভাবে (ইচ্ছাকৃতভাবে) চালিত হবে না। এটি একবার ব্যবহার করার পরে এটি স্বয়ংক্রিয়ভাবে চলে যাবে

ধাপ ২)

অটোফাউন্টগুলি অটোমাউন্ট / মিডিয়া / অটোসবি / <...> এ সেটআপ করুন: আমি আমার "/etc/auto.master" ফাইলটিতে (উবুন্টু 12.04 এর জন্য) নিম্নলিখিত লাইনটি যুক্ত করেছি:

/media/autousb /etc/auto.usb --timeout=60

এর অর্থ অটোএফএস 60 সেকেন্ডের নিষ্ক্রিয়তার পরে ডিভাইসটিকে আনমাউন্ট করবে। আপনি আপনার স্বাদের উপর নির্ভর করে কম বা বেশি ব্যবহার করতে চাইতে পারেন।

জেন্টুর জন্য আপনাকে "/etc/autofs/auto.master" পরিবর্তন করতে হবে যাতে এটি ব্যবহারে বোধ হয়

/media/autousb /etc/autofs/auto.usb --timeout=60

এখন আমি নিম্নলিখিত বিষয়বস্তু দিয়ে "Auto.usb" তৈরি করেছি:

#!/bin/bash

key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
  echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
  echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
  echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
  exit 0
fi

exit 1

এই Auto.usb এক্সিকিউটেবল হওয়া দরকার, যাতে অটোফগুলি এটি (ব্যাশ) স্ক্রিপ্ট হিসাবে ব্যবহার করে। উদাহরণস্বরূপ

sudo chmod 0755 /etc/auto.usb

এটি কী করে: এই স্ক্রিপ্টটি অটোএফএসকে (/ usr / sbin / automount) কীভাবে ইউএসবি স্টোরেজ ডিভাইস পার্টিশনটি মাউন্ট করবেন তা জানায়।

স্ক্রিপ্টটি প্রথমে "/ sbin / blkid" ব্যবহার করবে পার্টিশনে কোন ধরণের ফাইল সিস্টেম রয়েছে তা সন্ধান করার জন্য।

স্ক্রিপ্টটি ডিভাইস বিভাজনের উপর নির্ভর করে সঠিক মাউন্ট বিকল্পগুলি সরবরাহ করবে।

দ্রষ্টব্য: আমি "ভিফ্যাট" (সম্ভবত ইউএসবি স্টিকের জন্য খুব সাধারণ), "এনটিএফএস" এবং "এক্সট 4" ফাইল সিস্টেমের জন্য নমুনা কোড অন্তর্ভুক্ত করেছি। অবশ্যই আরও ফাইল সিস্টেমগুলিকে সমর্থন করার জন্য এটি প্রসারিত করা বেশ সহজ।

ধাপ 3)

Ptionচ্ছিক ... "বহিষ্কার" ===============================================================================================

#!/bin/bash
# make sure everything is written to USB disk(s)
sync
# sending SIUGSR1 to automount will unmount the media
killall -s SIGUSR1 /usr/sbin/automount

এই স্ক্রিপ্টের সাহায্যে আপনি সমস্ত মাউন্ট করা ইউএসবি ডিভাইস পার্টিশন আনমাউন্ট করতে "sudo usbeject" ব্যবহার করতে পারেন (সেগুলি আনমাউন্ট করার জন্য অটোমাউন্টকে বলে)।

অবশ্যই আপনি নিশ্চিত করতে পারেন যে পার্টিশনটি কোথাও ব্যবহার করা হয়নি; অটোমোন্টারটি the০ সেকেন্ড সময় শেষ হওয়ার পরে পার্টিশনটিকে আনমাউন্ট করবে ...

এখানে আসল কৌশলটি হ'ল "/ মিডিয়া / ইউএসবি" থেকে "/ মিডিয়া / অটোসব" থেকে সিমলিংক ব্যবহার করা:

  • "/ মিডিয়া / ইউএসবি" প্রতিলিপিগুলি ইউদেব দ্বারা তৈরি করা হবে, কোনও ব্যবহারকারীকে একটি সাধারণ ওভারভিউ দেওয়া হবে যা ইউএসবি স্টোরেজ ডিভাইস পার্টিশনগুলি রয়েছে
  • অাপনি / মিডিয়া / ইউএসবি-র মাধ্যমে যদি এটি ব্যবহার করে তবে অটোএফস দাবি অনুযায়ী পার্টিশনটি স্বয়ংক্রিয়ভাবে গণনা করবে
  • স্ক্রিপ্টযুক্ত "Auto.usb" ফাইলের সাহায্যে আপনি যে কোনও ধরনের ফাইল সিস্টেমকে সমর্থন করতে পারেন এবং অতিরিক্তভাবে আপনি যে কোনও নামকরণ প্রকল্পকে সমর্থন করতে সক্ষম হন।
  • এই পার্টিশনগুলি বিভিন্ন ফাইল সিস্টেমের ধরণের ব্যবহার করে এমনকি একাধিক পার্টিশন সহ ইউএসবি স্টিককে সমর্থন করে।

আমি কী আপনাকে দেখাতে পারি যে কীভাবে অটোস ইঙ্গিতটি আমার / হোম / খোলামেলা ডিরেক্টরিটি ধ্বংস করে? ধন্যবাদ.
ফ্র্যাঙ্ক

1

আমার নিজের প্রশ্নের উত্তরের জন্য দুঃখিত, এবং অবদানের জন্য অনেক ধন্যবাদ ধন্যবাদ রজসিট্রিজেভিয়াক্সের জন্য, তবে শেষ পর্যন্ত আমি অনলাইনে পড়ার কয়েক ঘন্টা পরে নিম্নলিখিত নিয়মটি ব্যবহার করে কিছু বড় অগ্রগতি করতে পেরেছি:

SUBSYSTEMS=="scsi", KERNEL=="sd[a-h]1", SYMLINK+="removable", RUN+="/bin/mount /dev/removable /path/to/mount"

এটি কোনও এসসিএসআই ডিভাইসের প্রথম পার্টিশনটি মাউন্ট করবে। আমি অনুমান করি যে পরবর্তী প্রশ্নটি কীভাবে একাধিক পার্টিশন মাউন্ট করবেন, তবে এটি অন্য দিনের জন্য অন্য সমস্যা।


1
এটি একটি ভাল নিয়ম নয়। এটি হার্ড ড্রাইভের পার্টিশনের সাথেও মিলবে । একটি removableবৈশিষ্ট্য রয়েছে যা আপনার জন্য পরীক্ষা করা উচিত এবং তার blockপরিবর্তে scsi
রোজিট্রিজেভিয়াচজ

1

আমি খুঁজে পেয়েছি যে সেরা উত্তরটি প্রকৃতপক্ষে অবহেলিত হয়ে গেছে, যেহেতু এটি রক্ষণাবেক্ষণ করা হয়নি এবং জেসি থেকে / কাজ করে না (মালাত দ্বারা মন্তব্য দেখুন)

আমার কাছে (জেসির উপর), এই ব্লগের সমাধানটি মনোযোগের মতো কাজ করেছে।

"Ddumont" ক্রেডিট, কিন্তু তার ব্লগ / উত্তর এখানে একটি সংক্ষিপ্ত বিবরণ পোস্ট করে, ভবিষ্যতে সম্ভাব্য লিঙ্ক পচা মোকাবেলা করতে।

নিম্নলিখিত লাইন যুক্ত করুন /etc/fstab

/dev/sr0 /media/bluray auto defaults,nofail,x-systemd.automount 0 2

আপনি ন্যানো ব্যবহার করে এটি করতে পারেন:

sudo nano /etc/fstab

ব্যাখ্যা:

/dev/sr0ডিভাইস ফাইল। আপনি / দেব / ডিস্ক / বাই আইডিতে udev দ্বারা একটি প্রতীকী লিঙ্ক সেটআপ ব্যবহার করতে পারেন। আপনার ডিভাইস ফাইল অনুসারে এটি পরিবর্তন করতে হবে ( sudo fdisk -lডিভাইসগুলির তালিকাতে)

/media/blurayমাউন্ট পয়েন্ট। আপনি অন্য একটি মাউন্ট পয়েন্ট চয়ন করতে পারেন

nofail অপটিকাল ড্রাইভে ডিস্ক ছাড়াই বুট করার সময় ব্যর্থতার প্রতিবেদন এড়াতে হবে

x-systemd.automount dোকানো ডিস্কটি স্বয়ংক্রিয়ভাবে মাউন্ট করার জন্য সিস্টেমেড কনফিগার করার বিকল্প

নুটোকে নির্দিষ্ট করবেন না: এটি সিস্টেমেডকে স্বয়ংক্রিয়ভাবে একটি ডিস্ক মাউন্ট করতে বাধা দিতে পারে, যা উদ্দেশ্যকে পরাস্ত করে।

পরীক্ষা

Systemd দিয়ে journalctl -x -fকী চলছে তা যাচাই করতে একটি টার্মিনালে কমান্ডটি চালান

এর সাথে সিস্টেমেড কনফিগারেশন পুনরায় লোড করুন sudo systemctl daemon-reload

আপনার অপটিকাল ড্রাইভে একটি ডিস্ক লোড করুন

তারপরে, জার্নালটিএল এর মতো কিছু দেখাতে হবে:

Sept. 27 16:07:01 frodo systemd[1]: Mounted /media/bluray.

অধিকতর

সাফল্যের সাথে এনটিএফএস ড্রাইভগুলি মাউন্ট করতে আমাকে এনটিএফএস -3 জি ইনস্টল করতে হয়েছিল (পুরানো এনটিএফএসপ্রোগ)

sudo apt-get install ntfs-3g

ওএসএক্স ফর্ম্যাট করা ইউএসবি কাজ করার জন্য আমাকে এইচএফস্প্রোগগুলি ইনস্টল করতে হয়নি, তবে আপনার নিজেরাই এটি পরীক্ষা করা উচিত।


এটি কোনও ইউএসবি-এইচডিডি সহ আমার ডেবিয়ান জেসিতে স্বয়ংক্রিয়ভাবে মাউন্ট হয় না।
বুটজ

@ বুট্টজ কিন্তু ম্যানুয়ালি মাউন্ট করা কি কাজ করে? উপরের পদক্ষেপগুলি কেবলমাত্র ড্রাইভগুলির জন্য আমার পক্ষে কাজ করেছিল যা প্রারম্ভকালীন সিস্টেমে ছিল, সিস্টেম চলাকালীন ইউএসবি গুলি "সক্রিয়ভাবে" সন্নিবেশ এবং অপসারণের জন্য নয়।
পল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.