====== Установка ====== * Поскольку памяти 32 МБ, при загрузке с установочного CD памяти хватает только на режим "Single User" \\ Single User mode * Для получения справки в любое время в консоли можно набрать: less ./README * Обнуляем первые 16 32-килобайтных блоков (чтобы в начальной области диска не было никакого мусора, оставшегося от предыдущих установок). * Инициализируем содержимое нулевого сектора для использования одного слайса DragonFly на весь диск. * Инициализируем загрузочный код, хранящийся в нулевом секторе диска. \\ __**Примечание:**__ Здесь и далее предполагается, что жёсткий диск, на который будет производиться установка, в системе представлен устройством '/dev/ad0'. На моей системе это оказалось так, потому что я устанавливал DragonFlyBSD на Primary Master (т.е. главный диск первого IDE интерфейса), в вашем же случае может быть и другое имя. dd if=/dev/zero of=/dev/ad0 bs=32k count=16 fdisk -I ad0 fdisk -B ad0 * Устанавливаем менеджер загрузки "boot0" в MBR жёсткого диска и проверяем загрузочный блок: boot0cfg -B ad0 boot0cfg -v ad0 * Создаём начальную разметку диска disklabel -B -w -r ad0 auto * Для редактирования разметки, должен будет запуститься редактор 'vi', которому нужен доступ для записи в каталог '/tmp'. Поэтому создаём временную файловую систему и монтируем её в '/tmp': 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 МБ), а поскольку адрес первого блока его мы не знаем, то указываем '*', что означает поместить его сразу после предыдущего раздела. Таким образом раздел подкачки окажется в конце слайса (или всего диска, если на диске один слайс). * Создаём файловую систему UFS на первом разделе: newfs /dev/ad0s1a * Монтируем вновь созданную файловую систему в каталог '/mnt': mount /dev/ad0s1a /mnt * Поскольку памяти у нас мало, подключаем раздел подкачки, созданный недавно: swapon /dev/ad0s1b * копируем всё содержимое установочного CD на жёсткий диск: cpdup / /mnt * Разрешаем запись всем пользователям в каталог временных файлов на жёстком диске: chmod 1777 /mnt/tmp * Удаляем каталог '/var/tmp' на жёском диске и вместо него создаём символическую ссылку на '/tmp'. Особенно это полезно, если для каталога '/var' при разметке диска был отведён отдельный раздел. rm -rf /mnt/var/tmp ln -s /tmp /mnt/var/tmp * Поскольку настройки системы на установочном CD отличаются от настроек, с которыми нужно будет запускать систему с жёсткого диска, на CD имеется отдельный каталог '/etc.hdd', содержащий файлы конфигурации, предназначенные для загрузки с жёсткого диска. Предыдущая команда копирования скопировала всё дерево каталогов с CD на наш жёсткий диск, поэтому теперь необходимо удалить на нём '/etc' и заменить его каталогом '/etc.hdd' rm -r /mnt/etc mv /mnt/etc.hdd /mnt/etc * Копируем файл-пример таблицы файловых систем с CD на жёсткий диск и редактируем его в соответствии с нашей конфигурацией: 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 * Удаляем с жёсткого диска ненужные файлы (т.е. файлы, специфичные для загрузки с CD) 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 * Извлекаем установочный CD и нажимаем какую-нибудь клавишу. Если всё сделано правильно, теперь система должна успешно загружаться с жёсткого диска в режиме по умолчанию. Если это так, можно переходить к базовой конфигурации. ====== Конфигурирование ====== * Попытка запустить 'installer' после загрузки с жёсткого диска не увенчалась успехом Starting installer. /etc/pfi.conf not found, starting interactive install. Unsupported DFUI transport ''. О подобном поведении уже сообщалось разными пользователями в [[http://leaf.dragonflybsd.org/mailarchive/users/2009-05/msg00058.html|списке рассылки]] и [[http://bugs.dragonflybsd.org/issues/2095|багтрекере]]. Запустить вручную попробовать можно, но тогда он пытается подмонтировать системный раздел в какую-то папку, а раздел этот уже подмонтирован в корневой каталог. Поэтому запускаем конфигуратор, загрузившись с CD. # installer На моей системе при этом на экране появляется сообщение об ошибке: Starting installer. /etc/pfi.conf not found, starting interactive install. Unsupported DFUI transport '9999'. Поэтому прибегаем к ручному запуску установщика ([[http://cvsweb.dragonflybsd.org/cvsweb/src/nrelease/installer/usr/local/bin/installer?rev=1.5&content-type=text/x-cvsweb-markup|Взято отсюда]]): # /usr/sbin/dfuibe_installer -r "installer" -t npipe >/dev/null & # /usr/sbin/dfuife_curses -r "installer" -t npipe После запуска программы установщика вносим настройки, как проиллюстрировано в [[http://www.dragonflybsd.org/docs/newhandbook/Installation/#index4h2|документации DragonFlyBSD]] * В целях экономии оперативной памяти уменьшаем количество терминалов, открываемых по умолчанию при запуске системы. Для этого редактируем файл '/etc/ttys' следующим образом: ... # # 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 * Размещаем подключение swap-раздела повыше по приоритету * Настраиваем логин по паролю в /etc/ssh/sshd_config * Добавляем пользователя в группу 'wheel' # pw user mod vasya -G wheel * Если сетевой интерфейс не был настроен правильно ранее, настраиваем его вручную: # ifconfig fxp0 192.168.0.7 netmask 255.255.255.0 # route add default 192.168.0.1 * Устанавливаем 'bash', 'nano' (лично я бы предпочёл Midnight Commander, но он на DragonFlyBSD почему-то [[http://leaf.dragonflybsd.org/mailarchive/users/2010-11/msg00044.html|не на любом терминале запускается]]): # 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 ====== Полезные ссылки ====== [[http://www.dragonflybsd.org/docs/newhandbook/Configuration|Конфигурирование DragonFlyBSD]] [[http://www.dragonflybsd.org/docs/howtos/HowToPkgsrc|Документация по установке пакетов]] [[http://www.dragonflybsd.org/docs/newhandbook|Настольная книга по DragonFlyBSD]]