понедельник, 10 июля 2017 г.

Управление автозагрузкой в debian

Скрипты инициализации - это не большие программы на shell, которые обычно управляют сервисами, также известными как демоны. Прочие приложения для скриптов инициализации включают в себя простое управление состоянием чего-нибудь вроде hdparm (управляет временем перехода в спящий режим для жестких дисков), iptables (загрузка правил файрвола в ядро) и setserial (конфигурация последовательного порта). Директория /etc/init.d содержит скрипты исполняемые с помощью init во время загрузки и состоянии инициализации.
Скрипты инициализации также важны во время запуска и останова системы (в *nix системах просто меняется“runlevel”). Если вы посмотрите на список процессов, запущенных на вашей машине (попробуйте команду ps auwx), то есть вероятность, что процесс с наименьшим PID будет называться “init”. Это родительский процесс для всех процессов, это первая программа которую ядро запускает при загрузке. Программа init, которую можно найти по пути /sbin/init, ответственна за в рабочее состояние после того, как загрузится ядро.
Существует три простые утилиты для управления стартовыми и инициализационными скриптами:
Далее мы рассмотрим их все и приведем несколько примеров их использования.

update-rc.d

Устанавливает и удаляет ссылки на скрипты инициализации в System-V стиле. update-rc.d автоматически обновляет ссылки на скрипты инициализации в System-V стиле вида /etc/rcrunlevel.d/NNname на скрипты /etc/init.d/name. Они запускаются с помощью init когда меняется уровень загрузки и обычно используются для запуска или остановки системных сервисов, таких как  демоны. init поддерживает следующие уровни загрузки - 0123456789S и NN - это двухцифренный код используемый init для определения в каком порядке должны запускаться скрипты.
Синтаксис update-rc.d
update-rc.d [-n] [-f] name remove
update-rc.d [-n] name defaults [NN | NN-start NN-stop]
update-rc.d [-n] name start|stop NN runlevel runlevel start|stop NN runlevel runlevel
Когда запускается с опциями defaults, start или stop, update-rc.d создает ссылки /etc/rcrunlevel.d/[SK]NNname указывающие на скрипт /etc/init.d/name. Если какие-либо файлы уже существуют, то update-rc.d ничего не делает. Это объясняется тем, что системный администратор может изменить порядок ссылок, при условии, что как минимум одна ссылка сохранится, без того чтобы конфигурация была перезаписана.
Доступные опции.
-n - ничего не делать, только показать что будет сделано.
-f - заставить удалять символические ссылки  даже если /etc/init.d/name все еще существует.
Примеры использования update-rc.d
Вставить ссылки с использованием defaults:
# update-rc.d samba defaults
Эквивалентная команда с использованием явных наборов аргументов:
# update-rc.d samba start 20 2 3 4 5 . stop 20 0 1 6 .
Если вы хотите удалить скрипт из автозагрузки, то используйте следующую команду:
# update-rc.d -f samba remove
Если вы хотите узнать о команде update-rc.d больше, то прочтите страницу man.

rcconf

Rcconf позволяет управлять тем, какие сервисы будут запускаться когда система загружается или уходит в перезагрузку. Утилита показывает меню, содержащее все сервисы, которые должны быть запущены при загрузке. Те, которые должны запускаться помечены и вы можете включить или выключить отдельные сервисы. Эта утилита конфигурирует системные сервисы во взаимодействии с системными уровнями загрузки (runlevels). Она включает или выключает сервисы с применением скриптов в /etc/init.d/. Rcconf работает с конфигурацией уровней загрузки в стиле System-V. Фактически это TUI(Text User Interface) к команде update-rc.d
Rcconf получает список сервисов от /etc/init.d и просматривает директории /etc/rc?.d чтобы определить запущен сервис или нет.
Если число (NN в /etc/rc?.d/NNname) не равно 20 (по умолчанию), то rcconf сохраняет имя сервиса и число в /var/lib/rcconf/services так что возможно восстановить конфигурацию сервиса в исходном состоянии.
Установка rcconf в Debian.
# aptitude install rcconf
Эта команда выполнит установку. Теперь вы можете использовать утилиту с помощью команды:
# rcconf
Если будет выводится сообщение rcconf needs dialog or whiptail, то необходимо будет установить утилиту dialog:
# aptitude install dialog
Теперь запустив rcconf Вы увидите на экране следующее:
rcconf управление автозагрузкой
Важные файлы:
/var/lib/rcconf/services - файл с данными о номерах процессов.
/var/lib/rcconf/lock - файл блокировки.
/var/lib/rcconf/guide.default - Guide File который генерируется утилитой update-rcconf-guide.
/var/lib/rcconf/guide - Guide File  который может быть определен пользователем (администратором).
Если вы хотите узнать больше об утилите rcconf, то ознакомьтесь со страницей man.

