#!/bin/bash -e LINUX_BRANCH=$1 # Obtain and apply Ubuntu patches wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/SOURCES THE_BRANCH=`echo $a | awk 'NF>1{print $(NF-1)}' SOURCES` # Obtain Linux Kernel sources echo "Shallow cloning Linux source repository... (~100mb)" git clone --verbose git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack linux-$LINUX_BRANCH --branch $THE_BRANCH --depth 1 cd linux-$LINUX_BRANCH # Produce index.html wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/ # Get the debian package wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/`grep 'linux-headers-[^"]*_all.deb' index.html -o | sed -n '1P'` wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/`grep 'linux-headers-[^"]*-generic[^"]*_amd64.deb' index.html -o | sed -n '1P'` # Install the package sudo dpkg -i linux-headers-*.deb RAW_TAG=`echo $THE_BRANCH | cut -c 2-` CONFIG_LOCATION=/usr/src/linux-headers-$RAW_TAG*-generic/ # Now can get symvers from /usr/src/.... PATCH_A=`echo $a | sed -n '2p' < ../SOURCES` PATCH_B=`echo $a | sed -n '3p' < ../SOURCES` PATCH_C=`echo $a | sed -n '4p' < ../SOURCES` echo "The Branch Is: " $THE_BRANCH git checkout $THE_BRANCH wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/$PATCH_A wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/$PATCH_B wget http://kernel.ubuntu.com/~kernel-ppa/mainline/$LINUX_BRANCH/$PATCH_C patch -p1 < $PATCH_A patch -p1 < $PATCH_B patch -p1 < $PATCH_C # Apply our RealSense-specific patch patch -p1 < ../scripts/realsense-camera-formats.patch # Prepare to compile modules cp $CONFIG_LOCATION/.config . cp $CONFIG_LOCATION/Module.symvers . make scripts oldconfig modules_prepare # Compile UVC modules echo "Beginning compilation of uvc..." #make modules KBASE=`pwd` cd drivers/media/usb/uvc cp $KBASE/Module.symvers . make -C $KBASE M=$KBASE/drivers/media/usb/uvc/ modules # Copy to sane location sudo cp $KBASE/drivers/media/usb/uvc/uvcvideo.ko ~/$LINUX_BRANCH-uvcvideo.ko # Unload existing module if installed echo "Unloading existing uvcvideo driver..." sudo modprobe -r uvcvideo # Delete existing module sudo rm /lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko # Copy out to module directory sudo cp ~/$LINUX_BRANCH-uvcvideo.ko /lib/modules/`uname -r`/kernel/drivers/media/usb/uvc/uvcvideo.ko echo "Script has completed. Please consult the installation guide for further instruction."