Первые шаги В NetBSD. Часть 1::Журнал СА 6.2004
www.samag.ru
Льготная подписка для студентов      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

Jobsora

ЭКСПЕРТНАЯ СЕССИЯ 2019


  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
28.05.2019г.
Просмотров: 1826
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 1887
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 1446
Комментарии: 0
Django 2 в примерах

 Читать далее...

28.05.2019г.
Просмотров: 1066
Комментарии: 0
Введение в анализ алгоритмов

 Читать далее...

27.03.2019г.
Просмотров: 1636
Комментарии: 1
Arduino Uno и Raspberry Pi 3: от схемотехники к интернету вещей

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Первые шаги В NetBSD. Часть 1

Архив номеров / 2004 / Выпуск №6 (19) / Первые шаги В NetBSD. Часть 1

Рубрика: Администрирование /  Продукты и решения

АЛЕКСАНДР БАЙРАК

Первые шаги в NetBSD

Часть 1

В этой статье речь пойдет об ОС NetBSD. К сожалению, документации на русском языке по этой ОС практически нет. Как-то не прижилась NetBSD в нашей стране, нельзя сказать, что эту систему вообще никто не использует, но все же количество людей, имеющих с ней дело, очень невелико.

Хотя на Западе NetBSD достаточно популярна. В принципе это легко объяснить. Главный козырь NetBSD в ее многоплатформенности, она одинаково хорошо будет работать как на карманных компьютерах типа HP Jordana 728, так и на больших 64-разрядных Alpha. Конечно, она работает и на x86. И если за рубежом количество машин с отличной от x86 архитектурой достаточно велико, у нас же если где и есть SPARC или MIPS, то люди в основном предпочитают использовать на них их родные ОС. На x86 NetBSD тоже почему-то ставят нечасто, вроде как и «остальных» систем достаточно, а разбираться с чем-то новым у кого времени, а у кого и желания нет. До недавнего времени в рунете была только одна статья, посвященная NetBSD (http://www.linuxshop.ru/unix4all/?cid=28&id=325). Не так давно Андрей Бешков написал отличную статью, посвященную этой системе (смотри августовский номер журнала за 2003 г. или http://onix.opennet.ru/netbsd/netbsd.html). Я вам очень советую ее почитать, в статье в простой и доступной форме расписан процесс установки ОС. После этого интерес к системе возрос, все чаще на форумах юниксоидов можно встретить вопросы и, что самое главное, ответы, посвященные NetBSD. Эта система заинтересовала и меня, результат моего изучения перед вами. За неимением компьютеров с отличной от x86 архитектурой все мои эксперименты с NetBSD проводились на обычном PC (Cel 433 МГц/64 Мб RAM). Я предполагаю, что NetBSD в том или ином виде уже установлена на вашем компьютере. Далее нам понадобится только диск с исходниками системы. Взять образ этого диска можно тут: ftp://ftp.netbsd/pub/NetBSD/iso. Далее выбираете версию системы, которая установлена у вас, и списываете файл sourcecd.iso.

Afterboot, или Что следует сделать сразу после первой загрузки

Вполне логично сразу после загрузки сконфигурировать сеть. Делается это так: в /etc/rc.conf (предварительно изучив /etc/defaults/rc.conf) пишем:

hostname=”you.host.name”

Задается имя вашего хоста:

defaultrouter=”x.x.x.x”

Указывается IP шлюза:

ifconfig_zz=”x.x.x.x/xx”

В качестве zz необходимо вписать имя вашего сетевого интерфейса. (Если точно не знаете, как он будет называться в NetBSD, его название можно посмотреть с помощью команды dmesg.) Вместо иксов соответственно вписать ваш IP-адрес. Маску подсети можно указать как в «дробном» виде (/xx), так и в виде netmask x.x.x.x.

IP DNS-сервера(ов) прописывается в /etc/resolv.conf, синтаксис таков:

netmask x.x.x.x

Должен заметить, что есть альтернативный вариант указания имени хоста и IP шлюза. Имя хоста можно поместить в файл /etc/myname. А IP шлюза – в /etc/mygate. Делайте, как вам удобно.

В /etc/rc.conf не забудьте указать:

sshd=YES

После этого мы можем заходить удаленно на нашу NetBSD через ssh.

Следующим шагом является заведение нового пользователя. Не всегда же под аккаунтом root работать.

# useradd –g groupname –d /path/to/homedir –m –p yourpassword –s /path/to/shell username

Рассмотрим, что и как мы создали. После опции –g указывается имя группы, к которой будет принадлежать новый пользователь. Должен заметить, что с помощью опции -g бесполезно пытаться добавить нового пользователя в группу wheel, надо напрямую его вписать в /etc/group. Тогда он действительно окажется в группе wheel. После опции -d указывается путь до домашнего каталога пользователя. После -p указывается новый пароль. После опции -s указывается путь к командному интерпретатору.

Если эту опцию не задать, будет использоваться стандартный /bin/sh. Который, впрочем, позже можно будет сменить на что-нибудь другое при помощи команды chsh.

Мною была замечена интересная вещь – какой бы password ни указывался, после опции –p useradd ругается:

Password `testpassword" is invalid: setting it to `*"

Это не беда, если его поменять с помощью команды passwd , то все встанет на свои места. Нелишним будет прочтение man useradd, там вы более подробно узнаете о значениях всех опций.

Установка нужного софта

Установить новый софт можно:

  • Собрав из исходников.
  • Используя пакаджи.
  • Используя систему портов.

Если с первыми двумя методами все более-менее понятно, то третий способ я распишу немного подробней. Замечу только, что все пакаджи берутся с ftp://ftp.netbsd.org/pub/NetBSD/packages.

Далее выбираете, для какой версии системы и архитектуры вы ищете нужный вам пакадж.

Для удобства можно использовать вот эту ссылку: ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/README.html. Здесь весь софт разделен на тематические разделы (как в коллекции портов). Для меня вторая ссылка более удобная, благодаря наличию комментариев к каждому пакаджу с указанием всех зависимостей.

Установить пакадж просто:

#pkg_add packagename.tar.gz

Замечу, что заранее пакадж можно и не списывать, а команде pkg_add указать точный url, где лежит пакадж, который вы желаете установить. Например:

#pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6.1/i386/shells/bash-2.05.2.tgz

Это командой мы установим пакадж с bash для 1.6.1 версии NetBSD, работающей на x86 машине.

Важное замечание: по умолчанию исполняемые файлы пакаджей помещаются в /usr/pkg/bin.

Система портов в NetBSD тоже называется пакаджами, что вносит некоторую неразбериху. Получается, что есть binary-packages, которые уже кто-то скомпилировал до нас, и которые только и остается что установить командой pkg_add, и есть «порты-пакаджи», которые списываются из сети в виде исходников, а компилируются уже на вашей машине. Чтобы не вносить дальнейшую путаницу, далее по тексту «порт-пакадж» буду называть просто порт.

Для того чтобы начать работать с коллекцией портов, берем с уже знакомого нам диска файл pkgsrc.tgz.

Самую последнюю версию этого файла можно списать на ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz.

Распакуем:

# tar zxvpf pkgsrc.tar.gz –c /usr

После распаковки архива в /usr/pkgsrc/ появляются каталоги, разделенные по группам (audio/www/x11), в которых соответственно содержатся каталоги, названные по имени программ с файлами, необходимыми для установки по сети. Установка нужной программы происходит следующим образом (для примера установим редактор ne):

#cd /usr/pkgsrc/editors/ne

#make install

И начинается процесс установки, система списывает из сети исходник нужной программы, если для компиляции требуется какая-либо библиотека, то она также будет списана. После этого следует компиляция. Вот и все. Правда, просто? После того как система установила нужный порт, для удаления временных файлов выполняем команду.

#make clean

Все исходники, которые были списаны системой из сети, хранятся в /usr/pkgsrc/distfiles.

Перекомпиляция ядра

Я думаю, желание собрать ядро под себя и со своими предпочтениями вполне закономерное. Из стандартного хочется выкинуть все ненужное (а выкинуть, я думаю, много чего можно, GENERIC-ядро весит ~ 6.3 Мб!), и соответственно добавить нужное. Для перекомпиляции ядра нам понадобятся непосредственно исходники ядра. Я уже упомянул о sourcecd.iso, на котором находятся исходники всей системы. Вот сейчас из этого самого образа мы берем нужный нам syssrc.tgz. Распакуем:

# tar zxvpf syssrc.tgz –c /

Все, теперь в /usr/src/sys есть все, что нам нужно для дальнейшей работы.

Надо заметить, что в / есть ссылка на этот каталог (/sys-> /usr/src/sys/). Перейдем в /usr/src/sys/arch – тут выбираем нужную нам платформу/архитектуру. Для меня это i386, которая как-то затерялась среди всех остальных поддерживаемых платформ. Всего их 56 штук!

После нахождения каталога с нужной нам архитектурой переходим в его подкаталог – conf, именно тут лежат файлы конфигурации ядра. Для i386 представлено с десяток различных готовых файлов конфигурации, созданных для разных задач. Ради интереса их стоит посмотреть.

Файл конфигурации стандартного ядра находится в файле GENERIC. Очень жаль, что разработчики не сделали аналога файла LINT (такого, как в FreeBSD), в котором с подробными комментариями перечислены все возможные параметры, допустимые в файле конфигурации ядра. Ну да ладно, и так разберемся.

# cp GENERIC newkernel

После этого с помощью своего любимого текстового редактора начинаем править под наши нужды файл конфигурации нового ядра.

Разберем структуру и содержимое файла конфигурации ядра для x86 архитектуры более подробно. Комментарии в нем начинаются с символа #.

  • include «arch/i386/conf/std.i386» – в std.i386 хранятся некоторые опции, которые необходимы для работы NetBSD на x86 платформе.
  • options INCLUDE_CONFIG_FILE – вставить содержимое файла конфигурации ядра в бинарник нового ядра.
  • ident «my new kernel» – указываем имя нашего будущего ядра.
  • maxusers 32 – указываем примерное количество пользователей нашей системы. Но даже если вы намерены использовать ее в гордом одиночестве, рекомендую поставить значение «с запасом».
  • CPU support – указываем, какой тип процессора установлен на компьютере. Например: options I686_CPU.

CPU-related options

Опции, связанные с процессором:

  • options MATH_EMULATE – эмулирование математического сопроцессора.
  • options VM86 – виртуальная 8086 эмуляция.
  • options USER_LDT – стоит включить, если планируется использование эмулятора WINE.
  • options PERFCTRS – поддержка мониторинга некоторых счетчиков.

Если NetBSD не полностью видит память, установленную в вашем компьютере, имеет смысл воспользоваться следующими опциями.

  • options REALBASEMEM= – размер базовой памяти (в Кб).
  • options REALEXTMEM= – размер расширенной памяти (в Кб).

Standard system options

Стандартные опции системы:

  • options UCONSOLE – пользователи могут использовать TIOCCONS (нужно для xconsole).
  • options INSECURE – отключить уровни безопасности ядра.
  • options RTC_OFFSET=0 – установка времени по GMT.
  • options NTP – запрещение цикла фазы/частоты NTP.
  • options KTRACE – системные вызовы идут через ktrace.
  • options SYSVMSG – очереди сообщений, как в SysV.
  • options SYSVSEM – семафоры, как в SysV.
  • options SYSVSHM – разделение памяти, как в SysV.
  • options LKM – возможность загружать модули ядра.

Diagnostic/debugging support options

Задаются опции поддержки диагностики и отладки.

Compatibility options

Различные опции совместимости. Также тут мы указываем поддержку запуска уже скомпилированных для других ОС программ. Например:

  • options COMPAT_LINUX – совместимость с приложениями, собранными для Linux.
  • options COMPAT_FREEBSD – совместимость с приложениями от FreeBSD.

File systems

Указываем, поддержку каких файловых систем мы хотим иметь. Замечу, что поддержку файловых систем можно подключать также в виде модуля ядра.

File system options

Различные опции для файловых систем:

  • options QUOTA – возможность установки квот на дисковое пространство.
  • options SOFTDEP – поддержка «soft updates» для файловой системы FFS. Очень рекомендую включить, потому как скорость работы с данными на жестком диске значительно возрастет.
  • options NFSSERVER – стоит включить, если машина будет использоваться как NFS-сервер.

Networking options

Опции для поддержки сети:

  • options GATEWAY – поддержка фовардинга пакетов.
  • options INET – «базовый» набор (IP + ICMP + TCP + UDP).
  • options INET6 – поддержка IPv6.
  • options IPSEC – поддержка IP security.
  • options MROUTING – IP multicast routing.
  • options NS – поддержка XNS.
  • options NSIP – XNS-туннель через IP.
  • options ISO,TPIP – поддержка OSI.
  • options EON – OSI-туннели через IP.
  • options CCITT,LLC,HDLC – поддержка x.25 сетей.
  • options NETATALK – поддержка протокола AppleTalk.
  • options PPP_BSDCOMP – поддержка BSD-Compress сжатия для PPP.
  • options PPP_DEFLATE – поддержка Deflate-сжатия для PPP.
  • options PPP_FILTER – активный фильтр для PPP. Нужен bpf.
  • options IPFILTER_LOG – поддержка ведения логов firewall.
  • options IPFILTER_DEFAULT_BLOCK – запрещение прохождения всех пакетов по умолчанию.

Дальше в файле конфигурации ядра идут опции для включения вывода подробных сообщений от некоторых подсистем. Добавление этих опций может существенно увеличить размер вашего ядра. Для примера включим поддержку подробных сообщений для USB-устройств: options USBVERBOSE.

wscons options

Различные опции для консоли wscons.

  • options WSEMUL_xxx – в качестве xxx вписываем, какой тип эмуляции терминала мы хотим видеть на экранах, которые автоматически создаются системой. По умолчанию VT100/VT220.
  • options WS_KERNEL_FG=WSCOL_color – цвет сообщений на консоли.
  • options WS_KERNEL_BG=WSCOL_color – цвет фона в консоли. По умолчанию используется черный фон и зеленые сообщения (как в «Матрице»).
  • compatibility to other console drivers – совместимость с другими драйверами консоли.
  • options WSDISPLAY_COMPAT_xxx – задаем совместимость, с какими драйверами консоли мы хотим иметь дело.
  • options WSDISPLAY_DEFAULTSCREENS=x – количество экранов, которые система создает автоматически. Рекомендую поставить 1 или 2, почему именно будет рассказано в разделе русификация.
  • options PCDISPLAY_SOFTCURSOR – использование курсора, который не мигает.
  • options VGA_CONSOLE_SCREENTYPE=««80x24»» – изменение стандартного разрешения в консоли.

Kernel root file system and dump configuration

Указываем, где располагается корневая файловая система с ядром.

config     netbsd root on ? type ?

Device configuration

В этой части файла конфигурации ядра мы будем конфигурировать различные устройства. Еще раз напоминаю, что в целях экономии места будут описаны только основные разделы, без комментариев к каждому устройству.

  • Продвинутая система управления питания.

apm0at mainbus0

Можно также задавать различные опции. Все подробно описано в man 4 apm.

  • mainboard audio chips – поддержка некоторых встроенных звуковых карт. Для примера включим поддержку ESS AudioDrive.

ess* at =pnpbios? index ?

  • com port – поддержка com-порта.

com* at pnpbios? index ?

  • parallel port – параллельный порт.

lpt* at pnpbios? index ?

  • Клавиатуры и мышки:

pckbc*  at pnpbios? index ?

  • Контроллер флопа:

fdc* at pnpbios? Index

  • PCI bus support поддержка шины PCI.
  • Configure PCI using BIOS information – различные опции, для того чтобы шина PCI использовала информацию из BIOS.
  • PCI bridges – поддержка различных PCI-мостов.
  • EISA bus support – поддержка шины EISA.
  • ISA bus support – поддержка шины ISA.
  • PCMCIA bus support – поддержка шины PCMCIA.
  • MCA bus support – поддержка шины MCA.
  • ISA PCMCIA controllers – включение различных ISA PCMCIA-контроллеров.
  • PCI PCMCIA controllers – включение различных PCI PCMCIA-контроллеров.
  • ISA Plug-and-Play bus support – поддержка ISA PnP-шины.
  • ISA Plug-and-Play PCMCIA controllers – ISA PnP PCMCIA-контроллеры.
  • CardBus bridge support – поддержка CardBus-мостов.
  • CardBus bus support – поддержка CardBus-шины.
  • Coprocessor Support – поддержка математического сопроцессора (не отключите случайно).
  • Console Devices – драйвера консоли.
  • Keyboard layout configuration – конфигурация клавиатуры для нескольких языков. Русского среди них, к сожалению, нет.
  • pccons-specific options – специальные pccons-опции.
    • options XSERVER_DDB – PF12 – переведет вас в DDB, когда будет запущен X-сервер.
    • options XSERVER – поддержка X-сервера.
    • Контроллер клавиатуры.

    pckbc0  at isa?

    • Клавиатура.

    pckbd* at pckbc?

    • PS/2 мышка для wsmouse.

      pms* at pckbc?

  • Serial Devices – последовательные устройства.
  • PCI serial interfaces – PCI-последовательные интерфейсы.
  • ISA Plug-and-Play serial interfaces – ISA PnP-последовательные интерфейсы.
  • PCMCIA serial interfaces – PCMCIA-последовательные интерфейсы.
  • CardBus serial interfaces – CardBus-последовательные интерфейсы.
  • ISA serial interfaces – последовательные интерфейсы для ISA.
  • MCA serial interfaces – последовательные интерфейсы для MCA.
  • Parallel Printer Interfaces – параллельные интерфейсы для принтеров.
  • PCI parallel printer interfaces – PCI-параллельный интерфейс для принтеров.
  • ISA parallel printer interfaces – ISA-параллельный интерфейс для принтеров.
    • Стандартный параллельный порт:

      lpt0 at isa? port 0x378 irq 7

  • Hardware monitors – различные системные мониторы. (Естественно, не те, на которых мы видим выводимую информацию, а те, которые занимаются мониторингом состояния чего бы то ни было).
  • I2O devices – различные I2O-устройства.
  • SCSI Controllers and Devices – различные SCSI-контроллеры и устройства.
  • PCI SCSI controllers – PCI SCSI-контроллеры.
  • EISA SCSI controllers – EISA SCSI-контроллеры.
  • PCMCIA SCSI controllers – PCMCIA SCSI-контроллеры.
  • ISA Plug-and-Play SCSI controllers – ISA PnP SCSI-контроллеры.
  • ISA SCSI controllers – ISA SCSI-контроллеры.
  • CardBus SCSI cards – SCSI CarBus-карты.
  • MCA SCSI cards – SCSI MCA-карты.
  • SCSI bus support – поддержка шины SCSI.
  • SCSI devices – различные SCSI-устройства.
    • SCSI-диски:

    sd* at scsibus? target ? lun ?

    • SCSI-ленточные устройства:

    st* at scsibus? target ? lun ?

    • SCSI CDROM:

    cd* at scsibus? target ? lun ?

    • SCSI-«автосменщики» чего-нибудь:

    ch* at scsibus? target ? lun ?

    • SCSI-«автовкладыватели» чего-нибудь:

    ses* at scsibus? target ? lun ?

    • SCSI-сканеры:

    ss* at scsibus? target ? lun ?

    • Неизвестные SCSI-устройства:

     uk* at scsibus? target ? lun ?

  • RAID controllers and devices – различные RAID-контроллеры и устройства.
  • ISA Plug-and-Play IDE controllers – ISA PnP IDE-контроллеры.
  • PCMCIA IDE controllers – PCMCIA IDE-контроллеры. Также есть поддержка некоторых ISA ST506, ESDI и IDE-контроллеров.
  • IDE drives – IDE-устройства.
  • ATAPI bus support – поддержка ATAPI-шины.
  • ATAPI devices – различные ATAPI-устройства.
    • ATAPI CDROM:

    cd* at atapibus? drive ? flags 0x0000

    • ATAPI HDD:

    sd* at atapibus? drive ? flags 0x0000

    • TAPI-ленточные устройства:

    st* at atapibus? drive ? flags 0x0000

    • Неизвестные устройства для шины ATAPI:

      uk* at atapibus? drive ? flags 0x0000

  • Miscellaneous mass storage devices – различные устройства для хранения информации.
  • ISA floppy – поддержка флопов.
    • Стандартный контроллер для флопа:

      fdc0 at isa? port 0x3f0 irq 6 drq 2

  • ISA CD-ROM devices – CD-ROM, подключенные к ISA-устройствам.
  • ISA tape devices – различные ленточные устройства, подключенные к ISA-шине.
  • MCA ESDI devices – различные MCA ESDI-устройства.
  • Network Interfaces – различные сетевые карты.
  • PCI network interfaces – PCI-сетевые карты.
  • EISA network interfaces – EISA-сетевые карты.
  • ISA Plug-and-Play network interfaces – ISA PnP-сетевые карты.
  • PCMCIA network interfaces – PCMCIA-сетевые карты.
  • ISA network interfaces – ISA-сетевые карты.
  • CardBus network cards – CarBus-сетевые карты.
  • MCA network cards – MCA-сетевые карты.
  • MII/PHY support – поддержка различных MII/PHY-устройств.
  • USB Controller and Devices – различные USB-контроллеры и устройства.
  • PCI USB controllers – PCI USB-контроллеры.
  • USB bus support – поддержка шины USB.
  • USB Hubs – USB-хабы.
  • USB HID device – USB HID-устройства.
  • USB Mice – USB-мышки.
  • USB Keyboards – USB-клавиатуры.
  • USB Printer – USB-принтеры.
  • USB Modem – USB-модемы.
  • USB Mass Storage – устройства хранения информации на USB.
  • USB audio – USB-звуковые карты.
  • USB MIDI – USB MIDI-устройства.
  • USB IrDA – USB IrDA-устройства.
  • USB Ethernet adapters – USB-сетевые карты.
  • Serial adapters – различные последовательные USB-адаптеры.
  • USB scanners – USB-сканеры и сканеры, которые используют эмуляцию SCSI.
  • USB Generic driver – USB-драйвер.
  • Audio Devices – различные звуковые карты.
  • PCI audio devices – PCI-звуковые карты.
  • ISA Plug-and-Play audio devices – ISA PnP-звуковые карты.
  • ISA audio devices – ISA-звуковые карты.
  • PCMCIA audio devices – PCMCIA-звуковые карты.
  • Audio support – поддержка звука для вышеперечисленных карт.
  • MPU 401 UARTs – различные MPU 410 карты.
  • MIDI support – поддержка MIDI.
    • PC-спикер:

      spkr0 at pcppi?

  • FM-Radio devices – различные FM-тюнеры.
  • ISA radio devices – ISA FM-тюнеры.
  • PCI radio devices – PCI FM-тюнеры.
  • TV cards – TV-тюнеры.
  • Mice – различные мышки.
  • Joysticks – различные джойстики.
  • ISA Plug-and-Play joysticks – ISA PnP-джойстики.
  • PCI joysticks – PCI-джойстики.
  • ISA joysticks – ISA-джойстики.
  • Pseudo-Devices – различные псевдоустройства.
  • disk/mass storage pseudo-devices – псевдоустройства для хранения информации.
    • pseudo-device ccd – concatenated/striped disk devices.
    • pseudo-device raid – RAIDframe disk drive.
    • options RAID_AUTOCONFIG – автоконфигурирование RAID-компонентов.
    • pseudo-device md – поддержка дисков в память – ramdrive.
    • pseudo-device vnd – похожий на диски интерфейс для файлов.
  • network pseudo-devices – сетевые псевдоустройства.
    • pseudo-device bpfilter – берклинский пакетный фильтр.
    • pseudo-device ipfilter – firewall + NAT.
    • pseudo-device loop – интерфейс обратной петли (127.0.0.1).
    • pseudo-device ppp – протокол Point-to-Point.
    • pseudo-device pppoe – поддержка PPP через Ethernet.
    • pseudo-device sl – Serial line IP.
    • pseudo-device irframetty – IrDA frame line discipline.
    • pseudo-device tun – сетевые туннели через tty.
    • pseudo-device gre – L3 через IP-туннель.
    • pseudo-device gif – IPv[46] через IPv[46]-туннель.
    • pseudo-device faith – трансляция IPv[46] tcp релея.
    • pseudo-device stf – инкапсуляции IPv6 через IPv4
    • pseudo-device vlan – поддержка VLAN.
    • pseudo-devic bridge – сетевой мост.
  • miscellaneous pseudo-devices – другие псевдоустройства.
    • pseudo-device pty – псевдотерминалы.
    • pseudo-device rnd – поддержка /dev/random.
    • pseudo-device clockctl – контроль часов.
  • wscons pseudo-devices – псевдоустройства wcons.
    • pseudo-device wsmux – мультиплексор клавиатуры и мышки.
    • pseudo-device wsfont – /dev/wsfont.

После того как закомментировано все ненужное и добавлено нужное, приступаем к сборке нового ядра.

#config newkernel

Если никаких ошибок не выявлено, то:

#cd ../compile/newkernel/

#make depend && make

Начинается непосредственно компиляция. Процесс компиляции проходит достаточно быстро, у меня на Cel466/64 Мб RAM она заняла порядка 15 минут. На PIII-550/320 Мб RAM – меньше 5 минут.

Если компиляция прошла успешно, устанавливаем новое ядро.

#cp /netbsd /netbsd.old

Делаем резервную копию старого ядра, которое располагается в корневом разделе.

#cp netbsd /

Копируем новое ядро (которое находится в текущем каталоге) в корень. Перезагружаемся:

#reboot

Если новое ядро не загружается по каким-либо причинам, нам нужно загрузить старое, работоспособное ядро, недаром мы его сохранили. В самом начале загрузки NetBSD, когда идет обратный отсчет времени, нажимаем любую клавишу, отличную от enter, и попадаем в boot-меню. Далее вводим:

netbsd.old –s

Вот и все, система загружается со старым ядром. Смотрите внимательно файл конфигурации ядра и думайте, что вы не так сделали. Да, вернемся к размерам ядра, после того как я первый раз пересобрал ядро, его размер уменьшился до ~1.5 Мб. Потом удалось сделать рабочее ядро размером ~1.2 Мб, что почти в 5.5 раз меньше, чем стандартное ядро.

В качестве дополнения о перекомпиляции ядра я вкратце хотел бы рассказать о маленькой утилите, недавно обнаруженной мной в коллекции портов – adjustkernel. Программа на основе имеющегося оборудования сама создаст файл конфигурации ядра. Рассмотрим, как она работает.

#dmesg > dmesg.file

Поместим вывод команды dmesg в файл dmesg.file. На основе этих данных и будет строиться наше новое ядро. Так же в текущий каталог положите ваш файл конфигурации ядра, ну или GENERIC.

#adjustkernel –mesg dmesg.file –outfile newkernel –file GENERIC

Я решил посмотреть, какой файл конфигурации программа создаст на основе GENERIC-файла. В принципе файл конфигурации получился вполне работоспособный. Но в любом случае ему требуется доводка руками. Ведь программа не знает, нужна ли нам на этой машине поддержка IPv6 или файловой системы CODA. А в остальном только положительные отзывы.

Настройка firewall

В качестве firewall в NetBSD используется IPFILTER. Для начала добавляем в /etc/rc.conf строку: IPFIREWALL=YES. Удостоверимся, что ядро собрано с опцией IPFILTER_ DEFAULT_BLOCK, как видно, эта опция служит для того, чтобы по умолчанию все пакеты отвергались. Мне кажется, такой подход при конфигурировании firewall единственно правильный – сначала все закроем, а потом откроем только то, что нам нужно. Правила firewall в файле /etc/ipf.conf. Давайте разберем синтаксис написания правил для IPFILTER. Для того чтобы обозначить, пропускать пакет или нет, используются ключевые слова – pass и block. Для обозначения направления, в котором проходит пакет, используются ключевые слова in и out. Интерфейс указывается ключевым словом on, за которым следует название интерфейса. Маска сети задается как в «дробном», так и в виде xxx.xxx.xxx.xxx. Имеется поддержка фильтрации по имени протокола. Узнать полный список протоколов можно из файла /etc/protocols.

Поддерживается блокировка фрагментированных IP-пакетов. Для TCP/UDP работает фильтрация по номеру порта. Можно использовать некоторые операции над номерами портов.

  • = или eq – истина, если номер порта равен передаваемому значению.
  • > или gt – истина, если номер порта больше, чем передаваемое значение.
  • < или lt – истина, если номер порта меньше, чем передаваемое значение.
  • != или ne – истина, если номер порта не равен передаваемому значению.
  • => или ge – истина, если номер порта больше или равен переданному значению.
  • <= или le – истина, если номер порта меньше или равен переданному значению.

Возможно сравнение диапазонов:

  • N <> N1 – истина, если порт меньше, чем N, или больше, чем N1.
  • N >< N1 – истина, если порт больше, чем N, и меньше, чем N1.

Также в этом firewall есть поддержка фильтрации по TCP-флагам, возможность ответа на заблокированный пакет, keep-state-фильтрация. В общем поддерживается все, что нужно для гибкой настройки правил, и даже немного больше. Для примера напишем простенький набор правил firewall.

Разрешаем весь icmp-трафик:

pass in on proto icmp all

pass out on proto icmp all

Открываем порты для работы с SSH:

pass in proto tcp from any to port = 22

pass out proto tcp from to any port = 22

Открываем порты для работы с DNS:

pass in proto udp from any to port = 53

pass out proto udp from to any port = 53

Вместо xx указываем сетевой интерфейс, вместо IP указываем наш IP-адрес. Я умышленно привел такой простой пример, так как написание правил для firewall – дело достаточно личное, каждый их составляет так, как ему удобно.

Но, я думаю, вышеприведенного примера вполне достаточно, для того чтобы на его основе построить более сложный набор правил. Для получения более подробной информации о IPFILTER очень рекомендую почитать IPFILTER HOW-TO (http://www.unixcircle.com/ipf).

Заключение

Подошла к концу первая часть статьи. Для начала изучения, по-моему, достаточно. Если этой статьей я привлек ваше внимание к NetBSD, значит моя цель несомненно выполнена.

Во второй части статьи мы рассмотрим профилирование ядра NetBSD, протестируем бинарную совместимость с FreeBSD и Linux, научимся поддерживать систему в актуальном состоянии. Также в мои планы входит рассказать о криптографической файловой системе NetBSD, не будет обойден вниманием и вариант использования NetBSD как desktop-системы. Но обо всем этом в следующий раз. Я буду рад всем уточнениям, дополнениям и просто отзывам об этой статье. Пишите!


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru