SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
gpart create -s GPT ada0 gpart add -s 128 -t freebsd-boot -l boot0 ada0 gpart add -s 200M -t efi -l boot0 ada0 gpart add -s {{ swap }}G -t freebsd-swap -l swap0 ada0 gpart add -t freebsd-zfs -l disk0 ada0 gpart add -t freebsd-ufs -l disk0 ada0 gpart create -s GPT ada1 gpart add -s 128 -t freebsd-boot -l boot1 ada1 gpart add -s 4G -t freebsd-swap -l swap1 ada1 gpart add -t freebsd-zfs -l disk1 ada1 # Создаем пул с именем zfspool на разделе disk и подключаем к точке монтирования /tmp/mnt, которую создадим mkdir /tmp/mnt zpool create -f -o altroot=/tmp/mnt zfspool root /dev/gpt/disk0 zpool create -f -o altroot=/tmp/mnt zfspool raidz /dev/gpt/disk0 /dev/gpt/disk1 zpool set bootfs=zfspool zfspool zfs set checksum=fletcher4 zfspool zfs set atime=off zfspool zfs set mountpoint=/tmp/mnt zfspool zpool export zfspool zpool import -o cachefile=/tmp/zpool.cache zfspool zfs create zfspool/var zfs create zfspool/var/db zfs create -o exec=off -o setuid=off zfspool/var/empty zfs set readonly=on zfspool/var/empty zfs create zfspool/var/tmp zfs create -o compression=gzip-9 zfspool/var/crash zfs create zfspool/tmp zfs create zfspool/usr zfs create -o compression=gzip-9 -o mountpoint=/tmp/mnt/usr/src zfspool/src zfs create -o compression=gzip-9 -o mountpoint=/tmp/mnt/usr/ports zfspool/ports zfs create -o mountpoint=/tmp/mnt/usr/ports/distfiles zfspool/distfiles zfs create -o mountpoint=/tmp/mnt/usr/home zfspool/home zfs create -o mountpoint=/tmp/mnt/usr/local zfspool/local zfs create -o mountpoint=/tmp/mnt/usr/obj zfspool/obj zfs create zfspool/data chmod 1777 /tmp/mnt/tmp /tmp/mnt/var/tmp cat /usr/freebsd-dist/base.txz | tar --unlink -xpJf - -C /tmp/mnt cat /usr/freebsd-dist/kernel.txz | tar --unlink -xpJf - -C /tmp/mnt gpart bootcode -b /tmp/mnt/boot/pmbr -p /tmp/mnt/boot/gptzfsboot -i 1 ada0 # Вносим изменения в файл loader.conf cat << EOF > /tmp/mnt/boot/loader.conf zfs_load="YES" vfs.root.mountfrom="zfs:'zfspool'" vm.kmem_size="1024M" vm.kmem_size_max="1024M" vfs.zfs.arc="512M" vfs.zfs.arc_max="512M" vfs.zfs.vdev.cache.size="10M" vfs.zfs.prefetch_disable=1 EOF # Вносим изменения в файл rc.conf # cat << EOF > /tmp/mnt/etc/rc.conf # ZFS zfs_enable="YES" EOF # На этом этапе необходимо узнать у провайдера сетевые настройки. # В этом примере я использовал стандартные настройки, которые не являются # правильными, исключительно в целях примера. # IP 10.0.0.2 # MASK 255.255.0.0 # DNS 10.0.0.1 # Gateway 10.0.0.1 echo '# Network' >> /tmp/mnt/etc/rc.conf echo 'ifconfig_em0="inet 192.168.0.1 netmask 255.255.255.0"' >> /tmp/mnt/etc/rc.conf echo 'ifconfig_em1="inet 10.0.0.2 netmask 255.255.0.0"' >> /tmp/mnt/etc/rc.conf echo 'defaultrouter="10.0.0.1"' >> /tmp/mnt/etc/rc.conf echo 'gateway_enable="YES"' >> /tmp/mnt/etc/rc.conf echo '' >> /tmp/mnt/etc/rc.conf echo '# Firewall' >> /tmp/mnt/etc/rc.conf echo 'firewall_enable="YES"' >> /tmp/mnt/etc/rc.conf echo 'firewall_type="OPEN"' >> /tmp/mnt/etc/rc.conf echo 'firewall_simple_iif="em0"' >> /tmp/mnt/etc/rc.conf echo 'firewall_simple_inet="192.168.0.0/24"' >> /tmp/mnt/etc/rc.conf echo 'firewall_simple_oif="em1"' >> /tmp/mnt/etc/rc.conf echo 'firewall_simple_onet="10.0.0.0/16"' >> /tmp/mnt/etc/rc.conf echo '' >> /tmp/mnt/etc/rc.conf echo '# SSH' >> /tmp/mnt/etc/rc.conf echo 'sshd_enable="YES"' >> /tmp/mnt/etc/rc.conf # Вносим изменения в файл fstab cat << EOF >> /tmp/mnt/etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/gpt/swap0 none swap sw 0 0 /dev/gpt/swap1 none swap sw 0 0 proc /proc procfs rw 0 0 devfs /dev devfs rw 0 0 fdescfs /dev/fd fdescfs rw 0 0 EOF # Вносим изменения в файл login.conf cat << EOF >> /tmp/mnt/etc/login.conf # Russian UTF8 russian_utf8|Russian UTF-8 accounts:\ :charset=UTF-8:\ :lang=ru_RU.UTF-8:\ :LC_ALL=ru_RU.UTF-8:\ :tc=default: EOF # Вносим изменения в файл profile echo 'LANG="ru_RU.UTF-8"; export LANG' >> /tmp/mnt/etc/profile echo 'LC_CTYPE="ru_RU.UTF-8"; export LC_CTYPE' >> /tmp/mnt/etc/profile echo 'LC_COLLATE="POSIX"; export LC_COLLATE' >> /tmp/mnt/etc/profile echo 'LC_ALL="ru_RU.UTF-8"; export LC_ALL' >> /tmp/mnt/etc/profile # Вносим изменения в файл csh.cshrc echo 'setenv LANG ru_RU.UTF-8' >> /mnt/etc/csh.cshrc echo 'setenv LC_CTYPE ru_RU.UTF-8' >> /mnt/etc/csh.cshrc echo 'setenv LC_COLLATE POSIX' >> /mnt/etc/csh.cshrc echo 'setenv LC_ALL ru_RU.UTF-8' >> /mnt/etc/csh.cshrc zfs unmount -a zfs set mountpoint=legacy zfspool zfs set mountpoint=/usr zfspool/usr zfs set mountpoint=/usr/home zfspool/home zfs set mountpoint=/usr/local zfspool/local zfs set mountpoint=/usr/obj zfspool/obj zfs set mountpoint=/usr/ports/distfiles zfspool/distfiles zfs set mountpoint=/usr/ports zfspool/ports zfs set mountpoint=/usr/src zfspool/src zfs set mountpoint=/var zfspool/var zfs set mountpoint=/tmp zfspool/tmp zfs set readonly=on zfspool/var/empty zfs set mountpoint=data zfspool/data shutdown -p now # После того, как компьютер выключился извлекаем флешку и запускаем нашу систему. # Для входа используем логин root и пустой пароль. Проверяем доступность интернет ресурсов: ping ya.ru # Если сеть настроена правильно и доступна, то продолжаем. # Добавляем дополнительные настройки для нашего шлюза: echo 'natd_enable="YES"' >> /etc/rc.conf echo 'natd_interface="em1"' >> /etc/rc.conf echo 'ipfw_load="YES"' >> /boot/loader.conf echo 'ipdivert_load="YES"' >> /boot/loader.conf echo 'firewall_type="SIMPLE"' >> /etc/rc.conf