Материал из Wiki.X-news.org
Перейти к: навигация, поиск

Домашний сервер под FreeBSD 7. Пролог Рубрика: Заметки на полях, Новости | Дата: 12 Апр 2009

Часть первая. Зачем?

Собственно, раньше там стояла вин2003. Но с некоторых пор она просто перестала мне нравиться Да и лишний опыт не помешает. Итак, задачи, возлагаемые на наш, с позволения сказать сервер:

- Хранение данных (NTFS, RAID не нужен, просто несколько винтов), доступ по smb, аутентификация по паролю

- торрент-качалка

- ДЦ-качалка (p2p сеть)

- ftp помойка

- http сервер, раздающий обновления, держащий веб-морды и прочая

Часть вторая. Первые грабли

На первое время хватит.


Собственно, на установке заморачиваться нет смысла. гораздо интересней то, что было после. А было следующее:

$su

su: Sorry


С последующей жалобой админу что такой-то юзер пытался сделать su. Непорядок. Для устранения нужно добавить нашего пользователя в группу wheel, которым по умолчанию можно использовать su.

  1. pw groupmod wheel -m user //user – имя пользователя, которого хотим добавить

Часть третья. Ядерная физика

Далее необходимо пересобрать ядро, чтобы как минимум включить фаервол, а еще лучше отключить все ненужные модули. (Хотя с этим надо быть предельно аккуратным, и не отключить чего-то лишнего)

Итак, пересборка ядра.

Топаем в /usr/src/sys/i386/conf, там ищем файлик GENERIC. Делаем с него копию, и открываем ее в ee.

Подробнее параметры можно посмотреть здесь: FreeBSD: собираем ядро kernel.

Выполняем:

  1. config KERNEL_NAME
  1. cd ../compile/KERNEL_NAME
  2. make depend
  3. make
  4. make install

Сборка будет идти достаточно долго. Если нет ошибок, то ребутаемся. Если ядро загрузилось успешно, поздравляю Если нет, то во время загрузки жме Esc и пишем в командной строке загрузчика

boot GENERIC

Что позволит загрузиться с заведомо рабочего ядра.

Например, у меня с первого раза ядро собрать не получилось. make вываливался вот с этим:

uipc_syscalls.o(.text+0x36f): In function `sctp_generic_recvmsg’:

undefined reference to `sctp_sorecvmsg’

uipc_syscalls.o(.text+0x20c6): In function `sctp_generic_sendmsg_iov’:

undefined reference to `sctp_lower_sosend’

uipc_syscalls.o(.text+0×2362): In function `sctp_generic_sendmsg’:

undefined reference to `sctp_lower_sosend’

uipc_syscalls.o(.text+0×2511): In function `sctp_peeloff’:

undefined reference to `sctp_can_peel_off’

uipc_syscalls.o(.text+0x26b6): In function `sctp_peeloff’:

undefined reference to `sctp_do_peeloff’

rtsock.o(.text+0xb0d): In function `rt_newaddrmsg’:

undefined reference to `sctp_addr_change’

in_proto.o(.data+0xa8): undefined reference to `sctp_input’ in_proto.o(.data+0xb0): undefined reference to `sctp_ctlinput’ in_proto.o(.data+0xb4): undefined reference to `sctp_ctloutput’ in_proto.o(.data+0xbc): undefined reference to `sctp_init’ in_proto.o(.data+0xc8): undefined reference to `sctp_drain’ in_proto.o(.data+0xcc): undefined reference to `sctp_usrreqs’ in_proto.o(.data+0xdc): undefined reference to `sctp_input’ in_proto.o(.data+0xe4): undefined reference to `sctp_ctlinput’ in_proto.o(.data+0xe8): undefined reference to `sctp_ctloutput’ in_proto.o(.data+0xfc): undefined reference to `sctp_drain’ in_proto.o(.data+0×100): undefined reference to `sctp_usrreqs’ in_proto.o(.data+0×110): undefined reference to `sctp_input’ in_proto.o(.data+0×118): undefined reference to `sctp_ctlinput’ in_proto.o(.data+0x11c): undefined reference to `sctp_ctloutput’ in_proto.o(.data+0×130): undefined reference to `sctp_drain’ in_proto.o(.data+0×134): undefined reference to `sctp_usrreqs’

      • Error code 1Stop in /usr/src/sys/i386/compile/Krnl-12-04-2009.


Это если вы закомментровали опцию INET6. Оказывается, нужно еще закомментить вот эту:

options SCTP

Часть четвертая. Бди! Продолжаем наступать на грабли . Чтобы работал фаервол, нужно добавить в /etc/rc.conf

firewall_enable=”YES” #если файрволл грузится модулем firewall_type=”/etc/rc.firewall” #файл с правилами файрволла firewall_logging=”YES”


Вот только случилась одна маааленькая неприятность В последней строке файла я забыл закрыть кавычи . В реультате при перезагрузке я получил вот такое:

/etc/rc.conf:25: Syntax error: Unterminated quoted string Enter full pathname of shell or RETURN for /sbin/sh:

Упс… Прилыли. Не переставлять же из-за этого систему? Гугл подсказал следующее

  1. mount -uw /
  1. ed /etc/rc.conf

Собственно, нам от этого редактора требуется одно – удалить плохую строчку от греха. Желающие освоить глубже идут курить ман

22

firewall_logging=”YES

22d //Удаляем строку

w //Записываем файл

q //Выходим

Маленьий нюанс – искомая строка может иметь вовсе не тот номер, про который говорила нам система,когда ругалась. Необходимо проверить это, перед тем как удалять!

Ну и продолжаем загрузку, нажав Ctrl-D

Для первого раза грабель достаточно