Главная > Операционные системы > UNIX > BSD > FreeBSD FAQ FreeBSD (очень старая информация)
В случае нечаяного удаления модулей, как временные костыли можно применить простой и быстрый способ оживления приложений. cd /lib ln -s /lib/libm.so.5 /lib/libm.so.4 ln -s /lib/libutil.so.7 /lib/libutil.so.5 ln -s /lib/libcrypt.so.4 /lib/libcrypt.so.3 ln -s /lib/libc.so.7 /lib/libc.so.6 Второй вариант это создать файл /etc/libmap.conf с похожим выше содежимым: /lib/libm.so.5 /lib/libm.so.4 /lib/libutil.so.7 /lib/libutil.so.5 /lib/libcrypt.so.4 /lib/libcrypt.so.3 /lib/libc.so.7 /lib/libc.so.6 /usr/ports/sysutils/libchk - сгодится для идентификации портов (те, что установлены в системе) использующих старые библиотеки Начинать надо с FreeBSD Handbook Проект по переводу документации FreeBSD www.freebsd.org.ua sudo bash zip lsof wget nmap thttpd (лечить) rar unrar /etc/rc.conf : static_routes="net1 net2" route_net1="-net 192.168.0.0/24 192.168.0.1" route_net2="-net 192.168.1.0/24 192.168.1.1" F1 boot: 0:ad(2f) Если обычный ftpd, то прописать ему шелл '/bin/date' или '/usr/bin/true' и вписать его в '/etc/shells' - вписать его в '/etc/ftpchroot' Для proftpd вписать в /usr/local/etc/proftpd.conf DefaultRoot ~ # AllowStoreRestart on # AllowRetrieveRestart on # DirFakeUser on ~ # UseFtpUsers off # MaxClientsPerHost 5 (в процессе установки всё проходит гладко). man sysinstall man newfs /etc/rc.* - это системные, их - не трогать! /usr/local/etc/rc.d/*.sh - вот сюда будут попадать ваши. fsck_y_enable="YES" в /etc/rc.conf tcp_wrapper встроен в inetd man inetd man 5 hosts_access man 5 hosts_options управляется через /etc/hosts.allow vipw vi /etc/rc.conf # hostname new_hostname раскомментировать hostname="new_hostname" man ndc ndc reloadКлассическая схема для BSD-ядер http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-building.html http://freebsd.org.ru/how-to/kernelconfig.html cd /usr/src/sys/i386/conf/ cp GENERIC YOURKERNEL /usr/sbin/config YOURKERNEL cd ../compile/YOURKERNEL make depend && make # теперь вздрогнул, подумал, и... make installhttp://www.freebsd.org/cgi/query-pr.cgi?pr=53228 Intel D865GBFL motherboard (AA Revision C25843-401) Integrated LAN with Intel 82562EZ PLC 2.4C GHz Pentium 4 processor (800MHz, HT) FreeBSD 4.8-RELEASE -- GENERIC kernel (although, would presumably happen with any kernel with the current fxp driver) Version info from if_fxp.c: * $FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.110.2.28 2003/01/28 11:17:33 sanpei Ex p $ Relevant output from 'pciconf -lv': none4@pci1:8:0: class=0x020000 card=0x302f8086 chip=0x10508086 rev=0x01 hdr=0x00 vendor = 'Intel Corporation' class = network subclass = ethernet Description The fxp driver fails to recognize the integrated Intel 82562EZ LAN on the Intel D865GBFL motherboard. If my diagnosis is correct, this is the result of this version of the 82562 chip reporting a new PCI "chip id", as has happened before (see kern/39974). How-To-Repeat Install 4.8-RELEASE on a system with an Intel D865GBFL motherboard (the AA Revision on the board in question was C25843-401). During and after installation, the kernel (specifically the fxp driver) fails to detect the on-board Intel 82562 LAN. Fix Add an entry to the fxp_ident_table array in sys/dev/fxp/if_fxp.c for the new PCI chip id and re-build the kernel. Here's a patch: --- if_fxp.c Wed Jun 11 16:36:59 2003 +++ if_fxp.c-patched Wed Jun 11 16:36:30 2003 @@ -165,6 +165,7 @@ { 0x103C, "Intel Pro/100 Ethernet" }, { 0x103D, "Intel Pro/100 Ethernet" }, { 0x103E, "Intel Pro/100 Ethernet" }, + { 0x1050, "Intel Pro/100 Ethernet" }, { 0x1059, "Intel Pro/100 M Mobile Connection" }, { 0, NULL }, }; IDE-диски: /dev/ad0 (нумерация с 0) /dev/ad1 ... SCSI-диски: /dev/da0 (нумерация с 0) /dev/da1 ... Разделы на диске (они же - слайсы) Для разметки используется fdisk с дикими ключами /dev/ad0s1 (нумерация с 1-го) /dev/ad0s2 ... BSD-subsections внутри раздела Для разметки используется disklabel с дикими ключами /dev/ae0s2е (нумерация от е до h, abcd - служебные подсекции) /dev/ae0s2ф ... Впрочем, вручную эти команды совершенно неоперабельны, вместо них используется административный фронтенд /stand/sysinstall USB-Флоппи-диски (прикидываются SCSI-дисками) /dev/de0 IDE-DVD/CDROM /dev/acd0c Типы файловых систем ufs ufs2 (начиная с 5.1 RELEASE) iso9660 msdos Конфигуратор /stand/sysinstall Просто конфигур /etc/rc.conf Посмотреть sysctl -a|grep ip Задать в онлайне sysctl net.inet.icmp.icmplim=400 Для постоянной установки записать в /etc/sysctl.conf переменная=значение net.inet.icmp.icmplim=400 kern.maxfiles=32768 net.inet.ip.portrange.randomized=0 net.inet.ip.portrange.first=49152 net.inet.ip.portrange.last=65535 kern.ipc.somaxconn=4096 Readonly параметры поменять через /etc/sysctl.conf не удастся. Их мы записываем в /boot/loader.conf kern.ipc.nmbclusters="32768" kern.ipc.nmbufs="131072" Часть параметров задается в /usr/src/sys/i386/config/LINT А можно дописать их в YOURKERNEL Например вполне разумно смотрятся maxusers 512 options NMBUFS=16384 options NMBCLUSTERS=32768 1. Загрузить модуль ядра coretemp: # kldload coretemp 2. Проверяем температуру такой командой: # sysctl -a | grep temperature hw.acpi.thermal.tz0.temperature: 40.0C dev.cpu.0.temperature: 62.0C dev.cpu.1.temperature: 58.0C Makefiles для установки пакетов лежат в /usr/ports Для инсталляции пакета xyz: locate xyz | grep /usr/ports # определяем его портовую директорию cd /usr/ports/whereitis/xyz # и переходим в нее make install если не хотим качать пакет из интернета - заранее кладем его в /usr/ports/distfiles или же просто export PACKAGEROOT='ftp://ftp.*ближайшее зеркало*.freebsd.org' pkg_add -r package_short_name # (имя папки в портах, как правило) А еще есть /usr/ports/sysutils/portupgrade Для начала его надо просто установить. Для этого /sbin/sysinstall Configuration Distribution Ports и устанавливаем их из сети Потом собираем и ставим cvsup /usr/ports/net/cvsup-without-gui make install man cvsup # и внимательно читаем Затем создаем файл ~/sup/ports-supfile # что брать и откуда ########################################################### *default host=cvsup6.ru.FreeBSD.org *default base=/usr *default prefix=/usr *default release=cvs tag=. *default release=cvs delete use-rel-suffix compress *default compress ports-all ########################################################### Затем создаем файл ~/sup/refuse # список, чего не брать doc/da_* doc/de_* doc/es_* doc/el_* doc/fr_* doc/it_* doc/ja_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/ru_* doc/sr_* doc/zh_* ports/arabic ports/chinese ports/french ports/german ports/hebrew ports/hungarian ports/japanese ports/korean ports/polish ports/portuguese # ports/russian ports/ukrainian ports/vietnamese # ports/x11 # ports/x11-clocks # ports/x11-fm # ports/x11-fonts # ports/x11-servers # ports/x11-toolkits # ports/x11-wm # ports/x11-themes ########################################## и наконец cvsup ~/sup/ports-supfile # что брать и откуда Одноразовая операция ifconfig fxp0 alias 1.2.3.4 netmask 0xffffffff # добавить ifconfig fxp0 -alias 1.2.3.4 # убрать На постоянной основе: /etc/rc.conf ifconfig_fxp0_alias0="inet 81.19.6.18 netmask 0xffffffff" ifconfig_fxp0_alias1="inet 81.19.6.19 netmask 0xffffffff" флаг schg -- system immutable ls -lo /path/to/file # посмотреть chflags 0 /path/to/file # сброситьПодробнее - тут http://www.opennet.ru/openforum/vsluhforumID1/68600.html SCSI сами лечат(ремапят) свои bad-блоки. Начиная с 4.2 из FreeBSD-fsck убрали софтверный ремапинг. Но. Аппаратный авторемапинг диска происходит только при записи данных в бэд-блок. Можно "положить" поверх bad-блоков файлики (командой badset) и ничего не лечить. Можно провести ремапинг в режиме "почти-readonly" DOS-утилитой mhdd32 Можно перепрописать диск командой dd Как сделать предварительный бэкап? Ведь dd нарвавшись на bad-block прерывает работу. Нас спасет noconv=noerr,sync (не останавливаться при ошибке, непрочитанные блоки заменять нулями). Размер блока имеет смысл делать кратным блоку fs, чтоб быстрее работало, или 512 байт - чтобы обнуляло _только_ битые блоки. # делаем бэкап dd if=/dev/da4s1e bs=8k of=/path/file conv=noerror,sync # "лечим-калечим", возможно, несколько раз dd if=/dev/random bs=8k of=/dev/da4s1e conv=noerror,sync # восстанавливаемся с бэкапа dd if=/path/file bs=1024k of=/dev/da4s1e With SCSI drives, the drive should be capable of re-mapping these automati- cally. However, many drives are shipped with this feature disabled, for some mysterious reason... To enable this, you will need to edit the first device page mode, which can be done on FreeBSD by giving the command (as root) # scsi -f /dev/rsd0c -m 1 -e -P 3 С IDE-шными дисками может пройти такой вариант fsck -y /dev/ad0s1e ** /dev/ad0s1e ** Last Mounted on /home/new ** Phase 1 - Check Blocks and Sizes CANNOT READ: BLK 204513248 UNEXPECTED SOFT UPDATE INCONSISTENCY mount -f /dev/ad0s1e /fs mkdir /fs1/BAD-DIR badsect /fs1/BAD-DIR 204513248 umount /fs1 fsck -y /dev/ad0s1e После ремонта битые сектора будут лежать в порожденных файлах, с именами образованными из номеров битых секторов, удалять которые конечно-же не надо. Фокус работает только если битые сектора приходятся на блоки данных или free-list mount -f /dev/ad0s1e /fs1 ls -al /fs1/BAD-DIR -rw-r--r-- 1 root wheel 1428509 Sep 17 2004 204513248 - выписываешь fstab на листок - выполняешь boot0cfg -v ad0 (смотрим стандартный загрузчик или bootmanager) boot0cfg -o noupdate -s 1 /dev/ad0 noupdate - не позволять бутменеджеру менять умолчание загрузчика, и помнить слайс 1 -m 3 зачем??? - fdisk -B ad0 (грохаем бутменеджер) - bsdlabel ad0s1 > save-old.label (сохраняем на всякий случай разбивку) - bsdlabel -B ad0s1 (прописываем стандартный загрузчик) если все ok, потом можешь поставить бутменеджер. попробуй заново прописать стандартный загрузчик: # bsdlabel -w -B ad0s1 # man bsdlabel (покажет где берется загрузчик ls -la /boot/boot /boot/boot Default boot image # man 8 boot ... /boot.config parameters for the boot blocks (optional) /boot/boot1 first stage bootstrap file /boot/boot2 second stage bootstrap file /boot/loader third stage bootstrap /boot/kernel/kernel default kernel ------------------------------------------- поплясал вокруг сервера, побил в бубен и добавил строку в ядро options ROOTDEVNAME=\"ufs:ar0s1a\" все заработало Обновление конкретного портаДля того что бы обновить конкретный порт является не рационально обновлять все дерево портов. А в обновлении
только конкретного порта нам поможет portupgrade cd /usr/ports/ports-mgmt/portupgrade rehash rehash для того, чтобы заставить FreeBSD перечитать файлы, находящиеся в маршрутах поиска, чтобы система обнаружила их появление. Теперь можно обновлять установленные порты (ключ -R говорит о том, что нужно обновить не только порт, но и все его зависимости) portupgrade -R имя_порта Чтобы узнать список портов, нуждающихся в обновлении, существует команда pkg_version -v Для наведения порядка (удаление неиспользуемых портов, дубликатов версий) в реестре установленных портов (/var/db/pkg) можно воспользоваться командой pkgdb -F Как удалить порт с зависимостямиПри установке порта во FreeBSD, частенько он за собой тянет целый воз зависимостей. Чтобы удалит порт вместе с
зависимостями есть такая штука как pkg_rmleaves: cd /usr/ports/ports-mgmt/pkg_rmleaves/ make install clean rehash pkg_rmleaves -d Далее выбираем нужный порт и удаляем. Создание полной копии HDD с помощью dd и ncХочу рассказать, как делать копию жесткого диска по сети в никсах. Именно, полную копию HDD, а не разделов. Итак, имеем 2 никсовые машины в сети – Server(192.168.0.1) и Backup(192.168.0.2). На Backup запускаем nc в режиме ожидания соединений на 5000 порту, с последующим сжатием и выводом данных в файл: # nc -l -p 5000 | gzip -5 -c > ./server_hdd.img.gz На Server dd’им образ винта и напрямую сливаем по сети через nc на Backup # dd if=/dev/sda | nc -w 10 192.168.0.2 5000 Теперь ждем. Чтобы посмотреть статус копирования – во втором терминале даем dd сигнал USR1: # killall -SIGUSR1 dd Для востановления полной копии на Server: # nc -l -p 5000 | dd of=/dev/ad0 На Backup: # zcat ./server_hdd.img.gz | nc 192.168.0.1 5000 Не забываем, что вся предыдущая информация на ad0 будет перезаписана! Как не разбирая корпус посмотреть модель материнской платы1. Просмотреть содержимое BIOS (проверял под Linux и FreeBSD) Проверка на DDOS-атаки#!/bin/sh# находим все соединения и записываем их во временный файл ddos.iplist в каталоге tmp netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n > /tmp/ddos.iplist # очищаем скрипт бана айпишников cat /dev/null > /tmp/iptables_ban.sh # создаем DROP правила для 50 самых агрессивных ботов awk ‘{if ($1 > 20) {print «/sbin/iptables -I INPUT -p tcp —dport 80 -s » $2 » -j DROP» }}’ /tmp/ddos.iplist >> /tmp/iptables_ban.sh # следующая строка нужна только для того, чтобы создавался файл с просмотром всех правил iptables echo «/sbin/iptables -L INPUT -v -n > /tmp/iptables.log» >> /tmp/iptables_ban.sh # запускаем скрипт бана айпишников bash /tmp/iptables_ban.sh # делаем ротацию лога cat /dev/null > /var/log/ddos/error.log [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` SniFFeR: netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n | grep -v «Ваш IP сервера» > /tmp/ddos.iplist - с помощью данной команды можно исключить из проверки на количество подключение IP адрес самого сервера Очередность запуска сервисов FreeBSD. Посмотреть очередность запуска сервисов в freebsd.
#rcorder /etc/rc.d/* /usr/local/etc/rc.d/* Запустить или остановить службу можно скриптом, который лежит в папке /etc/rc.d/ . сетевые службы. Система FreeBSD 5.x/6.x скрипт для работы с сетевыми интерфейсами -> netif . Доступен только для рута (root): Стартуем FreeBSD сетевую службу: То-же самое при помощи ifconfig (если много сетевух и нет необходимости "ложить" все сетевые интерфейсы) положить сетевуху (NIC) внаглую: Список включенных сетевух: FreeBSD обновить / перезагрузить таблицу маршрутизации (routing) Если надо все сделать все через ssh подключение: Надо ввести команды как одну. Тогда все выполнится в фоновом режиме и никаких проблем с боевым серваком
не возникнет: Просмотреть список отключенных интерфейсов:
# ifconfig -d Список включенных сетевух: # ifconfig -u Использование программного RAID-1 (gmirror) в FreeBSD.
Восстановление предыдущего ядра, после неудачной загрузки нового.
Утилита make и ее дополнительные команды.
make fetch - скачивает приложение(порт).
make extract - распаковывает его.
make depends - перестроить зависимости.
make patch - применить патчи к приложению.
make build - собрать приложение из исходных тестов.
make clean - "почистить" исходники после сборки.
make deinstall - деинсталлировать приложение.
make reinstall - переустановить приложение после удаления.
make package - построить из порта package.
make -C /usr/ports/PACKAGE-PATH -запускаем из любого места будет строить указанный порт, добавляем нужные метки (! опция нововведенная в 8.0 и выше точно есть) (пример #make -C /usr/ports/databases/php53-pdo_mysql/ install clean )
make WITH_ИМЯОПЦИИ=yes WITHOUT_ИМЯОПЦИИ=yes BATCH=yes install && make clean
В последнем случае включаем/выключаем опции и говорим принимать настройки по умолчанию (запрос настроек порта или зависимостей) установить и провести очистку от временных файлов make FORCE_PKG_REGISTER=YES install
Выход в сеть через прокси сервер для fetch во FreeBSD.
Пользователи: Если Вам нужен список пользователей системы выполняем скрипт: Exercises for the interested and motivated: генератор паролей Удаление пользователя # rmuser имя-пользователя Чистим конфиг от комментариев (на примере exim.conf) cat /etc/exim/exim.conf|grep -vi "^[ \t#]*$"|grep -vi "^[ \t#]*#.*$"
10.21. Как перечитать содержимое /etc/rc.conf и перестартовать /etc/rc без перезагрузки системы? Главная > Операционные системы > UNIX > BSD > FreeBSD |