Instalação automatizada no FreeBSD com bsdinstaller

Ola Pessoal,

Neste post, irei mostrar como fazer um instalação automatizada no FreeBSD usando bsdinstaller uma solução nativa dentro do mundo do FreeBSD, nesta automatização ira fazer toda configuração que fizemos manualmente neste post.
Neste nosso exemplo nos vamos utilizar uma ambiente virtualizado para isso, porem com esse guia, você pode replicar para qualquer outro tipo de ambiente.

Softwares que serão utilizados e as versões utilizadas:

– FreeBSD  – link ( versão:  13.1 )
– xorriso – link ( versão:  1.5.4 )

Primeiramente, se você ainda não fez a instalação do sistema ou tem duvida sobre alguns pontos da instalação, recomendo verificar esse post: https://www.leandroscardua.com/blog/instalando-freebsd

O bsdinstaller é um aplicação nativa do FreeBSD, com foco na instalação e configuração de novos sistemas rorando BSD.

Neste processo nos iremos editar uma ISO do FreeBSD e adicionar o arquivo installerconfig dentro da ISO no caminho /etc/installerconfig.

1- Instale e verifique se voce tem o xorriso instalado.

xorriso -v

[leandro@freebsd]$ sudo xorriso -v
xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

Recomendo, que utilize um instalação do freebsd para poder criar a ISO o e gerar o arquivo installerconfig, você também pode usar qualquer distribuição do linux para isso.

 

2- Verifique o arquivo installerconfig abaixo, e faca  as alterações se necessário

# Selecting Components to Install
export DISTRIBUTIONS="base.txz kernel.txz"

# Non-interactive
export nonInteractive="YES"

# for variations in the root disk device name between VMware and Virtualbox
if [ -e /dev/ada0 ]; then
DISKSLICE=ada0
elif [ -e /dev/da0 ]; then
DISKSLICE=da0
elif [ -e /dev/vtbd0 ]; then
DISKSLICE=vtbd0
else
echo "Unknown disk for install.sh to work with!"
exit -1
fi

#Using Partition the disk with ZFS
export ZFSBOOT_DISKS="$DISKSLICE"
export ZFSBOOT_VDEV_TYPE="stripe"
export ZFSBOOT_SWAP_SIZE=2g
export ZFSBOOT_CONFIRM_LAYOUT=1

# Setting hostname name.domain
export HOSTNAME=freebsd.lan

#Setting username and password
export USERNAME=(( enter usename here }}
export PASSWORD={{ enter password here }}

#!/bin/sh -x

# Create user
echo "${USERNAME}" | pw useradd -n "${USERNAME}" -h 0 -m -s /bin/tcsh
echo "${PASSWORD}" | pw usermod "${PASSWORD}" -h 0 -s /bin/tcsh

cat < /usr/local/etc/sudoers.d/"${USERNAME}"
Defaults:"${USERNAME}" !requiretty
"${USERNAME}" ALL=(ALL) NOPASSWD: ALL
EOF
chmod 440 /usr/local/etc/sudoers.d/"${USERNAME}"

# Select the network interface available
ifdev=$(ifconfig | grep '^[a-z]' | cut -d: -f1 | head -n 1)

# Get a IP on the interface
dhclient ${ifdev}

# Enable/disable required services at boot
cat >> /etc/rc.conf << EOT
ifconfig_${ifdev}="dhcp"
keymap="us.kbd"
sshd_enable="YES"
sendmail_enable="NO"
hostname="${HOSTNAME}"
ntpd_enable="YES"
ntpd_sync_on_start="YES"
EOT

# Set Time Zone
/bin/cp /usr/share/zoneinfo/EST /etc/localtime
/usr/bin/touch /etc/wall_cmos_clock
/sbin/adjkerntz -a

# Bootstrap the system
env ASSUME_ALWAYS_YES=YES pkg bootstrap -f

# Download updates
freebsd-update fetch
freebsd-update install

# Install basic pkg
pkg install -y sudo

