FreeBSD kernel with Fibre Channel target mode support for QLogic cards

From Aram's Wiki
Jump to: navigation, search

Introduction

FreeBSD doesn't enable target mode support for QLogic cards, so we need to compile a custom kernel. We'll assume we have installed a release and we have a populated /usr/src.

Create the kernel configuration file

cat <<EOF >/tmp/FCTARGET
include GENERIC
ident FCTARGET

options ISP_TARGET_MODE
EOF
sudo install -g staff -o aram /tmp/FCTARGET /usr/src/sys/amd64/conf

Create /etc/make.conf

cat <<EOF >/tmp/make.conf
# Build and install FCTARGET and GENERIC kernels
# FCTARGET will be installed by default.
KERNCONF=FCTARGET GENERIC
EOF
sudo install -g staff -o aram /tmp/make.conf /etc

Exclude the kernels from freebsd-update(8)

Make sure /etc/freebsd-update.conf doesn't list the kernels:

Components src world

Set permissions to build as user

sudo zfs create zroot/usr/obj # assuming you have ZFS
sudo chown aram:staff /usr/obj

Build and install the kernels

Build the kernels:

cd /usr/src
# builds FCTARGET and GENERIC
make buildkernel -j24

Install the kernels:

# install FCTARGET into /boot/kernel (default) and GENERIC into /boot/GENERIC
sudo make -j24 installkernel
sudo make -j24 installkernel KERNCONF=GENERIC INSTKERNNAME=GENERIC

Load isp(4) driver firmware in /etc/loader.conf

As root:

sudo su -
echo ispfw_load="YES" >> /boot/loader.conf

isp(4) is already compiled into the kernel, no need to load it.

Reboot and test

sudo reboot

Update

When updating to the same RELEASE, run freebsd-update(8) to get new source and binaries, then recompile the kernels and reboot.

You can't upgrade to a newer RELEASE without rebuilding the newer kernel first.

References