TL;DR

https://blog.akimasa.jp/2018/09/11/raspi-iscsi-target/

Kernel buildingを参照してカーネルをビルド、インストールすればよい。

menuconfigで、Device Drivers ---> Generic Target Core Mod (TCM) and ConfigFS Infrastructureを有効にし、Generic Target Core Mod (TCM) and ConfigFS Infrastructureの中も必要なモジュールを有効にして、ビルドする。

あとはKernel buildingに従ってSDカードに転送する。

本文

Kernel buildingを参照していろいろ準備する。
Bash on Windowsで入るUbuntuではbc, build-essential, libncurses5-devが必要だった。
説明にある通り進めて、make bcm2709_defconfigのあとにmenuconfigに入る。
下記の感じ。

git clone https://github.com/raspberrypi/tools ~/tools
echo PATH=\$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin >> ~/.bashrc
source ~/.bashrc
git clone --depth=1 https://github.com/raspberrypi/linux
cd linux
KERNEL=kernel
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j16

menuconfigではDevice Drivers ---> Generic Target Core Mod (TCM) and ConfigFS Infrastructureを選択してMキーを押す。割と最初の方にある。

そして、zImage modules dtbsを(modulesだけでよかったかも?)makeすると、いろいろ生成されるが、次のファイルが重要になる。

 LD [M] crypto/crct10dif_common.ko
 LD [M] crypto/crct10dif_generic.ko
 LD [M] drivers/target/target_core_mod.ko
 LD [M] lib/crc-t10dif.ko

scp使うのも面倒なので、tar c crypto/crct*.ko drivers/target/target_core_mod.ko lib/crc-t10dif.ko | gzip | base64 でbase64を吐き出させて(実際は> /mnt/c/Users/hoge/hoge.txtみたいにデスクトップ上の適当なファイルに吐き出させた。)、 base64 -d | tar zxvをRaspberry Piの方で実行して、吐き出されたbase64を貼り付けて、開業して、Ctrl-dで転送した。

sudo insmod crypto/* lib/* drivers/target/*

これでよいかと思ったら、Generic Target Core Mod (TCM) and ConfigFS InfrastructureをMキー押して有効にしたら、開いたところにさらに選べるのが出てきていて、それが足りていなくてダメなようだった。
仕方がないので有効にしてビルドしなおしているが、エラーが出た。
cleanして、modulesだけmakeして何とかなった。
面倒なので、RasPiでnc -l -p 8000 > ~/mod.tar.gz実行して、
Bash on Windows

mkdir -p mnt/ext4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install
cd mnt/ext4
tar czvf ~/mod.tar.gz ./
cat ~/mod.tar.gz | nc (RasPi IP Address) 8000

RasPi

cd /
sudo tar xf ~/mod.tar.gz

で、適当に転送して書き換えた。
うまくいかんので、"depmod -a"したが意味ない。
cat lib/modules/4.9.76-v7+/modules.builtin見てみたらkernel/lib/crc-t10dif.koとかあったので、curl https://raw.githubusercontent.com/Hexxeh/rpi-firmware/master/modules/4.9.76-v7%2B/modules.builtin | sudo tee modules.builtinとかやってみたが、意味なかった。

mkdir -p mnt/fat32/overlays/
cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
cp arch/arm/boot/dts/*.dtb mnt/fat32/
cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/

あとはmnt/fat32/をRasPiの/boot/にコピーして、再起動するだけでよかった。
そしたら、無事targetcli-fbが入った。