Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія | ||
dragonflybsd [2012/02/29 22:07] vova |
dragonflybsd [2012/04/06 21:18] (поточний) wombat [Конфигурирование] |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
+ | ====== Установка ====== | ||
+ | |||
+ | * Поскольку памяти 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'. Таким образом добавляем в открывшийся файл разметки диска строки: | ||
+ | |||
+ | <file> | ||
+ | a: * 0 4.2BSD | ||
+ | b: 256m * 4.2BSD | ||
+ | </file> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | Должно получиться нечто вроде: | ||
+ | |||
+ | <file> | ||
+ | /dev/ad0s1a / ufs rw 1 1 | ||
+ | /dev/ad0s1b none swap sw 0 0 | ||
+ | proc /proc procfs rw 0 0 | ||
+ | </file> | ||
+ | |||
+ | * Сохраняем разметку жёсткого диска в файл на нём (на всякий случай): | ||
+ | |||
+ | 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' следующим образом: | ||
+ | |||
+ | <file> | ||
+ | ... | ||
+ | # | ||
+ | # 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 | ||
+ | ... | ||
+ | </file> | ||
+ | Обратите внимание, что терминалы с 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//" следующего вида: | ||
+ | |||
+ | <file> | ||
+ | NO_WERROR=yes | ||
+ | |||
+ | </file> | ||
+ | |||
+ | чтобы сборка пошла далее. Собралось успешно, и даже загрузилось. Однако, при первом же запуске не обнаружило корневого раздела там, где нужно. Оказалось, что почему-то диск ///dev/ad0// стал теперь диском ///dev/ad1//, несмотря на то, что нового диска ///dev/ad0// не появилось. DragonFlyBSD порадовал тем, что не стал сразу паниковать, а предложил указать раздел с корневым каталогом вручную. Указываем: | ||
+ | |||
+ | ufs:ad1s1a | ||
+ | |||
+ | Сразу после загрузки активируем своп на этом же диске: | ||
+ | |||
+ | swapon /dev/ad1s1b | ||
+ | |||
+ | Затем в файле конфигурации меню загрузки отключаем загрузку модулей 'acpi', 'ehci' и 'ahci', которые по умолчанию подключаются - в целях экономии оперативной памяти. | ||
+ | |||
+ | **/boot/defaults/dloader.menu** | ||
+ | |||
+ | <file> | ||
+ | ... | ||
+ | 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 | ||
+ | ... | ||
+ | </file> | ||
+ | |||
+ | Перезагружаем компьютер. На моей системе после этого корневой каталог снова стал корректно монтироваться при загрузке. | ||
+ | |||
+ | FIXME | ||
+ | ====== Установка нужных пакетов ===== | ||
+ | |||
+ | Поскольку машина имеет мало оперативной памяти, и планируется использовать её в качестве сервера без монитора, многие возможности программ попросту будут не нужны, и их можно и нужно отключить. При установке из исходных кодов такие парамтры можно указать в конфигурационном файле '/usr/pkg/etc/mk.conf' | ||
+ | |||
+ | <file> | ||
+ | PKG_DEFAULT_OPTIONS+=-inet6 -gtk | ||
+ | # PKG_OPTIONS.bind98=-threads -inet6 | ||
+ | </file> | ||
+ | |||
+ | В этом случае были отключены для всех будущих установок опции, обозначенные "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]] | ||
+ | |||