Связаться со мной:
7 заметок с тегом

Freebsd

Ошибка при установке фряхи через bsdinstall

При установке freebsd на сторонний носитель с помощью bsdinstall после разметки диска и скачивания архива получаем ошибку

Error while fetching file:///usr/freebsd-dist/MANIFEST" - no such file or directory

идем на ftp://ftp.freebsd.org/pub/FreeBSD/releases/
Выбираем платформу, затем версию фряхи, в общем идем по каталогам. И получаем ссылку на файл, например для freebsd 11.0 amd64:
ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/11.0-RELEASE/MANIFEST

Скачиваем файл в /usr/freebsd-dist на текущей системе и снова запускаем bsdinstall.

2016   bsdinstall   Freebsd

Простая установка FTP-сервера на FreeBSD.

На самом деле по умолчанию во freebsd уже установлен ftp-сервер, нам нужно его только сконфигурировать.
Выполняем для добавления запуска ftp в /etc/rc.conf.

# echo 'ftpd_enable="YES"' >> /etc/rc.conf
# echo 'ftpd_flags="-l -l"' >> /etc/rc.conf

Далее смотрим файл /etc/ftpusers, тут указаны пользователи которым запрещён доступ к ftp.

# cat /etc/ftpusers

При необходимости редактируем его.
Затем чтобы разрешить доступ пользователя к каталогу выполним.

# echo 'user /var/www/site.ru' >> /etc/ftpchroot

Где user — существующий на сервере пользователь, а  /var/www/site.ru — его каталог.
Запускаем ftp-сервер

# /etc/rc.d/ftpd start

И пробуем подключится с логином и паролем user.

Р.S.: Если у user в качестве shell используется /sbin/nologin, то подключение не произойдет. FTP-клиент сообщит что-то типа:

access denied

а в логах сервера будет:

ftpd: connection from 10.8.0.1 (10.8.0.1)
ftpd: FTP LOGIN REFUSED FROM 10.8.0.1, user

Проверить какой shell используется для юзера можно командой:

# pw usershow user

В этом случае нам нужно создать /sbin/nologin-ftp и прописать его у пользователя вместо /sbin/nologin. Делается это очень просто:

# echo '/sbin/nologin-ftp' >> /etc/shells
# ln -s /usr/sbin/nologin /sbin/nologin-ftp
# pw usermod user -s /sbin/nologin-ftp

Теперь подключение должно происходить без проблем.

2015   Freebsd   ftp   ftpd   nologin   nologin-ftp

Перенос FreeBSD на другой жесткий диск с помощью clonehdd.

В моей домашней файлопомойке-торрентокачалке в один прекрасный день smartctl показал, что диск «помирает». Соответственно диск пришлось менять. А т.к raid’а там нет, то вариантов было 2: либо полностью устанавливать и настраивать систему на новом диске, либо каким-то образом попытаться перенести ОС с неисправного диска на новый. Естественно я стал искать решения по второму варианту, т.к настраивать все заново мне не хотелось.
Для переноса я использовал утилиту clonehdd, огромным плюсом этой утилиты является, то что она может перенести полностью установленную freebsd даже на диск другого размера. Для меня это было критично, т.к для замены в «закромах» мной был найден диск меньшего размера, чем стоял изначально. Т.к изначально скриншоты я не делал, скриншоты для статьи пришлось делать в виртуалке.
Установим clonehdd. Утилита есть в портах, установим

# whereis clonehdd
clonehdd: /usr/ports/sysutils/clonehdd
# cd /usr/ports/sysutils/clonehdd
# make install clean

Или устанавливаем из пакетов
Для старых версий freebsd:

# pkg_add -r clonehdd

Для новых версий:

# pkg install clonehdd

Затем выключаем тачку, подключаем новый диск и загружаемся. Теперь у нас подключено 2 диска:

ada0 - диск с системой
ada1 - новый диск на который нужно перенести нашу ОС

Перенести все довольно просто одной командой. Правда процесс довольно длительный(у меня он занял около 12 часов) и если работа ведется по ssh, то запускать лучше в screen. Запустим клонирование диска:

# clonehdd -src=ada0 -dst=ada1 -swap=1024 -force
-src - исходный диск
-dst - новый диск
-swap - сколько места выделить под своп
-force - не задавать лишних вопросов

Дожидаемся окончания клонирования, затем отсоединяем старый диск и подсоединяем его на его место новый и пробуем загрузится.
У меня все сразу загрузилось с нового диска без лишних телодвижений. А из старого диска я достал себе прикольный неодимовый магнит, больше он ни на что был не пригоден.

P.S.: Если впоследствии новый диск также выйдет из строя и потребуется снова переносить ОС на другой диск, то удалите в корне файл backup-mode. Иначе clonehdd будет завершаться с сообщением «You are working from backup device. Please stop clone script usage!!!» и ОС перенесена не будет.

2014   clonehdd   Freebsd   hdd

Мониторинг нагрузки на сервер утилитой atop.

Самой удобной утилитой мониторинга нагрузки на сервере, на мой взгляд, является atop. Огромным плюсом данной утилиты является постоянное ведение логов нагрузки на сервер, это удобно т.к проблемы обычно происходят когда мы не следим за сервером прямо сейчас. А с atop можно отмотать «время назад» и посмотреть нагрузку на сервер в момент проблемы. Данная утилита есть во всех дистрибутивах линукс, также она присутствует во FreeBSD.
Рассмотрим установку утилиты для Ubuntu/Debian, Cenos и FreeBSD.

