remove create_installsrtick* / create_sdcard

This commit is contained in:
Stefan Saraev 2015-02-06 20:50:13 +02:00
parent e60b36917a
commit f857087f89
24 changed files with 0 additions and 1878 deletions

View File

@ -1 +0,0 @@
Installation instructions can be found on http://wiki.openelec.tv/index.php?title=Installation

View File

@ -1,239 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
# usage: sudo ./create_sdcard <drive>
# example: sudo ./create_sdcard /dev/sdb
if [ "$(id -u)" != "0" ]; then
clear
echo "#########################################################"
echo "# please execute with 'sudo' or -DANGEROUS!!!- as root #"
echo "# example: sudo ./create_sdcard <drive> #"
echo "#########################################################"
exit 1
fi
if [ -z "$1" ]; then
clear
echo "#########################################################"
echo "# please execute with your drive as option #"
echo "# example: sudo ./create_sdcard /dev/sdb #"
echo "# or: sudo ./create_sdcard /dev/mmcblk0 #"
echo "#########################################################"
exit 1
fi
DISK="$1"
case $DISK in
"/dev/mmcblk"*)
PART1="${DISK}p1"
PART2="${DISK}p2"
;;
*)
PART1="${DISK}1"
PART2="${DISK}2"
;;
esac
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv USB Installer #"
echo "# #"
echo "#########################################################"
echo "# #"
echo "# This will wipe any data off your chosen drive #"
echo "# Please read the instructions and use very carefully.. #"
echo "# #"
echo "#########################################################"
# check for some required tools
# this is needed to partion the drive
which parted > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"parted\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to format the drive
which mkfs.vfat > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"mkfs.vfat\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to format the drive
which mkfs.ext4 > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"mkfs.ext4\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to tell the kernel for partition changes
which partprobe > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"partprobe\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to tell the kernel for partition changes
which md5sum > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"md5sum\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# check MD5 sums
echo "checking MD5 sum..."
md5sumFailed()
{
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv failed md5 check - Installation will quit #"
echo "# #"
echo "# Your original download was probably corrupt. #"
echo "# Please visit www.openelec.tv and get another copy #"
echo "# #"
echo "#########################################################"
exit 1
}
md5sum -c target/KERNEL.md5
if [ "$?" = "1" ]; then
md5sumFailed
fi
md5sum -c target/SYSTEM.md5
if [ "$?" = "1" ]; then
md5sumFailed
fi
# (TODO) umount everything (if more than one partition)
umount ${DISK}*
# remove all partitions from the drive
echo "writing new disklabel on $DISK (removing all partitions)..."
parted -s "$DISK" mklabel msdos
# create a single partition
echo "creating partitions on $DISK..."
parted -s "$DISK" mkpart primary fat32 -- 0 256MiB
# align the partition on 4mb boundary, starting at 260mb (260 % 4 == 0), which
# is right after the first partition
parted -s "$DISK" mkpart primary ext2 -- 260MiB -2cyl
# make partition active (bootable)
echo "marking partition active..."
parted -s "$DISK" set 1 boot on
# tell kernel we have a new partition table
echo "telling kernel we have a new partition table..."
partprobe "$DISK"
# create filesystem
echo "creating filesystem on $PART1..."
mkfs.vfat "$PART1" -I -n System
# create ext4 partition with optimized settings for running on flash/sd
# See http://blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card/ for reference.
echo "creating filesystem on $PART2..."
mkfs.ext4 -O ^has_journal -E stride=2,stripe-width=1024 -b 4096 "$PART2" -L Storage
# mount partition
echo "mounting partition $PART1 ..."
rm -rf /tmp/openelec_install
mkdir -p /tmp/openelec_install
mount -t vfat "$PART1" /tmp/openelec_install
MOUNTPOINT=/tmp/openelec_install
# create bootloader configuration
echo "creating bootloader configuration..."
echo "boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 quiet" > $MOUNTPOINT/cmdline.txt
# copy files
echo "copying files to $MOUNTPOINT..."
cp target/KERNEL $MOUNTPOINT/kernel.img
cp target/SYSTEM $MOUNTPOINT
cp -r 3rdparty/bootloader/* $MOUNTPOINT
cp openelec.ico $MOUNTPOINT
cp README.md $MOUNTPOINT
# sync disk
echo "syncing disk..."
sync
# unmount partition
echo "unmounting partition $MOUNTPOINT ..."
umount $MOUNTPOINT
# cleaning
echo "cleaning tempdir..."
rmdir $MOUNTPOINT
echo "...installation finished"

View File

@ -1,4 +0,0 @@
f 1
w
q
EOF

View File

@ -1 +0,0 @@
http://www.etree.org/md5com.html

View File

@ -1,109 +0,0 @@
To install this tarball you must have:
- an computer or anything that can run linux, have an tv or monitor attached
via vga/dvi/hdmi/displayport
- an flash or harddrive attached via usb/sata/ide with at least 128mb free
diskspace for kernel and systemimage on your bootdrive and many many diskspace
for your data (movies, pictures, music...)
- 2 partitions formatted with ext3, ext4, vfat
- an bootmanager (grub, syslinux, extlinux) installed
Installation:
- copy target/KERNEL (the kernel, that contains an initramfs) and
target/SYSTEM (an squashfs image) to the first partition (bootpartion) which
is formatted ext3/ext4/vfat (this can also be an USB-Stick). You can also
copy this files to an already running Linux system so you can configure
an dualboot system (Files must be copied to root of the bootpartion)
- setup the bootloader (example is for grub - other examples you find in
sample.conf dir):
# Begin of example for grub
title OpenELEC
root (hd0,0)
kernel /openelec.kernel boot=/dev/sda1 disk=/dev/sda5 quiet
title OpenELEC - Textmode
root (hd0,0)
kernel /openelec.kernel boot=/dev/sda1 disk=/dev/sda5 quiet textmode
title OpenELEC - Debugging
root (hd0,0)
kernel /openelec.kernel boot=/dev/sda1 disk=/dev/sda5 debugging
title OpenELEC - Textmode Debugging
root (hd0,0)
kernel /openelec.kernel boot=/dev/sda1 disk=/dev/sda5 textmode debugging
# End of example
boot=: points to the partition where is KERNEL AND SYSTEM (bootpartion)
disk=: point to any ext3/ext4 partition that mounts r/w for data (your $HOME)
textmode: starts a shell instead Xorg - you can start Xorg and XBMC manually
(for debugging or if you have problems with Xorg)
debugging: starts debug mode with more output and more and better logging
(for debugging or if you have problems with anything)
bootchart: starts bootchart logging at beginning of start process
(for debugging or if you have problems with anything)
quiet: Kernel boots quiet
- restart your system and try
If you have problems:
- if kernel not load or you have an kernel panik try boot without "quiet"
command and see what is wrong.
- if Xorg does not start try with "textmode" and "debugging", see what is wrong
- if XBMC does not start try with "textmode" and "debugging", try starting
Xorg manually at commad prompt with "Xorg &" then try start XBMC manually with
"DISPLAY=:0.0 /usr/bin/xbmc --standalone" and see what is wrong.
Note:
- i have tested this only with pure Intel Hardware (Lenovo X61s, X61t, X200
Gigabyte MiniITX GA-6QPCV-R, Intel E1000 Network, Core2Duo, Centrino etc...)
- if your NIC works, then very good with DHCP, WLAN must be configured, but is
not tested.
- You can do a login via SSH (IP adress you can see on console with "ifconfig"
or within XBMC). SSH login is "root", password is "openelec".
- you cannot start this version from optical drives, because the needed
drivers are loading as modules with udev. This can be changed later, but for
the OpenELEC.tv project this is not allowed.
- all data that will be created you found in /var or at your $HOME at /storage.
- your home is /storage (the second ext3/ext4 partiton)
- for any update create an directory /storage/.update and copy KERNEL and SYSTEM
to /storage/.update (from console or via ssh/scp). On next reboot system will
be automatically updated and reboot.
- you have in textmode a console on tty1 AND tty3 (switch via CTRL+ALT+F1/F3 and
in graphicmode only on tty3 (tty1 is the console for Xorg)
- all dirs are readonly (only /storage and /var are r/w)
- automounting of filesystems works with XBMC, but there are some issues with
this (mountpoint will be not deleted, mounting of CD/DVD ROM not working).
filesystems will be mounted to /media.
i will be switch to devicekit-disk/ consolekit in the future.
- more or not more informations you can find on www.openelec.tv
- go to launchpad to see what i am doing or what i have changed
- comments and questions are welcome, help is better, and patches are perfect!!!
- the splash i have created with gimp - I have no idea of gimp - but I am
proud of the splash :-)))
- i hope you have understand me, I have no idea of english too ;-)
happy XBMC'ing
Stephan

View File

@ -1,266 +0,0 @@
#!/bin/sh
################################################################################
# Copyright (C) 2009-2010 OpenELEC.tv
# http://www.openelec.tv
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
# usage: sudo ./create_installstick <drive>
# example: sudo ./create_installstick /dev/sdb
if [ "$(id -u)" != "0" ]; then
clear
echo "#########################################################"
echo "# please execute with 'sudo' or -DANGEROUS!!!- as root #"
echo "# example: sudo ./create_installstick <drive> #"
echo "#########################################################"
exit 1
fi
if [ -z "$1" ]; then
clear
echo "#########################################################"
echo "# please execute with your drive as option #"
echo "# example: sudo ./create_installstick /dev/sdb #"
echo "#########################################################"
exit 1
fi
DISK="$1"
### If DISK ends with a number, add "p1" instead of "1" for the first partition
case ${DISK#${DISK%?}} in
([0-9]) PART="${DISK}p1";;
(*) PART="${DISK}1";;
esac
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC LIVE Installer #"
echo "# #"
echo "#########################################################"
echo "# #"
echo "# This will wipe any data off your chosen drive #"
echo "# Please read the instructions and use very carefully.. #"
echo "# #"
echo "#########################################################"
# check for some required tools
# this is needed to create a bootloader
which syslinux > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"syslinux\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed by syslinux
which mcopy > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"mcopy\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# NOTE: Some distributions call this package #"
echo "# \"mtools\". #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to partion the drive
which parted > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"parted\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to format the drive
which mkfs.vfat > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"mkfs.vfat\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# check MD5 sums
echo "checking MD5 sum..."
md5sumFailed()
{
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC failed md5 check - Installation will quit #"
echo "# #"
echo "# Your original download was probably corrupt. #"
echo "# Please visit www.openelec.tv and get another copy #"
echo "# #"
echo "#########################################################"
exit 1
}
md5sum -c target/KERNEL.md5
if [ "$?" = "1" ]; then
md5sumFailed
fi
md5sum -c target/SYSTEM.md5
if [ "$?" = "1" ]; then
md5sumFailed
fi
# nautilus/dolphin do late-mounting sometimes
# so race could happen (thanks Klojum)
echo "please wait..."
sleep 10
# quick and dirty: assume no more than 10 partitions. should be enough
for i in `seq 1 10` ; do
umount "${DISK}$i" 2>/dev/null
umount "${DISK}p$i" 2>/dev/null
done
# create a temp dir
OE_TMP=$(mktemp -d)
# remove all partitions from the drive
echo "writing new disklabel on $DISK (removing all partitions)..."
dd if=/dev/zero of="$DISK" bs=4096 count=1024
parted -s "$DISK" mklabel msdos
# create a single partition
echo "creating a partition on $DISK..."
parted -s "$DISK" unit cyl mkpart primary fat32 -- 0 -0
# make partition active (bootable)
echo "marking partition active..."
parted -s "$DISK" set 1 boot on
# tell kernel we have a new partition table
echo "telling kernel we have a new partition table..."
partprobe "$DISK"
# create filesystem
echo "creating filesystem on $PART..."
mkfs.vfat "$PART" -n OpenELEC
# install syslinux
echo "installing syslinux to $PART..."
syslinux -f "$PART"
# mount partition
echo "mounting partition $PART on $OE_TMP..."
mkdir -p $OE_TMP
mount "$PART" $OE_TMP
# find UUID
echo -n "finding partition UUID for $PART ..."
UUID=`blkid $PART -s UUID -o value`
echo "$UUID"
# create bootloader configuration
echo "creating bootloader configuration..."
cat >$OE_TMP/syslinux.cfg << EOF
PROMPT 0
DEFAULT installer
LABEL installer
KERNEL /KERNEL
APPEND boot=UUID=$UUID installer quiet tty
EOF
# copy files
echo "copying files to $PART..."
cp target/KERNEL $OE_TMP
cp target/KERNEL.md5 $OE_TMP
cp target/SYSTEM $OE_TMP
cp target/SYSTEM.md5 $OE_TMP
# cp Autorun.inf $OE_TMP
cp openelec.ico $OE_TMP
cp CHANGELOG $OE_TMP
cp INSTALL $OE_TMP
cp README.md $OE_TMP
cp RELEASE $OE_TMP
# sync disk
echo "syncing disk..."
sync
# unmount partition
echo "unmounting partition $PART..."
umount "$PART"
# write mbr
echo "writing mbr..."
if [ -f /usr/lib/syslinux/mbr.bin ]; then
MBR="/usr/lib/syslinux/mbr.bin" # example: debian, ubuntu
elif [ -f /usr/share/syslinux/mbr.bin ]; then
MBR="/usr/share/syslinux/mbr.bin" # example: fedora
elif [ -f /usr/lib/syslinux/bios/mbr.bin ]; then
MBR="/usr/lib/syslinux/bios/mbr.bin" # example: arch
elif [ -f /usr/lib/syslinux/mbr/mbr.bin ]; then
MBR="/usr/lib/syslinux/mbr/mbr.bin" # example: Debian Jessie
else
echo "ERROR: Can't find syslinux's mbr.bin on Host OS" >&2
fi
if [ -n "$MBR" ]; then
cat "$MBR" > "$DISK"
fi
# syncing disk
echo "syncing disk..."
sync
# cleaning
echo "cleaning tempdir..."
rmdir $OE_TMP
echo "...installation finished"

View File

@ -1,170 +0,0 @@
@ECHO OFF
TITLE OpenELEC LIVE USB Installer
mode con:cols=67 lines=17
COLOR 17
SET DRIVE=
:checkPrivileges
mkdir "%windir%\OEAdminCheck"
if '%errorlevel%' == '0' (
rmdir "%windir%\OEAdminCheck" & goto gotPrivileges
) else ( goto getPrivileges )
:getPrivileges
CLS
ECHO.
ECHO.
ECHO OpenELEC LIVE USB Installer
ECHO.
ECHO.
ECHO *****************************************************************
ECHO.
ECHO Administrator Rights are required for USB Stick creation
ECHO Invoking UAC for Privilege Escalation
ECHO.
ECHO *****************************************************************
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute %0, "", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs"
exit /B
:gotPrivileges
if exist "%temp%\OEgetPrivileges.vbs" ( del "%temp%\OEgetPrivileges.vbs" )
pushd "%~dp0"
:HashCheck
".\3rdparty\md5sum\md5sum.exe" -c ".\target\SYSTEM.md5"
IF ERRORLEVEL 1 GOTO BadMD5
".\3rdparty\md5sum\md5sum.exe" -c ".\target\KERNEL.md5"
IF ERRORLEVEL 1 GOTO BadMD5
:InstallOE
CLS
ECHO.
ECHO.
ECHO OpenELEC LIVE USB Installer
ECHO.
ECHO.
ECHO *****************************************************************
ECHO.
ECHO This WILL wipe ALL data off the selected drive
ECHO Please use carefully...
ECHO.
ECHO *****************************************************************
ECHO.
ECHO.
:SelectDrive
ECHO Enter USB Drive letter
ECHO eg. d:
ECHO.
SET /P DRIVE= --
IF NOT DEFINED DRIVE goto InvalidDrive
if %DRIVE%==c: goto InvalidDrive
if %DRIVE%==C: goto InvalidDrive
CLS
ECHO.
ECHO.
ECHO OpenELEC LIVE USB Installer
ECHO.
ECHO.
ECHO *****************************************************************
ECHO.
ECHO Installing OpenELEC to %DRIVE%
ECHO Please wait approximately 20 seconds...
ECHO.
ECHO *****************************************************************
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO. | >NUL format %DRIVE% /V:OPENELEC /Q /FS:FAT32 /X
IF ERRORLEVEL 1 goto InvalidDrive
>NUL 3rdparty\syslinux\win32\syslinux.exe -f -m -a %DRIVE%
>NUL copy target\* %DRIVE%
>NUL copy CHANGELOG %DRIVE%
>NUL copy INSTALL %DRIVE%
>NUL copy README.md %DRIVE%
>NUL copy RELEASE %DRIVE%
>NUL copy openelec.ico %DRIVE%
FOR /F "tokens=5" %%G IN ('vol %DRIVE% ^|find "-"') DO SET DRIVEUUID=%%G
ECHO PROMPT 0 >> %DRIVE%\syslinux.cfg
ECHO DEFAULT installer >> %DRIVE%\syslinux.cfg
ECHO. >> %DRIVE%\syslinux.cfg
ECHO LABEL installer >> %DRIVE%\syslinux.cfg
ECHO KERNEL /KERNEL >> %DRIVE%\syslinux.cfg
ECHO APPEND boot=LABEL=OPENELEC installer quiet tty >> %DRIVE%\syslinux.cfg
ECHO. >> %DRIVE%\syslinux.cfg
GOTO END
:InvalidDrive
CLS
ECHO.
ECHO.
ECHO OpenELEC LIVE USB Installer
ECHO.
ECHO.
ECHO *****************************************************************
ECHO.
ECHO Invalid Drive Selected...
ECHO Please confirm the drive letter of your USB stick
ECHO.
ECHO *****************************************************************
ECHO.
ECHO.
GOTO SelectDrive
:BadMD5
CLS
ECHO.
ECHO.
ECHO OpenELEC LIVE USB Installer
ECHO.
ECHO.
ECHO *****************************************************************
ECHO.
ECHO OpenELEC failed md5 check - Installation will now quit
ECHO.
ECHO Your original download is probably corrupt
ECHO Please visit www.openelec.tv and download another copy
ECHO.
ECHO *****************************************************************
ECHO.
ECHO.
ECHO.
PAUSE
EXIT
:END
CLS
ECHO.
ECHO.
ECHO OpenELEC LIVE USB Installer
ECHO.
ECHO.
ECHO *****************************************************************
ECHO.
ECHO The OpenELEC LIVE USB Installer has been successfully copied to %DRIVE%
ECHO Please boot your HTPC off this USB stick
ECHO.
ECHO *****************************************************************
ECHO.
ECHO.
ECHO.
ECHO.
popd
SET DRIVE=
SET DRIVEUUID=
PAUSE

View File

@ -1,227 +0,0 @@
#!/bin/bash
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
# Copyright (C) 2011-2013 Christian Hewitt (chewitt@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
VERBOSE="FALSE" # set to TRUE to put this script in debug mode
banner(){
clear
echo ""
echo "********************************************************************************"
echo "* *"
echo "* Welcome to the OpenELEC Mac OS X Livestick Creator! *"
echo "* *"
echo "********************************************************************************"
}
check_root(){
if [ $UID != 0 ];then
echo ""
echo "FAIL: This script *must* be run as root!"
echo ""
exit 1
fi
}
check_runlocation(){
SCRIPT=$(pwd)
}
check_localtargetfolder(){
if [ ! -f target/SYSTEM -a ! -f target/KERNEL ]; then
echo ""
echo "FAIL: Could not detect SYSTEM and KERNEL files. This script *must* be run from"
echo " the root folder of the OpenELEC image you downloaded!"
echo ""
exit 1
fi
}
check_distro(){
DISTRO=$(uname -s)
if [ $DISTRO != "Darwin" ]; then
echo ""
echo "FAIL: This script is only for Mac OS X systems, aborting!"
echo ""
exit 1
fi
}
read_input(){
local MESSAGE="${1}"
if [ -n "${MESSAGE}" ];then
echo -n "${MESSAGE}"
fi
read INPUT
}
check_target(){
echo ""
echo "INFO: The following drives are available to create the OpenELEC USB on:"
echo ""
diskutil list | grep 0: | grep -v disk0 | awk '{print "/dev/"$5 " "$3 $4}'
echo ""
while [ -z ${INPUT} ];do
read_input "INFO: Please enter the target device (e.g. /dev/disk1): "
echo ""
done
TARGET=${INPUT}
}
warning(){
local OUTPUT
OUTPUT=$(fdisk ${TARGET} 2>/dev/null)
if [ -z "${OUTPUT}" ];then
echo "FAIL: Installation aborted! Device ${TARGET} is invalid"
echo ""
exit 1
else
diskutil list ${TARGET}
echo ""
fi
CONTINUE=""
echo -n "WARN: Continuing will erase all data from $TARGET, continue? (Y/n): "
read CONTINUE
if [ "${CONTINUE}" = "N" -o "${CONTINUE}" = "n" -o "${CONTINUE}" = "" ]; then
echo ""
echo "FAIL: Installation aborted!"
echo ""
exit 1
elif [ "${CONTINUE}" = "Y" -o "${CONTINUE}" = "y" ]; then
echo ""
fi
}
logoutput(){
if [ "${VERBOSE}" = "TRUE" ]; then
exec 3>&1
exec 4>&2
else
exec 3> /dev/null
exec 4> /dev/null
fi
}
unmount_target(){
for i in $(jot 10 1 10); do
MOUNTED=$(mount | grep ${TARGET})
if [ -z "${MOUNTED}" ]; then
break
else
diskutil unmountDisk ${TARGET} 1>&3 2>&4
sleep 1
fi
done
}
mount_target(){
for i in $(jot 10 1 10); do
MOUNTED=$(mount | grep ${TARGET})
if [ -z "${MOUNTED}" ]; then
diskutil mountDisk ${TARGET} 1>&3 2>&4
sleep 1
else
break
fi
done
}
prepare_target(){
echo "INFO: Erasing existing partition schemes on ${TARGET}"
dd if=/dev/zero of=${TARGET} bs=512 count=100 1>&3 2>&4
gpt destroy ${TARGET} 1>&3 2>&4
echo "INFO: Creating MBR 'OPENELEC' disk on ${TARGET}"
diskutil eraseDisk MS-DOS OPENELEC MBR ${TARGET} 1>&3 2>&4
unmount_target
chmod 755 3rdparty/macfiles/*
cat 3rdparty/macfiles/mbr.bin > ${TARGET}
mount_target
3rdparty/macfiles/syslinux-mac -f --install ${TARGET}s1 1>&3 2>&4
}
create_partitions(){
unmount_target
echo "INFO: Creating partitions"
fdisk -e ${TARGET} < 3rdparty/macfiles/fdisk.input 1>&3 2>&4
}
check_checksums(){
MD5_KERNEL=$(md5 target/KERNEL | awk '{print $4}')
MD5_SYSTEM=$(md5 target/SYSTEM | awk '{print $4}')
KERNEL_DOT_MD5=$(cat target/KERNEL.md5 | awk '{print $1}')
SYSTEM_DOT_MD5=$(cat target/SYSTEM.md5 | awk '{print $1}')
if [ "${MD5_KERNEL}" = "${KERNEL_DOT_MD5}" -a "${MD5_SYSTEM}" = "${SYSTEM_DOT_MD5}" ]; then
echo "INFO: MD5 checksums for SYSTEM and KERNEL match"
else
echo "FAIL: MD5 checksums for SYSTEM and KERNEL do not match!"
exit 1
fi
}
copy_files(){
mount_target
echo "INFO: Copying SYSTEM and KERNEL files to 'OPENELEC'"
cp -a target/KERNEL /Volumes/OPENELEC/
cp -a target/SYSTEM /Volumes/OPENELEC/
echo "INFO: Creating syslinux.cfg on 'OPENELEC'"
cat >/Volumes/OPENELEC/syslinux.cfg << EOF
PROMPT 0
DEFAULT installer
LABEL installer
MENU LABEL Run OpenELEC Installer
KERNEL /KERNEL
APPEND boot=LABEL=OPENELEC installer quiet tty vga=current
EOF
}
check_filesystem(){
unmount_target
echo "INFO: Checking filesystem on ${TARGET}"
fsck_msdos -y ${TARGET}s1 1>&3 2>&4
unmount_target
}
end(){
echo ""
echo "INFO: Livestick USB creation is complete!"
echo ""
}
main(){
check_root
check_runlocation
check_localtargetfolder
check_distro
check_target
warning
logoutput
unmount_target
prepare_target
create_partitions
check_checksums
copy_files
check_filesystem
}
banner
main
end
exit 0

View File

@ -1,6 +0,0 @@
DEFAULT linux
PROMPT 0
LABEL linux
KERNEL /KERNEL
APPEND boot=LABEL=BOOT disk=LABEL=STORAGE quiet

View File

@ -1,7 +0,0 @@
default=0
timeout=0
hiddenmenu
title OpenELEC.tv
root (hd0,0)
kernel /KERNEL boot=LABEL=BOOT disk=LABEL=STORAGE quiet

View File

@ -1,6 +0,0 @@
DEFAULT linux
PROMPT 0
LABEL linux
KERNEL /KERNEL
APPEND boot=LABEL=BOOT disk=LABEL=STORAGE quiet

View File

@ -1,6 +0,0 @@
DEFAULT linux
PROMPT 0
LABEL linux
KERNEL /KERNEL
APPEND boot=LABEL=INSTALL installer quiet

View File

@ -1,34 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
. config/options $1
mkdir -p $RELEASE_DIR/3rdparty/syslinux
cp -PR $BUILD/syslinux-*/NEWS $RELEASE_DIR/3rdparty/syslinux
cp -PR $BUILD/syslinux-*/README $RELEASE_DIR/3rdparty/syslinux
mkdir -p $RELEASE_DIR/3rdparty/syslinux/doc
cp -PR $BUILD/syslinux-*/doc/* $RELEASE_DIR/3rdparty/syslinux/doc
mkdir -p $RELEASE_DIR/3rdparty/syslinux/win32
cp -PR $BUILD/syslinux-*/bios/win32/syslinux.exe $RELEASE_DIR/3rdparty/syslinux/win32
mkdir -p $RELEASE_DIR/3rdparty/syslinux/win64
cp -PR $BUILD/syslinux-*/bios/win64/syslinux64.exe $RELEASE_DIR/3rdparty/syslinux/win64

