FreeBSD: административные особенности

FreeBSD: административные особенности

 
  • FreeBSD: административные особенности
  • Вместо предисловия
  • Чем посмотреть трафик в текстовом режиме
  • SSD Life time
  • Что доставить дополнительно из портов
  • Параметры ядра для гигабитного ethernet
  • Как задать статический роутинг
  • Как загрузиться с нестандартного boot-пути
  • Как сделать ftp-only юзера с chroot'ом в его домашнем каталоге
  • какой командой создается новый раздел диска
  • где живут rc-скрипты начальной загрузки
  • Чтобы гарантировано отрабатывал fsck после ресета
  • что там вместо /etc/hosts.allow
  • Редактирование свойств юзера. vi /etc/passwd не работает
  • Как задать hostname
  • Перезапуск named
  • Перекомпиляция ядра
  • Оживляем ethernet Intel82562 Express Pro 100 на 865 матерях
  • Дисковые устройства
  • Постинсталляция
  • Параметры ядра
  • Как смотреть температуру процессора, скорость вращения вентиляторов
  • Установка пакета из сети
  • Как обновить дерево портов
  • Как назначить IP-alias на сетевой интерфейс
  • Атрибуты иммутабле
  • Лечение bad blocks во FreeBSD
  • What do I do when I have bad blocks on my hard drive?
  • Исправление загрузчика

  • Вместо предисловия


    Начинать надо с FreeBSD Handbook Проект по переводу документации FreeBSD www.freebsd.org.ua

    Чем посмотреть трафик в текстовом режиме


    systat -ifstat 10 iftop

    SSD Life time

    smartctl -A /dev/da3 233 Unknown_Attribute 0x0032 096 096 000 Old_age Always - 0
          233-й показывает, сколько процентов диска осталась в живых (not bad block)

          9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 24534
          9-й показывает, сколько часов диск был включен
    при среднем темпе записи на диск 0.8 Mb/сек ~ 70 Gb/день, 300Gb диск будет иметь около 100 оверврайтов за год
    Предположительно ячейки выдерживают 3-4 тысячи циклов overwrite

    Что доставить дополнительно из портов

    sudo bash zip lsof wget nmap thttpd (лечить) rar unrar

    Параметры ядра для гигабитного ethernet


    net.inet.tcp.recvbuf_auto=1 net.inet.tcp.recvbuf_inc=131072 net.inet.tcp.recvbuf_max=1048576 net.inet.tcp.sendbuf_auto=1 net.inet.tcp.sendbuf_inc=131072 net.inet.tcp.sendbuf_max=1048576 net.inet.tcp.maxtcptw=102400
    http://alextutubalin.livejournal.com/305277.html
    /etc/sysctl.conf:
    net.core.optmem_max=1048576 net.ipv4.udp_rmem_min=81920 net.ipv4.udp_wmem_min=81920 net.core.wmem_max=16777216 net.core.rmem_max=16777216 net.core.wmem_default=16777216 net.core.rmem_default=16777216

    Как задать статический роутинг


    /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"

    Как загрузиться с нестандартного boot-пути


    F1 boot: 0:ad(2f)

    Как сделать ftp-only юзера с chroot'ом в его домашнем каталоге



          Если обычный 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

    где живут rc-скрипты начальной загрузки


    /etc/rc.* - это системные, их - не трогать! /usr/local/etc/rc.d/*.sh - вот сюда будут попадать ваши.

    Чтобы гарантировано отрабатывал fsck после ресета



          fsck_y_enable="YES"
          в /etc/rc.conf

    что там вместо /etc/hosts.allow


    tcp_wrapper встроен в inetd
    man inetd man 5 hosts_access man 5 hosts_options
    управляется через /etc/hosts.allow

    Редактирование свойств юзера. vi /etc/passwd не работает


    vipw

    Как задать hostname


    vi /etc/rc.conf
    # hostname new_hostname раскомментировать hostname="new_hostname"

    Перезапуск named


    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 install

    Оживляем ethernet Intel82562 Express Pro 100 на 865 матерях


    http://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

    Как смотреть температуру процессора, скорость вращения вентиляторов



          coretemp # поставить
          /sys/modules/coretemp$ sysctl -a | grep temperat

          lmmon из портов.
          consolehm
          healthd

    Установка пакета из сети

    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 # что брать и откуда

    Как назначить IP-alias на сетевой интерфейс



    Одноразовая операция
    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 # сбросить

    Лечение bad blocks во FreeBSD



          Подробнее - тут
          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

    What do I do when I have bad blocks on my hard drive?


    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\"
    все заработало



    Home | UK Shop Center |Contact | Buy Domain | Directory | Web Hosting | Resell Domains


    Copyleft 2005 ruslib.us