RasPiでiSCSIを使うためカーネルをビルドした
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が入った。