mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge branch 'master' of github.com:OpenELEC/OpenELEC.tv
This commit is contained in:
commit
4f40fdaf72
4
packages/tools/syslinux/files/3rdparty/macfiles/fdisk.input
vendored
Normal file
4
packages/tools/syslinux/files/3rdparty/macfiles/fdisk.input
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
f 1
|
||||||
|
w
|
||||||
|
q
|
||||||
|
EOF
|
BIN
packages/tools/syslinux/files/3rdparty/macfiles/mbr.bin
vendored
Normal file
BIN
packages/tools/syslinux/files/3rdparty/macfiles/mbr.bin
vendored
Normal file
Binary file not shown.
BIN
packages/tools/syslinux/files/3rdparty/macfiles/syslinux-mac
vendored
Normal file
BIN
packages/tools/syslinux/files/3rdparty/macfiles/syslinux-mac
vendored
Normal file
Binary file not shown.
BIN
packages/tools/syslinux/files/3rdparty/macfiles/vesamenu.c32
vendored
Normal file
BIN
packages/tools/syslinux/files/3rdparty/macfiles/vesamenu.c32
vendored
Normal file
Binary file not shown.
262
packages/tools/syslinux/files/create_livestick_osx
Executable file
262
packages/tools/syslinux/files/create_livestick_osx
Executable file
@ -0,0 +1,262 @@
|
|||||||
|
#!/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)
|
||||||
|
#
|
||||||
|
# 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, 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 OpenELEC.tv; see the file COPYING. If not, write to
|
||||||
|
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||||
|
# http://www.gnu.org/copyleft/gpl.html
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
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: Copying syslinux files to 'OPENELEC'"
|
||||||
|
cp -a 3rdparty/macfiles/vesamenu.c32 /Volumes/OPENELEC/
|
||||||
|
cp -a splash.png /Volumes/OPENELEC/
|
||||||
|
echo "INFO: Creating syslinux.cfg on 'OPENELEC'"
|
||||||
|
cat >/Volumes/OPENELEC/syslinux.cfg << EOF
|
||||||
|
UI vesamenu.c32
|
||||||
|
PROMPT 0
|
||||||
|
MENU TITLE Boot Menu
|
||||||
|
MENU BACKGROUND splash.png
|
||||||
|
TIMEOUT 50
|
||||||
|
DEFAULT live
|
||||||
|
|
||||||
|
MENU WIDTH 70
|
||||||
|
MENU MARGIN 15
|
||||||
|
MENU ROWS 2
|
||||||
|
MENU HSHIFT 4
|
||||||
|
MENU VSHIFT 13
|
||||||
|
MENU TIMEOUTROW 10
|
||||||
|
MENU TABMSGROW 8
|
||||||
|
MENU CMDLINEROW 8
|
||||||
|
MENU HELPMSGROW 13
|
||||||
|
MENU HELPMSGENDROW 26
|
||||||
|
MENU CLEAR
|
||||||
|
|
||||||
|
MENU COLOR border 30;44 #40ffffff #00000000 std
|
||||||
|
MENU COLOR title 1;36;44 #ff8bbfe3 #00000000 std
|
||||||
|
MENU COLOR sel 7;37;40 #80f0f0f0 #ff606060 all
|
||||||
|
MENU COLOR unsel 37;44 #50ffffff #00000000 std
|
||||||
|
MENU COLOR help 37;40 #c0ffffff #a0000000 std
|
||||||
|
MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
|
||||||
|
MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
|
||||||
|
MENU COLOR msg07 37;40 #90ffffff #a0000000 std
|
||||||
|
MENU COLOR tabmsg 31;40 #ff868787 #00000000 std
|
||||||
|
|
||||||
|
LABEL installer
|
||||||
|
MENU LABEL Run OpenELEC Installer
|
||||||
|
KERNEL /KERNEL
|
||||||
|
APPEND boot=LABEL=OPENELEC installer quiet vga=current
|
||||||
|
|
||||||
|
LABEL live
|
||||||
|
MENU LABEL Run OpenELEC Live
|
||||||
|
KERNEL /KERNEL
|
||||||
|
APPEND boot=LABEL=OPENELEC disk=FILE=STORAGE,512 quiet 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
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
||||||
|
end
|
||||||
|
exit 0
|
Loading…
x
Reference in New Issue
Block a user