FreeBSD:Способы установки
Материал из Xgu.ru
- Автор: Участник:RemiZOffAlex
Содержание |
[править] Этап I. Загрузка
[править] Образ CD/DVD
Качаем с официального сайта образ диска
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.1/FreeBSD-9.1-RELEASE-i386-bootonly.iso
Записываем образ на диск
[править] USB диск
Качаем с официального сайта образ
# fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.1/FreeBSD-9.1-RELEASE-i386-memstick.img
Записываем образ на флешку
# dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=8k
[править] PXE
Способ загрузки FreeBSD по сети с использованием технологии PXE.
[править] Сервер
Каталог для загружаемой системы выбран /data/thinstation. Сюда помещаем систему, которая будет в последствии загружаться по сети. Это либо готовая сборка, либо скачанный с официального сайта и распакованный образ.
Правим следующие конфигурационные файлы:
# Добавляем разрешение регистрации RPC сервисов с указанной подсети, иначе выдаст RPC: Program not registered rpcbind : 192.168.0.0/255.255.255.0 : allow
/data/thinstation -maproot=root -alldirs -network 192.168.0.0/24
# DHCP dhcpd_enable="YES" # dhcpd enabled? dhcpd_flags="-q" # command option(s) dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file dhcpd_ifaces="em1" # ethernet interface(s) dhcpd_withumask="022" # file creation mask # NFS nfs_server_enable="YES" nfsv4_server_enable="YES" # Inetd inetd_enable="YES"
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /data/thinstation
# Добавляем путь загрузки option root-path "192.168.0.1:/data/thinstation"; # Ну и сам загрузочник filename "/boot/pxeboot";
Ну и все это дело запускаем:
# /etc/rc.d/nfsd start # /etc/rc.d/inetd start # /usr/local/etc/rc.d/isc-dhcpd start
[править] Клиент
boot.nfsroot.server="192.168.0.1" boot.nfsroot.path="/data/thinstation" vfs.root.mountfrom="nfs" vfs.root.mountfrom.options=rw
192.168.0.1:/data/thinstation / nfs rw 0 0 proc /proc procfs rw 0 0
# Network ifconfig_DEFAULT="DHCP"
# SSH sshd_enable="YES"
[править] Этап II. Разбивка диска
Пример разбивки:MBR | Пример разбивки:GPT | ||||||
---|---|---|---|---|---|---|---|
UFS | ZFS | RAID | UFS | ZFS | RAID | ||
UFS | ZFS | UFS | ZFS | ||||
MBR-UFS | MBR-ZFS | MBR-RAID | MBR-RAID | GPT-UFS | GPT-ZFS | MBR-RAID | MBR-RAID |
[править] MBR
Code: sh |
# gpart create -s mbr da0 |
[править] MBR-UFS
Code: sh |
# gpart add -t freebsd da0 # gpart set -a active -i 1 da1 # newfs -U -L FreeBSDonUSB /dev/da0s1a # mount /dev/da0s1a /mnt |
[править] MBR-ZFS
# gpart create -s mbr da1 # gpart add -t freebsd da1 # gpart set -a active -i 1 da1 # zpool create zroot /dev/da1s1 # zpool set bootfs=zroot zroot # gpart bootcode -b /mnt2/boot/boot0 ad0
Install ZFS boot - Export zroot, before installing boot code
Fixit# zpool export zroot
- Install the boot1 stage:
Fixit# dd if=/mnt2/boot/zfsboot of=/dev/ad0s3 count=1
This may fail with an "operation not permitted" error message, since the kernel likes to protect critical parts of the disk. If this happens for you, run:
Fixit# sysctl kern.geom.debugflags=0x10
- Install the boot2 zfs stage into the convienient hole in the ZFS filesystem on-disk format which is located just after the ZFS metadata (this is the seek=1024).
Fixit# dd if=/mnt2/boot/zfsboot of=/dev/ad0s3 skip=1 seek=1024
- Import zroot to continue the install
Fixit# zpool import zroot
[править] GPT
# gpart create -s gpt ada0
[править] GPT-UFS
Code: script.sh |
#!/bin/sh drive="/dev/ada0" letter="X" gpart create -s GPT ${drive} gpart add -s 256 -t freebsd-boot -l boot${letter} ${drive} gpart add -s 2G -t freebsd-swap -l swap${letter} ${drive} gpart add -t freebsd-ufs -l disk${letter} ${drive} newfs -O2 -U /dev/gpt/disk${letter} tunefs -j enable /dev/gpt/disk${letter} mount -t ufs -o rw /dev/gpt/disk${letter} /mnt |
После установки не забываем записать загрузчик
# gpart bootcode -b /mnt/boot/pmbr -p /mnt/boot/gptboot -i 1 /dev/ada0
[править] GPT-ZFS
#!/bin/sh # Диск для разметки (Внимание! Все данные с диска будут стерты) drive="/dev/ada0" # Маркер разметки letter="X" # Имя пула poolname="zfssystem" # Точка монтирования будущей системы mountpoint="/mnt" gpart create -s GPT ${drive} gpart add -s 256 -t freebsd-boot -l boot${letter} ${drive} gpart add -s 2G -t freebsd-swap -l swap${letter} ${drive} gpart add -t freebsd-zfs -l disk${letter} ${drive} # Создаем пул с именем zfssystem (переменная poolname) на разделе diskX и подключаем к точке монтирования /mnt zpool create -m ${mountpoint} ${poolname} /dev/gpt/disk${letter} zpool set bootfs=${poolname} ${poolname} zfs set checksum=fletcher4 ${poolname} zfs set atime=off ${poolname}
Создаем структуру папок с указанием параметров
Возможно указание сжатия некоторых директорий, таких как /usr/ports /usr/src
zfs create ${poolname}/var zfs create ${poolname}/var/db zfs create -o exec=off -o setuid=off ${poolname}/var/empty zfs set readonly=on ${poolname}/var/empty zfs create ${poolname}/var/tmp zfs create ${poolname}/var/empty zfs create -o compression=gzip ${poolname}/var/crash zfs create ${poolname}/tmp zfs create ${poolname}/usr zfs create -o compression=gzip -o mountpoint=${mountpoint}/usr/src ${poolname}/src zfs create -o compression=gzip -o mountpoint=${mountpoint}/usr/ports ${poolname}/ports zfs create -o mountpoint=${mountpoint}/usr/ports/distfiles ${poolname}/distfiles zfs create -o mountpoint=${mountpoint}/usr/home ${poolname}/home zfs create -o mountpoint=${mountpoint}/usr/local ${poolname}/local zfs create -o mountpoint=${mountpoint}/usr/obj ${poolname}/obj zfs create ${poolname}/data chmod 1777 ${mountpoint}/tmp ${mountpoint}/var/tmp
[править] Устанавливаем необходимые параметры в файлы конфигурации
Включаем ZFS
echo '# ZFS' > ${mountpoint}/etc/rc.conf echo 'zfs_enable="YES"' > ${mountpoint}/etc/rc.conf
Настраиваем полноценный запуск ZFS
echo 'zfs_load="YES"' > ${mountpoint}/boot/loader.conf echo 'vfs.root.mountfrom="zfs:'${poolname}'"' >> ${mountpoint}/boot/loader.conf echo 'vm.kmem_size="1024M"' >> ${mountpoint}/boot/loader.conf echo 'vm.kmem_size_max="1024M"' >> ${mountpoint}/boot/loader.conf echo 'vfs.zfs.arc="512M"' >> ${mountpoint}/boot/loader.conf echo 'vfs.zfs.arc_max="512M"' >> ${mountpoint}/boot/loader.conf echo 'vfs.zfs.vdev.cache.size="10M"' >> ${mountpoint}/boot/loader.conf echo 'vfs.zfs.prefetch_disable=1' >> ${mountpoint}/boot/loader.conf
Обязательно добавляем чтоб компилировать систему с поддержкой загрузочника ZFS
echo 'LOADER_ZFS_SUPPORT=YES' >> ${mountpoint}/etc/src.conf
После установки не забываем записать загрузчик
# gpart bootcode -b ${mountpoint}/boot/pmbr -p ${mountpoint}/boot/gptzfsboot -i 1 ${drive}
[править] GPT-ZFS
# gpart create -s /dev/ada0 # gpart add -s 256 -t freebsd-boot -l bootX /dev/ada0 # gpart add -s 2G -t freebsd-swap -l swapX /dev/ada0 # gpart add -t freebsd-zfs -l diskX /dev/ada0
После установки не забываем записать загрузчик
# gpart bootcode -b /mnt/boot/pmbr -p /mnt/boot/gptzfsboot -i 1 /dev/ada0
Создаем пул с именем zfssystem на разделе diskX и подключаем к точке монтирования /mnt
# zpool create -m /mnt zfssystem /dev/gpt/diskX # zpool set bootfs=zfssystem zfssystem # zfs set checksum=fletcher4 zfssystem # zfs set atime=off zfssystem
Создаем структуру папок с указанием параметров
Возможно указание сжатия некоторых директорий, таких как /usr/ports /usr/src
zfs create zfssystem/var zfs create zfssystem/var/db zfs create -o exec=off -o setuid=off zfssystem/var/empty zfs set readonly=on zfssystem/var/empty zfs create zfssystem/var/tmp zfs create zfssystem/var/empty zfs create -o compression=gzip zfssystem/var/crash zfs create zfssystem/tmp zfs create zfssystem/usr zfs create -o compression=gzip -o mountpoint=/mnt/usr/src zfssystem/src zfs create -o compression=gzip -o mountpoint=/mnt/usr/ports zfssystem/ports zfs create -o mountpoint=/mnt/usr/ports/distfiles zfssystem/distfiles zfs create -o mountpoint=/mnt/usr/home zfssystem/home zfs create -o mountpoint=/mnt/usr/local zfssystem/local zfs create -o mountpoint=/mnt/usr/obj zfssystem/obj zfs create zfssystem/data chmod 1777 /mnt/tmp /mnt/var/tmp
[править] Устанавливаем необходимые параметры в файлы конфигурации
Включаем ZFS
echo '# ZFS' > /mnt/etc/rc.conf echo 'zfs_enable="YES"' > /mnt/etc/rc.conf
Настраиваем полноценный запуск ZFS
echo 'zfs_load="YES"' > /mnt/boot/loader.conf echo 'vfs.root.mountfrom="zfs:zfssystem"' >> /mnt/boot/loader.conf echo 'vm.kmem_size="1024M"' >> /mnt/boot/loader.conf echo 'vm.kmem_size_max="1024M"' >> /mnt/boot/loader.conf echo 'vfs.zfs.arc="512M"' >> /mnt/boot/loader.conf echo 'vfs.zfs.arc_max="512M"' >> /mnt/boot/loader.conf echo 'vfs.zfs.vdev.cache.size="10M"' >> /mnt/boot/loader.conf echo 'vfs.zfs.prefetch_disable=1' >> /mnt/boot/loader.conf
Обязательно добавляем чтоб компилировать систему с поддержкой загрузочника ZFS
echo 'LOADER_ZFS_SUPPORT=YES' >> /mnt/etc/src.conf
[править] Этап III. Установка системы
[править] Установка релиза с официального сайта
Через скрипт будет элегантнее
workdir="/data" sysrelease="9.1" address="ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/"${sysrelease}"-RELEASE/" fetch ${address}base.txz ${address}kernel.txz -o ${workdir} export DESTDIR=/mnt for file in ${workdir}/base.txz ${workdir}/kernel.txz; do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}) ; done
[править] Сборка и установка собственной системы из исходников
Внимание! Только для настоящих джедаев, собирающих световой меч из солнечных зайчиков |
Предподготовка
# mkdir /mnt/usr /mnt/usr/ports /mnt/usr/src /mnt/usr/obj # svn checkout https://svn0.us-west.freebsd.org/base/stable/9/ /mnt/usr/src # svn checkout https://svn0.us-west.freebsd.org/ports/head/ /mnt/usr/ports
Сборку и установку лучше производить скриптом, с использованием команды make:
#!/bin/sh # Точка монтирования будущей системы mountpoint="/mnt" # Архитектура architecture="i386" # Путь к файлу make.conf makeconf="/data/scripts/make.conf" # Путь к файлу src.conf srcconf="/data/scripts/src.conf" # Путь к исходникам sourcepath=${mountpoint}"/usr/src" # Путь к obj objpath=${mountpoint}"/usr/obj" make -j4 buildworld TARGET_ARCH=${architecture} \ TARGET=${architecture} __MAKE_CONF=${makeconf} SRCCONF=${srcconf} \ MAKEOBJDIRPREFIX=${objpath} -C ${sourcepath} make -j4 buildkernel KERNCONF=FLASH TARGET_ARCH=${architecture} \ TARGET=${architecture} __MAKE_CONF=${makeconf} SRCCONF=${srcconf} \ MAKEOBJDIRPREFIX=${objpath} -C ${sourcepath} make installworld DESTDIR=${mountpoint} TARGET_ARCH=${architecture} \ TARGET=${architecture} __MAKE_CONF=${makeconf} SRCCONF=${srcconf} \ MAKEOBJDIRPREFIX=${objpath} -C ${sourcepath} make installkernel KERNCONF=FLASH DESTDIR=${mountpoint} \ TARGET_ARCH=${architecture} TARGET=${architecture} \ __MAKE_CONF=${makeconf} SRCCONF=${srcconf} \ MAKEOBJDIRPREFIX=${objpath} -C ${sourcepath} mergemaster -m ${sourcepath} -A ${architecture} -D ${mountpoint}
Для сборки с ZFS следует внести изменения в соответствующий файл /etc/src.conf
# echo 'LOADER_ZFS_SUPPORT=YES' >> /etc/src.conf
[править] Этап IV. Конфигурация системы
[править] Настраиваем конфигурационные файлы
# Device Mountpoint FStype Options Dump Pass# /dev/gpt/disk0 / ufs rw 1 1 proc /proc procfs rw 0 0 /dev/gpt/swap0 none swap sw 0 0
Для USB flash накопителей, чтоб не вывести их преждевременно из строя:
# Device Mountpoint FStype Options Dump Pass# /dev/gpt/disk0 / ufs rw,noatime 1 1 proc /proc procfs rw 0 0
[править] FreeBSD:Настройка сетевых подключений
# Network ifconfig_DEFAULT="YES" # Firewall firewall_enable="YES" firewall_type="OPEN" # SSH sshd_enable="YES"
[править] SSH
Для запуска демона необходимо добавить в /etc/rc.conf запись
sshd_enable="YES"
[править] DNS
Настройка службы named
named_enable="YES"
Обязательно раскомментировать секцию: forwarders
forwarders { 192.168.0.1; };
nameserver 127.0.0.1
[править] NTP
Служба точного времени включается добавлением в /etc/rc.conf записи
ntpd_enable="YES"
[править] Добавление пользователей
# echo 'PASSWORD' | pw useradd USERNAME -G wheel -s /bin/tcsh -m -d /home/username -h 0
Перезагрузка
# shutdown -r now
[править] Этап V. Установка необходимых программных пакетов
Установка утилиты portmaster. Её цель - актуальная сборка/пересборка пакетов.
# make -C /usr/ports/ports-mgmt/portmaster install clean ┌────────────────────────────────────────────────────────────────────┐ │ Options for portmaster 3.14_8 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] BASH Install programmable completions for Bash │ │ │ │ [ ] PKGNGPATCH Enable PKGNG support │ │ │ │ [ ] ZSH Install programmable completions for zsh │ │ │ └────────────────────────────────────────────────────────────────┘ │ ├────────────────────────────────────────────────────────────────────┤ │ < OK > <Cancel> │ └────────────────────────────────────────────────────────────────────┘
#!/bin/sh - workdir="/data/scripts" portsdir="/usr/ports" # Загрузка ПО из сети Интернет make -C /usr/ports/ports-mgmt/portmaster/ fetch-recursive for port in `cat ${workdir}/list_ports` do make -C ${portsdir}/${port} fetch-recursive done # Установка ПО make -C /usr/ports/ports-mgmt/portmaster/ install clean rehash for port in `cat ${workdir}/list_ports` do portmaster $port done rehash
Пример файла list_ports
net/mpd5 databases/mysql55-server
ОС FreeBSD | |||||
---|---|---|---|---|---|
Печать | CUPS • IPP • LPR • LPD | ||||
Сеть | ipfw • NAT • mpd5 • squid • netgraph | ||||
| |||||
|
Способы установки ОС | |
---|---|
FreeBSD:Способы установки |