Зміст

Установка

less ./README
dd if=/dev/zero of=/dev/ad0 bs=32k count=16
fdisk -I ad0
fdisk -B ad0
boot0cfg -B ad0
boot0cfg -v ad0
disklabel -B -w -r ad0 auto
mount -t tmpfs none /tmp

Редактируем разметку диска:

disklabel -e /dev/ad0s1

По умолчанию на установочном CD используется текстовый редакто 'vi', в котором, по всей вероятности, многие, как и я, работать не умеют. :-)
Для таких людей это краткое примечание: для того, чтобы отредактировать нужную строку, переместите курсор на неё и нажмите 'i'. Это включит режим вставки символов в строку. Добавлять символы к строке можно нажав 'a'. Таким образом добавляем в открывшийся файл разметки диска строки:

  a:    *       0    4.2BSD
  b:    256m    *    4.2BSD

FIXME

Такая разметка означает, что мы хотим создать 2 раздела: первый - для корневого каталога, второй - раздел подкачки. При этом чтобы не считать размер основного раздела, указываем '*', чтобы использовать всё доступное пространство до следующего раздел. Поместим этот раздел в начале слайса, указав '0' в поле, отвечающем за адрес первого блока раздела. Размер второго же раздела (подкачки) мы укажем точно (например, 256 МБ), а поскольку адрес первого блока его мы не знаем, то указываем '*', что означает поместить его сразу после предыдущего раздела. Таким образом раздел подкачки окажется в конце слайса (или всего диска, если на диске один слайс).

newfs /dev/ad0s1a
mount /dev/ad0s1a /mnt
swapon /dev/ad0s1b
cpdup / /mnt
chmod 1777 /mnt/tmp
rm -rf /mnt/var/tmp
ln -s /tmp /mnt/var/tmp
rm -r /mnt/etc
mv /mnt/etc.hdd /mnt/etc
cp /etc/fstab.example /mnt/etc/fstab
vi /mnt/etc/fstab

Должно получиться нечто вроде:

  /dev/ad0s1a		/		ufs	rw		1	1
  /dev/ad0s1b		none		swap	sw		0	0
  proc			/proc		procfs	rw		0	0
disklabel ad0s1 > mnt/etc/disklabel.ad0s1
rm /mnt/boot/bootloader.conf
rm /mnt/README* /mnt/autorun* /mnt/index.html /mnt/dflybsd.ico
rm -r /mnt/autorun
rm /mnt/boot.catalog
halt

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

Конфигурирование

Starting installer.  /etc/pfi.conf not found, starting interactive install.
Unsupported DFUI transport ''.

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

# installer

На моей системе при этом на экране появляется сообщение об ошибке:

Starting installer.  /etc/pfi.conf not found, starting interactive install.
Unsupported DFUI transport '9999'.

Поэтому прибегаем к ручному запуску установщика (Взято отсюда):

# /usr/sbin/dfuibe_installer -r "installer" -t npipe >/dev/null &
# /usr/sbin/dfuife_curses -r "installer" -t npipe

После запуска программы установщика вносим настройки, как проиллюстрировано в документации DragonFlyBSD

...
#
# name  getty                           type    status          comments
#                           
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off secure
#
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  off  secure
ttyv8   "/usr/pkg/bin/xdm -nodaemon"    xterm   off secure
...

Обратите внимание, что терминалы с 1 по 8 отключены ('off').

Также в целях экономии памяти на время настройки можно отключить службы 'sendmail' и 'cron':

# /etc/rc.d/sendmail stop
# /etc/rc.d/cron stop
# pw user mod vasya -G wheel
# ifconfig fxp0 192.168.0.7 netmask 255.255.255.0
# route add default 192.168.0.1
# pkg_radd bash
# pkg_radd nano
# cd /usr
# make pkgsrc-create

Пересборка ядра

Ппри таком малом объёме оперативной памяти, которым располагает рассматриваемая машина, пересобрать ядро под свою систему - первое дело.

Отредактировать файл со своей конфигурацией под мою систему оказалось очень легко, следуя описанию процесса здесь. Однако, собираться оно не захотело, и вылетело при компиляции из-за предупреждения (!) компилятора. Оказалось, что по умолчанию включена опция компилятора “-Werror”, которая не даёт собирать исходники с предупреждениями. Пришлось создать файл “/etc/make.conf” следующего вида:

NO_WERROR=yes

чтобы сборка пошла далее. Собралось успешно, и даже загрузилось. Однако, при первом же запуске не обнаружило корневого раздела там, где нужно. Оказалось, что почему-то диск /dev/ad0 стал теперь диском /dev/ad1, несмотря на то, что нового диска /dev/ad0 не появилось. DragonFlyBSD порадовал тем, что не стал сразу паниковать, а предложил указать раздел с корневым каталогом вручную. Указываем:

ufs:ad1s1a

Сразу после загрузки активируем своп на этом же диске:

swapon /dev/ad1s1b

Затем в файле конфигурации меню загрузки отключаем загрузку модулей 'acpi', 'ehci' и 'ahci', которые по умолчанию подключаются - в целях экономии оперативной памяти.

/boot/defaults/dloader.menu

...
menuitem 1 "Boot DragonFly [${default_kernel}]"
menuadd cd ${base}${default_kernel}
menuadd optinclude loader.conf
menuadd optinclude loader.conf.local
menuadd set vm.dma_reserved=0
menuadd set hw.ata.dma=0 
menuadd set hint.acpi.0.disabled=1
menuadd set hint.ehci.0.disabled=1
menuadd set hint.ahci.disabled=1
menuadd lunsetif acpi_load hint.acpi.0.disabled
menuadd lunsetif ehci_load hint.ehci.0.disabled
menuadd lunsetif ahci_load hint.ahci.disabled
menuadd loadall
menuadd boot
...

Перезагружаем компьютер. На моей системе после этого корневой каталог снова стал корректно монтироваться при загрузке.

FIXME

Установка нужных пакетов

Поскольку машина имеет мало оперативной памяти, и планируется использовать её в качестве сервера без монитора, многие возможности программ попросту будут не нужны, и их можно и нужно отключить. При установке из исходных кодов такие парамтры можно указать в конфигурационном файле '/usr/pkg/etc/mk.conf'

PKG_DEFAULT_OPTIONS+=-inet6 -gtk
# PKG_OPTIONS.bind98=-threads -inet6

В этом случае были отключены для всех будущих установок опции, обозначенные “inet6”, “gtk” и “threads”. Можно также включать/одключать поддержку некоторых опций для каждого пакета в отдельности, как это показано во второй строчке для пакета “bind98”. Примечание: Я пробовал перечислять включаемые/отключаемые опции в кавычках (PKG_DEFAULT_OPTIONS+=“-inet6 -gtk -threads”) - не заработало. Проверить, будет ли система сборки и установки пакетов верно считывать вновь внесённые настройки, можно перейдя в каталог для установки какого-нибудь любого пакета (для “bind98” это каталог “/usr/pkgsrc/net/bind98/”) и выполнить в нём команду:

bmake show-options

Если в выводе этой команды записи для “enabled by default” и “currently enabled” не совпадают

These options are enabled by default:
      inet6 threads

These options are currently enabled:
      threads

значит, наши настройки корректно считались и будут применены при установке. FIXME

Полезные ссылки

Конфигурирование DragonFlyBSD Документация по установке пакетов Настольная книга по DragonFlyBSD