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

Вопрос или проблема

У меня есть Orange Pi One с операционной системой Armbian. Я хочу использовать его для сбора данных с датчиков 24/7. И иметь возможность сохранять базу данных на флешку.

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

Проблема заключается в автоматическом монтаже и размонтировании флешки.

  • Сначала я решил установить утилиту usbmount…
    sudo apt install usbmount
    

    Но, похоже, ее нет в репозитории:

    Чтение списков пакетов... Готово
    Формирование дерева зависимостей... Готово
    Чтение информации о состоянии... Готово
    E: Не удалось найти пакет usbmount
    
  • Затем я попытался вставить в .sh, вызываемый правилом из /etc/udev/rules.d, команду…
    #!/bin/sh
    sleep 15
    echo "mount runs" >> /mydir/log.txt
    echo MY_PASSWORD | sudo mount /dev/sda1 /flash
    

    Скрипт успешно запускается из командной строки, когда флешка подключена. Но начиная с правила, этот скрипт записывает текст в файл log.txt, но не монтирует диск.

Затем я прочитал о /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 все еще пуст. Флешка не была смонтирована.

Что я делаю не так?

Ответ или решение

Для автоматического монтирования флеш-накопителя на Debian, особенно в контексте использования Orange Pi One с системой Armbian, требуется выполнить несколько шагов. Рассмотрим процесс подробно, учитывая описанные вами проблемы и решения.

Шаг 1: Установка необходимых пакетов

Хотя вы упомянули о неудаче с установкой usbmount, стоит прояснить, что в Armbian эта утилита может отсутствовать в стандартных репозиториях. Вместо этого вы можете использовать другие подходы, такие как использование udev для автоматического выполнения скриптов при подключении устройства.

Шаг 2: Настройка правил udev

Создание правила udev для автоматического выполнения скрипта при подключении флеш-накопителя может быть более надежным методом. Создайте правило в /etc/udev/rules.d/99-usb-mount.rules:

ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/usr/local/bin/usb-mount.sh"

Шаг 3: Написание скрипта монтирования

Создайте файл скрипта, /usr/local/bin/usb-mount.sh, с правами на выполнение:

#!/bin/sh
sleep 10
MOUNT_POINT="/mnt/32GBkey"
DEVICE="/dev/sda1"

mkdir -p $MOUNT_POINT
mount $DEVICE $MOUNT_POINT

# Здесь добавить команду для копирования данных
# cp /path/to/database/* $MOUNT_POINT

# Для демонстрации: ждем завершения копирования
sleep 5
umount $MOUNT_POINT

Не забудьте сделать скрипт исполняемым:

sudo chmod +x /usr/local/bin/usb-mount.sh

Шаг 4: Проверка fstab

Действительно, вы уже настроили файл /etc/fstab, чтобы ваш накопитель автоматически монтировался. Проверьте, что в нем указаны правильные параметры:

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

Обратите внимание на noauto: это позволяет системе не монтировать диск при загрузке, но обеспечивает монтирование при первом обращении к точке монтирования.

Шаг 5: Проверка и перезагрузка системы

После внесения всех изменений перезагрузите систему, чтобы применить новые настройки:

sudo reboot

После перезагрузки подключите флеш-накопитель, и проверьте, происходит ли автоматическое монтирование:

lsblk -f

Troubleshooting (Устранение неполадок)

  1. Логи системы: Если автоматическое монтирование не происходит, проверьте системные логи для диагностики:

    journalctl -xe
  2. Права доступа: Убедитесь, что ваш скрипт имеет права на выполнение и что пользователь, под которым работает udev, имеет права на выполнение команд монтирования и доступа к устройствам.

  3. Отладка: Для отладки скрипта добавьте отладочные сообщения, например, с помощью команды echo, чтобы записывать выполнение скрипта в файл.

Соблюдение этих рекомендаций позволит вам автоматизировать процесс монтирования и выгрузки флеш-накопителя при использовании Orange Pi One с Armbian. Успехов в вашем проекте по сбору данных!

Оцените материал
Добавить комментарий

Капча загружается...