LINUX.ORG.RU

Сообщения flammmable

 

Почему ключ After в юните срабатывает до автомонтирования?

Хочу произвести автоматическое резервное копирование на флешку после её автомонтирования.

Для этого в /etc/fstab я прописал…

UUID=0698-A3CF  /flash  vfat  noauto,nofail,x-systemd.automount,x-systemd.idle-timeout=15,x-systemd.device-timeout=15

И в /etc/systemd/system/ создал юнит my_backup.service. Я заполнил его согласно этой инструкции https://askubuntu.com/questions/25071/how-to-run-a-script-when-a-specific-flash-drive-is-mounted

[Unit]
Description=My backup script trigger
Requires=flash.automount
After=flash.automount

[Service]
ExecStart=/myfolder/python_backup.py

[Install]
WantedBy=flash.automount

Скрипт на Питоне великолепно отрабатывает, если его запускать отдельно и почти великолепно, если он запускается по монтированию флешки. Почти, кроме… собственно копирования необходимых файлов. В логе пишется «Нет устройства /flash». Кроме того, закомментировав функции работы с файлами, при помощи задержки в скрипте на Питоне и команды ls /flash я выяснил, что флешка не монтируется до тех пор, пока скрипт не будет выполнен до конца. Но ведь в юните написано «After». Возможно ли так переписать юнит, чтобы скрипт на Питоне начал выполняться после монтирования флешки?

 , , , ,

flammmable
()

Как обеспечить автомонтирование флешки в Debian?

У меня есть Orange Pi One. Я хочу с его помощью обеспечить сбор данных с датчиков в режиме 24/7. И иметь возможность сохранять БД на флешку. Учитывая наличие всего одного порта USB, а также определённую автономность работы устройства, хотелось бы автоматизировать процесс копирования БД: вставляется флешка, по этому событию происходит автомонтирование, начинает мигать индикатор и происходит автоматическое копирование, затем происходит автоматическое отмонтирование, а индикатор начинает мигать иначе, сигнализируя, что копирование завершено и флешку можно удалить.

Проблема в автоматическом монтировании и демонтировании флешки.

Сперва я решил установить утилиту usbmount…

sudo apt install usbmount

Но её видимо нет в репозитории:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package usbmount

Затем я попробовал вставить в .sh, вызываемый по правилу из /etc/udev/rules.d команду…

mount /dev/sda1 /flash

Но такая команда закономерно не отрабатывается:

mount: /flash: must be superuser to use mount.

Тогда я почитал про /etc/fstab. В частности, вот этот способ: https://unix.stackexchange.com/questions/347006/systemd-how-do-i-automount-a-usb-filesystem-using-etc-fstab.

Я вставил флешку, выполнил команду…

lsblk -f

…и получил UUID

NAME        FSTYPE FSVER LABEL      UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1      vfat   FAT32            0698-A3CF
└─sda2      vfat   FAT16 VTOYEFI    3A23-0E50

Затем внёс изменения в /etc/fstab заменив только UUID и таймауты (поставил по 15):

UUID=0698-A3CF  /mnt/32GBkey  vfat  noauto,nofail,x-systemd.automount,x-systemd.idle-timeout=15,x-systemd.device-timeout=15

Затем вместе с sudo обновил изменения:

sudo systemctl daemon-reload && sudo systemctl restart local-fs.target

Отмонтировал флешку, вытащил её. Команда lsblk -f показала, что флешки больше нет.

Переткнул её и снова выполнил lsblk -f. Флешка по-прежнему опознаётся, но в графе MOUNTPOINTS всё также пусто. Флешка не смонтировалась.

Что я делаю не так? Возможно ли обеспечить реализацию такой типовой задачи, как автомонтирование флешки без многодневного «изучения инструментов & профессионального саморазвития» в замечательной операционной системе Linux (и потратить освободившееся время, например, на написание кода на Питоне, реализующего решение прикладных проблем)?

 , , , ,

flammmable
()

Как запустить скрипт при подключении флешки?

Добрый день. Пытаюсь настроить выполнение скрипта при подключении флешки к Orange Pi One.

Подключил флешку, выполнил команду lsblk, она ответила:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    1   7.2G  0 disk
├─sda1        8:1    1   7.2G  0 part
└─sda2        8:2    1    32M  0 part
mmcblk0     179:0    0 119.4G  0 disk
└─mmcblk0p1 179:1    0 118.2G  0 part /var/log.hdd

