forked from AdnanHodzic/displaylink-debian
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdisplaylink-debian.sh
executable file
·131 lines (110 loc) · 3.26 KB
/
displaylink-debian.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/bash
#
# DisplayLink driver installer for Debian GNU/Linux
#
# Copyleft: Adnan Hodzic <[email protected]>
# License: GPLv3
version=1.0.335
driver_dir=$version
# ToDo: add dependency check on:
# unzip linux-headers-$(uname -r) dkms lsb-release
distro_check(){
# RedHat
if [ -f /etc/redhat-release ];
then
echo "This is a Redhat based distro ..."
# ToDo:
# Add platform type message for RedHat
exit 1
else
# Checker parameters
lsb="$(lsb_release -is)"
codename="$(lsb_release -cs)"
platform="$(lsb_release -ics | sed '$!s/$/ /' | tr -d '\n')"
# Unsupported platform message
message(){
echo -e "\n------------------------------------------------------\n"
echo -e "Unsuported platform: $platform"
echo -e ""
echo -e "This tool is Open Source and feel free to extend it"
echo -e "GitHub repo: https://goo.gl/6soXDE"
echo -e "------------------------------------------------------\n"
}
# Ubuntu
if [ $lsb == "Ubuntu" ];
then
message
exit 1
# Debian
elif [ $lsb == "Debian" ];
then
if [ $codename == "jessie" ] || [ $codename == "stretch" ] || [ $codename == "sid" ];
then
echo -e "\nPlatform requirements satisfied, proceeding ...\n"
#exit 1
else
message
exit 1
fi
else
message
exit 1
fi
fi
}
install(){
echo -e "\nDownloading DisplayLink Ubuntu driver:"
wget -c http://downloads.displaylink.com/publicsoftware/DisplayLink_Ubuntu_${version}.zip
# prep
mkdir $driver_dir
echo -e "\nPrepring for install ...\n"
test -d $driver_dir && /bin/rm -Rf $driver_dir
unzip -d $driver_dir DisplayLink_Ubuntu_${version}.zip
chmod +x $driver_dir/displaylink-driver-${version}.run
./$driver_dir/displaylink-driver-${version}.run --keep --noexec
mv displaylink-driver-${version}/ $driver_dir/displaylink-driver-${version}
# modify displaylink-installer.sh
sed -i "s/SYSTEMINITDAEMON=unknown/SYSTEMINITDAEMON=systemd/g" $driver_dir/displaylink-driver-${version}/displaylink-installer.sh
sed -i "s/"179"/"17e9"/g" $driver_dir/displaylink-driver-${version}/displaylink-installer.sh
sed -i "s/detect_distro/#detect_distro/g" $driver_dir/displaylink-driver-${version}/displaylink-installer.sh
sed -i "s/#detect_distro()/detect_distro()/g" $driver_dir/displaylink-driver-${version}/displaylink-installer.sh
sed -i "s/check_requirements/#check_requirements/g" $driver_dir/displaylink-driver-${version}/displaylink-installer.sh
sed -i "s/#check_requirements()/check_requirements()/g" $driver_dir/displaylink-driver-${version}/displaylink-installer.sh
# install
echo -e "\nInstalling ... \n"
cd $driver_dir/displaylink-driver-${version} && sudo ./displaylink-installer.sh install
echo -e "\nInstall complete\n"
}
# uninstall
uninstall(){
# ToDo: add confirmation before uninstalling?
echo -e "\nUninstalling ...\n"
cd $driver_dir/displaylink-driver-${version} && sudo ./displaylink-installer.sh uninstall
sudo rmmod evdi
# cleanup
# Todo: add confirmation before removing
cd -
rm -r $driver_dir
rm DisplayLink_Ubuntu_${version}.zip
echo -e "\nUninstall complete\n"
}
post(){
eval $(rm -r $driver_dir)
eval $(rm DisplayLink_Ubuntu_${version}.zip)
}
echo -e "\nDisplayLink driver for Debian GNU/Linux\n"
read -p "[I]nstall
[U]ninstall
Select a key: [i/u]: " answer
if [[ $answer == [Ii] ]];
then
distro_check
install
elif [[ $answer == [Uu] ]];
then
uninstall
#post
else
echo -e "\nWrong key, aborting ...\n"
exit 1
fi