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- я не знаю. Наразі вирішив проблему деяким хаком у скрипті розмонтування.