Блог о Gentoo и около-линуксовым штукам

29 июля 2015 г.

Подключаем оверлей в OpenWRT

04:44 Опубликовал Дмитрий Исаенко Нет комментариев
Сегодня мы будем расширять количество свободного пространства в системе на базе OpenWRT путём подключения внешнего оверлея. Для этого нам понадобиться:
  1. Маршрутизатор с USB
  2. Установленная ОС OpenWRT
  3. Флешка или внешний HDD
Итак, для того, чтобы подключить оверлей нужно для начала разметить его на съёмном носителе. Т.е. мы выделяем отдельную партицию и форматируем её в какую-то файловую систему. Выбор поддерживаемых ФС довольно велик, например есть всеми любимые reiserfs, ext4, hfs и vfat. После того, как диск размечен - смело вставляем его в маршрутизатор. Теперь нужно установить необходимый софт. Т.к. я использовал ext4 в качестве файловой системы, я буду устанавливать пакет kmod-fs-ext4. Вы же можете поискать свою любимую ФС среди пакетов kmod-fs-*:
# opkg update
# opkg list|grep kmod-fs-*
Установим необходимые пакеты:
opkg install kmod-fs-ext4 block-mount kmod-scsi-generic kmod-usb-storage kmod-usb-storage-extras
Замечу, что когда я впервые решил подключить себе оверлей - я увидел, что в директорию /overlay уже примонтирован какой-то раздел. В этом случае я воспользовался советом из официальной wiki и предварительно скопировал содержимое в новый раздел:
mount /dev/sdaN /mnt/
tar -C /overlay -cvf - . | tar -C /mnt/sdaN -xf -
umount /mnt 
После чего я уже занялся дальнейшей настройкой.

Теперь создадим файл конфигурации fstab и включим fstab (как сервис):
# block detect > /etc/config/fstab
# /etc/init.d/fstab enable
# /etc/init.d/fstab start
Теперь мы можем настроить точки монтирования нашего внешнего накопителя. Как вы уже, вероятно, догадались, для того, чтобы увеличить свободное пространство нам потребуется примонтировать размеченную партицию как /overlay. Сделать это можно как через графический интерфейс luci так и простым редактированием файла /etc/config/fstab. Я воспользовался удобствами графического интерфейса.
Для того, чтобы задать правило монтирования перейдём во вкладку 'Система' -> 'Точки монтирования' и нажмём "Редактировать".

В UUID следует указать ID той партиции, которая будет использоваться в качестве оверлея. В точке монтирования - Use as external overlay (/overlay). Также отметьте галочкой пункт "Включить эту точку монтирования"

Теперь осталось только перезагрузить девайс и убедиться, что все правила корректно применились.

--
Ссылки:
http://wiki.openwrt.org/doc/howto/extroot

28 июля 2015 г.

lm sensors [перевод]

04:04 Опубликовал Дмитрий Исаенко , Нет комментариев
Это вольный перевод статьи lm sensors взятой из gentoo wiki.

lm_sensors является набором утилит для мониторинга работы аппаратного обеспечения в пространстве пользователя. Он полезен для отслеживания температуры, оборотов вентиляторов и напряжения.
    1. Установка
Перед тем, как lm_sensors начнут работать как полагается, следует убедиться, что ядро Linux содержит необходимые модули или вкомпилированные бинарники для того, чтобы предоставить lm_sensors данные о сенсорах, которые необходимые для работы. Есть вероятность что эти модули уже были собраны как отдельные модули или же включены в ядро. Также не стоит исключать, что ядро не содержит этих модулей или фич. Если что-то упущено, тогда пользователю придётся взять на себя заботу об устранении этих недочётов.
В любом случае необходимо будет провести обнаружение аппаратного обеспечения материнской платы, путём её сканирования командой sensors-detect. Как только определение оборудования было проведено, программа выдаст вывод в котором будет (или не будет) включена конфигурация ядра. Этот шаг будет пройден после установки в процессе настройки приложения (см. в секции ниже).
Альтернативным вариантом может служить проверка своего оборудования в соответствующем разделе на официальном сайте. Есть возможность включить все драйверы и просто дать sensors-detect делать свою работу.

        1.1. Ядро
Необходимо включить поддержку I2С а также некоторые другие опции:
Device Drivers  --->
    -*- I2C support  --->
        <*>   I2C device interface
    <*> Hardware Monitoring support  --->
 
        Select a driver, e.g.:
        [*] Intel Core/Core2/Atom temperature sensor (coretemp)

        1.2. USE-флаги
           1.2.1. Глобально
