Вопрос или проблема
У меня есть 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 (Устранение неполадок)
-
Логи системы: Если автоматическое монтирование не происходит, проверьте системные логи для диагностики:
journalctl -xe
-
Права доступа: Убедитесь, что ваш скрипт имеет права на выполнение и что пользователь, под которым работает
udev
, имеет права на выполнение команд монтирования и доступа к устройствам. -
Отладка: Для отладки скрипта добавьте отладочные сообщения, например, с помощью команды
echo
, чтобы записывать выполнение скрипта в файл.
Соблюдение этих рекомендаций позволит вам автоматизировать процесс монтирования и выгрузки флеш-накопителя при использовании Orange Pi One с Armbian. Успехов в вашем проекте по сбору данных!