13-10-2019, 03:15
|
#548
|
|
ford::average
Zarejestrowany: 25-08-2004
Skąd: Koszalin
Model: Fiesta MK7, Mondeo MKV ST-Line
Silnik: 1.6 Pb, 2.0 Pb Ecoboost
Rocznik: 2008, 2017
Postów: 80
|
Odp: aktualizacja dla sync 3
Cytat:
|
To prawda. Zasługa pomysłu, na jakim jest to oparte.
Kiedyś, jak zastanawiałem się jak to technicznie można zrobić, akurat tego zrealizowanego sposobu nie wymyśliłem, nie brałem pod uwagę.
Jak mu się przyjrzałem, to musze się przyznać, że "szczęka mi opadła" - jest tak oczywisty i tak efektywny, że nie wpadłem na niego tylko dlatego, że nie piszę niczego pod QNX.
Jak to działa: MLO to bootloader systemu a QNX-IFS (w tym konkretnym przypadku QNX-IFS-REFORMAT) to jądro systemu QNX z podstawowymi programami narzędziowymi. Są one umieszczane w 32 megowej partycji poprzedzającej wszystkie pozostałe partycje opisane w schemacie partycjonowania.
Sporządzenie dedykowanej wersji jądra systemu QNX z narzędziami niezbędnymi do reformatowania reszty jest "kluczem do sukcesu". Bez wątpienia do "wciągania" poszczególnych pakietów nie jest także używany w tym dedykowanym zestawie systemowym ciężki, wielki i powolny APP_SUM realizujący normalny proces aktualizacji Sync3.
Pod tym względem analityk, który to wymyślił ma pełen mój "szacun".
Jednak - jak to zwykle w FoMoCo - w tej beczce miodu MUSI być łyżka dziegciu... PMa, który "odbierał" ten produkt i nie widział, że programiście nie chciało się dołożyć do linijki printfowanego tekstu nazwy modułu, o którym ów tekst jest - wylał bym "na zbitą buzię" natychmiast z każdej z firm, które prowadziłem...
Tak czy inaczej - 45 minut na pełną przebudowę systemu z zawartością wszystkiego, co tylko tam może być - robi wrażenie...
BTW - QNX-IFS daje się "rozpakować" i obejrzeć co "w środku" (oczywiście QNX-IFS-REFORMAT także). Trzeba na to chwilę czasu, ale rzecz jest opanowana i standardowa. Jak się trochę "obrobię", to zerknę jakie narzędzie rozpakowuje i umieszcza na właściwym miejscu poszczególne pakiety... Jeśli któryś z kolegów (szczególnie celujący w odwoływaniu do historycznych wypowiedzi...) także potrafi "zajrzeć do środka" - to może "tak od niechcenia" - wrzuci trochę ciekawych (choć nie koniecznie przydatnych dla ogółu...) informacji. Będę zaglądał.
|
skrypt update_radio.sh
Kod:
#!/bin/sh
PAYLOAD=/fs/usb0/SyncMyRide
LOG_FILE=/tmp/Update_status.txt
DISPLAY=/fs/tmpfs/status
FIFO_READY=/fs/tmpfs/fifo_ready
RWDATA_PATH=/fs/rwdata
IMAGES_PATH=/fs/images
UPDATE_CACHE=$IMAGES_PATH/ivsu_cache
CERTIFICATE=/etc/security/ford_cert.pem
ERR_FILE=/tmp/extract_verify_error.txt
LOG_DIR=""
MULTIPLE_ENTRY_PKG_SPT=1
APPS=""
VOICE=""
VOICE_NAV=""
GRACENOTES=""
MAP=""
MAP_LIC=""
ENH_DAB=""
function exit_reformat
{
echo "Reformat install end" >> $LOG_FILE
date >> $LOG_FILE
#cp $LOG_FILE $PAYLOAD
if [ -n "$LOG_DIR" ] ; then
cp $LOG_FILE $LOG_DIR
fi
cp $LOG_FILE $RWDATA_PATH/Reformat_update_status.txt
rm $UPDATE_CACHE/.extract_apps/*
sync
while [ 1 ]
do
if [ -f /fs/tmpfs/usb_ejected ] ; then
shutdown
else
waitfor /fs/tmpfs/usb_ejected
fi
done
exit
}
function unsign_version
{
openssl smime -verify -attime 1428426906 -inform DER -in $UPDATE_CACHE/.extract_apps/Version.der -CAfile /etc/security/ford_combined_certs.pem -partial_chain -purpose smimesign -out $UPDATE_CACHE/.extract_apps/Version.inf >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error in un-signing Version.der..." >> $LOG_FILE
echo "Error in un-signing Version.der..." > $DISPLAY
exit_reformat
fi
}
function install_apps
{
echo "Extracting Apps package:" >> $LOG_FILE
echo "Extracting Apps package..." > $DISPLAY
check_for_given_package $APPS
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$APPS $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $APPS : $ERR" >> $LOG_FILE
echo "Error in $APPS : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating apps package..." > $DISPLAY
update_part /dev/hd0t177 $UPDATE_CACHE/.extract_apps/apps.tar.gz >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error writing the apps package..." >> $LOG_FILE
echo "Error writing apps package..." > $DISPLAY
exit_reformat
fi
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf"
cp $UPDATE_CACHE/.extract_apps/QNX-IFS /tmp
cp $UPDATE_CACHE/.extract_apps/MLO /tmp
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated apps package..." >> $LOG_FILE
echo "SIZE 10" > $DISPLAY
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/apps.cksum
crc32 /dev/hd0t177 >> $RWDATA_PATH/.chksum/apps.cksum &
echo "SIZE 10" > $DISPLAY
}
function install_images
{
Options="${1}"
# Add image update pending sign
update_images -a >> $LOG_FILE
#if MAP is specified in LST but not present in payload, bail out.
check_for_given_package $MAP
#in read_lst each package is differentiated with '\n'
for ELEMENT in $MAP
do
image_name=""
image_dst=""
if [ -f $PAYLOAD/$ELEMENT ] ; then
echo "Extracting map package:" >> $LOG_FILE
echo "Extracting map package..." > $DISPLAY
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$ELEMENT $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $ELEMENT : $ERR" >> $LOG_FILE
echo "Error in $ELEMENT : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating maps package..." > $DISPLAY
if [ -e $UPDATE_CACHE/.extract_apps/map.img ] ; then
mv $UPDATE_CACHE/.extract_apps/map.img $IMAGES_PATH/map.img >> $LOG_FILE
image_dst=map.img
elif [ -e $UPDATE_CACHE/.extract_apps/map_new.img ] ; then
mv $UPDATE_CACHE/.extract_apps/map_new.img $IMAGES_PATH/map.img >> $LOG_FILE
image_dst=map.img
if [ -e $UPDATE_CACHE/.extract_apps/map_ext_new.img ] ; then
mv $UPDATE_CACHE/.extract_apps/map_ext_new.img $IMAGES_PATH/map_ext.img >> $LOG_FILE
fi
else
for image_path in $UPDATE_CACHE/.extract_apps/*.img
do
image_dst=""
image_name=${image_path##*/} #removes path name
if test "${image_name#*"map_"}" != "$image_name"
then
image_dst=`echo $image_name | awk -F_new.img '{print $1}'`
image_dst=$image_dst.img
mv $UPDATE_CACHE/.extract_apps/$image_name $IMAGES_PATH/$image_dst >> $LOG_FILE
break
fi
done
fi
if [ ! "$image_dst" ];then
echo "Error installing maps package..." >> $LOG_FILE
echo "Error installing maps package..." > $DISPLAY
exit_reformat
fi
image_base_name=${image_dst%.*} #remove extension
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf"
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated Maps package..." >> $LOG_FILE
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/$image_base_name.cksum
crc32 $IMAGES_PATH/$image_dst >> $RWDATA_PATH/.chksum/$image_base_name.cksum &
if [ -e $IMAGES_PATH/map_ext.img ]
then
if [ ! -e $RWDATA_PATH/.chksum/map_ext.cksum ]
then
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/map_ext.cksum
crc32 $IMAGES_PATH/map_ext.img >> $RWDATA_PATH/.chksum/map_ext.cksum &
fi
fi
fi
done
echo "SIZE 10" > $DISPLAY
check_for_given_package $MAP_LIC
if [ -f $PAYLOAD/$MAP_LIC ] ; then
echo "Extracting Map license package:" >> $LOG_FILE
echo "Extracting Map license package..." > $DISPLAY
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$MAP_LIC $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $MAP_LIC : $ERR" >> $LOG_FILE
echo "Error in $MAP_LIC : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating maps license package..." > $DISPLAY
LIC=$(cat $UPDATE_CACHE/.extract_apps/License.txt)
setdps -w -l $LIC >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error installing maps license package..." >> $LOG_FILE
echo "Error installing maps license package..." > $DISPLAY
exit_reformat
fi
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf" >> $LOG_FILE
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated Maps license package..." >> $LOG_FILE
fi
echo "SIZE 10" > $DISPLAY
check_for_given_package $VOICE
if [ -f $PAYLOAD/$VOICE ] ; then
echo "Extracting Voice package:" >> $LOG_FILE
echo "Extracting Voice package..." > $DISPLAY
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$VOICE $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $VOICE : $ERR" >> $LOG_FILE
echo "Error in $VOICE : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating voice package..." > $DISPLAY
mv $UPDATE_CACHE/.extract_apps/voice_new.img $IMAGES_PATH/voice.img >> $LOG_FILE
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf"
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated Voice core package..." >> $LOG_FILE
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/voice.cksum
crc32 $IMAGES_PATH/voice.img >> $RWDATA_PATH/.chksum/voice.cksum &
fi
echo "SIZE 10" > $DISPLAY
check_for_given_package $VOICE_NAV
for ELEMENT in $VOICE_NAV
do
image_name=""
image_dst=""
if [ -f $PAYLOAD/$ELEMENT ] ; then
echo "Extracting Voice nav package:" >> $LOG_FILE
echo "Extracting Voice nav package..." > $DISPLAY
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$ELEMENT $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $ELEMENT : $ERR" >> $LOG_FILE
echo "Error in $ELEMENT : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating voice navigation package..." > $DISPLAY
if [ -e $UPDATE_CACHE/.extract_apps/voice_nav_new.img ] ; then
mv $UPDATE_CACHE/.extract_apps/voice_nav_new.img $IMAGES_PATH/voice_nav.img >> $LOG_FILE
image_dst=voice_nav.img
else
for image_path in $UPDATE_CACHE/.extract_apps/*.img
do
image_dst=""
image_name=${image_path##*/} #removes path name
if test "${image_name#*"voice_nav_"}" != "$image_name"
then
image_dst=`echo $image_name | awk -F_new.img '{print $1}'`
image_dst=$image_dst.img
mv $UPDATE_CACHE/.extract_apps/$image_name $IMAGES_PATH/$image_dst >> $LOG_FILE
break
fi
done
fi
if [ ! "$image_dst" ];then
echo "Error installing voice navigation package..." >> $LOG_FILE
echo "Error installing voice navigation package..." > $DISPLAY
exit_reformat
fi
image_base_name=${image_dst%.*} #remove extension
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf"
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated voice navigation package..." >> $LOG_FILE
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/$image_base_name.cksum
crc32 $IMAGES_PATH/$image_dst >> $RWDATA_PATH/.chksum/$image_base_name.cksum &
fi
done
echo "SIZE 10" > $DISPLAY
check_for_given_package $GRACENOTES
if [ -f $PAYLOAD/$GRACENOTES ] ; then
echo "Extracting Gracenotes package:" >> $LOG_FILE
echo "Extracting Gracenotes package..." > $DISPLAY
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$GRACENOTES $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $GRACENOTES : $ERR" >> $LOG_FILE
echo "Error in $GRACENOTES : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating gracenotes package..." > $DISPLAY
mv $UPDATE_CACHE/.extract_apps/gracenotes_new.img $IMAGES_PATH/gracenotes.img >> $LOG_FILE
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf"
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated Gracenotes package..." >> $LOG_FILE
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/gracenotes.cksum
crc32 $IMAGES_PATH/gracenotes.img >> $RWDATA_PATH/.chksum/gracenotes.cksum &
fi
echo "SIZE 10" > $DISPLAY
check_for_given_package $ENH_DAB
if [ -f $PAYLOAD/$ENH_DAB ] ; then
echo "Extracting Enhanced DAB package:" >> $LOG_FILE
echo "Extracting Enhanced DAB package..." > $DISPLAY
NS_ExtractVerify $CERTIFICATE $PAYLOAD/$ENH_DAB $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
ERR=`cat $ERR_FILE`
echo "Error in $ENH_DAB : $ERR" >> $LOG_FILE
echo "Error in $ENH_DAB : $ERR" > $DISPLAY
exit_reformat
fi
echo "Updating Enhanced DAB package..." > $DISPLAY
mv $UPDATE_CACHE/.extract_apps/station_logos_new.img $IMAGES_PATH/station_logos.img
Inf=$(awk -F'[=]' '{for (i=1;i<NF;i++) if ($i=="Ford Part Number ") print $(i+1)}' $UPDATE_CACHE/.extract_apps/Version.inf)
Inf=$(echo $Inf | tr -d ' ' | tr -d '\r')
cp $UPDATE_CACHE/.extract_apps/Version.inf $RWDATA_PATH/.Version/$Inf"_Version.inf"
rm $UPDATE_CACHE/.extract_apps/*
sync
echo "Updated Enhanced DAB package..." >> $LOG_FILE
echo "Ford Part Number = $Inf" > $RWDATA_PATH/.chksum/station_logos.cksum
crc32 $IMAGES_PATH/station_logos.img >> $RWDATA_PATH/.chksum/station_logos.cksum &
fi
echo "SIZE 10" > $DISPLAY
sync
# Block for all background processes to complete
wait
if [ -e /tmp/cksum_time.log ] ; then
cat /tmp/cksum_time.log >> $LOG_FILE
fi
}
function install_rawboot
{
if [ ! -e /tmp/QNX-IFS ] ; then
echo "QNX-IFS not found..." >> $LOG_FILE
echo "Error updating raw boot..." > $DISPLAY
exit_reformat
fi
if [ ! -e /tmp/MLO ] ; then
echo "MLO not found..." >> $LOG_FILE
echo "Error updating raw boot..." > $DISPLAY
exit_reformat
fi
echo "Formatting hd0t6 partition..." >> $LOG_FILE
dd if=/dev/zero of=/dev/hd0t6 bs=512 count=32
if [ $? -ne 0 ]; then
echo "Error formatting hd0t6 partition..." >> $LOG_FILE
echo "Error formatting hd0t6 partition..." > $DISPLAY
exit_reformat
fi
echo "Adding active partition configuration..." >> $LOG_FILE
mmc_change_active -a /dev/hd0 >> $LOG_FILE
echo "Updating raw boot..." > $DISPLAY
update_boot -r -i /tmp/QNX-IFS -m /tmp/MLO >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error update_boot failed..." >> $LOG_FILE
echo "Error updating raw boot..." > $DISPLAY
exit_reformat
fi
echo "SIZE 20" > $DISPLAY
echo "Updated raw boot..." >> $LOG_FILE
}
function check_for_given_package
{
for ELEMENT in "$1"
do
if [ -n "$ELEMENT" ] ; then
if [ ! -f $PAYLOAD/$ELEMENT ] ; then
#Pkg specified in reformat.lst but not present in USB
echo "Error in lst : $ELEMENT not found" >> $LOG_FILE
echo "Error in lst : $ELEMENT not found" > $DISPLAY
exit_reformat
fi
fi
done
}
function check_for_all_packages
{
check_for_given_package $APPS
check_for_given_package $VOICE
check_for_given_package $VOICE_NAV
check_for_given_package $MAP
check_for_given_package $MAP_LIC
check_for_given_package $GRACENOTES
check_for_given_package $ENH_DAB
}
# Reformat update main
if [ -n "$1" ] ; then
LOG_DIR=$1
fi
echo "Searching for USB stick..." > $LOG_FILE
echo "Searching for USB stick..." > $DISPLAY
while ! [ -e /fs/usb0 ] ; do
echo "Please insert USB stick..." > $LOG_FILE
echo "Please insert USB stick..." > $DISPLAY
waitfor /fs/usb0
done
echo "Searching for update packages..." >> $LOG_FILE
echo "Searching for update packages..." > $DISPLAY
echo "Reformat install start" >> $LOG_FILE
date >> $LOG_FILE
if [ -e /fs/usb0/reformat.lst ] ; then
echo "Found update packages on USB stick..." >> $LOG_FILE
echo "Found update packages on USB stick..." > $DISPLAY
cp /fs/usb0/reformat.lst /tmp/reformat.lst
APPS=$(read_lst APPS)
VOICE=$(read_lst VOICE)
VOICE_NAV=$(read_lst VOICE_NAV $MULTIPLE_ENTRY_PKG_SPT)
GRACENOTES=$(read_lst GRACENOTES)
MAP=$(read_lst MAP $MULTIPLE_ENTRY_PKG_SPT)
MAP_LIC=$(read_lst MAP_LIC)
ENH_DAB=$(read_lst ENH_DAB)
else
echo "Error update packages not found..." >> $LOG_FILE
echo "Error update packages not found..." > $DISPLAY
exit_reformat
fi
while ! [ -e $FIFO_READY ] ; do
waitfor $FIFO_READY
done
echo "TOTAL 110" > $DISPLAY
#legacy case where we had /dev/hdot6 as DOS partition
if [ -e /boot ] ; then
echo "Unmounting boot partition..." >> $LOG_FILE
umount /boot
fi
echo "Repartitioning eMMC..." >> $LOG_FILE
echo "Repartitioning eMMC..." > $DISPLAY
partition >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Failed to partition eMMC..." >> $LOG_FILE
echo "Error failed to partition eMMC..." > $DISPLAY
exit_reformat
fi
mount -e /dev/hd0
if ! [ -e /dev/hd0t180 ] ; then
echo "Unable to find hd0t180 partition on flash..." >> $LOG_FILE
echo "Error unable to find hd0t180 partition..." > $DISPLAY
exit_reformat
fi
echo "Reformatting hd0t180 partition..." >> $LOG_FILE
mkqnx6fs -q -b 4096 /dev/hd0t180
if [ $? -ne 0 ]; then
echo "Error formatting hd0t180 partition..." >> $LOG_FILE
echo "Error formatting hd0t180 partition..." > $DISPLAY
exit_reformat
fi
mount -t qnx6 /dev/hd0t180 $IMAGES_PATH >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error mounting hd0t180 partition..." >> $LOG_FILE
echo "Error mounting hd0t180 partition..." > $DISPLAY
exit_reformat
fi
if ! [ -e $UPDATE_CACHE ] ; then
mkdir $UPDATE_CACHE >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error creating $UPDATE_CACHE directory..." >> $LOG_FILE
echo "Error creating $UPDATE_CACHE directory..." > $DISPLAY
exit_reformat
fi
fi
if ! [ -e $UPDATE_CACHE/.extract_apps ] ; then
mkdir $UPDATE_CACHE/.extract_apps >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error creating $UPDATE_CACHE/.extract_apps directory..." >> $LOG_FILE
echo "Error creating $UPDATE_CACHE/.extract_apps directory..." > $DISPLAY
exit_reformat
fi
fi
if ! [ -e $UPDATE_CACHE/.extract_images ] ; then
mkdir $UPDATE_CACHE/.extract_images >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error creating $UPDATE_CACHE/.extract_images directory..." >> $LOG_FILE
echo "Error creating $UPDATE_CACHE/.extract_images directory..." > $DISPLAY
exit_reformat
fi
fi
if ! [ -e /dev/hd0t181 ] ; then
echo "Unable to find hd0t181 partition on flash..." >> $LOG_FILE
echo "Error unable to find hd0t181 partition..." > $DISPLAY
exit_reformat
fi
echo "Reformatting hd0t181 partition..." >> $LOG_FILE
mkqnx6fs -q -b 4096 /dev/hd0t181
if [ $? -ne 0 ]; then
echo "Error formatting hd0t181 partition..." >> $LOG_FILE
echo "Error formatting hd0t181 partition..." > $DISPLAY
exit_reformat
fi
mount -t qnx6 /dev/hd0t181 $RWDATA_PATH >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error mounting hd0t181 partition..." >> $LOG_FILE
echo "Error mounting hd0t181 partition..." > $DISPLAY
exit_reformat
fi
if ! [ -e $RWDATA_PATH/.Version ] ; then
mkdir $RWDATA_PATH/.Version >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error creating $RWDATA_PATH/.Version directory..." >> $LOG_FILE
echo "Error creating $RWDATA_PATH/.Version directory..." > $DISPLAY
exit_reformat
fi
sync
fi
if ! [ -e $RWDATA_PATH/.chksum ] ; then
mkdir $RWDATA_PATH/.chksum >> $LOG_FILE
if [ $? -ne 0 ]; then
echo "Error creating $RWDATA_PATH/.chksum directory..." >> $LOG_FILE
echo "Error creating $RWDATA_PATH/.chksum directory..." > $DISPLAY
exit_reformat
fi
sync
fi
echo "SIZE 10" > $DISPLAY
if ! [ -e /dev/hd0t177 ] ; then
echo "Unable to find hd0t177 partition..." >> $LOG_FILE
echo "Error unable to find hd0t177 partition..." > $DISPLAY
exit_reformat
fi
#check if all packages specified are present on the payload folder.
#Done here to minimize chance of usb being replaced before installation starts.
check_for_all_packages
install_apps
if ! [ -e /dev/hd0t178 ] ; then
echo "Unable to find hd0t178 partition on flash..." >> $LOG_FILE
echo "Error unable to find hd0t178 partition..." > $DISPLAY
exit_reformat
fi
echo "Reformatting hd0t178 partition..." >> $LOG_FILE
mkqnx6fs -q -b 4096 /dev/hd0t178
if [ $? -ne 0 ]; then
echo "Error formatting hd0t178 partition..." >> $LOG_FILE
echo "Error formatting hd0t178 partitio..." > $DISPLAY
exit_reformat
fi
install_images
if ! [ -e /dev/hd0t6 ] ; then
echo "Unable to find boot partition on flash..." >> $LOG_FILE
echo "Error unable to find boot partition..." > $DISPLAY
exit_reformat
fi
install_rawboot
echo "Update Successful..." >> $LOG_FILE
echo "Update Successful, please remove USB..." >> $DISPLAY
echo "SIZE 10" > $DISPLAY
echo "Reformat install end" >> $LOG_FILE
date >> $LOG_FILE
cp $LOG_FILE $RWDATA_PATH/Reformat_update_status.txt
# Copy log file only if destination is specified.
if [ -n "$LOG_DIR" ] ; then
cp $LOG_FILE $LOG_DIR
fi
sync
sync
sleep 2
mmc_sleep /dev/cam0/000 >> $LOG_FILE
sleep 5
while [ /fs/tmpfs ]
do
if [ -f /fs/tmpfs/usb_ejected ] ; then
shutdown
else
waitfor /fs/tmpfs/usb_ejected
fi
done
dumpifs QNX-IFS-REFORMAT
Kod:
0 8 *.boot
8 100 Startup-header flags1=0xd flags2=0 paddr_bias=0
108 1a008 startup.*
1a110 5c Image-header mountpoint=/
1a16c 2c7c Image-directory
---- ---- Root-dirent
1d000 94000 proc/boot/procnto-smp-instr
b1000 1888 proc/boot/.script
---- e bin/sh -> /proc/boot/ksh
---- 9 dev/console -> /dev/ser1
---- a tmp -> /dev/shmem
---- ---- fs
c0000 77b46 proc/boot/libc.so.3
---- 9 proc/boot/libc.so -> libc.so.3
140000 26f31 proc/boot/libm.so.2
---- 9 proc/boot/libm.so -> libm.so.2
170000 14e86 proc/boot/libcam.so.2
---- b proc/boot/libcam.so -> libcam.so.2
190000 47d0 proc/boot/cam-disk.so
1a0000 169bf proc/boot/fs-qnx6.so
1b7000 c81e proc/boot/fs-nt.so
1d0000 17208 proc/boot/fs-dos.so
1f0000 454e1 proc/boot/fs-exfat.so
240000 33796 proc/boot/io-blk.so
274000 bc04 proc/boot/libusbdi.so.2
---- d proc/boot/libusbdi.so -> libusbdi.so.2
280000 aff0 proc/boot/devu-uevm5432-ehci-omap3.so
28b000 1028c proc/boot/devu-sevm-omap5-xhci.so
29c000 86d6 lib/libhiddi.so.1
---- d lib/libhiddi.so -> libhiddi.so.1
2a5000 7eae lib/libpps.so.1
---- b lib/libpps.so -> libpps.so.1
2ad000 b48e lib/libinputevents.so.1
---- 13 lib/libinputevents.so -> libinputevents.so.1
2b9000 2201 lib/libkalman.so.1
---- e lib/libkalman.so -> libkalman.so.1
2bc000 a4ea usr/lib/libdisputil.so.2
---- 10 usr/lib/libdisputil.so -> libdisputil.so.2
2c7000 5ac2 usr/lib/libWFD.so
2cd000 5ac2 usr/lib/libWFD.so.1
2d3000 f8f3 usr/lib/libswblit.so
2e3000 f8f3 usr/lib/libswblit.so.1
2f3000 2912 usr/lib/libwfdcfg.so.0
---- e usr/lib/libwfdcfg-sync3.so -> libwfdcfg.so.0
2f6000 423 usr/lib/graphics/omap5430ES2_0/graphics.conf
300000 3a3c2 usr/lib/graphics/omap5430ES2_0/libWFDomap5430ES2_0.so
340000 3fa9f usr/lib/graphics/omap5430ES2_0/libsrv_um.so
380000 6e9e usr/lib/graphics/omap5430ES2_0/libpvr2d.so
390000 3f470 usr/lib/graphics/omap5430ES2_0/pvrsrv.so
3d0000 16458 usr/lib/graphics/omap5430ES2_0/pvrsrvinit.so
400000 1a22b4 usr/lib/graphics/omap5430ES2_0/libusc.so
5b0000 1391f usr/lib/graphics/omap5430ES2_0/libIMGegl.so
5c4000 6722 usr/lib/graphics/omap5430ES2_0/wsegl-screen.so
5d0000 98109 usr/lib/graphics/omap5430ES2_0/libImgGLESv1_CM.so
669000 3a73 lib/dll/screen-pvr2d.so
66d000 b45f usr/lib/libEGL.so.1
---- b usr/lib/libEGL.so -> libEGL.so.1
679000 ed02 usr/lib/libGLESv1_CM.so.1
---- 11 usr/lib/libGLESv1_CM.so -> libGLESv1_CM.so.1
690000 185ae usr/lib/libscreen.so.1
---- e usr/lib/libscreen.so -> libscreen.so.1
6b0000 17000 usr/lib/libNS_CoreUnified.so
6d0000 bf000 usr/lib/libNS_FrameworkUnified.so
78f000 b000 usr/lib/libNS_UtilityCenter.so
7a0000 21000 usr/lib/libNS_ConfigParser.so
7d0000 21000 usr/lib/libNS_ExtractVerifyCore.so
7f1000 2000 usr/lib/libSS_SCM_Cob_Lib.so
7f3000 7000 usr/lib/libVS_CANShadowIf.so
7fa000 9506 images/bar.img
810000 bb800 images/ford1.img
8d0000 bb800 images/ford2.img
990000 bb800 images/ford3.img
a4c000 3318 images/bar_SDM4.img
a50000 3fc00 images/ford1_SDM4.img
a90000 3fc00 images/ford2_SDM4.img
ad0000 3fc00 images/ford3_SDM4.img
b10000 150e2 images/bar_SDM10.img
c00000 1d4c02 images/ford1_SDM10.img
e00000 1d4c02 images/ford2_SDM10.img
1000000 1d4c02 images/ford3_SDM10.img
11d5000 b images/reformat_version.txt
---- ---- etc/firmware
11d6000 23d0 etc/firmware/cpld.jpf
11d9000 2380 etc/firmware/cpld_MY18_5.jpf
---- ---- etc/security
11dc000 93e etc/security/ford_cert.pem
11dd000 15b etc/enum-usb.conf
---- ---- etc/system
---- ---- etc/system/enum
11de000 12a etc/system/enum/common
---- ---- etc/system/enum/include
11df000 8e2 etc/system/enum/include/usb-class
---- ---- etc/system/enum/devices
11e0000 137 etc/system/enum/devices/media
---- ---- etc/system/enum/devices/usb
11e1000 170 etc/system/enum/devices/usb/mass
11f0000 1aed0 proc/boot/devb-sdmmc-omap5evm
120b000 79f7 proc/boot/usb
1213000 b723 proc/boot/devb-umass
1220000 1ffa3 proc/boot/io-usb
1240000 84ba proc/boot/enum-devices
1249000 58c0 proc/boot/enum-usb
124f000 7541 proc/boot/i2c-omap35xx-omap4
---- 4 var/log -> /tmp
---- 4 var/run -> /tmp
---- 4 var/lock -> /tmp
1257000 270 etc/mcd.conf
1258000 69f etc/mcd.mnt
1259000 23 etc/passwd
125a000 22 etc/shadow
125b000 d6 etc/group
125c000 62 etc/hosts
125d000 101d etc/services
125f000 19 etc/motd
1260000 0 etc/esh
1260000 127 root/.profile
1261000 8a etc/update_cpld.sh
1262000 2c3 etc/launch_emmcdriver.sh
1270000 130d9 proc/boot/devc-seromap
1290000 1190e proc/boot/devc-pty
12a2000 85b6 proc/boot/cpld
12ab000 21ce proc/boot/mmc_get_act
12ae000 22c4 proc/boot/mmc_change_active
12b1000 1fef proc/boot/mmc_sleep
12b3000 3930 proc/boot/update_part
12b7000 3667 proc/boot/update_boot
12bb000 2942 proc/boot/update_images
12be000 2556 proc/boot/crc32
12c1000 e0e4 proc/boot/disp_rsrmgr
12d0000 4ca1 proc/boot/dev-cpld
12d5000 247b proc/boot/cat
12d8000 36ce proc/boot/chmod
12dc000 a013 proc/boot/cp
12e7000 4aaf proc/boot/date
12ec000 216a proc/boot/echo
12ef000 acdb proc/boot/grep
1300000 47717 proc/boot/ksh
1348000 355b proc/boot/ln
134c000 5653 proc/boot/ls
1352000 2cb5 proc/boot/mkdir
1360000 1eb39 proc/boot/more
137f000 45c7 proc/boot/mount
1384000 3252 proc/boot/mv
1388000 60a1 proc/boot/on
138f000 65cb proc/boot/partition
1396000 531b proc/boot/pipe
13a0000 134ec proc/boot/pidin
13b4000 1ddb proc/boot/umount
13b6000 5396 proc/boot/use
13bc000 323d proc/boot/rm
13c0000 37d6 proc/boot/shutdown
13c4000 4c64 proc/boot/slay
13c9000 21fa proc/boot/sleep
13cc000 3b07 proc/boot/slogger
13d0000 2bef proc/boot/sloginfo
13d3000 29af proc/boot/touch
13d6000 5101 proc/boot/tr
13e0000 6ebc3 proc/boot/awk
144f000 22b9 proc/boot/tee
1452000 60a1 proc/boot/waitfor
1460000 2011f proc/boot/fdisk
1481000 12cbb proc/boot/mkqnx6fs
14a0000 702b1 proc/boot/tar
1520000 19726 proc/boot/gzip
153a000 1b6d proc/boot/sync
153c000 81e7 proc/boot/mkdosfs
1545000 67c0 proc/boot/df
154c000 4322 proc/boot/dd
1551000 28c1 proc/boot/kill
1554000 2cb5 proc/boot/mkdir
1557000 2aea proc/boot/resource_seed
155a000 4948 proc/boot/mqueue
1560000 2398b proc/boot/io-fs-media
1584000 6514 proc/boot/random
1590000 11a4c proc/boot/libz.so.2
---- 9 proc/boot/libz.so -> libz.so.2
15b0000 116fa proc/boot/libbz2.so.1
---- b proc/boot/libbz2.so -> libbz2.so.1
1600000 18c61e proc/boot/libcrypto.so.2
---- e proc/boot/libcrypto.so -> libcrypto.so.2
1800000 615bf proc/boot/libssl.so.2
---- b proc/boot/libssl.so -> libssl.so.2
1870000 2b91f proc/boot/libsocket.so.3
---- e proc/boot/libsocket.so -> libsocket.so.3
18a0000 7764a proc/boot/libarchive.so.12
---- 10 proc/boot/libarchive.so -> libarchive.so.12
1920000 e00e2 proc/boot/libiconv.so.1
---- d proc/boot/libiconv.so -> libiconv.so.1
---- ---- etc
---- ---- var
---- 31 var/lock -> E:/buildB/com.pas.for.gofast/SS_BSP/../SS_BSP/tmp
---- 31 var/log -> E:/buildB/com.pas.for.gofast/SS_BSP/../SS_BSP/tmp
---- 31 var/run -> E:/buildB/com.pas.for.gofast/SS_BSP/../SS_BSP/tmp
---- 31 var/tmp -> E:/buildB/com.pas.for.gofast/SS_BSP/../SS_BSP/tmp
---- ---- usr
1a10000 4b26 usr/sbin/update_radio.sh
1a20000 596d0 usr/sbin/SS_PowerManager
1a80000 21ef4 usr/sbin/SS_SCM_IPC
1aa2000 1cd4 usr/sbin/NS_ExtractVerify
1aa4000 32d0 usr/sbin/hwid
1aa8000 4948 usr/sbin/mqueue
1ab0000 5c32e usr/sbin/screen
1b0d000 6424 usr/sbin/dispmon
1b14000 2b50 usr/sbin/read_lst
1b17000 9bc7 usr/sbin/mcd
1b30000 76bea usr/sbin/openssl
1ba7000 322c usr/sbin/setdps
---- ---- lib
1bb0000 54e68 lib/libcpp.so.4
---- b lib/libcpp.so -> libcpp.so.4
1c10000 503c3 lib/libcpp-ne.so.4
---- e lib/libcpp-ne.so -> libcpp-ne.so.4
Ostatnio edytowane przez hass ; 13-10-2019 o 03:23
|
|
|