Система Portage знает о существовании USE-флага lm_sensors который включает поддержку lm_sensors в других пакетах. Включение этого USE-флага автоматически повлечёт за собой установку sys-apps/lm_sensors как только будет выполнена команда emerge --change-use:
vim /etc/portage/make.conf
USE="lm_sensors"

           1.2.2. Локально
Локальный USE-флаг включает:
Optional USE flags for sys-apps/lm_sensors:
USE-флаг по-умолчанию Описание
sensord No Включает sensord - демон, который может использоваться для переодической записи лога данных от сенсора аппаратных чипов мониторинга здоровья.
static-libs No Собрать статические версии динамических библиотек

        1.3. Установка
После установки USE-флага в файл /etc/portage/make.conf, как это было описано вышe, необходимо обновить систему чтобы изменения вступили в силу:
root #emerge --ask --changed-use --deep @world


    2. Настройка
Если все драйверы были включены в ядро (не в виде модулей), пропустите следующий пункт.

        2.1. Модули
ВНИМАНИЕ
Использование приложения sensors-detect может привести к зависанию системы. Уделите особое внимание прочтению официальной документации перед тем, как запускать lm_sensors на IBM Thinkpad.

Программа sensors-detect может быть использована для того, чтобы найти сенсоры и соответствующие модули ядра:
root #sensors-detect
Следуйте инструкциям и положительно ответьте на серию вопросов о обнаружении оборудования, а также разрешите приложению перезаписать сгенерированный файл /etc/conf.d/lm_sensors.

        2.2. Сервисы (OpenRC)
Для авто-запуска lm_sensors при загрузке системы добавьте демон в уровень запуска 'default':
root #rc-update add lm_sensors default

    3. Использование
        3.1. Вызов (OpenRC)
Запустите lm_sensors используя команду:
root #/etc/init.d/lm_sensors start


        3.2. Тестирование
Удостоверимся что всё работает:
user $sensors

coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +48.0°C  (high = +100.0°C, crit = +100.0°C)
Core 1:       +48.0°C  (high = +100.0°C, crit = +100.0°C)

    4. Возможные проблемы
См. lm_sensors FAQ (английский).

p.s.
Лично я столкнулся с проблемой сразу же. При запуске демона мне выдавало сообщение:
# /etc/init.d/lm_sensors restart
 * MODULE_0 is not set in /etc/conf.d/lm_sensors, try running sensors-detect

После того, как я изменил в файле /etc/conf.d/lm_sensors строку HWMON_MODULES=" на MODULE_0=" всё заработало как надо.
---
Содержимое распространяется в соответствии с лицензией CC-BY-SA-3.0, т.к. права на оригинальный текст принадлежат '© 2001–2015 Gentoo Foundation, Inc.' и распространяются согласно этой же лицензии.

26 июля 2015 г.

SAMBA (SMB/CIFS) шара в OpenWRT

23:10 Опубликовал Дмитрий Исаенко 2 коммент.
Сегодня будем настраивать SAMBA в OpenWRT. Для того, чтобы установить все необходимые пакеты включая модуль настройки для Luci выполним комманду:
opkg install luci-app-samba
Я предполагаю два типа доступа к данным на внешнем носителе - используя своё имя пользователя и пароль, а также анонимный доступ. Для этого, нужно создать нового пользователя в системе, или, если он уже имеется, просто назначить ему пароль.
Создадим пользователя добавив запись в файл /etc/passwd и установим для него пароль
vim /etc/passwd
...
newuser:*:1000:65534:newuser:/mnt/your_path/:/bin/false
passwd newuser
Также необходимо установить пароль для этого пользователя в samba:
smbpasswd -a newuser 
Не лишним будет также установить правильные права на домашнюю папку пользователя
chown -R newuser /mnt/your_here/

Теперь настроим анонимный доступ в отдельную папку. Для этого удобно использовать Luci. Переходим в 'Сервисы' -> 'Сетевые ресурсы' и добавляем правило для нужной нам директории (например домашней папки пользователя) отметив галочкой "Разрешить гостевой доступ". Например так:

На этом настройка SAMBA завершена.

vsftpd в OpenWRT

01:10 Опубликовал Дмитрий Исаенко 6 коммент.
Сегодня мы будем настраивать FTP сервер на OpenWRT. В этом качестве я выбрал vsftpd.
Установим его:
# opkg install vsftpd
Для доступа к серверу я хочу испольовать отдельного пользователя, и логинясь под ним иметь доступ ко всему внешнему накопителю. Создадим нового пользователя добавив его в к остальным в файл /etc/passwd:
# vim /etc/passwd
... 
newuser:*:1000:1000:newuser:/mnt/path_here/path/:/bin/false
Можно попробовать добавить пользователя в группу 'nobody' и пропустить следующий шаг. Например так:
newuser:*:1000:65534:newuser:/mnt/path_here/path/:/bin/false
Добавим также одноимённую группу:
# vim /etc/group
newuser:x:1000:
Устанавливаем пароль для пользователя:
# passwd newuser
И теперь можно приступать к конфигурированию самого сервера. vsftpd позволяет задать список пользователей, которым будет позволено подключаться к ftp. Используем эту возможность:
# vim /etc/vsftpd.conf
userlist_enable=YES
userlist_deny=NO 
userlist_file=/etc/vsftpd.users
Согласно конфигурации, список пользователей распологается в файле /etc/vsftpd.users. Остаётся добавить юзера в список.
# echo newuser >> /etc/vsftpd.users
И изменить права на его домашнюю директорию
# chown -R newuser:newuser /mnt/path_here/path/
Теперь настроим анонимный доступ. Для этого создадим папку:
# mkdir /mnt/path_here/public
Добавим anonymous в список разрешенных пользователей:
# echo anonymous >> /etc/vsftpd.users
Изменим некоторые параметры в конфигурации самого сервера:
# vim /etc/vsftpd.conf
anonymous_enable=YES
no_anon_password=YES
anon_root=/mnt/path_here/public
Настроим права для папки с анонимным доступом:
chown -R ftp:ftp /mnt/path_here/public/
chmod 555 /mnt/path_here/public/
Также потребуется изменить домашнюю папку пользователя ftp, т.к. иначе будет выдаваться ошибка (домашней папки ftp в OpenWRT попросту не существует).
# vim /etc/passwd
ftp:*:55:55:ftp:/mnt/path_here:/bin/false
Запустим FTP сервер и добавим его в автозагрузку:
# /etc/inint.d/vsftpd start
# /etc/inint.d/vsftpd enable
Осталось добавить настройки firewall для возможности доступа к серверу из интернета. Я использовал для этого интерфейс Luci, но никто не мешает вам вручную добавить правила iptables в /etc/firewall.user и перезапустить демон.
Итак, перейдём в веб-интерфейсе 'Сеть' -> 'Межсетевой экран' -> вкладка 'Правила для трафика'
Создадим правила для FTP открыв порты 20 и 21.
После нажатия "Сохранить и применить" установка и настройка будет завершена!

20 июля 2015 г.

OpenWRT - торт!

02:45 Опубликовал Дмитрий Исаенко 6 коммент.
Намедни приобрёл роутер на замену сгоревшему Zyxel keenetic lite. Выбирал в первую очередь по уровню совместимости с OpenWRT, но обязательно с поддержкой 802.11ac. После долгих раздумий остановился на TP-Link Archer C7 V.2 как на наиболее подходящем по цене и по функционалу. Забегая вперёд отмечу, что в нём до сих пор используется USB 2.0, когда в иных машрутизаторах за те же деньги уже давно ставят третью версию. После пары дней тыкания стандартной для России прошивки осталось негативное ощущение - сеть wi-fi иногда отваливалась сама собой и порой требовалась даже перезагрузка. Ну я, ради эксперимента, поставил туда последнюю нерусифицированную фирмварю с офф-сайта и всё заработало на ура. Но, понятное дело, хотелось большего, а именно - OwnCloud (Очень-очень плохая идея. В итоге получился тормоз с красивым гуем). Тут-то я и начал ставить OpenWRT. Скчал сначала последний Chaos Claimer RC2 и как водится залил через стандартный инструмент обновления прошивки. Развернул, значит, настроил его и начал делать всё по инструкции. Когда я уже подошел к логическому завершению в веб-интерфейсе появилась замечательная ошибка суть которой сводилась к неустановленной системной локали. Как внезапно оказалось, OpenWRT в референсной сборке локаль и вовсе не поддерживает о чём прямо написано в начале той самой инструкции. Ну, делать нечего, прийдётся учится собирать систему самому. Да и своя сборка лучше - можно запихнуть сразу в неё все необходимые пакеты и конфиг-файлы.
Так приступим же!

