Skip to content

Sjálfvirk uppsetning á FreeBSD


Hér munum við nota bsdinstall (8) til að gera .iso skrá sem setur sig upp sjálf, til notkunar í skýinu. Uppsetta vélin mun vera uppfærð, með IP-tölu, netsamband, notanda og SSH lykil fyrir þann notanda. Við munum einnig setja upp lykilorðalaust sudo fyrir notandann. Hægt er að setja upp pakka o.fl., en við munum einungis setja upp grunnþjónustur þannig að frekari uppsetning geti farið fram í gegnum Ansible.

Við munum sækja tilbúna uppsetningarskrá frá heimasíðu FreeBSD, afþjappa hana, setja uppsetningarskrá í /etc/installerconfig, endurpakka í .iso skrá og nota til uppsetningar.

Uppsetningarmiðillinn settur upp

Byrjum á því að ná í tilbúna .iso skrá frá heimasíðu FreeBSD, afþjöppum og setjum innihaldið í möppu

% mkdir freebsd-auto
% wget https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.1/FreeBSD-13.1-RELEASE-amd64-disc1.iso
% tar -xv -C freebsd-auto -f FreeBSD-13.1-RELEASE-amd64-disc1.iso
Við þurfum að breyta eiganda möppunnar í root:wheel, annars mun kerfið kvarta yfir því að kerfisskipanir séu ekki í eigu rótarnotandans:

% chown -R root:wheel freebsd-auto

Sjálfvirka uppsetningarferlið mun hanga þar til við veljum terminal týpu, þetta á að vera hægta að stilla í gegnum gildi í /etc/ttys og /boot/loader.conf, ég fæ það ekki til að virka þannig við breytum /etc/rc.local í uppsetningarmiðlinum. Eyðið if-setningunni sem spyr þessarar spurningar og harðkóðið export TERM=vt100 í staðinn.

export TERM=vt100

Skrifum næst uppsetningarskrána. Hún er skipt í tvo hluta, sá fyrri skilgreinir breytur sem hafa áhrif á uppsetningu, t.d. hvernig diskum er hagað og hvaða hlutar stýrikerfisins eru settir upp. Sá seinni er skelskrifta. Þessir hlutar eru aðskildir með stæðunni #!/bin/sh.

installerconfig
PARTITIONS=DEFAULT                                                  
DISTRIBUTIONS="kernel.txz base.txz"                                 

#!/bin/sh

# Skilgreinum breytur
SSH_KEY="<dreifilykill notanda>"
SSH_DIR="/home/thg/.ssh
HOSTNAME="freebsd.dæmi.is"

# Virkjum netstillingar
ifconfig vtnet0 192.168.40.20 netmask 255.255.255.0
route add default 192.168.40.1

# Setjum inn netstillingar varanlegar og virkjum SSH
sysrc ifconfig_vtnet0="inet 192.168.40.20 netmask 255.255.255.0"
sysrc defaultrouter="192.168.40.1"
sysrc sshd_enable=YES

# Bætum við notanda og SSH lykli
pw useradd -n thg -d /home/thg -m -G wheel -s /bin/tcsh
mkdir $SSH_DIR
echo $SSH_KEY > $SSH_DIR/authorized_keys

# Uppfærum kerfið
# Hér segjum við pkg að g.r.f. að við segjum já við öllu, og öllum upplýsingum er pípað í cat,
# annars er less notað, þá þarf eiga við það handvirkt.
env ASSUME_ALWAYS_YES=YES pkg bootstrap -f | cat
env ASSUME_ALWAYS_YES=YES pkg upgrade -f | cat
freebsd-update fetch | cat
freebsd-update install | cat

# Sækjum pakka
pkg install -y sudo python

# Sudo réttindi
echo "thg ALL=(ALL) NOPASSWD: ALL" > /usr/local/etc/sudoers.d/thg

Afritum skriftuna á réttan stað

# cp installerconfig freebsd-auto/etc/

Pökkum öllu aftur í .iso skrá, tilbúna til notkunar.

sh /usr/src/release/amd64/mkisoimages.sh -b '13_1_RELEASE_AMD64_CD' freebsd-auto.iso freebsd-auto

.iso skráin er svo færð á libvirt hýsilinn.

Uppsetning sýndarvélar með uppsetningarmiðli

Hér verður .iso skráin sett upp á Ubuntu hýsli með KVM/libvirt með ZFS skráakerfi þar sem gagnasett (e. dataset) er gert undir sérhverja sýndarvél. Keyrum uppsetninguna:

# virt-install --name freebsd-auto \
    --os-variant freebsd13.0 \
    --memory 2048 \
    --vcpus 2 \
    --cdrom freebsd-auto.iso \
    --disk path=/fast/vm/freebsd/freebsd.qcow2,size=16 \
    --network bridge=brvm \
    --graphics none \
    --boot uefi

Note

Þetta er nokkuð almenn uppsetning, en uppsetningarmiðillinn gerir ráð fyrir að við keyrum uefi þannig við þurfum að tilgreina --boot uefi, annars keyrir vélin ekki eftir uppsetningu.

Uppsetningin ætti ekki að taka langan tíma, að henni lokinni erum við með nýuppfærðan þjón með SSH lyklinum okkar og sudo-réttindum.

Bilanagreining

Þetta virkaði ekki hjá mér fyrr en í 24. útgáfu af freebsd-auto.iso út af eftirfarandi ástæðum:

  • Uppsetningin hékk, þurfti að aftengja console aðganginn, virsh console-a mig aftur inn, þá þurfti ég að velja terminal týpu handvirkt
    • Það er leyst með export TERMINAL=vt100 eins og var lýst hér að ofan
    • Að eiga við /etc/ttys og /boot/loader.conf virkar ekki
  • Einhver f_dprintf setning í /usr/libexec/bsdinstall/script henti í "Bad file descriptor" villu og uppsetningin hrundi
    • Leyst með því að breyta öllu "f_dprintf" í "echo"
  • Uppsetningin kláraðist, en eftir endurræsingu gat ég ekki console-að inn
    • Hélt fyrst það væru console stillingarnar í sýndarvélinni, ekki málið
    • Hélt það væri diskauppsetingin og það vantaði boot diskasneið, ekki málið
    • Mount-aði diskinn: modprobe nbd max_part=63 til að hlaða kjarnaeiginleikum, svo qemu-nbd -c /dev/nbd0 freebsd-auto.qcow2 til að festa sýndarvélina við disk, að lokum mount -r -t ufs -o ufstype=ufs2 /dev/nbd0p1 /mnt til að mount-a diskinn.
      • Á disknum mátti sjá "efi" bregða mikið fyrir undir /boot/, kemur í ljós að libvirt reynir að keyra bios en uppsetningarmiðillinn setur upp efi.
        • Leyst með --boot uefi í virt-install skipuninni.
  • Einnig getur verið gott að keyra single user mode frá uppsetningarmiðlinum til að ganga úr skugga um hvað diskar, netöld og fleira er nefnt