Вчера пытался установить удаленно через kvm Freebsd на материнской плате Intel S3420GP. Два винта были объеденные в зеркало, хотелось разбить на три слайса 70G, 70G, 300G. Две 70-ки под «/», «/usr», «/var», для того что бы можно было загрузится с предыдущей копии в случае не удачного обновления. 300-ка под «/tmp», «swap», «/home». Не получилось, sysinstall выдавал ошибку вида: «Unable to make device node for /dev/ar0s1a in /dev! The creation of filesystems will be aborted.»
Archive for the ‘FreeBSD’ Category
Разметка диска и создание файловой системы с помощью bsdlabel и newfs (FreeBSD)
Пятница, 19 августа, 2011Portmaster — шпаргалка по ключам
Вторник, 29 марта, 2011Portmaster — это утилита во FreeBSD для управления портами, использующая только структуру самих портов, без дополнительных надстроек или использования сторонних языков. С помощью нее можно обновлять, часть или все порты.
Общие флаги:
--force-config Выполнить команду 'make config' для всех портов (перекрывается -G)
-C Не выполнять команду 'make clean' до сборки пакетов
-G Позволяет не выполнять 'make config'
-H Cкрыть подробности сборки и установки в log-файле
-K Не выполнять 'make clean' после сборки пакетов
-B Предотвращает создание резервного пакета установленного порта (обычно до установки делается резервная копия, на которую откатывается в случае неудачи, после удачной установки резервная копия удаляется)
-b Создание и сохранение резервного пакета установленного порта
-g Создать пакет из нового порта
-n Проходит все шаги установки, но не инсталлирует ни каких портов ( я думаю удобно при отладке используя ключ "-K" и в случаи удачи запустить снова portmaster с ключом "-C" для установки без сборки
-t Тщательные рекурсивные зависимости использует all-depends-list. РЕКОМЕНДУЕТСЯ ИСПОЛЬЗОВАТЬ ТОЛЬКО В СЛУЧАЕ НЕОБХОДИМОСТИ. (recurse dependencies thoroughly, using all-depends-list. RECOMMENDED FOR USE ONLY WHEN NEEDED, NOT ROUTINELY. When applied to the --clean-distfiles option it allows a distfile to be valid if it matches any up to date port, not just the ones that are installed.)
-v Подробный вывод
-w Сохранять старые подключаемые библиотеки до деинсталляции
[-R] -f всегда пересобирать порты (перекрывается -i)
-i Интерактивная мода обновления, спрашивать пересобирать ли порты
-D Не очищать архивы исходников (distfiles)
-d Всегда отчищать архивы исходников (distfiles)
-m arguments for make any arguments to supply to make(1) -m Аргументы make, для того что бы узнать аргументы читайте man make(1)
-x avoid building or updating ports that match this pattern. Can be specified more than once. If a port is not already installed the exclude pattern will be run against the directory name from /usr/ports. -x Используется для исключения установки или обновления портов. Можно использовать несколько раз в одной команде. Путь задается относительно каталога /usr/ports.
--no-confirm Не запрашивает пользователя подтверждения списока портов для установки или обновления перед сборкой
--no-term-title Не обновлять заголовок xterm
--no-index-fetch Пропустить скачивание INDEX файла
--index use INDEX-[7-9] exclusively to check if a port is up to date
--index-first use the INDEX for status, but double-check with the port
--index-only do not try to use /usr/ports. For updating ports when no /usr/ports directory is present the -PP|--packages-only option is required. See the ENVIRONMENT section below for additional requirements.
--delete-build-only удалить порты собранные только для удовлетворения зависимости, после успешной сборки.
-P|--packages использовать пакеты если это возможно, иначе собирать порты
-PP|--packages-only Выдавать ошибку и останавливается если пакет недоступен, "-PP" должна быть одна в строке, например вы не можете использовать "-PPav"
--packages-build Использовать пакеты для удовлетворения всех зависимостей.
--packages-if-newer Использовать пакет если он новее чем уже установленный, даже если пакет не является последним согласно дереву портов
--always-fetch Всегда скачивать пакет, даже если он уже доступен локально
--local-packagedir=<path> Указать путь где локальные пакеты могут быть найдены. Эта опция должна указать на полный путь структуры каталогов, создаваемой таким же образом, который который был создан с помощью 'make package' (или 'portmaster -g'). То есть, файлы пакета содержатся в <path>/All (ВНИМАНИЕ!!! All с большой буквы.), символьные ссылки LATEST_LINK <path>/Latest каталог, и символьные ссылки в папку <path>/All в категориях и подпапках, таких как <path>/devel, <path>/ports-mgmt, и т.д. (как на ftp-шнике freebsd.org)
--packages-local использовать пакеты только из тех, что указаны директивой --local-packagedir
--delete-packages после установки пакета, удалить его.
Особенности:
-a Проверка всех портов и обновление по мере необходимости.
--show-work Показывать какие из зависимых портов не установленные (подразумевает "-t" )
-o <new port dir in /usr/ports> <installed port> replace the installed port with a port from a different origin -o <new port dir in /usr/ports> <installed port> заменить существующий порт другим портом (обычно перейти на новую версию)
[-R] -r имя/glob каталога порта в /var/db/pkg восстановить указанный порт, и все порты, которые зависят от его
-R используется с -r или -f опциями, чтобы пропустить порты, обновленные ранее. Когда использующийся с "-r" это также предотвратит восстанавление родительского порта, если это, и все его зависимости
-l список всех установленных портов по категориям
-L список всех установленных портов по категориям, и поиск обновлений
--list-origins список директорий относительно /usr/ports. Этот список предназначен для передачи в portmaster либо на другой машине или для перестановки всех портов. См. примеры ниже.
[--force-config|-G] [-aftv] -F только скачать дистрибутивы (distfiles)
-n отвечать "нет" на все вопросы пользователю
-y отвечать "да" на все вопросы пользователю
[-n|y] [-b] [-D|d] -e имя/glob для каталога порта в /var/db/pkg удаляют порт, используя pkg_delete, и дополнительно удаляют весь distfiles. Вызов "-s" после удаления порта удаляет и все зависимости которые более не требуются.
[-n|y] [-b] [-D|d] -s удалить неиспользуемые более порты зависимостей
[-t] [-n] --clean-distfiles удаляет неиспользуемые distfiles-файлы установленных портов, если используется "-t" то для всех портов, а не только установленных.
[-t] -y --clean-distfiles тоже что и выше, но удаляет все distfiles-файлы без предупреждения
[--index|--index-only] [-n] --clean-packages предложит удалить устаревшие пакеты. Опция --index-only требуется, если не дерево портов доступно.
[--index|--index-only] "-y --clean-packages" делает то же самое, что и выше, но удаляет все устаревшие файлы без предупреждения.
[-n|y] [-v] --check-depends cross-check и обновления информации зависимостей для всех портов
[-n|y] [-v] --check-port-dbdir Проверит устаревшие записи в /var/db/ports
-h|--help Показать помощь
--version Показать номер версии
Переменные среды
Каталог на который указывает переменная PACKAGES (по умолчанию /usr/ports/packages) будет использоваться для хранения и резервного копирования новых пакетов. При использовании 'make package' с опцией -g, инфраструктура портов сохранит пакеты в ${PACKAGES}/All иначе PKGREPOSITORY. При использовании -b опции portmaster хранит свои резервные пакеты в ${PACKAGES}/portmaster-backup так, чтобы вы могли создать и резервный пакет и пакет недавно установленного порта, даже если у них одинаковая версия в разных папках.
При использовании опции --packages* файлы пакета будут загружены в ${PACKAGES}/portmaster-download. portmaster будет использовать переменные PACKAGESITE и PACKAGEROOT (по умолчанию http://ftp.freebsd.org). portmaster пытается использовать обе эти переменные как же как это делает pkg_add (1).
Переменная UPGRADE_TOOL установленная в положение "portmaster" и переменные UPGRADE_PORT и UPGRADE_PORT_VER устанавливаются в полное имя пакета и версии.(The UPGRADE_TOOL variable is set to "portmaster", and the UPGRADE_PORT and UPGRADE_PORT_VER variables are set to the full package name string and version of the existing package being replaced, if any.)
При использовании опции --index-only переменная PACKAGES должна содержать имя папки в которой у суперпользователя есть права на запись. Другие полезные переменные:
MASTER_SITE_INDEX (по умолчанию http://www.FreeBSD.org/ports/) FETCHINDEX (по умолчанию fetch -am -o) INDEXDIR (по умолчанию $PORTSDIR, или $TMPDIR для --index-only) INDEXFILE (по умолчанию версия FreeBSD)
Если Вы используете нестандартные настройки OPTIONS для создания пакета и хотите использовать опцию --index-only без дерева портов, вы должны генерировать свой собственный INDEX файл так, чтобы зависимости соответствовали.
Если вы хотите настроить свою среду сборки на основе на портов, посмотрите /usr/ports/ports-mgmt/portconf
Для логирования используйте переменную PM_LOG указав в ней полный путь до файла.
По умолчанию portmaster создает резервные пакеты установленных портов прежде, чем он выполнит pkg_delete (1) во время обновления. Если создания пакета не удается это рассматривается как серьезная ошибка и предлагается пользователю. Однако для заданного сценарием использования portmaster это может быть проблемой. В ситуациях, где пользователь АБСОЛЮТНО УВЕРЕН, что не возможность создания резервного пакета не должна приводить к фатальной ошибке, переменная PM_IGNORE_FAILED_BACKUP_PACKAGE может быть определена через rc файл.
Для тех, кто хочет чтобы определенные порты всегда компилировались, а не устанавливались из пакетов, переменная PT_NO_INSTALL_PACKAGE может быть определена в соответствии с make(1), можно установить в /usr/local/etc/ports.conf если используется /usr/ports/ports-mgmt/portconf, или в /etc/make.conf
ФАЙЛЫ
/usr/local/etc/portmaster.rc $HOME/.portmasterrc Дополнительные системные и пользовательские конфигурационные файлы. Набор переменных в getopts подпрограмме сценария может быть определен в этих файлах, чтобы включить опции. Эти файлы будут считанны главным portmaster процессом, все переменные в них будут экспортироваться. /var/db/pkg/*/+IGNOREME Если этот файл существует в папке порта, который уже установлен, поведение будет следующим: 1. Порт будет проигнорирован везде. Это включает обновления зависимости, даже если нет никакого каталога для порта в /usr/ports и нет никакой записи для этого в/usr/ports/MOVED. Если используется опция "-v" то о факте игнорирования, будет сообщено. 2. Если используется опция "-L" и новая версия существует, существование файла +IGNOREME будет упомянуто. 3. Если вы сделаете регулярное обновление порта, или если используется опция "-a", то вас спросят, хотите ли вы обновить порт так или иначе. /var/db/pkg/*/PM_UPGRADE_DONE_FLAG Указывает на последующие опции "-a", "-f", or "-r" которые включают опцию "-R" что порт был уже востановлен, таким образом, это может быть безопасно проигнорировано (Indicates to a subsequent -a, -f, or -r run which includes the -R option that a port has already been rebuilt, so it can be safely ignored if it is up to date.) /tmp/port_log-* Если используется опция "-H", а установка или обновление не удалось, результаты сборки и установки будут сохранены в этом файле. Замените значение TMPDIR в вашей среде если это требуется. EXIT STATUS portmaster утилита возвращает 0 в случае успешного завершения и > 0, если произошла ошибка. ADVANCED FEATURE: SU_CMD (если используете sudo то переведете сами, лень...) The ports infrastructure has limited support for performing various operations as an unpriviliged user. It does this by defining SU_CMD, which is typically su(1). In order to support complete management of your ports as an unprivileged user, escalating to "root" privileges only when necessary, portmaster can use sudo(1) to handle the escalated privileges. To accomplish this you must have the following directories configured so that the unprivileged user can access them: 1. WRKDIRPREFIX - This is usually set to /usr/ports/category/port/work, however it is suggested that you configure another directory outside your ports tree for access by the unprivileged user, and assign this variable to that value in your /etc/make.conf. 2. DISTDIR - This is usually set to /usr/ports/distfiles. This directory can be safely set up for access by the unprivileged user, or a new directory can be specified as above. 3. TMPDIR - Usually /tmp, but can also be set to another directory in your shell environment if desired. It is further assumed that the following directories will be owned by root: /var/db/pkg /var/db/ports LOCALBASE - Usually /usr/local PACKAGES - Usually /usr/ports/packages PKGREPOSITORY - Usually ${PACKAGES}/All You will then need to install and configure sudo(1). This can easily be done with /usr/ports/security/sudo. Then you will need to define PM_SU_CMD in your /etc/portmaster.rc file, or your $HOME/.portmasterrc file. For example: PM_SU_CMD=/usr/local/bin/sudo You can optionally define the PM_SU_VERBOSE option as well to notify you each time portmaster uses the PM_SU_CMD. This is particularly useful if you are experimenting with a tool other than sudo(1) to handle the privilege escalation, although at this time sudo(1) is the only supported option. PLEASE NOTE: You cannot upgrade the sudo(1) port itself using this method.
Примеры
Обновление одного порта: portmaster fooport-1.23 portmaster fooport portmaster foo/fooport
Использование пакетов собранных на официальном сайте через переменную среды PACKAGESITE: Для этого в файл /root/.cshrc прописываем строку примерно такого вида(все зависит от вашей версии): setenv PACKAGESITE http://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/Latest/ все теперь можно использовать ключи "-P", "-PP", "--packages-build" и пакеты будут браться с сервера ftp.freebsd.org: portmaster --packages-build fooport-1.23
Использование пакета если такой имеется: portmaster --packages fooport-1.23
Создайте порт локально, но использовать пакеты для удовлетворения зависимостей, после сборки удалить зависимости установленные зависимости: portmaster --packages-build --delete-build-only fooport-1.23 Обновление системы с использованием только пакетов, доступные локально: portmaster -PP --local-packagedir= -a Обновление всех портов, которые нуждаются в обновлении: portmaster -a Обновление всех портов, которые нуждаются в обновлении, и удалить устаревшие distfiles файлы после обновления: portmaster -aD portmaster --clean-distfiles Более сложные задачи (см. подробнее описание вариантов выше): portmaster -r fooport-1.23 portmaster -o emulators/linux_base-fc4 linux_base-8-8.0_15 portmaster -x cvsup -f -a portmaster -a -x gstreamer -x linux Только напечатать порты, у которых есть доступные обновления: portmaster -L | \ egrep -B1 '(ew|ort) version|Aborting|installed|dependencies| \ IGNORE|marked|Reason:|MOVED|deleted' | grep -v '^--' Использование portmaster что бы сделать полную переустановку всех установленных портов: 1. portmaster --list-origins > ~/installed-port-list 2. Обновите дерево портов 3. portmaster -ty --clean-distfiles 4. portmaster --check-port-dbdir 5. portmaster -Faf 6. pkg_delete '*' 7. rm -rf /usr/local/lib/compat/pkg 8. Сохраните все файлы из /usr/local которые вы хотите потом восстановить, например файлы конфигураций в /usr/local/etc 9. В ручную проверьте /usr/local и /var/db/pkg и убедитесь что они пусты 10. Переустановите portmaster 11. portmaster `cat ~/installed-port-list` Вы, вероятно, хотите использовать опцию "-D" для установки, а затем выполнить --clean-distfiles [-y]снова. Возможно будет полезна опция --force-config при установке новых портов. Так же вы можете использовать portmaster -a -f -D, чтобы сделать "на месте" обновление установленных портов. Если этот процесс прерван по какой-либо причине, вы можете использовать portmaster -a -f -D -R, чтобы избежать установку портов, уже обновленных (установленных) на предыдущем шаге. Однако первый метод (удалить все и переустановить), предпочтен.
Переброс (forwarding) портов с помощью IPFW. FreeBSD 8.1
Пятница, 29 октября, 2010Для настройки прозрачного прокси потребовалось правило ipfw вида:
ipfw add 1000 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any 80 out via eth0
Но оно выдавало ошибку:
ipfw: getsockopt(IP_FW_ADD): Invalid argument
Решено было пересобрать модуль ядра ipfw.ko
Для этого:
1. Делаем копию ядра (хотя нам нужен только модуль ipfw.ko) но на всякий случай:
cp -r /boot/kernel /boot/kernel.generic_8.1
2. Добавляем в файл /etc/make.conf строку вида:
CFLAGS+= -DIPFIREWALL -DIPFIREWALL_NAT -DIPFIREWALL_FORWARD -DIPFIREWALL_DEFAULT_TO_ACCEPT -DIPSTEALTH -DIPDIVERT -DDUMMYNET
3. пересобираем модуль:
cd /usr/src/sys/modules/ipfw make clean && make cleandir && make obj && make depend && make all && make install && make clean && make cleandir
Все.
Как узнать pid запускаемой программы из скрипта.
Вторник, 21 сентября, 2010Для примера я написал скрипт test.sh, где ищем pid для запускаемой команды sleep в место нее может быть запущена любая программа.
$ cat test.sh
#!/bin/sh #в переменной $$ находится pid этого скрипта echo "pid скрипта = "$$ #Для примера запустим команду sleep на 5 мин. в переменной $! будет pid запущенной нами команды sleep 300 & pid=$! echo "pid="$pid ps waux | grep $pid | grep -v grep #или так, в этом примере sleep будет 10 мин для отличия sleep 600 1>/dev/null 2>&1 & pid=$! echo "pid="$pid ps waux | grep $pid | grep -v grep
Запустим скрипт test.sh:
$ sh test.sh
pid скрипта = 9959 pid=9960 rrv 9960 0.0 0.0 9728 828 pts/2 S+ 20:58 0:00 sleep 300 pid=9964 rrv 9964 0.0 0.0 9728 824 pts/2 S+ 20:58 0:00 sleep 600
Ломаем пароли Authorization: Basic
Понедельник, 20 сентября, 2010Имеем: Доступ до роутера.
Требуется: получить доступ до сайта пользователя с Basic авторизацией
Решение:
1. на роутере выполняем команду
tcpdump -i em3 -p -s 0 -w /home/rrv/tcpdump.txt \(dst host XX.XX.XX.XX and dst port 80\)
тем самым мы сохраним в файл /home/rrv/tcpdump.txt дамп общения с сервером ip=XX.XX.XX.XX и портом 80
2. спустя некоторое время ищем в файле строку авторизации:
tcpdump -s 0 -A -r /home/rrv/tcpdump.txt | less
Находим строку вида:
Authorization: Basic QWRtaW46VG9wU2VjcmV0
Теперь раскодируем:
echo "QWRtaW46VG9wU2VjcmV0" | openssl enc -base64 -d
Admin:TopSecret
Все 🙂 Логин: Admin пароль: TopSecret
Читаем BIOS. Определение названия материнской платы.
Среда, 10 февраля, 2010Возникла необходимость узнать название материнской платы на удаленном сервере, стоящим на площадке провайдера.
Решением оказалось чтение BIOS-а командой:
# dd if=/dev/mem bs=64k skip=15 count=1 | strings | less
Уменьшение места зарезервированного для root на партиции.
Четверг, 12 февраля, 2009Сегодня столкнулся с проблемой. Подключил большой диск к файловому серверу, для создания временного backup-а с виндовой тачки через samb-у, и выяснилось, что мне не хватает процентов 5 места. Обидно…
Вспомнил, что FreeBSD резервирует 8% партиции под суперпользователя.
Чтение man newfs указало, что есть ключик -m free-space это для новой партиции, но на существующей партиции, можно использовать tunefs. (далее…)
Portsnap за proxy
Вторник, 30 декабря, 2008В общем был у меня сервачек в одной канторе, все было хорошо пока я в очередной раз обнавляя порты получил следующую ошибку:
# portsnap fetch Looking up portsnap1.FreeBSD.org mirrors... none found. Fetching snapshot tag... fetch: http://portsnap1.FreeBSD.org/snapshot.ssl: No address record