IvmanAutomount (subfs)

Поворотно застаріло: цю функціональність реалізує пакет hal-mount-subfs.

Необхідно перенести вміст цієї статті до статті IvmanAutomountВи можете допомогти проекту, об'єднавши їх.

Зміст

Автомонтування пристроїв через зв'язку ivman + subfs [ред.]

До зв'язки ivman &ppmountу мене (особисто) завжди було кілька претензій:

  • необхідність тримати два екземпляри (системний і користувальницький)ivman'а (що для однокористувацької машини зайве, а для машини, на якій одночасно залогінено кілька користувачів, загрожує конфліктами «хто перший встигне»);
  • необхідність говорити щось руками (pumount) для відмонтування пристрою;
  • мізерність параметрів монтування черезpmount

Поведінка ж пакетівhal-fstab-sync&hal-mount-subfsмене завжди більше, ніж влаштовувало. Тому, після того, як в останніх версіяхhalбув поставлений конфлікт наhal-fstab-sync, і мимоволі довелося перейти наivman, мені дуже захотілося відтворити стару звичну функціональність.

Короткий опис системи [ ред .

halдетектує подію появи або зникнення пристроїв.Ivmanприймає рішення, що у зв'язку з цією подією зробити з пристроєм - змонтувати, розмонтувати, або якусь програму запустити. Ми прописуємоivmanу наші власні команди монтування/розмонтування — скрипти, які роблять всю решту роботи.

Отже, по порядку:

Скрипти монтування та розмонтування [ ред .

Скрипт, що займається монтуванням, є художньо переробленим прикладом із GentooWiki. Він з'ясовує бажану точку монтування, опції монтування в залежності від файлової системи пристрою, створює унікальну точку монтування та, власне, монтує пристрій.

Скрипт розмонтування намагається розмонтувати пристрій і, при успіху, знищує точку монтування.

Налаштуванняivman[ред.

Система призначена для роботи із системним екземпляром демонаivman. Щоб не псувати конфігураційні файли самогоivmanа, ми використовуємо для зберігання модифікованих xml-конфігів власну директорію /etc/ivman-mount-subfs. Суть їх модифікації — наші власні команди монтування/розмонтування, відключення затримки монтування (оскільки не передбачається використання варіанта користувачаIvman), і включення виявлення підключених пристроїв при старті демона. Відповідно, для стартуivmanа з використанням нашого варіанту конфігів використовується окремий init-скрипт /etc/rc.d/init.d/ivman-mount-subfs.

За умовчанням,ivmanпрацює від імені непривілейованого користувачаivman. Щоб він міг без проблем виконувати команди монтування/розмонтування, ми повинні або ставити ці командиSUID, або робити виклики черезsudo. Самivmanрекомендує у налагоджувальних логах другий варіант. Так і зроблено - у файлі /etc/sudo.d/ivman-mount-subfs користувачуivmanдозволено безпарольно викликати наші скрипти для монтування та розмонтування.

Виклик цих скриптів як програм монтування/розмонтування доданий до системного конфігуivman'а IvmConfigBase.xml:

монтування ми викликаємо з ##DEFINITION UDI => Універсальний ідентифікатор пристрою##, яким скрипт визначає всі необхідні монтування властивостіпристрої. А коли запускається скрипт розмонтування, пристрій вже швидше за все видалено, і hal про нього може нічого не знати. Тому в якості параметра передається вилучений пристрій. Простіше було б використовувати точку монтування, але іноді ivman навідріз відмовляється її передавати.

Конфіґі [ред.]

Скрипт монтування використовує конфігураційний файл /etc/sysconfig/subfs_mount_options, де зберігаються опції монтування для різних файлових систем:

: Формат та наповнення цього конфігу, швидше за все, буде змінено та доповнено.

Крім того, використовується файл 95-ivman-mount-subfs-storage-policy.fdi, запозичений із пакетаhal-fstab-sync. Це дає нам як мінімум двох мертвих зайців:

  • список пристроїв, які монтуватимеivman. А то, наприклад, він відмовляється монтувати USB жорсткі диски.
  • потрібні точки монтування для різних типів пристроїв.

Встановлення та використання [ред.]

Вся система опікована (завантажити RPM, src.rpm). Встановлюємо пакет, редагуємо /etc/sysconfig/subfs_mount_options на втіху. Відключаємо базову версіюivmanа (якщо запущена):

(останнє — для варіантів користувачаivman'a, якщо вони є. Тоді потрібно так само відключити їх автозапуск). Конфігуруємо автозапуск нашої системи:

Якщо є необхідність змусити нашу систему працювати з власним варіантомivmanа, потрібно вручну прописати в конфіг користувача виклик команд монтування/розмонтування і додати користувача в sudoers.

Земічені глюки [ред.]

У мене є USB-HDD із чотирма розділами. І при монтуванніivman'ом один із розділів, не обов'язково один і той же, постійномонтувався «як би двічі»: у виведенні команди mount він був перерахований лише один раз, однак команду umount доводилося виконуватидвічі, щоб точка монтування звільнилася. При монтуванніivmanлаявся в логи так:

Хто тут винен - ​​ivman ,hal,subfs- я не знаю. Наразі вирішив проблему деяким хаком у скрипті розмонтування.