Первое что нам понадобится, это скачать последние исходники. Для этого заходим на страницу https://dev.openwrt.org/wiki/GetSource и видим, что последнюю версию нужно скачивать из GIT.
Создадим папку в домашней директории и скачаем исходники:
mkdir owrt
cd owrt
git clone git://git.openwrt.org/openwrt.git
 
 

Перейдём в каталог openwrt и обновим пакеты
cd openwrt/
./scripts/feeds update -a
./scripts/feeds install -a 

Теперь выполним ещё несколько проверок и запустим n-curses интерфейс для выбора необходимых опций.
make defconfig
make prereq
make menuconfig
 Тут мы сразу выберем Target Profile -'TP-LINK Archer C5/C7'. Target System оставляем без изменений - “Atheros AR7xxx/9xxx”.

Теперь настроим поддержку USB для всяких mass-storage девайсов.
> Base system 
          <*> block-mount
 
> Kernel modules > Block Devices
          <*> kmod-scsi-generic

> Kernel modules > Filesystems 
          <*> kmod-fs-ext4
 
> Kernel modules > USB Support 
          -*- kmod-usb-storage
          <*> kmod-usb-storage-extras
 Тут уж кто что использует - то и выбирает.
Обязательно проверьте наличие ath10k драйвера, иначе AC диапазон будет недоступен.
> Kernel modules > Wireless Drivers
          <*> kmod-ath10k
Если вы собираетесь ставить OwnCloud (лучше не стоит) включите поддержку Native language support:
> Kernel modules > Native Language Support
          <*> kmod-nls-utf8.
> Global build settings 
          [*] Compile with full language support

Также в настройках можно включить поддержку веб-интерфейса Luci и сразу русифицировать его:
> LuCI > 1. Collections
          <*> luci
> LuCI > 2. Modules > Translations
          <*> Russian (ru)
Посмотрите тут также вкладку 3. Applications. Лично я тут включаю WoL, Transmission, openvpn и samba.
> LuCI > 3. Applications
          <*> luci-app-openvpn
          <*> luci-app-transmission
          <*> luci-app-wol
          <*> luci-app-samba
Для transmission также не помешает включить поддержку Web интрефейса:
 > Network > BitTorrent
           <*> transmission-web 
Плюс установим сам OpenVPN :
> Network > VPN
           <*> openvpn-easy-rsa
           <*> openvpn-openssl
Теперь выходим из настроек сохраняя созданный нами конфиг.
Перед непосредственным началом компиляции у нас есть возможность добавить все необходимые конфиг-файлы в будущую систему. Для этого в этой же директории создайте каталог ./files/ и поместите свои файлы в соответсвующие поддиректории. Например файл network с настройками сети следует поместить в ./files/etc/config/network.

Теперь всё готово к компиляции. Запустим её коммандой
make -j9 V=s
Когда сборка завершится, нам останется только загрузить прошивку на маршрутизатор. Тут есть несколько вариантов, но я копировал её по scp на внешний HDD и оттуда уже запускал обновление системы.
scp /home/USERNAME/owrt/openwrt/bin/ar71xx/openwrt-ar71xx-generic-archer-c7-v2-squashfs-factory.bin root@192.168.1.1:/mnt/точка_монтирования/
sysupgrade -v /mnt/точка_монтирования/openwrt-ar71xx-generic-archer-c7-v2-squashfs-factory.bin 
После этого я запускал "mtd -r erase rootfs_data", но позднее обнаружил более правильный метод обновления - коммандой
mtd -r write /mnt/точка_монтирования/openwrt-ar71xx-generic-archer-c7-v2-squashfs-factory.bin firmware
mtd -r erase rootfs_data 
Теперь остаётся подключиться к роутеру по telnet и установить пароль.
telnet 192.168.1.1
passwd
Вот почти и всё. Только включим поддержку fstab, а настроить все параметры монтирования можно будет в Luci.
block detect > /etc/config/fstab
/etc/init.d/fstab enable
/etc/init.d/fstab start

Поздравляю! Теперь у нас есть свой OpenWRT с фичами плюшками :)

p.s. рекомендую также сразу раскрасить приглашение коммандной строки изменив переменную среды PS1. Делается это в файле /etc/profile, а строка должна выглядеть примерно так:
export PS1='\[\033[01;31m\]\h\[\033[01;34m\] \W \$\[\033[00m\] '