You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.4 KiB
77 lines
2.4 KiB
#!/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."
|