# remove the autounattend file and system cleanup
rm -rf /var/db/freebsd-update/*
rm -rf /boot/kernel/*.symbols
rm -rf /tmp/installscript
rm -rf /etc/installscript

# Poweroff the system
poweroff


Verifique, no exemplo acima, nos iremos instalar os componentes: base.txz kernel.txz , vamos configurar o sistema para usar ZFS  e utilizar todo disco disponível, iremos também configurar um nome para nossos sistema e criar um usuário e senha, iremos identificar a interface de rede disponível, configurar alguns serviços para sere, habilitados no boot,configurar o timezone, instalar atualizações, bootstrap e o sudo, finalmente vamos fazer uma limpeza no sistema antes de completar a instalação.

3- Baixe a imagem desejada do Freebsd e salve no mesmo local do arquivo installerconfig

xorriso -indev FreeBSD-13.1-RELEASE-amd64-dvd1.iso -outdev FreeBSD-13.1.iso -map installerconfig /etc/installerconfig -boot_image “any” “keep”

[leandro@freebsd]$ xorriso -indev FreeBSD-13.1-RELEASE-amd64-dvd1.iso -outdev FreeBSD-13.1.iso -map installerconfig /etc/installerconfig -boot_image “any” “keep”

xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 28153 nodes read in 1 seconds
libisofs: WARNING : Found hidden El-Torito image. Its size could not be figured out, so image modify or boot image patching may lead to bad results.
libisofs: NOTE : Found hidden El-Torito image for EFI.
libisofs: NOTE : EFI image start and size: 20 * 2048 , 4096 * 512
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev ‘FreeBSD-13.1-RELEASE-amd64-dvd1.iso’
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record : El Torito , MBR protective-msdos-label cyl-align-off GPT
Media summary: 1 session, 2256335 data blocks, 4407m data, 121g free
Volume id : ’13_1_RELEASE_AMD64_DVD’
Drive current: -outdev ‘FreeBSD-13.1.iso’
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 121g free
xorriso : UPDATE : 1 files added in 1 seconds
Added to ISO image: file ‘/etc/installerconfig’=’/home/leandro/Downloads/installerconfig’
xorriso : NOTE : Keeping boot image unchanged
libisofs: NOTE : Cannot arrange content of data files in surely reproducible way
xorriso : UPDATE : Writing: 8848s 0.4% fifo 99% buf 50%
xorriso : UPDATE : Writing: 57344s 2.5% fifo 100% buf 50% 102.2xD
xorriso : UPDATE : Writing: 131072s 5.8% fifo 100% buf 50% 108.9xD
xorriso : UPDATE : Writing: 188416s 8.4% fifo 100% buf 50% 84.7xD
xorriso : UPDATE : Writing: 237568s 10.5% fifo 100% buf 50% 72.6xD

xorriso : UPDATE : Writing: 2097152s 93.1% fifo 100% buf 50% 24.2xD
xorriso : UPDATE : Writing: 2113536s 93.8% fifo 100% buf 50% 24.2xD
xorriso : UPDATE : Writing: 2129920s 94.6% fifo 100% buf 50% 24.2xD
xorriso : UPDATE : Writing: 2151920s 95.5% fifo 91% buf 50% 32.5xD
xorriso : UPDATE : Writing: 2170880s 96.4% fifo 100% buf 50% 28.0xD
xorriso : UPDATE : Writing: 2187264s 97.1% fifo 100% buf 50% 24.2xD
ISO image produced: 2252133 sectors
Written to medium : 2252288 sectors at LBA 32
Writing to ‘FreeBSD-13.1.iso’ completed successfully

[leandro@freebsd]$


Segue a explicação dos parâmetros utilizados, -indev a ISO original baixada do site do freebsd, -outdev a ISO que sera gerada apos adicionar o arquivo installerconfig, -map iremos adicionar o arquivo installerconfig no caminha dentro do ISO /etc/installerconfig, -boot_image iremos preservar as configurações de boot existentes na ISO.

 

Com isso concluímos o nosso post de como criar um ISO customizada, para instalar o FreeBSD com sua configurações prediletas. No próximo post, iremos mostrar como criar um imagem customizada do FreeBSD com packer.

Fonte:

– https://www.freebsd.org/cgi/man.cgi?bsdinstall(8)
-https://www.unix.com/man-page/centos/1/xorriso/
-https://docs.freebsd.org/en/books/handbook/bsdinstall/