Установка majordomo на ssd диск
Не так давно я описывал процесс установки сервера Home Assistant на Raspberry Pi и упоминал недостаток подобной системы: работающий Home Assistant может довольно быстро «убивать» microSD-карточки интенсивными операциями чтения-записи.
Выход из ситуации — установка системы на внешний HDD или SSD диск и загрузка микрокомпьютера с него.
Загрузка и установка MajorDoMo
Скачиваем последнюю версию системы из исходников:
Переименовываем файл config.php.sample в config.php и редактируем его со следующими параметрами:
Меняем права на папки и файлы:
Для авто-запуска и удобного управления majordomo создадим файл /etc/init.d/majordomo:
Выставим на него права и добавим в авто-загрузку:
Оптимизация для работы с SD-картой
С большего всё работает, но MajorDoMo достаточно интенсивно работает с файловой системой, что пагубно отражается на сроке жизни SD-карты, а поэтому нам нужно это как-то оптимизировать.
Перед внесением изменений остановим сервис majordomo и базу данных mysql:
Перейдём в папку /var/www и создадим там папку database_backup для периодического скидывания базы данных на карту памяти:
Активируем цикл периодического сохранения базы данных (он запустится автоматически при следующем запуске системы):
Т.к. часть папок мы перенесём в файловую систему tmpfs, то при загрузке нам надо будет воссоздавать необходимую структуру, ведь эти файлы будут жить до следующей перезагрузки. Создаём файл /etc/init.d/prepare-dirs:
Меняем на него права и ставим в авто-запуск:
Далее вносим правки в настройку файловой системы tmpfs. Добавляем в файл /etc/fstab следующее:
Вносим изменение в /etc/mysql/my.conf, в частности меняем путь к файлам базы данных:
. и добавляем (чтобы сократить размер базы файлов данных):
Запуск Watchdog-а
Watchdog позволяет автоматически перезапустить систему в случае каких-либо критических зависаний.
Загружаемый встроенный модуль ядра watchdog:
Для автозагрузки модуля добавляем его в файл /etc/modules командой:
Теперь проверим, что он добавился командой lsmod, должны быть такие строки:
Пару слов про возможности и особенности системы:
- Файловая система F2FS (оптимизирована для карт памяти);
- Оптимизация циклов записи базы данных на карту памяти;
- Голосовой движок RHVoice;
- Звук через сервис MPD;
- MQTT-брокер Mosquitto;
- Apple HomeKit-совместимость (через HomeBridge);
- Установленные средства разработки: PHP, Python, NodeJS, Perl;
- Последние обновления MajorDoMo и Raspbian Jessie (на момент релиза текущей версии);
- Работает установка дополнений из Маркета, а так же обновления ядра системы.
Особенность конфигурации — всё настроено так, чтобы минимизировать количество циклов записи на SD-карту. База данных использует tmpfs с периодической «фиксацией» (раз в 15 минут). Т.е. возможен вариант, что при аварийном выключении питания система будет восстановлена c потерей данных за последних несколько минут.
Для начала работы по установке системы MD желательно обзавестись следующим:
Теперь обо всём по порядку:
Подготовка карты памяти. На данном этапе нам необходимо перенести образа MD на SD карту. Значит, берем карту, вставляем ей в картридер и запускаем программу Win32DiskImager. В появившемся окне, в поле «Device», выбираем нашу флешку, а в поле «Image file» указываем распакованный из архива образ MD и нажимаем кнопку «Write».
Необходимо дождаться завершения записи, которая должна пройти без всяких ошибок. В противном случае необходимо заменить SD карту на новую и попробовать заново.
Первый запуск RPI3. Вставляем карточку в RPI3, подключаем сетевой кабель, колонки и подаём питание. Обратите внимание на выбор БП, нагрузочная способностью которого должна быть не мене 2.5А (лучше 3А), иначе могут наблюдаться сбои при работе системы. Вообще, для долговременной и стабильно работы системы желательно подключить питание от ИБП.
После загрузки система должна получить IP-адрес по DHCP и быть доступна по веб-интерфейсу. В моем случае, после подачи питания, через какое-то время я услышал из колонок следующие фразы «Система загружена» и «ай пи адрес 192.168.0.33». Ниже привожу скрин «чистого» экрана системы (главного):
Теперь можно зайти на RPI3 через SSH/FTP, данные для входа:
Менеджер базы данных(phpMyAdmin):
Имя пользователя: root
Пароль: rootpsw
Сервис MajorDoMo стартует автоматически, но можно управлять им через консоль: sudo /etc/init.d/majordomo stop sudo /etc/init.d/majordomo start
Настройка MD
Подготовка. В данной статье будет рассмотрена возможность настройки системы через SSH доступ. В принципе, тоже самое можно сделать подключив к RPI3 монитор, клавиатуру и сетевой кабель (без использования Putty).
Запускаем программу Putty. В появившемся окне вводим полученный от системы IP адрес и нажимаем кнопку “Open” .
Далее, в появившемся окне, жмём кнопку «Да».
Теперь вводим стандартные имя пользователя и пароль. Если всё сделано правильно – появится готовая к работе консоль.
Подготовка к настройке системы сделана, теперь сама настройка.
Настройка статического IP адреса. Для пользователей, которые понимают что это такое, и которым это не требуется, могут пропустить данный пункт. Вводим в консоли:
Так случилось, что жизнь заставила приступить к частичной автоматизации квартиры, особенно в части её безопасности, краны, газ, вход, электричество, ну а потом уже всё остальное.
Для себя определил следующие критерии:
- Место — квартира, где переделка (существенная переделка чего-либо не планируется).
- Возможность интеграции всех решений в единую систему УД с открытым кодом .
- Возможность постепенного расширения (масштабирования) функционала.
- По-возможности, минимальные затраты.
- По возможности покупка элементов системы в РБ или же в РФ, без всяких заказов с зарубежных сайтов. Пришел, посмотрел, купил.
- По возможности русскоязычный интерфейс, документация, поддержка.
Вот и решил немного восполнить этот пробел.
Про видеонаблюдение ранее написал небольшую заметку:
Создание загрузочного диска:
Первым делом скачиваем образ системы для дальнейших действий:
Для создания загрузочной флешки я использовал официально рекомендованную программу производителем Raspberry.
На официальном сайте разработчика сайт программы загрузчика.
Сразу же на сайте определяется разрядность ОС, и предоставляется ссылка для скачивания.
Также наглядно показано 3 шага для прожига образа.
1) Выбор образа
2) Выбор диска
3) Прожиг
И создаем загрузочный диск на основе образа, который ранее скачали (предварительно распаковав его).
Подключаем Raspberry Pi через кабель HDMI и подключаем клавиатуру.
Включаем питание Raspberry.
Идет загрузка системы, после которой запрос логина и пароля.
Используем по умолчанию: логин PI, пароль raspberrymj.
Вводимые символы пароля не отображаются
Запускаем утилиту настройки Raspberry
Первым делом я поменял пароль по умолчанию, надоест вводить 11 символов
Далее, конфигурируем свою сеть, в моем случае Wi-Fi вводим ssid (имя сети) и пароль к ней.
С базовым образом подключение по SSH уже включено, так что этот шаг можно пропустить. Если не открыт, то открываем доступ для удаленного подключения через SSH >
Более подробная информация о настройках утилиты конфигурирования находится здесь:
немного информации о rasp-config.
Перегружаемся выполнив команду:
Вновь авторизовываемся, введя логин и пароль.
Узнаем IP адрес Raspberry, задав команду:
wlan0, в моем случае и есть беспроводной интерфейс.
Задав команду ping, можем проверить доступ к Internet
Если всё прошло нормально, то видим ответы
Выход из утилиты ping (да и из многих утилит)
ctrl+C
После этого можем работать под удобной и привычной для себя операционной системой.
Для windows 10 привожу пример:
Скачиваем программу PuTTY, выбирая свою разрядность ОС Windows.
Запускаем программу PuTTY.
Пошаговый запуск PuTTY
Появляется окно подключения:
Указываем IP адресс Raspberry:
Далее в настройках выставляем Terminal — Keyboard:
Выставляем кодировку utf8, в Window — Translation
Если подключаемся в первый раз, то появляется запрос безопасности системы нажимаем ДА
Запрос логина, а потом и пароля. Как и при первом подключении.
При вводе пароля как обычно, символы не отображаются.
Ещё раз проверяем, на всякий случай, свой IP адрес задав команду
На рабочем ПК, в браузере набираем адрес платы:
Первый шаг сделан. Вы попадаете в окно настроек программы MajorDoMo.
Но радоваться ещё рановато, впереди предстоит установить и настроить сам Z-Wave, разобраться с программой администрирования вашего «умного дома», его программированием и т.д.
19 комментария на «Raspberry Pi. Загрузка с USB-накопителя»
Цитата:
Для нужно загрузиться в Raspberry Pi OS с microSD-карты и добавить строчку с командой в файл config.txt:
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
====================================================
А если открыть /boot/config.txt непосредственно в корне SD-карты и записать в него данную команду? Так возможно?
Dmitry :
Да, так тоже можно
Народ, растолкуйте, пож-та, как RPI 4 найдёт, с какого партишна внешнего диска грузиться?
Dmitry :
При записи образа системы всегда создается раздел /boot, загрузка происходит с него.
Спасибо за ответ. Но как быть, если я хочу записать ещё одну систему (типа добавить ubuntu к rasbian), то надо, кроме копирования ubuntu на новый раздел с помощью dd, ещё и его /boot переписать? У меня, кстати, /sda1 смонтирован на /boot, но он не совсем boot:
e2label: Bad magic number in super-block while trying to open /dev/sda1
/dev/sda1 contains a vfat file system labelled ‘BOOT’
Dmitry :
Вот тут не смогу ответить, ни разу еще не пробовал настраивать мультизагрузку.
Помучившись, выяснил, что .img файлы, поставляемые ubuntu, являются образом всего диска, как Вы и написали, и содержат в себе 2 раздела — fat с именем system-boot и ext4 writable.
Как я понимаю, записывать их можно с помощью dd, но на весь диск ( типа /dev/sdc ), а не на partition (dev/sdc1). Мне этот вариант не подошёл, и удалось найти (накопать) другое решение — с помощью fdisk -lu узнать структуру файла .img, а потом mount -t [vfat,ext4] -o loop,offset=?,sizelimit=? обеспечивает доступ к каждому разделу отдельно.
Я пока только в начале пути, так что больших подробностей об этом пока не знаю. Спасибо за помощь!
а попробуй как нибудь установить загрузчик grub чтоб можно было выбирать на какую ос загружаться
Вопрос — а если мне надо, чтобы на этом диске кроме /boot и / (16G) был ещё раздел в формате NTFS/FAT32 (484G, чтобы можно было читать-писать в Win10)? Будет ли он тоже читаться? По умолчанию, на USB можно подсоединять любые диски, в том числе и NTFS/FAT32, и они будут читаться как внешние в /media/pi/имя_диска. А вот при загрузке с USB-диска куда будет подключен новый раздел?
Dmitry :
Не проверял, но наверняка также в /media/.
А как быть, если имеется установленная и настроенная система на карте памяти и не хочется её переустанавливать? Как перенести систему с карты памяти на USB-SSD, отказавшись полностью от карты памяти?
Dmitry :
Полностью скопировать содержимое карты памяти на SSD. Можно воспользоваться для этого утилитой dd, только пути к смонтированным устройствам надо будет поменять на правильные.
А как использовать все пространство жесткого диска, если образ который сняли с флешки гораздо меньше объема диска, диск при записи образа становится объемом как та флешка, с которой сняли образ?
Dmitry :
Расширить его через Raspberry Pi Software Configuration Tool:
В Advanced Options надо выбрать выбрать пункт Expand Filesystem.
Спасибо, для 3b+ проблем с переносом ОС на жесткий диск не возникло, а вот 3b ни как не получается запустить с диска…. все манипуляции уже провел. На 3b установлен Home Assistant.
Вы озабачивались функцией TRIM при переезде на SSD?
Dmitry :
В отсутствие интенсивных процессов создания-удаления файлов TRIM не нужен. Если сохранять не менее 20% свободного дискового пространства, то контроллер SSD и без TRIM эффективно проводит процедуры обслуживания.
Модератор: immortal
Настройка веб-сервера
Немного подкрутим настройки веб-сервера Apache, а точнее сделаем так, чтобы процессы веб-сервера работали от имени пользователя pi (не уверен, что это необходимо, но тем не менее. )
Редактируем файл /etc/apache2/envvars (здесь и ниже все изменения в файлах настроек представлены в виде списка изменяемых параметров -- остальные параметры остаются такими, какие они есть):
Меняем права на папки веб-сервера и запускаем его снова:
Включаем модуль rewrite для Apache:
Так же включаем обработку .htaccess в файле /etc/apache2/site-enable/default:
Кстати, там же можем закомментировать строчку с CustomLog -- лишний лог, лишняя нагрузка на файловую систему.
Настройка базы данных
Устанавливаем пакет mysql-сервера (в процессе установки будет запрошен пароль для root-а базы данных, ставим его к примеру rootpsw):
Для удобства установим еще phpmyadmin (в процессе будет запрошен тип веб-сервера, выбираем Apache2, а так же пароль для администраторского аккаунта -- его мы установили выше в rootpsw; кроме того будет запрошен дополнительный пароль для phpmyadmin, его поставим phpmyadminpsw):
После установки phpmyadmin рекомендуется перезапустить систему:
Минимизация записи инфы на SSD под Linux
Здравствуйте. Установил и настроил MajorDoMo на Мини ПК на SSD диск. Работает под OS Linux Ubuntu, всё супер!
Trim настроил на автозапуск раз в неделю, оптимизировал OS под SSD, всё вроде бы супер работает, но.
Вопрос вот в чём, как минимизировать количество циклов записи на SSD, включая БД и Логи для более долгой службы SSD накопителя?
Ничего что-то не нашёл на форуме по этой теме.
Смотрите как сделана такая оптимизация для малинок. Принцип тот же
Otto писал(а): до создания этой темы искал по форуму всё, что с этим связано, но как это сделать не понятно.
В этой ветке viewtopic.php?t=2212 , первых страницах описанно как.
Раньше когда не было готового образа, приходилось вручную делать. В той ветке брал рецепт.
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Sorry, page is temporary unavailable.
Please try again later.
Sorry, page is temporary unavailable.
Please try again later.
В админке удалить и поставить снова приложение 'онлайн радио '
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Sorry, page is temporary unavailable.
Please try again later.
В админке удалить и поставить снова приложение 'онлайн радио '
В итоге проверил, очень много таблиц повреждённых появилось. Их без вреда можно как нибудь восстановить?
В админке восстановить последний бекап базы данных
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Восстановить последний бекап базы данных из админки.
Разработка голосового асистента для Мажордомо по любому ключевому слову.
Обсужение
gitHub 2й версии терминала
GitHub модуля для МД
gitHub сырого модуля 2й версии
Connect
Rasberry Pi 2, MDM, MySensors. И говорящий апельсин.
Описанные ниже действия производятся на "чистой" системе Raspbian. Процедура установки не эталонная, поэтому замечания и пожелания приветствуются.
Установка пакетов
После загрузки первым делом запускаем raspi-config и расширяем файловую систему на всю карточку (extend partitition), а так же выставляем временную зону (time zone).
Далее устанавливаем обновления ядра и компонентов операционной системы.
Или же делаем следующее:
удаляем ненужные локали (у меня освободилось около 150 метров!):
отключаем screen saver в консолях:
BLANK_TIME=30 заменяем на BLANK_TIME=0
Следующим шагом ставим все необходимы пакеты.
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
Хорошая новость — все свежие модели микрокомпьютеров линейки Raspberry Pi «из коробки» поддерживают загрузку с USB-накопителей. И только на старых моделях эту возможность нужно активировать вручную.
Заключение
Легкость перевода Raspberry Pi на загрузку с USB-накопителей — еще один довод за покупку микрокомпьютеров именно этой линейки.
Буквально 10 минут работы позволяют в разы повысить надежность системы, отказавшись от использования карточек памяти с ограниченным ресурсом в пользу твердотельных накопителей или обычных HDD.
Активация загрузки с USB на Raspberry Pi 2 / 3
Для появления возможности загрузки с USB-накопителей на Raspberry Pi 3 нужно активировать опцию USB Boot Mode путем внесения значения в OTP-память.
Для нужно загрузиться в Raspberry Pi OS с microSD-карты и добавить строчку с командой в файл config.txt:
А затем перезагрузить систему:
Во время следующей загрузки команда будет обработана и пропишет активирующее возможность загрузки с USB-дисков значение в OTP-память микрокомпьютера. Данная операция необратима. Но волноваться по этому поводу не стоит: активация USB Boot Mode не лишит вас возможности запускать «малинку» с microSD-карты, а всего лишь добавит новую опцию, которая активна по умолчанию в более свежих моделях микрокомпьютера.
Также обращу внимание, что из config.txt строка program_usb_boot_mode=1 сама по себе никуда не денется, поэтому после перезагрузки ее желательно оттуда удалить.
Установка системы
Установка операционной системы для Raspberry Pi на USB-накопитель ничем принципиально не отличается от установки на microSD-карту: нам все также потребуется скачать образ нужной системы и записать его на подходящий диск.
Удобнее всего использовать для этого специальную утилиту Raspberry Pi Imager, доступную под Windows, Ubuntu и macOS. В отличие от универсальных приложений для записи образов (Rufus, Win32DiskImager, balenaEtcher и т.п.), она может работать не только с локально хранящимися файлами, но и выкачивать нужный образ с сайта Raspberry Pi Foundation прямо в процессе записи.
Выбираем нужный образ из списка:
Выбираем накопитель для записи:
И дожидаемся окончания процесса:
На этом все. Но если в дальнейшем планируется использовать Raspberry Pi в headless-режиме, то стоит сразу закинуть в корень получившегося загрузочного диска пустой файл с названием «ssh» без расширения. А если для подключения к сети будет использоваться беспроводной интерфейс, то туда же в корень нужно добавить файл wpa_supplicant.conf с данными для подключения к точке доступа:
Настройка PHP
Перезапускаем веб-сервер, чтобы настройки вступили в силу:
Так же немного правим файл настроек PHP для вызова из командной строки. Редактируем /etc/php5/cli/php.ini
Настройка FTP
Так же для удобства я обычно запускаю FTP-сервер. Устанавливаем пакет vsftpd:
Немного модифицируем файл настроек /etc/vsftpd.conf:
Загрузка
Извлекаем из Raspberry Pi microSD-карточку с системой, подключаем к USB наш внешний диск и подаем питание.
Начнется загрузка с внешнего диска и через десяток-другой секунд система будет готова к работе.
Важный момент №1: При подключении внешнего жесткого диска потребляемая Raspberry Pi 4 мощность возрастает. Чтобы не столкнуться с нехваткой мощности для полноценной работы микрокомпьютера заранее позаботьтесь о наличии хорошего блока питания и качественного кабеля.
Важный момент №2: В некоторых случаях Raspberry Pi 4 может некорректно грузиться с подключенных к порту USB 3.0 накопителей. Если операционная система не стартует более минуты или пытается войти в Emergency Mode — переподключите жесткий диск в любой из портов USB 2.0. Да, скорость передачи данных по USB 2.0 будет ниже, зато работать будет надежнее.
Читайте также: