Скрипт автоматической установки FreeBSD
В продолжение темы - Сервер сетевой загрузки на FreeBSD выкладываю скрипт автоматической установки данной операционной системы. Скрипт был найден на просторах буржуйского интернета и содержит комментарии, что поможет Вам подправить его под собственные нужды.
1. Задаем переменные
#!/bin/sh # Переменные DESTDIR=/mnt OUTPUT_REDIR="/dev/stdout" # Опознаем первый диск (primary disk) PRIMARY_DISK=`/sbin/sysctl -n kern.disks` # Сетевую карту /bin/echo -n "Gathering Network info.. " NETIF=`/sbin/ifconfig -l -u | /usr/bin/sed -e 's/lo0//' -e 's/ //g'` #Вводим сетевое имя /bin/echo -n "Insert the full system hostname: " read HOSTNAME
Данные настройки произведут установку на первый жесткий диск и с использованием первой сетевой карты.
2. Конфигурируем диск
# Конфигурируем диск /bin/echo "Setup the GPT Label on $PRIMARY_DISK" /sbin/gpart create -s GPT $PRIMARY_DISK # Setup boot /bin/echo -n "Setup the partitions.. " /sbin/gpart add -b 34 -s 256 -t freebsd-boot -l boot $PRIMARY_DISK /bin/echo -n "boot.. " # Настраиваем раздел для swap /sbin/gpart add -s 6g -t freebsd-swap -l swap0 $PRIMARY_DISK /bin/echo -n "swap0.. " # Раздел под систему /sbin/gpart add -t freebsd-zfs -l system $PRIMARY_DISK /bin/echo "system." # Устанавливаем загрузчик /bin/echo "Install the boot code.." /sbin/gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $PRIMARY_DISK
Используем GPT, размечаем диск, настраиваем загрузчик, выделяем 6Gb под Swap и раздел c ZFS, который занимает все оставшееся пространство диска
3. Создание zpool
# Удаление zpool.cache if [ -f /boot/zfs/zpool.cache ]; then /bin/rm /boot/zfs/zpool.cache fi # Настройка zpool /bin/echo "Setup the system zpool.." /sbin/zpool create -O mountpoint=/mnt system /dev/gpt/system if [ $? -ne 0 ]; then /sbin/zpool import -f system /sbin/zpool destroy system /sbin/zpool create -O mountpoint=/mnt system /dev/gpt/system fi
4. Создание файловой системы и установка параметров
# Установка параметров ZFS /bin/echo "Setup the ZFS filesystems" /sbin/zfs create -o compress=lzjb system/tmp /bin/chmod 1777 /mnt/tmp /sbin/zfs create system/usr #/sbin/zfs create -o setuid=on system/usr/local #/sbin/zfs create -o compress=gzip system/usr/src #/sbin/zfs create -o compress=lzjb system/usr/obj #/sbin/zfs create -o compress=gzip system/usr/ports #/sbin/zfs create -o compress=off system/usr/ports/distfiles /sbin/zfs create system/var #/sbin/zfs create -o compress=gzip system/var/log #/sbin/zfs create -o compress=lzjb system/var/audit /sbin/zfs create -o compress=lzjb system/var/tmp /bin/chmod 1777 /mnt/var/tmp #/sbin/zfs create -o canmount=off system/usr/home /sbin/zpool set bootfs=system system Создание основной схемы файловой системы.
Создание основной схемы файловой системы.
5. Установка операционной системы
# Install base /bin/echo "Installing base" /usr/bin/tar -xvf /usr/freebsd-dist/base.txz -C $DESTDIR # Install kernel /bin/echo "Installing kernel" /usr/bin/tar -xvf /usr/freebsd-dist/kernel.txz -C $DESTDIR /bin/echo "Move kernel" /bin/mv $DESTDIR/boot/GENERIC/* $DESTDIR/boot/kernel/ # Install doc /bin/echo "Install docs" /usr/bin/tar -xvf /usr/freebsd-dist/doc.txz -C $DESTDIR # Install games (gotta have fortune.. :) ) /bin/echo "Install games" /usr/bin/tar -xvf /usr/freebsd-dist/games.txz -C $DESTDIR
Все очень просто. Распаковываем различные части дистрибутива в $DESTDIR (/mnt). Вы можете не инсталировать документы и игры, это на Ваше усмотрение.
6. Настраиваем rc.conf и loader.conf
# Устанавливаем переменные loader.conf /bin/echo "Setting the loader.conf variables.." echo 'geom_label_load="YES"' >> $DESTDIR/boot/loader.conf echo 'zfs_load="YES"' >> $DESTDIR/boot/loader.conf echo 'vfs.root.mountfrom="zfs:system"' >> $DESTDIR/boot/loader.conf # Устанавливаем переменные rc.conf /bin/echo "Setting the rc.conf variables.." # Задаем имя хоста echo "hostname=\"$HOSTNAME\"" >> $DESTDIR/etc/rc.conf # Настройки DHCP echo "ifconfig_$NETIF=\"DHCP\"" >> $DESTDIR/etc/rc.conf # Включаем sshd echo 'sshd_enable="YES"' >> $DESTDIR/etc/rc.conf echo '' >> $DESTDIR/etc/rc.conf # Отключаем sendmail echo '# Postfix' >> $DESTDIR/etc/rc.conf echo 'postfix_enable="YES"' >> $DESTDIR/etc/rc.conf echo 'sendmail_enable="NO"' >> $DESTDIR/etc/rc.conf echo 'sendmail_submit_enable="NO"' >> $DESTDIR/etc/rc.conf echo 'sendmail_outbound_enable="NO"' >> $DESTDIR/etc/rc.conf echo 'sendmail_msp_queue_enable="NO"' >> $DESTDIR/etc/rc.conf echo '' >> $DESTDIR/etc/rc.conf # Включаем NTP echo '# NTP' >> $DESTDIR/etc/rc.conf echo 'ntpdate_enable="YES"' >> $DESTDIR/etc/rc.conf echo 'ntpd_enable="YES"' >> $DESTDIR/etc/rc.conf echo '' >> $DESTDIR/etc/rc.conf echo 'zfs_enable="YES"' >> $DESTDIR/etc/rc.conf # Отключение fsck в фоновом режиме echo 'background_fsck="NO"' >> $DESTDIR/etc/rc.conf
# Настройки swap echo "/dev/gpt/swap0 none swap sw 0 0" >> $DESTDIR/etc/fstab8. Установка временной зоны
# Set the timezone /bin/echo "Setting the timezone to PST.." /bin/cp /usr/share/zoneinfo/PST8PDT $DESTDIR/etc/localtime
# Обновление системы используя FreeBSD Update /bin/echo "Running FreeBSD Update" FREEBSD_UPDATE="/usr/sbin/freebsd-update" # Fetch the updates #$FREEBSD_UPDATE -b $DESTDIR fetch >${OUTPUT_REDIR} # Install the Downloaded FreeBSD Updates #$FREEBSD_UPDATE -b $DESTDIR install >${OUTPUT_REDIR}
Я отключил последние пункта для тестирования, Вы можете раскоментировать эти строки и обновлять систему в процессе установки.
# Копирование кэш файлов if [ -f /boot/zfs/zpool.cache ]; then /bin/echo "copy zpool.cache.." /bin/mkdir -p $DESTDIR/boot/zfs /bin/cp /boot/zfs/zpool.cache $DESTDIR/boot/zfs/zpool.cache fi if [ -f /var/tmp/zpool.cache ]; then /bin/echo "copy /var/tmp/zpool.cache.." /bin/mkdir -p $DESTDIR/boot/zfs /bin/cp /var/tmp/zpool.cache $DESTDIR/boot/zfs/zpool.cache fi
/bin/echo "Resetting the mount points" /sbin/zfs umount -a /sbin/zfs set mountpoint=legacy system /sbin/zfs set mountpoint=/tmp system/tmp /sbin/zfs set mountpoint=/usr system/usr /sbin/zfs set mountpoint=/var system/var
# Reboot /bin/echo "Rebooting now.." /sbin/reboot