file-rc

Этот пакет предоставляет альтернативный механизм для загрузки или остановки системы и смены уровней загрузки. Ссылки /etc/rc?.d/* будут сконвертированы в единый конфигурационный файл /etc/runlevel.conf который легче администрировать, чем символьные ссылки и который более гибок. Пакет автоматически сконвертирует ваши существующие символьные ссылки в файл во время установки и конвертирует файл обратно в символьные ссылки при удалении. Оба механизма совместимы посредством скриптов /etc/init.d/rc, /etc/init.d/rc*, /usr/sbin/update-rc.d и /usr/sbin/invoke-rc.d
Установка file-rc в Debian.
# aptitude install file-rc
В ходе установки в русифицированной версии Debian выводятся следующие сообщения:
Следующие НОВЫЕ пакеты будут установлены:
file-rc
0 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 42 пакетов не обновлено.
Необходимо получить 39,2 kB архивов. После распаковки 184 kB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
sysv-rc: Конфликтует: file-rc но устанавливается 0.8.12.
Следующие действия разрешат зависимости:
    Удалить следующие пакеты:
1)     sysv-rc
Принять данное решение? [Y/n/q/?] y
Следующие НОВЫЕ пакеты будут установлены:
file-rc
Следующие пакеты будут УДАЛЕНЫ:
sysv-rc{a}
0 пакетов обновлено, 1 установлено новых, 1 пакетов отмечено для удаления, и 41 пакетов не обновлено.
Необходимо получить 39,2 kB архивов. После распаковки освободится 123 k байт.
Хотите продолжить? [Y/n/?] y
Получить:1 http://mirror.yandex.ru/debian/ squeeze/main file-rc all 0.8.12 [39,2 kB]
Получено 39,2 kБ в 0с (462 kБ/с)
dpkg: sysv-rc: имеются проблемы с зависимостями, но по вашему указанию
он всё равно будет удалён:
initscripts зависит от sysv-rc | file-rc, однако:
Пакет sysv-rc будет удалён.
Пакет file-rc не установлен.
sysvinit зависит от sysv-rc | file-rc, однако:
Пакет sysv-rc будет удалён.
Пакет file-rc не установлен.
(Чтение базы данных ... на данный момент установлено 36373 файла и каталога.)
Удаляется пакет sysv-rc ...
warning: reverting to legacy boot ordering
Обрабатываются триггеры для man-db ...
Выбор ранее не выбранного пакета file-rc.
(Чтение базы данных ... на данный момент установлено 36346 файлов и каталогов.)
Распаковывается пакет file-rc (из файла .../file-rc_0.8.12_all.deb)...
Обрабатываются триггеры для man-db ...
Настраивается пакет file-rc (0.8.12) ...
Текущее состояние: 41 обновлён [-1].
Конфигурационный файл file-rc расположен в /etc/runlevel.conf. Если вы хотите посмотреть конфигурационный файл по умолчанию, то это можно сделать здесь.
Пример:
#
05 - 0 /etc/init.d/halt
05 - 1 /etc/init.d/single
05 - 6 /etc/init.d/reboot
10 0,1,6 2,3,4,5 /etc/init.d/sysklogd
12 0,1,6 2,3,4,5 /etc/init.d/kerneld
[…]
89 0,1,6 2,3,4,5 /etc/init.d/cron
99 - 2,3,4,5 /etc/init.d/rmnologin
99 0,1,6 2,3,4,5 /etc/init.d/xdm

Zabbix 3.2 (Debian 8)


Установка пакета конфигурации репозитория


Установите пакет конфигурации репозитория. Этот пакет содержит файлы конфигурации apt.
# wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+jessie_all.deb
# dpkg -i zabbix-release_3.2-1+jessie_all.deb
# apt-get update


Установка пакетов Zabbix


Например, установка Zabbix сервера с веб-интерфейсом и с базой данных MySQL.
# apt-get install zabbix-server-mysql zabbix-frontend-php

Создание начальной базы данных


Создайте базу данных zabbix и пользователя в MySQL. Для получения сведений как это сделать, смотрите скрипты создания базы данных в случае MySQL.

# mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<пароль>';
mysql> quit;


Затем импортируйте изначальную схему и данные.
# cd /usr/share/doc/zabbix-server-mysql
# zcat create.sql.gz | mysql -uroot zabbix -pпароль


Запуск процесса Zabbix сервера


Измените настройки базы данных в zabbix_server.conf
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix


Запустите процесс Zabbix сервера.
# service zabbix-server start

Изменение конфигурации PHP для веб-интерфейса Zabbix


Файл конфигурации Apache для веб-интерфейса Zabbix размещается в /etc/apache2/conf-enabled/zabbix.conf. Некоторые параметры конфигурации PHP уже заданы.

php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga

Необходимо раскомментировать настройку “date.timezone” и установить корректный часовой пояс.

После изменения файла конфигурации перезапустите веб-сервер apache.
# service apache2 restart

Веб-интерфейс Zabbix доступен через браузер по адресу http://zabbix-frontend-hostname/zabbix. Имя пользователя/пароль по умолчанию - Admin/zabbix.

суббота, 8 июля 2017 г.


КАК СОЗДАТЬ ЗАГРУЗОЧНУЮ USB-ФЛЕШКУ В ANDROID
загрузочная usb-флешка · эмулятор терминала · android · usb-хост · termux · debian · iso
USB-флешки подключаются к Nexus 7 через 
переходникВот вам ситуация. Компьютер после обновления операционной системы больше не загружается, не знаю почему. Разбираться нет желания, тем более, что всё равно собирался установить SSD вместо жёсткого диска. Загрузочной флешки нет, зато есть Android-планшет. Вот с помощью него и буду создавать такую флешку.

Сразу нужно уточнить, что необходимо, чтобы создать загрузочную USB-флешку на Android-устройстве. Во-первых, оно должно иметь USB-хост. Во-вторых, нужен переходник с micro-USB на обычный USB. А в третьих, на устройстве обязательно должны быть получены права суперпользователя, то есть рут (root). Далее все действия я буду производить на планшете Nexus 7 (Android 6.0.1) для создания загрузочной флешки с установщиком Debian 8 Jessie.

Из репозитория F-Droid устанавливаем программу Termux (она требует наличия Android 5+), с официального сайта Debian прямо планшетом скачиваем образ для сетевой установки "64-bit PC netinst iso". В файловом менеджере сразу переименуем его в что-то простое, например "debian.iso". Затем настраиваем Termux, чтобы получить доступ к внутренней памяти планшета, где лежит iso-файл:
$ termux-setup-storage
С помощью команды su переходим в сеанс суперпользователя. Подключаем USB-флешку к планшету через переходник, о чём вверху экрана появится соответствующее уведомление. В окошке этого уведомления нужно сразу же отмонтировать флешку, но физически не отключать её от планшета. Таким образом она не будет доступна для подсистемы Android, но её можно будет перезаписать в Termux. Эта программа является эмулятором терминала и позволяет получить доступ к командной строке Linux и утилитам BusyBox. Думаю, с таким же успехом можно использовать ConnectBot или любой другой эмулятор терминала, но я не пробовал. Переходим в терминале в директорию, где находится файл образа установочного диска:
$ cd storage/shared/Downloads
Для ConnectBot будет ещё проще:
$ cd /sdcard/Downloads
Затем находим флешку в системе при помощи команды blkid:
/dev/block/mmcblk0p3: LABEL="system" UUID="da654c53-9beb-f85c-28c5-cedf76546f7a" TYPE="ext4"
/dev/block/mmcblk0p4: UUID="76db5086-6e68-5235-ada0-1a54dae7ec32" TYPE="f2fs"
/dev/block/mmcblk0p7: UUID="96C1-0DF7" TYPE="vfat"
/dev/block/mmcblk0p9: UUID="41a5eff0-790b-4857-a85c-d2fcef327548" TYPE="f2fs"
/dev/block/zram0: TYPE="swap"
/dev/block/sdc1: UUID="21CC-FE44" TYPE="vfat"
Сразу отсеиваем всё, что содержит zram и mmcblk. То, что нам нужно — это "/dev/block/sdc1". Если нет уверенности, можно отсоединить флешку, снова выполнить команду blkid и посмотреть, какое устройство пропало из списка. Определившись, заливаем образ установщика Debian:
$ cp debian.iso /dev/block/sdc1
$ sync
Готово, выдёргиваем флешку из планшета и загружаем с её помощью компьютер.