Skip to content

Instantly share code, notes, and snippets.

@knorth55
Created September 29, 2016 12:15
Show Gist options
  • Save knorth55/8e76494a694a287a8cf00b54c38e29ad to your computer and use it in GitHub Desktop.
Save knorth55/8e76494a694a287a8cf00b54c38e29ad to your computer and use it in GitHub Desktop.
#!/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-$(uname -r)
# 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."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment