Автоматичне встановлення USB-дисків (як це працює)


12

Передумови: Я намагаюся встановити usb диск лише для читання, але моя установка ubuntu монтує його rw, коли я підключаю диск.

Я можу відключити диск вручну і перезавантажити його вручну, як читати, лише за допомогою команд umount і mount, але це не весело. Невже хтось може мені швидко пояснити, як саме кріплення USB автоматично робляться в типовій системі Linux (удев? Історичний фон теж приємний), і, можливо, як я можу налаштувати цей процес, щоб він міг читати диск ro?

Дякую.

Редагувати: я використовую gnome, якщо це зовсім допомагає.
Edit2: Я поспішив надати трохи більше інформації. Ось так виглядає диск з виводу 'mount'.

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edit3: Це також може по-своєму відновити . У вихідному монтажі я також маю наступне:

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

Я подумав, що це могло бути пов’язане з вищевказаним кріпленням fuseblk, але я дізнався, що це.

Gvfs - віртуальна файлова система Gnome. Це віртуальна файлова система, побудована на вершині вже наявного VFS ядра. gvfs використовує бібліотеку GIO (що є VFS API) для доступу до файлів, пристроїв, віддалених мережевих локацій тощо. У цьому випадку вище ('gvfs-fuse-daemon') gvfs використовує FUSE для монтажу файлів / локацій / пристроїв. Це по суті те, що відбувається, коли ви монтуєте віддалене мережеве з'єднання в Nautilus. Він використовуватиме FUSE для встановлення місця розташування (всередині?) Каталогу .gvfs, а потім спілкуватиметься з рівнем віртуальної файлової системи gnome для спілкування з новим кріпленням.

В основному ця структура дозволяє користувачеві динамічно монтувати нові місця та взаємодіяти з ними через nautilus.

Тільки для довідки: FUSE - файлова система файлу користувача, він також дозволяє користувачеві виконувати монтування навіть тоді, коли цей користувач не має root)

То де ж мене це залишає? Ну і диск LaCie монтується з типом fuseblk. Це просто блок пристрою, встановлений запобіжником. Тож демон демонстрував автоматичний виявлення накопичувача, коли він був підключений, а потім перейшов уперед і запустив запобіжник для монтажу блокового пристрою. Отже, що це за демон, і як він налаштований (я гадаю, це якась внутрішня річ гнома) - це найважливіше питання. Вторинним питанням є те, як система автоматично виявляє щойно вставлений USB-диск, але я думаю, що це трохи вбік і значно нижчий рівень тут (читайте: udev?).

Посилання:


чи є запис fstab для файлової системи / media / LaCie та / або пристрою / dev / sdb1? Чи інакше / dev / sdb1 позначено міткою (e2label / dev / sdb1)?
Ток,

Ні, немає запису fstab. Я вважаю, що вона позначена як це встановлено в / media / LaCie. Мені потрібно встановити ntfslabel, щоб довідатися, але я вже збираюся залишити роботу. Він також з'являється на моєму робочому столі як LaCie.
fthinker

Відповіді:


3

Я спробував це зробити на своєму комп’ютері, і це працює :)

Спочатку я отримую назву свого пристрою:

ls -l /proc/disk/by-id/

У моєму випадку це / proc / disk / by-id / usb-09a6_8001

Я додав цей рядок у / etc / fstab:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

І це працює, коли я підключаю свій usbkey, він встановлений ro і належить моєму користувачеві.


Дякую професору :) Але головна мета мого питання полягає в тому, щоб полегшити надзвичайні розлади, які я відчуваю щоразу, коли мене змушують розуміти, як працюють пристрої automount та usb. Я тут, щоб розшифрувати магію, що стоїть за цими складними системами. Крім того, використання пристроїв fstab та usb є дещо складним, оскільки вони не завжди гарантовано підключаються до запуску!
fthinker

1
Я не знаю, як це працює, але я впевнений, що нові пристрої виявляються правилами udev, погляньте на /etc/udev/rules.d/ та /lib/udev/rules.d/.
профі

2

На сьогодні рішення за замовчуванням, наскільки я знаю udisk, демон, що забезпечує dbus api , а також інтерфейс командного рядка . Також доступні кілька обгортків удиски та автозавод.

Зазвичай ви не налаштовуєте udiskсебе, оскільки він просто робить те, що йому сказано, і вам доведеться заглянути в Gnome. Можливо, утиліта Gnome Disk Utility дозволяє змінювати / змінювати самі прапори кріплення.


2

Як сказав Ульріх Дангель, удіски в даний час повинні бути опорними. Я ще не бачив, як воно отримує сповіщення (udev-> dbus-> udisks?), Але вручну його можна використовувати для монтажу пристрою з необхідними параметрами.

Udisks розмовляє з polkit, щоб побачити, що користувачеві дозволено робити з томами. Я здогадуюсь тут, але якщо ми зможемо знайти місце для встановлення властивостей для названого диска / пристрою, він повинен працювати.

Використовуючи udisksctl, ваш користувач повинен мати можливість монтувати пристрій за допомогою необхідних параметрів, приблизно таких:

udisksctl mount -b / dev / sdxy -o ro / mountpoint

Але я не можу розмістити варіанти.

ОНОВЛЕННЯ: Після пропозицій Ulrich я перейшов до дискової утиліти Gnome і домігся того, що вам потрібно, але не впевнений, це найелегантніше рішення чи ні. Я використовую Kororaa 17 (на базі Fedora 17) з Cinnamon + Gnome3, перейшов до утиліти "Диски" та змінив параметри кріплення для мого usb-накопичувача, додав "ro" та зберег.

Він додає запис до fstab (саме там я не вважаю це елегантним рішенням, я думаю, він повинен залишатися як конфігурація користувача, не широка система), я підключаю диск, і він встановлюється автоматично на вибраній точці монтажу з параметрами Я економив на утиліті дисків Gnome.


Що ви маєте на увазі, щоб побачити, як це повідомляється? Який крок відсутній?
Ульріх Дангель

І це не udev→dbus→udiskтількиudev/uevent→udisk→dbus
Ульріх Дангел

Я мав на увазі, що я не дуже впевнений, і хотів це перевірити, але тепер я бачу, що я не помилявся на 100%.
трипледи

[страйк] Будь ласка, покажіть рядок, який був доданий у fstab. Я хотів би підтвердити те, що я думаю, що це. [/ Strike] Отже, рядок fstab відповідає відповіді @proy? тобто з roваріантом.
інвертувати

-1

Щодо теми, як ядро ​​виявляє апаратне забезпечення, ось дуже приємна стаття, що відбувається .

Підсумовуючи:

  • ядро постійно сканує ваші комп'ютерні шини та переносить пристрої у віртуальну файлову систему, як правило, під /sys/.
  • ядро надсилає повідомлення, що udev доступне нове обладнання, яке:
    • обробляти правила udev на пристрої
    • Символьне з'єднання пристрою в /dev/
    • завантажувати драйвери пристроїв
    • повідомляти простір користувача пристрою через dbus

У цей момент пристрій готовий до використання у просторі користувачів. Gvfs і FUSE - це файлові системи файлів просторів користувачів.


Ні, udevзазвичай не сповіщають програми через dbusце, це робиться сторонніми програмами. Якщо ви користуєтесь, qdbus --systemви не побачите імен udev. Зазвичай додатки просто підписуються на ueventsвласні правила чи надсилають свої правила
Ульріх Дангел,

Дякуємо, що вказали на це @ulrich. У моєму резюме наводиться дуже базовий контур, що виключає багато кроків між проміжками. Дивіться прив'язану статтю, щоб отримати деталі.
інвертувати

2
ця стаття також помилкова, тому що для моніторингу автобусів зазвичай не бере участь опитування
Ульріх Дангел
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.