カーネルモジュールビルドの準備

 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 をコンパイルする環境が作れています。

Raspberry Pi

Posted by sirius