2015-07-07, 07:29
I've had some issues setting up the NFS boot for Kodi on BoxeeBox, so I took the internal memory installer script from http://boxee-kodi.t28.net/ and made one dedicated to this task. I'm not an expert in scripting and much less on xbmc/kodi inner workings so, any error or improvement, let me know.
Hope you enjoy.
Pre-requisites:
- Installed Boxee+Hacks;
- Working NFS share
- If you wish to keep your running configuration, backup your "portable_data" folder and, after the installation, replace the Kodi NFS share "portable_data" folder (in this example /srv/nfs/kodi/portable_data) and reboot.
Example parameters:
- NFS Server IP: 192.168.0.2
- NFS Share (export): /srv/nfs/kodi/
1- Connect to the BoxeeBox using telnet and create the script file /data/hack/mount.sh with the code below
2- Edit the "nfs_server" and "nfs_share" variables to suit your setup. You don't need to run this script, besides for testing purposes.
3- Create the script file /data/hack/kodi_nfs_install.sh with the code below
4- Run the install script
5- Reboot... and that's it!
Quote:This installer works well on a factory reset, updated and hacked Boxee.
When running this installer on a working system, the only precaution taken is backing up the "portable_data" folder and copying it back after the installation of the new version.
This script was not thoroughly tested so I'm not responsible for any loss of data
Hope you enjoy.
Pre-requisites:
- Installed Boxee+Hacks;
- Working NFS share
- If you wish to keep your running configuration, backup your "portable_data" folder and, after the installation, replace the Kodi NFS share "portable_data" folder (in this example /srv/nfs/kodi/portable_data) and reboot.
Example parameters:
- NFS Server IP: 192.168.0.2
- NFS Share (export): /srv/nfs/kodi/
1- Connect to the BoxeeBox using telnet and create the script file /data/hack/mount.sh with the code below
Code:
touch /data/hack/mount.sh
chmod +x /data/hack/mount.sh
Code:
#! /bin/sh
#Create mount point
kodi_dir=/tmp/mnt/kodi
mkdir -p "$kodi_dir"
if [ ! -d $kodi_dir ]
then
echo
echo "Error creating KODI system mount point ($kodi_dir)."
echo
exit 1
fi
#Mount NFS share
nfs_server=192.168.0.2
#Mount system
echo
echo "----> Mounting NFS shares..."
nfs_share=/srv/nfs/kodi
ping -c4 $nfs_server 1>/dev/null
if [ $? -ne 0 ]
then
echo
echo "NFS Server $nfs_server address unreachable."
echo
exit 1
fi
system_mount="mount -t nfs -o nolock,tcp $nfs_server:$nfs_share $kodi_dir"
if ! `mountpoint -q $kodi_dir`
then
while ! `mountpoint -q $kodi_dir`
do
echo "kodi share not mounted"
$system_mount
status=$?
echo "Mount return code: $status"
if [ $status -ne 0 ]
then
echo "Mount Failed. Trying to mount again..."
echo
else
echo "...Mounted!"
echo
fi
done
else
echo "Already mounted"
echo
fi
2- Edit the "nfs_server" and "nfs_share" variables to suit your setup. You don't need to run this script, besides for testing purposes.
3- Create the script file /data/hack/kodi_nfs_install.sh with the code below
Code:
touch /data/hack/kodi_nfs_install.sh
chmod +x /data/hack/kodi_nfs_install.sh
Code:
#! /bin/sh
##################################################
#### Check for necessary software
##################################################
if [ ! -d /data/hack/bin ]
then
echo
echo "This script must be run on a Boxee with Boxee Hacks installed."
echo
exit 1
fi
##################################################
#### Mount and test NFS share
##################################################
nfs_base_dir=/tmp/mnt/kodi
nfs_temp_dir=$nfs_base_dir/tmp
sh /data/hack/mount.sh
#Test NFS mount
if ! `mountpoint -q $nfs_base_dir`
then
echo
echo "NFS share mount failure."
echo
exit 1
fi
# Test write permission in NFS mount
touch "$nfs_base_dir/test"
if [ ! -f "$nfs_base_dir/test" ]
then
echo
echo "Error writing to NFS mounted system directory."
echo
exit 1
fi
rm -r "$nfs_base_dir/test"
##################################################
#### Download needed files
##################################################
server="http://boxee-kodi.t28.net"
boxee_hacks_version=`cat /data/hack/version 2>/dev/null | sed -e 's/\.//g' -e :a -e 's/^.\{1,2\}$/&0/;ta'`
echo
echo "Downloading needed files..."
mkdir -p "$nfs_temp_dir"
wget -O $nfs_temp_dir/releases $server/releases.php
if [ ! -f "$nfs_temp_dir/releases" ]
then
echo
echo "Error downloading release list."
echo
exit 1
fi
rm -f /data/hack/bin/dialog
wget -O /data/hack/bin/dialog $server/dialog
if [ ! -f /data/hack/bin/dialog ]
then
echo
echo "Error downloading dialog."
echo
exit 1
fi
chmod +x /data/hack/bin/dialog
echo "...OK!"
sleep 1
dialog --ascii-lines --title " Warning " --yesno "\nThis script is provided without a warranty of any kind.\n\nMake sure you know how to perform a factory reset before proceeding, as this is the best way to save your Boxee in case it breaks.\n\nAre you sure you want to continue?" 18 70
if [ $? -gt 0 ]
then
echo
echo "Installation cancelled!"
exit 1
fi
killall xbmc.bin 2>/dev/null
sleep 1
umount -f /data/hack/xbmc/addons 2>/dev/null
umount -f /download/xbmc/portable_data 2>/dev/null
touch /data/hack/.skip_internal_xbmc
##################################################
#### Release selection menu
##################################################
options=`awk -F":" 'BEGIN { n=1 }; { printf "\"" n++ "\" \"[" $4 "] " $3 " " substr($2,0,47) "\" on " }' $nfs_temp_dir/releases`
cmd="dialog --ascii-lines --backtitle \"Release Selection\" --radiolist \"The following releases are sorted with the most recent first. Note that testing releases may not be as reliable.\n\nSelect a release to install with the arrow keys and spacebar.\nPress ENTER to confirm your selection.\" 15 80 15 $options 2>$nfs_temp_dir/release"
echo NONE>$nfs_temp_dir/release
eval $cmd
ret=$?
if [ $ret -eq 0 ]
then
build=`cat $nfs_temp_dir/releases | head -n\`cat $nfs_temp_dir/release\` | tail -n1 | cut -d: -f2`
else
echo "Installation cancelled!"
exit 1
fi
##################################################
#### Features selection menu
##################################################
dialog --ascii-lines --backtitle "Select features" --title " Features " --nocancel --ok-label Install --checklist "\nSelect which features you want to install using the arrow keys and spacebar.\n " 17 60 6 "Dropbear SSH Server" "" on "Reboot to Boxee from Power Menu" "" on "Erase Logs on Boot" "" on "Remove Telnet Password" "" off 2>$nfs_temp_dir/features
feat_dropbear=`cat $nfs_temp_dir/features | grep -c Dropbear`
feat_patchskin=`cat $nfs_temp_dir/features | grep -c Reboot`
feat_eraselogs=`cat $nfs_temp_dir/features | grep -c Erase`
feat_newshell=`cat $nfs_temp_dir/features | grep -c Remove`
clear
##################################################
#### Installation process
##################################################
echo "##################################"
echo "Starting installation process..."
echo "##################################"
if [ $feat_eraselogs -eq 1 ]
then
touch /data/hack/.erase_logs
else
rm -f /data/hack/.erase_logs
fi
mkdir -p /data/hack/bin
mkdir -p "$nfs_base_dir/addons"
mkdir -p "$nfs_base_dir/portable_data"
mkdir -p /data/hack/init.d
touch /data/hack/.xbmc_internal_data
echo
echo "Writing install files..."
echo "QlpoOTFBWSZTWVi9b1cAC1P/gH/eiIh//////+/f3/////5gFv1Y+h276DNPc3l2
g0upfWp61tO1sDX3C969IFHs3bL6aiQ2y2yqiiigBJ3dy2e7JPu9ysMkCBNME0GU
9RtTVP1PKn5TU/I9VNqeTFD1PKAAeoaemUeoPU0yAaaJoEyaTKMkE2ppk00DI9Q0
BoaADQAANAA0DTCoo/UpoeoD1AepoeoAHqDQ9QAAAGgAAAASakIino1PKYCm0aKe
nqaMp6PSj1NiRpoD1Gg8p4keo9T1GjID0CSVPRCGQPUZMnqYjQA0AAAADQGgAANA
BIiEBATTQATCBNNKflPRJ+qeTTU8U2p4oep+oyeinlPU0DRp6m3fGSE5mCyBA7iE
aqmSBDy9t9SbHn+jxrCNXx28mxv/M2+MDBdByR54RRtZfhfdL+TlzUenFNS3w5FR
4GNBfhd692985xiRQS9AsMt72athe6S1ha2IcgLK5TLXgCM1k1AYmHaaEtNIyBXO
gVTBBZKrNaPMS4xdRVZxJO/POH5xzkDForEXuvNI5DGCKWSYvFA3OULLakAKEhMY
bM5B1adIxacZUXIaKCRqvZmSEql8qiSV5BDijg1QE3arBrLUg0DWYzCECWRzyWGQ
Lydwr8zvISBBkg0xG4tYSDUmGC952Zyp2pcQqTlVUFFgZwFA0IGB5VRcO5vmd3Eq
hlS+VFWpgxTvzXGigXIJSFRQDZYvZCXraDSUSB0NY8lKZvrARhTpUsTi6vqulQR+
7q0VzigN6p7vQVf0o808P6sUMpGZF+PeVl0QRqAoVhHsdAobvf5cEEt8nbC7hf7+
Lj4OyNfK/DlgkJZOwMQgAhkkCSdiDAANuvWfxHr2si0JnoN7OMJuL7AMl1uj8L9a
gEMmSEp0YFgtPjwPdr1hP+LqTQkpE1oSSCIiFMIE5ddACCAHnqpIVwkIcCQ+k8x6
tSqurlJkjBkTtRjFBkNdpUUJDSdUP0soP8uRoO8cnXPe9uVd0q5ifej/D67W3SUF
ZDNxzG2kR6V7XQGUV2YhSCRYIvordDp3CbSEMseby8viLh2mTGODVVXvaESMKtB5
7cEpK7K16oEOGqKNvmt4FPJe8RJbNEZoOzYiRguPLbxe7i8NxcXIbhDGeTlvMOjf
TL7qSSGVBlZdRPAQWMJACcPMKayGGQbLTJls4hZBSThyf7xrrPde3OGCvu2KJB0A
M3h0ZRJPPoEXcP6iQGH2XC7jt3uQkz4NKfFwGpl3LtNLF2mbGENY8qInrdOcyRLj
pjKDImYvCHJoZZtMVAQb7BKVO2xDEnpyoJfsVsEc86Jy94z9zwc57n2KqLESaKpi
kWneC0p9NDRggfZWr3f9/KbDMDuCCPSH6g6jHaV7By9kEFyuG04kacBI2pXT8aJm
WGlqIVFwuQqMNq18+wKBbMRmQFN+62d0QGltm9wPUvX1LAZmdjY8ku6gqmDhcuJY
gb1sfv97wnTVqkGDDrdszz6dBXMK6p1zSSzfhhpHP4XemQ3MDBsiN+sdkqLToT/l
24CYsolAKvP2g+i3E7rbKsV7GwbBqQ15Skt7V2ea/SUlfxCxNi6EEssqOaov6cCJ
xpTcX2EQX3AzqdYP1N0ol775zrohynGMepwqgEZdkVOFYlqdjh2vY3RHCdFxysIk
ghTCDO7jdYkteHEBvjQc7aewtYKidANDKmILVYB4KGm8MOx4LvULGQvOfDhKrouT
U1hDpcOWXQM9vcpx7r6zziuaQjxDrLbqzpV8+jlGa/dMQgU4dFFieRc2bHJSHi01
2Pc70WuOUdHifqRO7A1SDWUgms5u+++VvOWtsNBfx3l4X3qAYOHDAh75lBL8cBG+
Cbr71XKT9WPgS6734n1WivdAJizBdlVRO/FWmU1/6MxPEg1DNUyWF1cdBXuujNL0
M44L8i7r+FfR91a5y8gBaS3mPEMF4us1tqI9/xSFHtjyTCGS4+EEcc04sowWB3RP
mHx4qRy1WHp6AsGQhk/vSaC5QUXd3Y/HvrbR8UhxKgoYmwNbEVM4AhobFLIQrooh
lOwGZKEFiAkn5EJSCHwsCoAsUBiowGRiCwiCKYNATI2pcDQsD5kgX2Mkj2wR/D7i
YKQUmAq6DcIbuRdMRCO5IJkmmQiU0ALqiCYTSJp+JcEFB5kiPWNFDM2dHp/k3JK3
kReWkzGEE2lMBQNvxWA27X15zExlmFE9ZUzkUDQFQdgmG7NZxFKqT9JSogpCpMIG
CKREeYzsBY5maBC4XqUFFQKjKIIUxWVAqQSJG1BaWoXpA1FCzQ35OMlpNRAOFIuL
87qYdSGWHase44bauG7iaGMDNbLnnrfC+b9fkNRnn+jx+Pc2PFQs3d41avnxyYJB
QHmO2FuhhHLqjkjbyXq7efFkASItEMYMGNgqweezQsC8LBip7p79SHTZFPRgZJzh
YpnqezP50BWOnAPpqoi1e9ZVn6tF7s072GTPo08+h7EDyp6U046MmipILXyR1of1
+Xvzz+f8Lw5vrzkPNEB8B5Q0rQeURz+vgqVYhgkQEWeTRnsn0bkIJObBmcrNOyFy
aF8XogjyROD2pe4jzLAJj1mabGoBEICkCKycFyqRnYv58yehjFjXB4ht5yKRTg22
iswjZUbaCBKFmxBJIIJJIYJHsdV6WJWKkI4GiWAUZprfdaJUOs0pSZmKUkbLcjEF
+HJu62ml1Fs9Hb3Ybs7R1ufmvtiuta7OXNAMAin4qZukKArJEhOJQ1JlGWxySgZW
Yb0aEwBAHxP28mxzdM0f+l3qPhIPOwNFO37zSVR3iQ+H5RI6We+FAaQm8mZMRJ6q
Rx7tQyhSi81+TSLj+gG5veYfrxZCxLAV0IuUjCC5/LEaZHEkqSTrHShRRSAiQHf2
5gQSrufqifA80yWup6EsUjtkSMYLIqFUxMTERBmg+2SYNB9K047R4DEhoorsvbXb
2us8O/jyCm0ey7EJQWoyF/D+IQYnssdfBBllD0gQGia1SpYuJzsJGPdc+TN23lSH
nawZMrJyfpJUFKQs6ela1LQFrHkcdA4KWLh308keM7KiEo4Iz0JNOeIgI6CXKzsT
2IlmBb9+pT03OH7mNFq81OKM5IyBIffawC1T/VJG5/uE1dOFKHr0i0CMYrW6mQKY
t3qwsR6VT7Rkd6gMU9t7EsNDm9MPGyZOVz+tCMCVRAY00RxM9sFtOSV6WCuDehBf
pZQJKbLfWBu0br5CgH450TqdeIxXzIMhxwktQmpjo1KjR1cCxXm+Duh3yLkBCiBb
2BakkwpNfXG0asUhAZhUUgoSwmrWV8hM6qgElfQZhiQEKNAeafq+oD10QwfWUShk
Rkn50iCASBEVVKjQLQD8xmlBSioRqJBJDmlAh7MUS00xJKGDhhQDpKhUSeItCkV7
ZAI+kJEGkQzSChIQz0JBKO4bSCYCyKGZcsBlD2eLiJBkovmoXPpJAvcxQdB4IqKo
J/86uJa43MLa1jAaRGg5RI1hiIPYkH4CgDx9ZelmBSE2GWThCM0U4mtVTU2yqZQ9
j5HuAMAOESJnqEr0A5tCSOE98SCp/4UDWJHELj8yUAGIfCCwSBratRc3URwk6NAO
4tQPmKgVD/0vgSLl4eASIIvW8tRUVEleXJjUICofG6pc5AjQVS67sEBWQl0IiHuS
CAM0glAMTowCSYLlJYOYNpc7ByEzM4IyM3uE0Uw/pgD1DHmILCQXheBqIQWqBRIs
kSNM6STa1grhPSEkgm0kQkECYXoNQBW342SPD2xJ+PbJLVj97Ea1c/o/Osp1gDIO
5jnmg2thsmFQ8Ovz170IejoEd4KCCQIB8ZIHmN8kEPkIRIwGRCQGMkJ0hBRUEApi
kWAKpaH4pFGAEQYBPmgMJPEgNNCAkTQgYMF8/1I9Ps/yn9vyR9bl7oJmXPjNSjGN
MIU7kijgK7GdUddkk3pMFX0TpihRyIAxkiT0QO3QHUJipXLXz2sW4eBTmRQY2NHJ
xhISIr+jQ2r/a8DD/M14nsA7tNR5SycIkrKIkykMaT7NH2SPBQ2P7HShn+YixQRO
j+8AwhuKMEHSAhIQEhlvO0B2OZpiSANlYRmqO5UJcB8CmQYTQBNUA+bujSncMQFo
bsDoPTwhRYD90SHwctE+r82BFYhrPLj2J/j5cpnUqFefS2JlJb2osa9rV4BWegsB
cuX2oiU0E3lwy9kyUQqtSfbQqNjoJVjAsGd80q0LpfFTF6ClvVXRyMKXkMYMXK1E
UrFYgiIDDCC+t8hcXXwyRSmJs2KgG4P181EUF86SxIUJNB5H8i326HBTvoogk+/4
iL3GQu+4XnzOYZLzQrHfGj/ggF5mrAdJeBCBnZmcCTNiDkDfwNITJQPP3ZcyIdwl
VghlLHU1w2lWURz3xKBFUVGJVVUEDkiR3z0XyM+iNhqot4tlFygLUhBUoaIR6eA4
tZcFbBAGZHSlzi6ls77ylJqiSWnWS8NF5qDcwxW3dosuJtrxqIYxNts92ZOqhK9D
+a/8mW68N53XX0Bs2A+kba6mUtfCkyjR/VhjSljOanAL4+dpZXoWnSIcoEpzKqHK
Vog0alZDdkTXNxjVtqiQQVsVWijGzAwwiLFvYN8NJuXIPSeoMee5fczx+oSXpcgp
T1cCMoHibSNx0dHHW6t+6CeWqw2ScSCeTDWMDs1nWdi96dNsDopIAU2Quy/PXV8m
Z1uY1Bx3aoS2n8t5pTeSom5LJxXJNTonHNZElMSmi1z6tMO00gOetzIY6dmTPyXA
a6SRAlU+3HxJFtaxNACu7T+YQdTJGdIc/dJsuFDQsRISKJScu0OyGsY1UqFQbdTb
ODieLA3Cqjz0WFIRmVRsHhBAGRgcZudeAy6oXIQMPBuqjcbhOfKvV2llcd0GL6E0
j1sh5LQK5NlGiMJTnDvRKA3ptgIsFYw6EfzGcW8vTGMJvLyI3mgQqI0SXgrXfBbw
VOTrEYd61TlhNxXPKQl5DyKKwUr6FS3hxRYskI9CwPT7ysKElXAuhYDV1AEqyrKz
BxbPNXtsQx70ktnkNt5HcNZ6hyF1uTRzd3f3t0B+CDs7Xae68cNy233j9Z1+VCDm
3I2OTm27KixGCEZJ6mB73Gc/3yg01sNTDBpfFYv3+/NVzdRi7ZYlKhpmCE2URRMA
93rRFAu58bzAGxtvDpVgMtaXXhVKCxY1egoSGcn1ShaLkILMRnkVNHAZrzcS0MXt
P4wFPPF5Y4MF42KBAwaMYiqIuTKhw5B74dZgSwHSDRF0UHDvKygNcwIbegxlVZui
EHOUDbOnPjALMYax1JFOlmaMC+4i565EWwRgIyzDAtYK5TGBibOYUkmcVC+hfNHS
5UFF5QibTQkVJAywz5ELTILiEjuwC9FCZt6zpVsVY1O7ArLbGXQRBdCJasUhTtwg
vFc08E3MQFp9g5q6CCTFlyaVHdYi6C/24BcXn57CDC2NwmSsC+ZkCUEl8UFQY18Y
kcWANIzsadXEIOZAhsOqhCUAtJXXIdDB1Vh8BxI5eXqz1gqWXm04ddM7HoYMG94s
GFNcAdOYgr/Wygtq2Gkpez4HpSbQeF6gfCvv2ajNiMVqJA8RBgu24S6fv3q2osY0
DbSAwFy0e7rC99bK1IN7f0k8gtSzszFU8ZGW61gx8AoGi36HgQvANNiHUWQFcVGN
L0Mau15iBFD4Wf2v3B+BlleLLQGppa9RPuJtwVOjkcC4d7WJhm52pcCSJaEKCJqa
CljVEtZoaoaDXamMFlgUW9FcaS15QCwhhGIkZAgGqSJD4NLEKb6NCrBadZddp1HN
lUqiDGc6GBkIzxvF0BdoC5GNT8GdlghBW2P1KSGlqpLwKBPrikSUNC12sm4tbXBZ
MWfjwG+8QWS6+5GwjjxwOyjAWgRCa7OxpLvi0IPgRCwA2TVU56xtBhtE2IVVI9XS
MXYnxHR1OtN2BwGeWukq+C+VNaHtd/v5SnwRUPuRVnw6jbuKIsJDTQD0PXIo1gaU
v3VhAlkZMUVeRdpGKT3w6AJ2tc3Hs2EQRENrT5OxGq7BY56N+IUIC1VAGBIGhMbQ
wq2S7U3CTMLEzWY0YawEi8INOUAFDSyaQqQwdaPLJ67lW1GKMbOBKoliKmVCoXDD
WcvyBW9F+ReGaXhs6FsNpcttgs4Liy6iiOtEgL1s5hkMEHceN+0wqVjRxBHOhAfM
APQR5xzHo6A8KTUNlYkwRinEFG3g5MUcbVFcxYqodfMgcTC715NBEJftYr41Q8CM
S9lx01Ou2QN6hn3HMn1RtDJIYDEqEVANoxUQdpCKdNylI/dcLFfBuCJJt0srqENZ
XyGZiTdnhiZzt75oppELI0ZcIE3wZFq3VuWvfcuTagW4RgmyBmMTxvY7X29jkZPd
MlVpW+Bcy16A10UadXvAtRUFf5QXqxFKaVBghGLPc3Enr49fe2zDroTSkwQ1MfLw
SIU8EZFK0KLOUopSwBPuCbT8kkJBILUYSqgBCAHt5U5+ryVWdzuDGv4mWJOmVOzy
79dfg7y0gAi2l6f69zhuMId/lt5wS84cF+ACcc3n15qwM265BBJQMyiAOTlRO+kQ
8ZNgH5P6/oV7c3sGGjL+5IvzKWPBJpZFj6n9KZiGLoTdK4st8ozyIHtuMeDauCkK
f5IzUaEcOxJoAgm0SdXh+PgnGkva7pVVIXmS23y78c59K9bO2m40cUAzBtsTNga4
e4g5qBQKchTeFbHRhhjWHwh2DIYL8bg+pYVgFeNkahrVwy/+LuSKcKEgsXrerg==" |
openssl enc -base64 -d | bunzip2 > /data/hack/bin/bar
chmod +x /data/hack/bin/bar
echo "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" |
openssl enc -base64 -d | gunzip > $nfs_temp_dir/read_input
mv $nfs_temp_dir/read_input /data/hack/bin/read_input 2>/dev/null
chmod +x /data/hack/bin/read_input
echo "H4sIAHaomlUCA61T3W/aMBB/xn/FLfDQSRtu+7C9ANJgX0i0VGsfplGEnORCLJK7
yDallfbHz0nIlKIydWr9YCm++33cL3b3DchQk7SpEN1nLtGFm1RbsJHRhQMVxxYU
BD8wZHbgGMZ8jxhA2ciF00yQGM7BpQg/xxcTuOIdGrhA2kK1us+XFtYp41aFclE6
JBaCErsKlcVVrM1QuryQOTm54VhXJYd5UZV67cayTwiTw/sEHhf8MExW2o2mfsSU
ZFukCOXH89NCftYq4/V46xxTab5/n2d9wp0Qu1RnCAZVDJkmFDGLjk5gAUGv/A5g
OIRgEGOdmA9kNOM1JwmEFdlAtksBLEXHZ0Wi02lP+4DWn5R8w8dcB8HDTG0pStEc
0IoOZhY9xd5Zi7s26AUq7Ub8iRGYokxHm9H1g/XJ9v0U8yQZyOa4hv/FN2absq1R
eI/RTml3ImPllExVtJGmmmHleBWWM/Rt+rZFW5IlWjztKVMhZqPb3mw++TSb/vqy
OD89O/+whNve9PLrfLEXLQwn/ieRynE5kDXmiN26eDzVPfifpu601WGGTVDflfVZ
abqODCLBb5iSwzWab/7OODQ3qaKTfetVbXTCW3LvznwKDdURtwdKE0W18xbwf5x6
m2uMyzt5TLd9JwPioGWmUaq3ShKjlKHSG41e4al5CMLghY9WiPzuFd79S138Adl+
/W58BQAA" |
openssl enc -base64 -d | gunzip > /data/hack/patch_skin.sh
chmod +x /data/hack/patch_skin.sh
echo "...OK!"
echo
echo "Getting $build KODI image..."
wget -O $nfs_temp_dir/build.md5 $server/$build/build.md5
if [ ! -f $nfs_temp_dir/build.md5 ]
then
echo
echo "Error downloading build.md5."
echo
exit 1
fi
echo "...OK!"
echo
echo "Downloading KODI image..."
wget -O $nfs_temp_dir/xbmc.sqfs $server/$build/xbmc.sqfs
echo "...OK!"
echo
echo "Verifying KODI image ..."
cd $nfs_temp_dir/
if [ `md5sum -c build.md5 2>&1 | grep -c OK` -eq 0 ]
then
echo
echo
echo "Error verifying XBMC image!"
echo
exit 1
fi
echo "...OK!"
# Backup existing portable_data folder
if [ -d $nfs_base_dir/portable_data ]
then
echo
echo "Backing up portable data..."
mkdir -p $nfs_temp_dir/portable_data_backup
cp -rf $nfs_base_dir/portable_data/* $nfs_temp_dir/portable_data_backup/
echo "...OK!"
fi
echo
echo "Copying system files..."
mkdir -p $nfs_temp_dir/squashfs
mount -o loop -t squashfs $nfs_temp_dir/xbmc.sqfs $nfs_temp_dir/squashfs
cp -rf $nfs_temp_dir/squashfs/* $nfs_base_dir/
echo "...OK!"
# Restore portable_data folder
if [ -d $nfs_temp_dir/portable_data_backup ]
then
echo
echo "Restoring portable data..."
cp -rf $nfs_temp_dir/portable_data_backup/* $nfs_base_dir/portable_data/
echo "...OK!"
fi
if [ -d $nfs_base_dir/addons/skin.confluence ]
then
dialog --ascii-lines --title " Warning " --yesno "\nIt appears you already have some addons installed, possibly from a previous install.\n\nIf you choose to keep the addons and have problems booting, please re-run the installer and choose NOT to keep the addons.\n\nWould you like to keep the current addons?" 13 70
ret=$?
clear
else
ret=1
echo
fi
if [ $ret -eq 1 ]
then
# user answered no -or- no addons installed
echo
echo "Getting $build KODI bundled addons..."
wget -O $nfs_temp_dir/addons.tar.bz2 $server/$build/addons.tar.bz2
echo "...OK!"
echo
echo "Verifying addons ..."
if [ `md5sum -c $nfs_temp_dir/build.md5 2>&1 | grep -c OK` -eq 0 ]
then
echo
echo
echo "Error verifying addons!"
echo
exit 1
fi
echo "...OK!"
echo
echo "Extracting bundled addons (this might take a while on slow drives) ..."
bar -n $nfs_temp_dir/addons.tar.bz2 | tar xjf - -C $nfs_base_dir/addons
echo "...OK!"
fi
if [ $feat_patchskin -eq 1 ]
then
echo
echo "Patching Confluence skin...";
sh /data/hack/patch_skin.sh
fi
if [ $feat_dropbear -eq 1 ]
then
echo
echo "Installing Dropbear...";
wget -O $nfs_temp_dir/dropbearmulti-i686 $server/dropbear/dropbearmulti-i686
mv $nfs_temp_dir/dropbearmulti-i686 /data/hack/bin/dropbearmulti-i686 2>/dev/null
chmod +x /data/hack/bin/dropbearmulti-i686
wget -O $nfs_temp_dir/bash $server/dropbear/bash-static
mv $nfs_temp_dir/bash /data/hack/bin/bash 2>/dev/null
chmod +x /data/hack/bin/bash
rm -f /data/hack/init.d/dropbear.sh
wget -O /data/hack/init.d/30dropbear.sh $server/dropbear/dropbear.sh
chmod +x /data/hack/init.d/30dropbear.sh
# backup and remove old dropbear startup script if present
if [ ! -f /data/hack/dropbear.sh.bak ]
then
if [ `cat /data/hack/boot.sh | grep -c /data/hack/dropbear.sh` -eq 1 ]
then
mv /data/hack/dropbear.sh /data/hack/dropbear.sh.bak 2>/dev/null
touch /data/hack/dropbear.sh
fi
fi
ln -sf /data/hack/bin/dropbearmulti-i686 /data/hack/bin/dropbear
ln -sf /data/hack/bin/dropbearmulti-i686 /data/hack/bin/ssh
ln -sf /data/hack/bin/dropbearmulti-i686 /data/hack/bin/dropbearkey
ln -sf /data/hack/bin/dropbearmulti-i686 /data/hack/bin/dropbearconvert
ln -sf /data/hack/bin/dropbearmulti-i686 /data/hack/bin/scp
if [ ! -f /data/hack/.ssh/id_rsa ]
then
mkdir -p /data/hack/.ssh
/data/hack/bin/dropbearkey -t rsa -f /data/hack/.ssh/id_rsa
fi
echo "...OK!"
fi
if [ $feat_newshell -eq 1 ]
then
echo
echo "Removing Telnet password...";
echo "H4sIAMt0NVMCA41TUWvbMBB+jn7FVQsEOhy1ryl5SEkggWwtaWkpZaSqfI7FFEmT
lC1Q+t/r2JadOhSmB6Hv7jvd3XfStzP2KjXzObmfz24n9/PxgKU8cJZz8fvgGjFj
A1NGcFXBnXddWB46XN8ht7g61btw0gY/ICQzDjKQGqr0Vu02Unt2fgWpIVAvmcEz
JCn037L3Q0L4dQUhR90Q4orN0Mgc9d9q2ztt2JkkqdFICO6tcQFiSMusHcvperm4
Xk1WT+tKo+HoSCUlX487L2HbeAsPh7ixjQ8O+RZdcjG8vOjEsz9hEHPPb37MjofS
OGY/H6Idg2BD60wmFRZaVjIhsLC1rFAxcKWGPi/UIqVave3fE18Hr91Oa6k3pFe/
j68JuJeBFFK2aZuaLPf+X9rmfZgsF9NCwru7x5vVdPySI08h0XB5EvNCSM+VXg+J
BXp7sBqXjoBCjCeoPJJecx0/ScDLulDkBiit6qP96KUwHhfwcwg9eVJVdPLFoh0e
PKISZosQDFybPeL3eTEzD/S/72uIIoV26o01ftey9893LrQwzqEIYGu1aNn/B48k
l4jkAwAA" | openssl enc -base64 -d | gunzip > /data/hack/shell.sh
rm -f /data/etc/passwd
echo "...OK!"
fi
echo
echo "Creating startup scripts ...";
echo "#! /bin/sh
touch /data/hack/.skip_internal_xbmc
reboot" > /data/hack/reboot_to_boxee.sh
chmod +x /data/hack/reboot_to_boxee.sh
echo "...OK!"
echo "H4sIAIFYm1UCA5VUW0/bMBR+rn/FWUGdhpS6wKYNUJGAVXQatDywaQih1LFPG6uu
ncVOodJ+/Oy0Kc3obpYSJefyndvns/MKaCI1tSkhemzjhFmMhcy71M0yOtOOTo2Q
hMgx3EM0BiqYYzRlfErbmAdjZSYWHohLUZNGPvMW5lErwwR9SmacZiZ3LFEeNDg6
9KhB3t7zfntk7KF3gKfIp+AMWETwkQqLOaRGCaknwCDHmXEIU1wQjx+SCLnlyARx
puDpxv9GeqGqIIulzgrn08I5LT8pzlG7DuzD6bMntEhhFWIG+51wyFQqxZSCDYiD
0xJEF0oRwn3t0Bxx5p5BRk2QmsDqNPc7H44/9+7i/vDqYxPewA6kqASE/kAEiTHO
m/uqQz/WXtVZVbrRbjuVmc/EYa6ZioMTnJxsRjvcFq3IarES84T4ItiqjX8Nhpbx
7VzYYl9xwtaQ7ULz2MkZtr28RTbK/TPc2hKfpFvxRkgbqLUsChQrtGdSTmam0A4i
X6zUAn6hRMJyoCZztHSi5+F9VXl6zDD3FaCvU7rXFqxjuUMBTIUhLwhFx2nOD9uC
fjl6W9qmTHkzk9V1R0ucUlHxqQzYZ6ouWGdQkz6TsNBxidUO9/Qxlb7oe3B5gb7L
wpBGOZJRZiE6gx8wyT2PI14Sq+2LHkGE36EDD9BqbbMLV7xmRxrL0TW4gN3NteBF
y+ljXU6rUMG3cm74/26z0jS9BJXFtaKKGhRhno1Gf3jd69Zw4fJiOPga35zd9usK
OuFGz+GsF/cGl58GvS7jTs4Rbu5u+8PBFvts4VKjD9rvj38jp0omkViUq2sF8zKf
/4T5dn59EW+pqu67G/oWRZ5mWjBlNEKU+WVzWu6Vsn1+V/r2LPfTO7Iewj9cwfUw
atenbHh4hI9GyE/KWLlXBQYAAA==" | openssl enc -base64 -d | gunzip > /data/hack/init.d/99xbmc_launch.sh
chmod +x /data/hack/init.d/99xbmc_launch.sh
rm -f /data/hack/init.d/xbmc_launch.sh
echo "H4sIAMbwJFMCA5WQTU+DQBCGz+yveKUlVSuQxuil4WLi10FPXoxtBJahrMBSd5cW
v/67C21SryZ7mJl355l3ZnSEMBUy1AVjI/0hOXjV8JJtC1ERXmBUS1iyrGGOIhPF
0qyzxBD8FjYM2rSVpg14U+MbK0Vr+BxJ9tZqEzNH5JYwtn3w6R0zLOcwBUnmOKmi
pJwzhypNNtUV2dYL5uTCjpJkveSi21lB3ih0ac1hcZIoo4yxgeyOZy6iaCcu2Q49
KH6O0NpMwiLhZRhY1qsRdb+IszdAvGhwIzohVxikIAiYrY94IzekDEyDVloPvdg7
JK6jmLq1wiIeLjD19CLG9JB+2tQ9dXF+GQ8kbffuJRsPP+JkW8LfQEfjnobJ1fXt
/SO+sFZCGmij8n7YsevVXubdeQ/es3sGfTLHz+RA3Pv5J/HpD6k/sn2/Q0B6bvoB
AAA=" | openssl enc -base64 -d | gunzip > /data/hack/sync_time.sh
chmod +x /data/hack/sync_time.sh
rm -f /data/hack/.skip_internal_xbmc
# disable the checkxbmc.sh script, if it hasn't been already
if [ `grep -c "^sh /data/hack/checkxbmc.sh" /data/hack/boot.sh` -gt 0 ]
then
cat /data/hack/boot.sh | sed 's/sh \/data\/hack\/checkxbmc.sh/\#sh \/data\/hack\/checkxbmc.sh/g' > /data/hack/boot.sh
fi
# init.d launch script not present - we will make one
echo "IyEgL2Jpbi9zaAoKZmluZCAvZGF0YS9oYWNrL2luaXQuZCAtdHlwZSBmIHwgc29y
dCB8IHdoaWxlIHJlYWQgbGluZQpkbwoJc2ggJGxpbmUKZG9uZQo=" |
openssl enc -base64 -d > /data/hack/xbmc_launch.sh
chmod +x /data/hack/xbmc_launch.sh
# add our xbmc launch script, if not there already
if [ `grep -c "^sh /data/hack/xbmc_launch.sh" /data/hack/boot.sh` -eq 0 ]
then
echo "sleep 10" >> /data/hack/boot.sh
echo "sh /data/hack/xbmc_launch.sh &" >> /data/hack/boot.sh
echo "sh /data/hack/mount.sh &" >> /data/hack/boot.sh
fi
umount $nfs_temp_dir/squashfs
rm -rf $nfs_temp_dir
echo
echo -n You must reboot to complete the installation.
while true; do
echo
read -p "Reboot now (Y or N)? " yn
case $yn in
[Yy]* ) reboot; break;;
[Nn]* ) echo; exit 0;;
* ) echo "Please answer Y or N.";;
esac
done
4- Run the install script
Code:
./kodi_nfs_install.sh
5- Reboot... and that's it!