XEN // freebsd guest from cloud image

freebsd full | freebsd cloud | freebsd ext2fs | freebsd zfs

requirements

grab latest cloud image

cd /data_local/
wget https://download.freebsd.org/snapshots/VM-IMAGES/13.2-STABLE/amd64/Latest/FreeBSD-13.2-STABLE-amd64.raw.xz
unxz FreeBSD-13.2-STABLE-amd64.raw.xz

prepare PVH kernel

mkdir /data/kernels/freebsd132/
cd /data/kernels/freebsd132/
wget https://download.freebsd.org/snapshots/amd64/13.2-STABLE/kernel.txz
tar xaf kernel.txz
rm -f kernel.txz

moar space

you might want some space to re-build the kernel also

dd if=/dev/zero of=freebsd_usr_src.img bs=1G count=0 seek=25

casual sysprep

we need to fix the serial console and disable DHCP from the cloud image

losetup --find --show FreeBSD-13.2-STABLE-amd64.raw
partprobe /dev/loop0
mkdir lala/
mount -t ufs -o ufstype=ufs2 /dev/loop0p4 lala/

xen guest tuning

fix the serial console

    mv -i lala/etc/ttys lala/etc/ttys.dist
    vi lala/etc/ttys

    xc0     "/usr/libexec/getty Pc"         xterm   onifexists secure

network

    vi lala/etc/rc.conf

    hostname="freebsd.localdomain"

# esp. required for the cloud image
    growfs_enable="YES"

    ifconfig_xn0="inet CIDR up"
    defaultrouter="GW-IP"
    sshd_enable=yes

    mv lala/etc/ssh/sshd_config lala/etc/ssh/sshd_config.dist
    grep -vE '^#|^$' lala/etc/ssh/sshd_config.dist > lala/etc/ssh/sshd_config
    echo permitrootlogin prohibit-password >> lala/etc/ssh/sshd_config

    mkdir lala/root/.ssh/
cat ~/.ssh/*pub
    vi lala/root/.ssh/authorized_keys

(paste your pub key)

    chmod 600 lala/root/.ssh/authorized_keys
    chmod 700 lala/root/.ssh/
    chmod 700 lala/root/

    mv -i lala/etc/hosts lala/etc/hosts.dist
    vi lala/etc/hosts

    127.0.0.1               localhost.localdomain localhost
    ::1                     localhost.localdomain localhost

    10.1.0.9                freebsd.localdomain freebsd

    vi lala/etc/resolv.conf

    nameserver 10.1.255.19
    nameserver 10.1.255.20

environment

ls -lF lala/etc/localtime
ln -s ../usr/share/zoneinfo/Europe/Moscow lala/etc/localtime
umount lala/
rmdir lala/

guest skeleton

notice we will need to mount GPT partition 4

fdisk -l /data_local/FreeBSD-13.2-STABLE-amd64.raw

    mkdir -p /data/guests/freebsd/
    cd /data/guests/freebsd/
    vi freebsd

# generic / pvh for UFS
kernel = "/data/kernels/freebsd132/boot/kernel/kernel"
extra = "vfs.root.mountfrom=ufs:xbd0p4"
type = "pvh"

memory = 7168
name = "freebsd"
vcpus = 3
disk = [ 'tap:tapdisk:aio:/data_local/FreeBSD-13.2-STABLE-amd64.raw,xvda,w',
        'tap:tapdisk:aio:/data_local/freebsd_usr_src.img,xvdb,w' ]
vif = [ 'bridge=guestbr0, vifname=freebsd.0',
    'bridge=guestbr0, vifname=freebsd.1' ]

ready to go

    xl create freebsd -c

post-install fixup

eventually prepare that additional space there

    newfs /dev/xbd1
    touch /usr/src/UFS_NOT_MOUNTED
    cp -pi /etc/fstab /etc/fstab.dist
    vi /etc/fstab

    /dev/xbd1 /usr/src ufs rw 0 2

    mount /usr/src/

HOME | GUIDES | LECTURES | LAB | SMTP HEALTH | HTML5 | CONTACT
Copyright © 2024 Pierre-Philipp Braun