カーネルモジュールビルドの準備
CDEmu を使っていると、Raspberry Pi OS のカーネルのバージョンが上がる毎に改めて整備しなければいけません。ほぼ、同じ手順なので、SHELL スクリプトにしました。
手順自体は、https://qiita.com/newtypehiro919/items/336e09340e728a94a9f7 に書かれているとおりです。
SHELL スクリプトは以下です。
#!/bin/bash
# 必要なパッケージのインストール
sudo apt-get -y install bc bison flex libssl-dev
# ハッシュ値を github から取得
checkurl="https://github.com/Hexxeh/rpi-firmware/commits/master"
REL=`uname -r|sed -e 's/-.*//'`
list=`wget -q -O - ${checkurl} | grep ${REL} | head -2 | tail -1`
rev=`echo "${list}" | sed -e 's!.*href="/Hexxeh/rpi-firmware/commit/\(.*\)">.*!\1!'`
if [ "${rev}" == "" ]; then
echo "kernel ${REL} not found."
exit 1
fi
FIRMWARE_REV=${rev}
# kernel revisionを取得し、ソースをダウンロードする
KERNEL_REV=`wget -q -O - "https://github.com/Hexxeh/rpi-firmware/raw/${FIRMWARE_REV}/git_hash"`
if [ ! -f "${KERNEL_REV}.tar.gz" ]; then
wget "https://github.com/raspberrypi/linux/archive/${KERNEL_REV}.tar.gz"
fi
# /usr/src に展開する
if [ ! -d "/usr/src/linux-${KERNEL_REV}" ]; then
sudo tar -C /usr/src -xvf "${KERNEL_REV}.tar.gz"
fi
cd /usr/src/linux-${KERNEL_REV}
# シンボルファイルのダウンロード
if [ ! -f Module7l.symvers ]; then
sudo wget "https://github.com/Hexxeh/rpi-firmware/raw/${FIRMWARE_REV}/Module7l.symvers"
sudo ln -s Module7l.symvers Module.symvers
fi
# .configファイルを作成する
if [ ! -f .config ]; then
sudo modprobe configs
sudo bash -c "zcat /proc/config.gz > .config"
fi
# コンパイル
sudo make -j4 modules_prepare
# カーネルソースのルートへのシンボリックリンクを/lib/modules/`uname -r`/build として作成する
if [ -d /lib/modules/`uname -r`/build ]; then
sudo rm -f /lib/modules/`uname -r`/build
fi
sudo ln -s /usr/src/linux-${KERNEL_REV} /lib/modules/`uname -r`/build
今の所、このスクリプト一発で vhba をコンパイルする環境が作れています。
ディスカッション
コメント一覧
まだ、コメントがありません