Выполнил udevadm info -a -n sda1. Он выдал много чего, но в том числе:

    KERNEL=="sda1"
    SUBSYSTEM=="block"

Создал в папке /etc/udev/rules.d правило 20-usb-flash-connect.rules.

В нём написал:

KERNEL=="sda1",ACTION=="add", RUN+="echo 999 > /orbital/test.txt"

Создал папку orbital, а в ней файл test.txt. В котором написал «123». Затем выполнил команду sudo chmod a+rwx test.txt. И проверил её выполнение через ls -l:

...
-rwxrwxrwx 1 orbital orbital     5 Oct 28 14:39 test.txt
..

Выполнил sudo udevadm control –reload. Выполнил sudo udevadm test /dev/sda1. Последняя выдала много чего, но в том числе:

Reading rules file: /etc/udev/rules.d/10-wifi-disable-powermanagement.rules
Reading rules file: /etc/udev/rules.d/20-usb-flash-connect.rules
Reading rules file: /usr/lib/udev/rules.d/50-firmware.rules
...
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
sda1: /etc/udev/rules.d/20-usb-flash-connect.rules:1 RUN 'echo 999 > /orbital/test.txt'
sda1: /usr/lib/udev/rules.d/50-udev-default.rules:85 GROUP 6

Вроде всё должно сработать, но… Перетыкаю флешку - значение /orbital/test.txt не меняется. Что я делаю не так?

 , ,

flammmable
()

make install идёт бесконечно

Добрый день!

Я купил Orange Pi One для развёртывания на нём системы мониторинга, написанной на Python. Из официальных образов Orange Pi One я установил Debian Server 5.3.5.

Но обнаружил, что у этой сборки нет предустановленного Питона.

Тогда я

  • скачал с официального сайта архив Python-3.12.7.tar.xz,
  • скопировал его в папку /opt/python/download
  • распаковал, зашёл в папку cd /opt/python/download/Python-3.12.7/
  • произвёл конфигурацию при помощи команды sudo ./configure –prefix=/opt/python/python3.12/ (также я добавлял и убавлял аргумент –enable-optimization)
  • запустил sudo make install

…и он длится просто бесконечно, постоянно проверяя кучу каких-то параметров

checking for ftime… yes

checking for ftruncate… yes

checking for futimens… yes

Причём проверки повторяются, повторяются и повторяются.

Как мне без плясок с бубном «изучения рабочих инструментов & саморазвития» в разумные сроки установить Питон и заняться непосредственными задачами?

Зная инженерно-техническое комьюнити хотелось бы заранее ответить на некоторые возможные дополнительные вопросы:

  1. «Не, а зачем тебе Orange Pi One? Запусти мониторинг на Orange Pi 5 Max/Raspberry Pi/десктопе»

Orange Pi One - один из самых дешёвых, если не самый дешёвый одноплатник. Да, у меня есть из чего собрать небольшой десктоп. И если совсем припрёт, я запущу систему мониторинга на установленной на нём винде. Но хотелось бы сперва убедиться, что Линукс как ОС полностью непригоден для рабочих задач а нужен лишь для «изучения рабочих инструментов & саморазвития».

  1. «Почему ты решил собирать Питон из исходников? Почему не воспользуешься установкой при помощи apt-get? Там всё просто»

В файле /etc/apt/sources.list данной системы есть только http://ftp2.cn.debian.org/debian stretch main contrib non-free http://ftp2.cn.debian.org/debian stretch-updates main contrib non-free http://security.debian.org/debian stretch/updates main contrib non-free Все они не открываются. Если удалить .cn - тоже (404).

  1. «У тебя очень старая система, попробуй собрать под свой проц что-нибудь подновее. Вот тут есть Арч-фигарч, не знаю подойдёт ли, но попробовать стоит»

ЭВМ и ПО изначально создавались, что решать задачи, а не создавать их. Я хочу запустить систему мониторинга и любоваться на красивые графики. Для этого я готов запрогать её на Питоне, разобравшись, как он взаимодействует с SQLite, как на нём рисовать графики и как реализовать регулярную рассылку статистических срезов с картинками. Я не хочу погружаться в бесконечное фракталоподобное «изучения рабочих инструментов & саморазвитие».

 , ,

flammmable
()

RSS подписка на новые темы