View File

@ -1,271 +0,0 @@
#!/bin/sh
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
#
# OpenELEC is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# OpenELEC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
################################################################################
# usage: sudo ./create_sdcard <drive>
# example: sudo ./create_sdcard /dev/sdb
# loop example: sudo ./create_sdcard /dev/loop0 ~/vSD.img
# create an empty image file for use with loop device like this:
# dd if=/dev/zero of=~/vSD.img bs=1M count=910
if [ "$(id -u)" != "0" ]; then
clear
echo "#########################################################"
echo "# please execute with 'sudo' or -DANGEROUS!!!- as root #"
echo "# example: sudo ./create_sdcard <drive> #"
echo "#########################################################"
exit 1
fi
if [ -z "$1" ]; then
clear
echo "#########################################################"
echo "# please execute with your drive as option #"
echo "# example: sudo ./create_sdcard /dev/sdb #"
echo "# or: sudo ./create_sdcard /dev/mmcblk0 #"
echo "# or: sudo ./create_sdcard /dev/loop0 ~/vSD.img #"
echo "# to create an image file for /dev/loop0 option: #"
echo "# sudo dd if=/dev/zero of=~/vSD.img bs=1M count=910 #"
echo "#########################################################"
exit 1
fi
DISK="$1"
case $DISK in
"/dev/mmcblk"*)
PART1="${DISK}p1"
PART2="${DISK}p2"
;;
"/dev/loop"*)
PART1="${DISK}p1"
PART2="${DISK}p2"
IMGFILE="$2"
losetup $DISK $IMGFILE
;;
*)
PART1="${DISK}1"
PART2="${DISK}2"
;;
esac
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv USB Installer #"
echo "# #"
echo "#########################################################"
echo "# #"
echo "# This will wipe any data off your chosen drive #"
echo "# Please read the instructions and use very carefully.. #"
echo "# #"
echo "#########################################################"
# check for some required tools
# this is needed to partion the drive
which parted > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"parted\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to format the drive
which mkfs.vfat > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"mkfs.vfat\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to format the drive
which mkfs.ext4 > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"mkfs.ext4\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to tell the kernel for partition changes
which partprobe > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"partprobe\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# this is needed to tell the kernel for partition changes
which md5sum > /dev/null
if [ "$?" = "1" ]; then
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv missing tool - Installation will quit #"
echo "# #"
echo "# We can't find the required tool \"md5sum\" #"
echo "# on your system. #"
echo "# Please install it via your package manager. #"
echo "# #"
echo "#########################################################"
exit 1
fi
# check MD5 sums
echo "checking MD5 sum..."
md5sumFailed()
{
clear
echo "#########################################################"
echo "# #"
echo "# OpenELEC.tv failed md5 check - Installation will quit #"
echo "# #"
echo "# Your original download was probably corrupt. #"
echo "# Please visit www.openelec.tv and get another copy #"
echo "# #"
echo "#########################################################"
exit 1
}
md5sum -c target/KERNEL.md5
if [ "$?" = "1" ]; then
md5sumFailed
fi
md5sum -c target/SYSTEM.md5
if [ "$?" = "1" ]; then
md5sumFailed
fi
# (TODO) umount everything (if more than one partition)
umount ${DISK}*
# remove all partitions from the drive
echo "writing new disklabel on $DISK (removing all partitions)..."
parted -s "$DISK" mklabel msdos
# create a single partition
echo "creating partitions on $DISK..."
parted -s "$DISK" unit cyl mkpart primary fat32 -- 0 16
# align the partition on 4mb boundary, starting at 132mb (132 % 4 == 0), which
# is right after the first partition
parted -s "$DISK" mkpart primary ext2 -- 132MiB -2cyl
# make partition active (bootable)
echo "marking partition active..."
parted -s "$DISK" set 1 boot on
# tell kernel we have a new partition table
echo "telling kernel we have a new partition table..."
partprobe "$DISK"
sleep 1
# create filesystem
echo "creating filesystem on $PART1..."
mkfs.vfat "$PART1" -I -n System
# create ext4 partition with optimized settings for running on flash/sd
# See http://blogofterje.wordpress.com/2012/01/14/optimizing-fs-on-sd-card/ for reference.
echo "creating filesystem on $PART2..."
mkfs.ext4 -O ^has_journal -E stride=2,stripe-width=1024 -b 4096 "$PART2" -L Storage
# remount loopback device
if [ "$DISK" = "/dev/loop0" ]; then
sync
losetup -d $DISK
losetup $DISK $IMGFILE -o 1048576 --sizelimit 131071488
PART1=$DISK
fi
# mount partition
echo "mounting partition $PART1 ..."
rm -rf /tmp/openelec_install
mkdir -p /tmp/openelec_install
mount -t vfat "$PART1" /tmp/openelec_install
MOUNTPOINT=/tmp/openelec_install
# install u-boot image, u-boot.imx if new u-boot. else SPL
echo "installing the bootloader..."
if [ -e "3rdparty/bootloader/u-boot.imx" ] ;then
dd if=3rdparty/bootloader/u-boot.imx of="$DISK" bs=1k seek=1 conv=fsync
elif [ -e "3rdparty/bootloader/SPL" ];then
dd if=3rdparty/bootloader/SPL of="$DISK" bs=1k seek=1 conv=fsync
else
echo "ERROR: no bootloader image found!! please execute in archive folder"
fi
# copy files
echo "copying files to $MOUNTPOINT..."
cp target/KERNEL $MOUNTPOINT
cp target/SYSTEM $MOUNTPOINT
cp 3rdparty/bootloader/* $MOUNTPOINT
cp openelec.ico $MOUNTPOINT
cp README.md $MOUNTPOINT
# sync disk
echo "syncing disk..."
sync
# unmount partition
echo "unmounting partition $MOUNTPOINT ..."
umount $MOUNTPOINT
# cleaning
echo "cleaning tempdir..."
rmdir $MOUNTPOINT
# unmount loopback device
if [ "$DISK" = "/dev/loop0" ]; then
losetup -d $DISK
fi
echo "...installation finished"

View File

@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@ -1,192 +0,0 @@
VIProductVersion "1.0.0.0"
VIAddVersionKey ProductName "OpenELEC USB Stick Creator"
VIAddVersionKey Comments "A bootable OpenElec Installer Stick creation tool."
VIAddVersionKey CompanyName "OpenELEC"
VIAddVersionKey LegalCopyright "OpenELEC"
VIAddVersionKey FileDescription "OpenELEC USB Stick Creator"
VIAddVersionKey FileVersion "1.0"
VIAddVersionKey ProductVersion "1.0"
VIAddVersionKey InternalName "OpenELEC USB Stick Creator"
!define PRODUCT_NAME "OpenELEC USB Stick Creator"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "OpenELEC"
!define PRODUCT_WEB_SITE "http://openelec.tv"
BrandingText " "
Var "DRIVE_LETTER"
!include "MUI.nsh"
!include LogicLib.nsh
!include FileFunc.nsh
!insertmacro GetDrives
!define GENERIC_READ 0x80000000
!define GENERIC_WRITE 0x40000000
!define FILE_SHARE_READ 0x00000001
!define FILE_SHARE_WRITE 0x00000002
!define OPEN_EXISTING 3
!define INVALID_HANDLE_VALUE -1
!define MAXLEN_VOLUME_GUID 51
!define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 0x00560000
!define EXTENTS_BUFFER_SIZE 512
!define MUI_ICON "openelec.ico"
!define MUI_WELCOMEFINISHPAGE_BITMAP "welcome.bmp"
!define MUI_ABORTWARNING
!define MUI_WELCOMEPAGE_TITLE "Welcome to the OpenELEC USB Stick Creator"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the creation of an OpenELEC USB Installer Stick.\n\nPlease read the following pages carefully."
!insertmacro MUI_PAGE_WELCOME
!define MUI_PAGE_HEADER_TEXT "License Agreement"
!define MUI_PAGE_HEADER_SUBTEXT "Please review the GPLv2 license below before using the OpenELEC USB Stick Creator"
!define MUI_LICENSEPAGE_TEXT_BOTTOM "If you accept the GPL license terms, click Continue."
!define MUI_LICENSEPAGE_BUTTON "Continue"
!insertmacro MUI_PAGE_LICENSE "gpl-2.0.txt"
Name "${PRODUCT_NAME}"
OutFile 'create_installstick.exe'
ShowInstDetails show
AllowRootDirInstall true
RequestExecutionLevel admin
Page Custom CustomCreate CustomLeave
!define MUI_PAGE_HEADER_TEXT "Preparing USB Stick"
!define MUI_PAGE_HEADER_SUBTEXT "Please wait 45 seconds ..."
!insertmacro MUI_PAGE_INSTFILES
# http://nsis.sourceforge.net/Simple_write_text_to_file
# This is a simple function to write a piece of text to a file. This will write to the end always.
Function WriteToFile
Exch $0 ;file to write to
Exch
Exch $1 ;text to write
FileOpen $0 $0 a #open file
FileSeek $0 0 END #go to end
FileWrite $0 $1 #write to file
FileWrite $0 '$\r$\n' #write crlf
FileClose $0
Pop $1
Pop $0
FunctionEnd
!macro WriteToFile NewLine File String
!if `${NewLine}` == true
Push `${String}$\r$\n`
!else
Push `${String}`
!endif
Push `${File}`
Call WriteToFile
!macroend
!define WriteToFile `!insertmacro WriteToFile false`
!define WriteLineToFile `!insertmacro WriteToFile true`
Section "oeusbstart"
ExpandEnvStrings $0 %COMSPEC%
DetailPrint "- Formatting USB Device ($DRIVE_LETTER) ..."
nsExec::Exec `"$0" /c format $DRIVE_LETTER /V:OPENELEC /Q /FS:FAT32 /X`
DetailPrint "- Making Device Bootable ..."
nsExec::Exec `"3rdparty\syslinux\win32\syslinux.exe" -f -m -a $DRIVE_LETTER`
DetailPrint "- Copying System Files ..."
nsExec::Exec `"$0" /c copy target\* $DRIVE_LETTER`
DetailPrint "- Copying Configuration Files ..."
nsExec::Exec `"$0" /c copy Autorun.inf $DRIVE_LETTER`
nsExec::Exec `"$0" /c copy openelec.ico $DRIVE_LETTER`
nsExec::Exec `"$0" /c copy CHANGELOG $DRIVE_LETTER`
nsExec::Exec `"$0" /c copy INSTALL $DRIVE_LETTER`
nsExec::Exec `"$0" /c copy README.md $DRIVE_LETTER`
nsExec::Exec `"$0" /c copy RELEASE $DRIVE_LETTER`
DetailPrint "- Creating Bootloader configuration ..."
Delete '$DRIVE_LETTER\syslinux.cfg'
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'PROMPT 0'
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'DEFAULT installer'
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ''
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'LABEL installer'
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' KERNEL /KERNEL'
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' APPEND boot=LABEL=OPENELEC installer quiet tty'
${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ''
DetailPrint ""
SectionEnd
Function CustomCreate
!insertmacro MUI_HEADER_TEXT "USB Stick Selection Screen" "Important: Make sure that the correct device is selected."
WriteIniStr '$PLUGINSDIR\custom.ini' 'Settings' 'NumFields' '7'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Type' 'Label'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Left' '5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Top' '5'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Right' '-6'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Bottom' '15'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 1' 'Text' \
'Select drive for Installation (*** ALL DATA WILL BE REMOVED ***):'
StrCpy $R2 0
StrCpy $R0 ''
${GetDrives} "FDD" GetDrivesCallBack
GetDlgItem $1 $HWNDPARENT 1
${If} $R0 == ""
EnableWindow $1 0
${Else}
EnableWindow $1 1
${EndIf}
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Type' 'DropList'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Left' '30'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Top' '20'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Right' '-31'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'Bottom' '30'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'State' '$R1'
WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'ListItems' '$R0'
push $0
InstallOptions::Dialog '$PLUGINSDIR\custom.ini'
pop $0
pop $0
FunctionEnd
Function CustomLeave
ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 2' 'State'
StrCpy '$INSTDIR' '$0'
StrCpy '$DRIVE_LETTER' '$INSTDIR'
FunctionEnd
Function GetDrivesCallBack
IntCmp $R2 '0' def next next
def:
StrCpy $R1 '$9'
next:
IntOp $R2 $R2 + 1
StrCpy $R0 '$R0$9|'
Push $0
FunctionEnd
!define MUI_FINISHPAGE_TITLE "OpenELEC USB Stick Successfully Created"
!define MUI_FINISHPAGE_TEXT "An OpenELEC USB Installer Stick has been created on the device $DRIVE_LETTER.\n\nPlease boot your HTPC off this USB stick and follow the on-screen instructions."
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
!define MUI_PAGE_CUSTOMFUNCTION_SHOW "FinishShow"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
Function FinishShow
GetDlgItem $0 $HWNDPARENT 3
ShowWindow $0 0
GetDlgItem $0 $HWNDPARENT 1
SendMessage $0 ${WM_SETTEXT} 0 "STR:Finish"
FunctionEnd
Function .onInit
InitPluginsDir
GetTempFileName $0
Rename $0 '$PLUGINSDIR\custom.ini'
FunctionEnd

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB