#!/bin/sh ###################################################################### # __________ __ ___. # Open \______ \ ____ ____ | | _\_ |__ _______ ___ # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # # * Script to patch an unpacked Samsung YP-R0 firmware file */ # Copyright (C) 2011 Thomas Martitz # Copyright (C) 2013 Lorenzo Miori ###################################################################### # bail out early set -e if [ $# -lt 1 ] || [ $# -gt 2 ]; then echo "Usage: $0 [path to unpacked rom]" echo "\t is expected to have a special resources and rootfs layout" exit 1 fi MODEL="unknown" FILES=${1%/} FILES=${FILES:-"/"} COMMON_FILES="$FILES/common" DIR=${2:-"."} DIR=${DIR%/} ROOTFS=$DIR/rootfs CRAMFS=$DIR/cramfs-fsl.rom # sanity checks for subdir in common r0 r1 do if [ ! -d "$FILES/$subdir" ] then echo "Missing $FILES/$subdir. Invalid $FILES layout." exit 1 fi done if [ ! -e "$FILES/r1/etc/safemode/cable_detect" ] then echo "Couldn't find cable_detect binary (try 'make' or select a valid layout directory)" exit 1 fi for image in pre_smode.raw post_smode.raw safemode.raw do if [ ! -e "$FILES/r1/etc/safemode/$image" ] then echo "Missing r1 .raw image file (try 'make'): $image" exit 1 fi if [ ! -e "$FILES/r0/etc/safemode/$image" ] then echo "Missing r0 .raw image file (try 'make'): $image" exit 1 fi done # this needs to be run as root! if [ $(whoami) != "root" ] then echo "This needs to be run as root" exit 1 fi if [ ! -e $1 ] || [ ! -e $2 ]; then echo "$1 or $2 does not exist" exit 1 fi if [ -z $ROOTFS ] || [ -z $FILES ]; then echo "Invalid input directories" exit 1 fi if [ ! -e $CRAMFS ]; then echo "Cramfs image not found (did you extract the firmware?)" exit 1 fi echo "Extracting cramfs image" [ ! -e $ROOTFS ] || rm -R $ROOTFS cramfs-1.1/cramfsck -x $ROOTFS $CRAMFS # now we can detect player version # NOTE: order is important here, since ironically # r1's ROM contains also r0's executables if [ -e "$ROOTFS/usr/local/bin/r1" ] then MODEL="r1" else if [ -e "$ROOTFS/usr/local/bin/r0" ] then MODEL="r0" fi fi echo "$MODEL ROM found." echo "Patching rootfs (common files)" echo "cp -r $COMMON_FILES/* $ROOTFS/" cp -r $COMMON_FILES/.rockbox $ROOTFS/ cp -r $COMMON_FILES/* $ROOTFS/ echo "Patching rootfs ($MODEL files)" MODEL_FILES="$FILES/$MODEL" echo "cp -r $MODEL_FILES/* $ROOTFS/" cp -r $MODEL_FILES/* $ROOTFS/ rm -rf $ROOTFS/dev/ttyGS0 mknod $ROOTFS/dev/ttyGS0 c 127 0 echo "Packing new cramfs image" cramfs-1.1/mkcramfs $ROOTFS $CRAMFS