Автор Тема: монтирование usb-носителей на платформе p7  (Прочитано 8442 раз)

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
ну с таким же успехом можно и /media делать как tmpfs
Согласен.
Т.е. только вроде все устаканили и все привыкли... эти идиоты-systemd'шники все сломали....
Да! Но все-таки p7 мне больше нравится, чем наоборот.
Научить нельзя, научиться можно.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Т.е. только вроде все устаканили и все привыкли... эти идиоты-systemd'шники все сломали....
Да! Но все-таки p7 мне больше нравится, чем наоборот.

Мне тоже p7 больше нравится.
Особенно вывод
ls -1 /etc/systemd/system/*.wants/
ls -1 /lib/systemd/system/*.wants/

после вывода
chkconfig --list
в sysvinit системах.
Нечего даже удивляться почему для серверов оставлен sysvinit.
Сугубо личное: мне такой подарок у себя на десктопе не нужен, когда кажущаяся простота приходит на смену логичности.
Чтобы было понято правильно:
альты здесь в этом вопросе очень в стороне, с очень не простым ответом. По собственному видению.
И собственному мнению.
Всё что есть в альтах на текущий, заслуживает уважения с множеством ответов потому что.
В собственном видении.
Несмотря на то, что на те же альты иногда и бурчу.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Неудалённые точки монтирования в /media я встречал много раз, чтобы их удалить просто необходимо становиться рутом или давать привилегии пользователю.
Это от неумения и нежелания знать что такое UNIX.
От полного нежелания перед первой в жизни установкой хотя бы по-верхам познакомиться с понятием файловых систем, процессов и иерархией каталогов UNIX-подобных.
Пользователь мог бы и догадаться, что перед размонтированием надо бы прибить процессы, которые держат mountpoint.
А всё так просто, - RTFM же! И ведь пишет же: "Том занят. Одно или более приложений используют том"!
# umount /run/media/altlinux/Transcend2/
umount: /run/media/altlinux/Transcend2: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

И даже скажет кто использует
$ /usr/sbin/lsof | grep /run/media/altlinux/
medit     13511       altlinux  cwd       DIR       8,34      4096        2 /run/media/altlinux/Transcend2
gdbus     13511 13514 altlinux  cwd       DIR       8,34      4096        2 /run/media/altlinux/Transcend2

Мягкий способ отпустить mountpoint (точку монтирования):
Mount/umount USB-Flash
Из которого
Цитировать
Скрипт для принудительного размонтирования может выглядеть так:
#!/bin/sh
# пытаемся убить все блокирующие процессы вежливо
fuser -k TERM -m /media/n78
sleep 1
# если кто-то уцелел, то пытаемся убить их грубо
fuser -k KILL -m /media/n78
sleep 1
# а вот теперь размонтируем
umount /media/n78
можно сделать выжимку.
Здесь следует сказать, что если использовать скриптом, а не командами, в данном простейшем виде скрипт заготавливается под каждую usb-flash, поскольку uuid или label (метка), это уникальные идентификаторы, которые в данном случае, применимо к текущей ситуации, используются как точка монтирования.
Далее ниже в примере, точка монтирования Transcend2: LABEL = Transcend2

Спойлер
Цитировать
Чуть более развёрнутая версия того же самого без лишних ожиданий может быть такой:
#!/bin/sh

if test "_$#" = '_1'
then
  FS="$1"
else
  echo 'Usage:' $0 '/mount-point'
  exit 1
fi

for sig in TERM KILL
do
  if mountpoint -q "$FS"
  then
    if fuser -m "$FS"
    then
      fuser -k $sig -m "$FS"
      sleep 1
    else
      break
    fi
  else
    echo 'not mounted'
    exit 0
  fi
done

umount "$FS"
Обратите внимание: убивание процессов — довольно чувствительная операция, поэтому надо быть особо осторожным. В частности, если файловая система не смонтирована, то действия будут отнесены к корневой файловой системе и скрипт перебьёт всех, до кого дотянется. Поэтому важно проверять mountpoint.
Из которого тоже можно сделать выжимку по-вкусу.

Садистский способ (удушить несмотря ни на что - ключ '-k' (без указания параметров пересылается сигнал SIGKILL - убить все процессы которым он отправлен)):
Как узнать, какое приложение заблокировало файл/директорию/раздел?
Цитировать
Вообще-то `man lsof`, `man fuser` :)
Например, команда
user@linux# lsof|grep /home
покажет все открытые файлы в каталоге /home.
А команда
root@linux# fuser -km /home
Завершит выполнение всех процессов, работающих с файловой сисмемой /home. Будьте внимательны, если /home является не отдельной файловой системой, а частью корневой, то результат может превзойти ваши ожидания :)

Поймите меня правильно: я сторонник элегантности, красоты и минимализма.
Чётко разделяющий на то, что я знаю и то чего не знаю, а узнать надо.
Это воспитано спектрум-платформой и менять это бесполезно.
Есть ровно два способа решения сиюминутной проблемы:
Первый: Поместить исполняемый код решающий проблему на винчестер.
Второй: Держать "исполняемый код", решающий проблему, в голове.

Я сторонник второго.
В первом случае срабатывает человеческий фактор и как следствие недоработки, ошибки и утяжеление системы дубликатом того, что уже есть.

Как результат второго способа:
mountpoint ни в run, ни в var не нужен.
Чёткое соблюдение FHS.

Подозреваю Android после активации опции "Отключить карту памяти", в первую очередь делает то же самое - мочит все процессы которые держат microSDHC.
И это правильно. Это по-UNIX'овому.

Цитирование уже существующего потому, что:
- цитируемый ресурс может помереть
- самому писать лень
- всё уже написано где-то
- поделиться с теми, кому это необходимо и полезно.

На деле это работает так:
Файловая система раздела sdc2 смонтирована в точки монтирования:
$ mount|grep run|grep media
/dev/sdc2 on /run/media/altlinux/Transcend2 type ext3 (rw,nosuid,nodev,relatime,errors=continue,barrier=1,data=writeback,uhelper=udisks2)
/dev/sdc2 on /var/run/media/altlinux/Transcend2 type ext3 (rw,nosuid,nodev,relatime,errors=continue,barrier=1,data=writeback)

sdc2 держит открытое приложение medit в котором открыт файл лежащий на Transcend2:
$ /usr/sbin/lsof | grep /run/media/altlinux/Transcend2
medit     13511       altlinux  cwd       DIR       8,34      4096        2 /run/media/altlinux/Transcend2
gdbus     13511 13514 altlinux  cwd       DIR       8,34      4096        2 /run/media/altlinux/Transcend2

А здесь нет:
$ /usr/sbin/lsof | grep /var/run/media/altlinux/Transcend2
$

Посылаем сигнал SIGTERM всем процессам которые работают с файловой системой Transcend2:
$ fuser -k -SIGTERM -m /run/media/altlinux/Transcend2

Теперь Transcend2 ничего не держит:
$ /usr/sbin/lsof|grep /run/media/altlinux/Transcend2
$
Если бы продолжало держать, можно было бы послать сигнал SIGKILL
Цитировать
man fuser
-k
Уничтожает  (завершает)  процессы,  которые  используют  указанный  файл. Посылаемый сигнал завершения SIGKILL можно заменить с помощью параметра -signal.
Ну и уж черезвычайно редкая необходимость, выпонить fuser от root или sudo.

Отмонтируем через проводник.
Всё размонтировано:
$ mount|grep run|grep media
$

Единственно остались созданные каталоги media/altlinux/, но это уже специфика новой системы монтирования:
$ ls -l /run/media
итого 0
drwxr-x---+ 2 root root 40 июл  8 09:09 altlinux
$ ls -l /run/media/altlinux/
итого 0
(После ребута:)
$ ls -l /run/media
ls: невозможно получить доступ к /run/media: Нет такого файла или каталога
$ ls -l /run/|grep media
$
$ mount | grep run
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /var/run type tmpfs (rw,nosuid,nodev,mode=755)

Вместо всей этой "простыни" достаточно было просто закрыть medit.
« Последнее редактирование: 09.07.2013 09:00:28 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Как я понял - основная цель изменений в том, чтобы перенести точки монтирования в файловую систему,
...
ну с таким же успехом можно и /media делать как tmpfs

Что говорит FHS 2.3:
3.11. /media : Mount point for removeable media
...
Т.е. только вроде все устаканили и все привыкли... эти идиоты-systemd'шники всё сломали....

Первый раз что ли? :)
Там одна тусовка: сначала запутались в инициализации системы, потом разбросали исполняемые файлы необходимые для полной загрузки системы куда монета упала, а потом по каталогам симлинками как вдарили. Чтоб зачистить это дело и чтоб мало не казалось.
Какие уж тут стандарты FH... Не до них.

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 6 046
Стоп, как по-умолчанию? regular-icewm в последнем и инит сохранил и usb научился монтировать?
Через udisks2, ну и соответственно весь софт который поддерживает...
Надо только правила подкрутить...
Уже же обсуждали
http://www.altlinux.org/Sysvinit

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Стоп, как по-умолчанию? regular-icewm в последнем и инит сохранил и usb научился монтировать?
Через udisks2, ну и соответственно весь софт который поддерживает...
Надо только правила подкрутить...
Уже же обсуждали
http://www.altlinux.org/Sysvinit
А... Ну да.
Tnx.

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Это от неумения и нежелания знать что такое UNIX.
От полного нежелания перед первой в жизни установкой хотя бы по-верхам познакомиться с понятием файловых систем, процессов и иерархией каталогов UNIX-подобных.
Ставите меня в положение оправдывающегося, ладно.
Я прекрасно в курсе этих понятий, возможно менее глубоко, чем Вы, но в курсе.
И, поверьте, на моих личных ПК такой ситуации не происходит, ну только если авария по питанию. А те, у кого я такое встречал, встречаю и буду встречать - обычные пользователи, привыкшие решать проблему простым вытаскиванием флешки, нет у них этой культуры, и скорее всего не будет в силу ряда причин.

Поймите меня правильно: я сторонник элегантности, красоты и минимализма.
Чётко разделяющий на то, что я знаю и то чего не знаю, а узнать надо.
Это воспитано спектрум-платформой и менять это бесполезно.
Есть ровно два способа решения сиюминутной проблемы:
Первый: Поместить исполняемый код решающий проблему на винчестер.
Второй: Держать "исполняемый код", решающий проблему, в голове.
С юниксами я начал работать на HP-UX. В давнюю инженерскую бытность учился на курсах у Мошкова и Прилипко. Тогда же Линукс для меня начался. Разделяю Ваши идеалы, но придерживаюсь первого подхода, естественно не забывая про голову  :) Заметьте, что такого правильного и сложного размонтирования нет нигде (в знакомых мне дистрибутивах), а андроид - совсем другая история - там флешка является и системным диском одновременно.

Дальше уж без цитирования: двумя руками за FHS, только это как в жизни с ГОСТ на ODF - не предписание, а рекомендация.
Альт уважаю и поддерживаю за внедрение нового и сохранение традиционного "в одном флаконе"  :)
Научить нельзя, научиться можно.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
От полного нежелания перед первой в жизни установкой хотя бы по-верхам познакомиться с понятием файловых систем, процессов и иерархией каталогов UNIX-подобных.
Ставите меня в положение оправдывающегося, ладно.
К вам? Ни в коем разе!
Я и сам-то на форуме у всех учусь. :)
А зачем оно в run и в var конечно и так понятно для кого оно всё.

А те, у кого я такое встречал, встречаю и буду встречать - обычные пользователи, привыкшие решать проблему простым вытаскиванием флешки, нет у них этой культуры, и скорее всего не будет в силу ряда причин.
Мы все по большому счёту обычные пользователи. И я не исключение.

Как бы это  кратко и ясно? Опять же, не в вашу сторону. Это просто мысли вслух.
Простой пользователь тоже считает телевизор бытовой аппаратурой.
Сгорел предохранитель в телевизоре. Магазины закрыты.
Вставил жучок. Пожар. Жертвы.
А если бы открыл таблицу, в которой указано, при каком диаметре, какие материалы, при каком ампераже сгорают, и взял бы соответствующее амперажу, не было бы ни пожара, ни жертв.
Я к чему?
Никакая самая бытовая аппаратура никогда не избавит от необходимости знать.
Можно конечно и не хотеть знать. (Если ничего не трогать и ничего не включать.)
Но тогда пожарные без работы не останутся. :)

Я не про то, что учить некому (в школах). Есть кому.
Я про тех, кого учат (в школах).
И когда захотят научится? Да и захотят ли...

Знаете в чём вижу свой идеал?
Это когда у тех, кого учил, приходится учиться самому.

А то что выше, пусть оно лежит. Вдруг сгодится кому, чтобы далеко не искать.

Альт уважаю и поддерживаю за внедрение нового и сохранение традиционного "в одном флаконе"  :)
Самый идеальный вариант!
« Последнее редактирование: 08.07.2013 12:00:49 от Speccyfighter »

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
А то что выше, пусть оно лежит. Вдруг сгодится кому, чтобы далеко не искать.
Да, полезная информация.
Извините за вчерашний небольшой всплеск эмоций - переживал за жену в роддоме.
Дочка!  :)
Научить нельзя, научиться можно.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 168
    • Домашняя страница
Дочка!  :)
Поздравляю! Здоровья маме и малышке, терпения и сил папе!
Андрей Черепанов (cas@)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
:) С новорожденной.
Спокойных ночей и сухих пелёнок!

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Спасибо!!!  :)
Научить нельзя, научиться можно.

Оффлайн aen

  • alt linux team
  • ***
  • Сообщений: 2 452
А то что выше, пусть оно лежит. Вдруг сгодится кому, чтобы далеко не искать.
Да, полезная информация.
Извините за вчерашний небольшой всплеск эмоций - переживал за жену в роддоме.
Дочка!  :)

Поздравляю Вас и Вашу супругу! Здоровья всей семье!

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
Спасибки!

Научить нельзя, научиться можно.