Ubuntu/Debian:

# apt-get install atop -y

Centos:

# yum install atop -y

FreeBSD:
Определяем местонахождение порта:

# whereis atop
atop: /usr/ports/sysutils/atop

Переходим в каталог

# cd  /usr/ports/sysutils/atop

И устанавливаем порт

# make install clean

После установки мы можем запустить утилиту:

# atop

После запуска мы увидим окно типа такого:

Дожидаемся когда посередине исчезнет надпись

*** system and process activity since boot ***

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

Снизу мы видим процессы с PID’ами, пользователями которым они принадлежат и данными нагрузки которые они создают. Если на какую-либо подсистему сервера идет повышенная нагрузка и нам нужно узнать какой процесс её создает, то мы можем сортировать эти процессы по нагрузке на определенный узел нажатием определенных клавиш.

m - сортировать по занимаемой памяти
d - сортировать по создаваемой нагрузке на диск
u - покажет таблицу нагрузки по пользователям
v - покажет подробную информацию по процессам
g - вернет вывод по умолчанию
n - сортировать процессы по нагрузке на сеть(доступно только с установленным патчем ядра)

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

# atop -r

Мы увидим обычное окно atop, как и при просмотре в реальном времени, только по состоянию на 00 часов 00 минут текущего дня. Время можно увидеть в верхней строке. Переместится вперед по времени можно с помощью клавиши t. Назад с помощью shift+t.
Сразу перейти на нужное время можно нажав -b, и в появившемся диалоге ввести нужное время.
Также хранятся логи нагрузки за предыдущие дни. В Ubuntu 14.04 они лежат в каталоге /var/log/atop/. Открыть можно примерно так.

# atop -r /var/log/atop/atop_20140915

Цифры в названии файла обозначают дату в формате ГГГГММДД.

2014   atop   centos   debian   Freebsd   Linux   ubuntu

Автоматическое монтирование webdav во FreeBSD.

Рассмотрим монтирование webdav во FreeBSD на примере яндекс диска.
Логинимся под рутом и собираем fusefs-wdfs из портов.

# cd /usr/ports/sysutils/fusefs-wdfs/</br>
# make install clean

Если получаем ошибку типа:

fusefs-kmod-0.3.9.p1.20080208_5 requires the userland sources to be installed. Set SRC_BASE if it is not in /usr/src.
*** Error code 1


То выполняем:

csup -g -L2 -h cvsup.freebsd.org /usr/share/examples/cvsup/stable-supfile


И затем запускаем сборку заново:

# make install clean

Также после этого мне пришлось отдельно пересобрать /usr/ports/sysutils/fusefs-kmod. Иначе получал ошибку отсутствия /usr/local/modules/fuse.ko при запуске fusefs.

kldload: can't load /usr/local/modules/fuse.ko: File exists


Если всё собралось нормально, то идём дальше.

Добавляем запись в rc.conf.

# echo 'fusefs_enable="YES"' >> /etc/rc.conf

Стартуем fusefs

# /usr/local/etc/rc.d/fusefs start

Далее создаем каталог для монтирования.

# mkdir /usr/home/user/yadisk

Создаем скрипт для монтирования при загрузке сервера.

# ee /usr/local/bin/yadisk.sh


Содержание скрипта:

#!/bin/sh
PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin"
export PATH
/usr/local/bin/wdfs https://webdav.yandex.ru /usr/home/user/yadisk/ -o username=user@yandex.ru,password=pAssW0rd,allow_other

Добавляем скрипт в крон

# crontab -e

@reboot /usr/local/bin/yadisk.sh

Вот и всё. Можно вручную запустить скрипт и проверить его работоспособность, яндекс диск должен примонтироваться. После перезагрузки он примонтируется автоматически по крону.

2014   Freebsd   webdav   webdav.yandex.ru

Смена пароля admin в vdsmanager.

Vds manager хранит пароли в виде хеша в файле /usr/local/ispmgr/etc/vdsmgr.conf

Для смены пароля на понадобится известный хеш. Возьмем например хеш root пароля из файла /etc/shadow

# cat /etc/shadow|grep root

Копируем строчку с хеш пароля и заменяем старый хеш в vdsmgr.conf. Затем перезапускаем панель

# killall -9 vdsmgr

Заходим в панель с логином admin и паролем root. И меняем пароль на новый.

2013   centos   debian   Freebsd   Linux   passwd   password   ubuntu   vds-manager   vdsmgr

Архивы .xz и ошибка при установке из портов FreeBSD.

Недавно обновлял на давно установленном сервере версию PHP с 4.x до 5.4. Версия FreeBSD, если память мне не изменяет, 8.2. При установке libgd получаю ошибку:

tar: Unrecognized archive format

Формат архива порта .xz, путем продолжительного гугления решить проблему не удалось. Порты обновлены, ядро системы пересобрано, но ошибка всё равно возникает. В инете эта ошибка известна, но почему то всё ещё нормального решения её нет. Ну или я его не нашёл. В конце концов я придумал решение самостоятельно, распаковал архив в отдельную папку и уже в ней сконфигурил и скомпилял, данную библиотеку. Возможно решение не лучшее, но это единственное что мне помогло.

2013   Freebsd   ports   tar   xz