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

Тема в разделе "BSD", создана пользователем Max_Monarch, 12 мар 2013.

  1. Max_Monarch

    Max_Monarch Постоялец

    Регистр.:
    21 ноя 2008
    Сообщения:
    60
    Симпатии:
    9
    Что доставить дополнительно из портов

    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

    Перейти по ссылке

    /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-ядер
    Перейти по ссылке
    Перейти по ссылке

    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 матерях

    Перейти по ссылке

    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='Перейти по ссылке зеркало*.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

    Подробнее - тут
    Перейти по ссылке

    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

    Исправление загрузчика

    - выписываешь 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\"

    все заработало
     
  2. vgrey

    vgrey Создатель

    Регистр.:
    27 июл 2012
    Сообщения:
    48
    Симпатии:
    15
    Начиная с 9.0 на замену sysinstall пришел новый установщик: bsdinstall.
     
  3. Max_Monarch

    Max_Monarch Постоялец

    Регистр.:
    21 ноя 2008
    Сообщения:
    60
    Симпатии:
    9
    разве sysinstall не осталась как опция?
     
  4. ask0n

    ask0n

    Регистр.:
    9 июн 2009
    Сообщения:
    227
    Симпатии:
    63
    Вообще информация устарела минимум года на 3..местами на 5.
    Параметры "тюнинга" содраны из какого-то древнего мануала.
    А если базы locate нет? :)
    Код:
    cd /usr/ports && make search name=xyz

    А еще есть:
    Код:
    du -d2 /usr/ports | wc -l
    24338
    И что? :)
    После
    не стал читать, потому как давно не актуально, давно делается без доп. пакетов все "из коробки":

    1. При первой установке:
    Код:
    portsnap fetch extract
    2. Последующие обновления:
    Код:
    portsnap fetch update
    3. Про cvsup давно пора забыть как страшный сон, в системе года три существует csup встроенный, если не устраивают бинарные обновления им можно вытягивать исходные коды с таким же синтаксисом -
    Код:
    csup -L2 /path/to/config
    ИМХО, новичкам все описанное ТС только повредит, для остальных никакой полезной нагрузки.
     
  5. Max_Monarch

    Max_Monarch Постоялец

    Регистр.:
    21 ноя 2008
    Сообщения:
    60
    Симпатии:
    9
    сколько людей столько и мнений. изучение "как это было" тоже бывает полезно
     
  6. ask0n

    ask0n

    Регистр.:
    9 июн 2009
    Сообщения:
    227
    Симпатии:
    63
    Да, но не с такой громкой темой топика. Вообще информация в новых топиках должна быть актуальна на момент их создания.
     
  7. HS!

    HS!

    Регистр.:
    3 мар 2013
    Сообщения:
    353
    Симпатии:
    318
    нет, не осталось.
     
  8. mpv

    mpv Постоялец

    Регистр.:
    30 апр 2013
    Сообщения:
    68
    Симпатии:
    13
    нет, осталось

    FreeBSD main.k.ru 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r250595M: Tue May 14 00:03:30 MSK 2013 root@main.k.ru:/usr/obj/usr/src/sys/MAIN i386
    root@main:/ # whereis sysinstall
    sysinstall: /usr/sbin/sysinstall /usr/share/man/man8/sysinstall.8.gz
     
  9. mpv

    mpv Постоялец

    Регистр.:
    30 апр 2013
    Сообщения:
    68
    Симпатии:
    13
    а portupgrade разве не тянет за собой ruby?
    по мне удобней portmaster'ом

    как было сказано выше
    Код:
    portsnap fetch update
     
  10. MASSER

    MASSER Постоялец

    Регистр.:
    2 апр 2007
    Сообщения:
    65
    Симпатии:
    202
    На дворе уже FreeBSD 10.3
    Первоначально, после установки системы удаляем все файлы из /usr/ports, /usr/src и /usr/doc:
    Код:
    # rm -rf /usr/ports
    # rm -rf /usr/src
    # rm -rf /usr/doc
    Первоначальная установка портов для версии Stable:
    Код:
    # svnlite co svn://svn.freebsd.org/ports/head /usr/ports
    дальнейшее обновление:
    Код:
    # svnlite up /usr/ports
    Первоначальная установка src для версии 10 Stable:
    Код:
    # svnlite co svn://svn.freebsd.org/base/stable/10/ /usr/src
    дальнейшее обновление:
    Код:
    # svnlite up /usr/src
    Первоначальная установка doc:
    Код:
    # svnlite co svn://svn.freebsd.org/doc/head /usr/doc
    дальнейшее обновление:
    Код:
    # svnlite up /usr/doc
     
    Последнее редактирование: 21 май 2016