EXPLICACIÓN DE LA COSA ESTA
Introducción
Unas definiciones previas para el que no sepa nada de nada.
Lenguaje de programación: Una explicación simple por analogía puede hacerse diciendo que es lo mismo que un lenguaje humano, si conoces sintaxis y vocabulario, hablas, escribes y lees, si no pues no. A una persona se le habla en inglés, francés, etc., etc., y hasta en español. A un ordenador se le habla en lenguajes de programación.
Script o guion: Cuando se le habla a un ordenador por escrito es lo que se hace al programar. Hay muchos tipos de lenguajes, ya sabes, fortran, C, C++, C#, java, basic, cobol, pascal, python... La mayoría de estos lenguajes se pueden usar de una de estas dos formas.- Compilado: El programador escribe su rollo en un archivo de texto, lo compila y resulta un binario que ejecutará directamente en el ordenador.
- Script: El programador escribe un archivo de texto y el ordenador se encargará de interpretarlo y luego ejecutarlo. Tiene la desventaja de que es más lento, pero siempre se tiene acceso al código para contemplarlo, estudiarlo, o modificarlo. Los lenguajes de este tipo, scripting, son muy utilizados y algunos son muy pero que muy potentes.
Cómo funciona el engendro
Previo: Funcionamiento de nvflash
Nvflash es una herramienta para flashear nuestra tableta entre muchas otras. Coge una serie de archivos y los mete en la tableta. De entre los archivos que coge está el recovery. Buscará un archivo llamado recovery.img. Se le puede ordenar que flasheo todo o una parte. Así para flashear:- Todo: ejecuta el "la orden" flashos
- Sólo el recovery: ejecuta "la orden" flashrecovery
No es exactamente así, es una explicación estilo compadre que puede valer.
Previo: Distintos recoveries
Podemos tener una serie de recoveries distintos, por ejemplo:(nvsbl)recovery.img
(cwmv1)recovery.img
(cmwv2)recovery.img
(touch1)recovery.img
(touch2)recovery.img
Para que flashee nvflash uno u otro basta cambar el nombre de cualquiera de ellos a recovery.img y ejecutar nvflash.
Funcionamiento
1.- Presenta un menú que nos da a elegir de entre varios recoveries a flashear más la opción de salir. Si te equivocas de opción te dirá que lo intentes de nuevo.
Cuando se elige, por ejemplo, el recovery (cwmv1)recovery.img el script lo renombra a recovery.img y pasa al segundo menú.
2.- En el segundo menú, además de salir te da la opción de flashear la rom completa con el recovery elegido o sólo el recovery.a) Si se quiere flashear todo el script llamara a flasos que ejecutará nvflash flasheando todo.
b) Si se quiere flashear sólo el recovery el script llamará a flashrecovery para que sólo flahee el recovery.
Una vez hecho eso se sale del script.
Sin más misterio esto es grosso modo lo que hace.
¿En qué está escrito?
Hay dos versiones, una para windows, y otra para linux. El lenguaje de scripting "natural" y "nativo" de Microsoft es el batch. En linux la cosa es más complicada porque es mucho más potente y hay varios "naturales" y "nativos"... en este caso es usado bash, el más usuarl.
Al principio del archivo de script para linux pone #!/bin/bash esto significa que le dices al ordenador "te voy a hablar en bash".
¿Por qué una cosa tan sencilla hay que escribirla tan largo?
Porque los ordenadores son completamente imbéciles. Son muy potentes, muy rápidos, pero piensan lo mismo que una tableta brickeada, o sea, nada.
Por ejemplo: un andaluz va a La Coruña y dice un bar "quiero papas con alcauciles"... el camarero que es de Villagarcía de Arosa piensa "qué carallo me pide este tío" y le dice ¿perdón? El andaluz, si es un poco listo, se dará cuenta de que el camarero no le ha entendido y dirá quiero patatas con alcachofas.
O, por ejemplo: le dice una mujer a otra, tráeme las tijeras del costurero, y va al costurero y no están las tijeras dentro, pero ve que están al lado y se las lleva.
Un ordenador jamás hará esto... dirá ¿Ein? Me no entender. System failure.
Y como los ordenadores no piensan hay que decírselo todo con absoluta precisión y detalle.
¿Es necesaria esta explicación?
Las definiciones y explicaciones generales al que sepa de qué va, le sobran, al que no sepa nada, le puede resultar curioso, aburrido, etc., pero no hace daño.
En cuanto a qué hace el script ayuda a modificarlo. Incluso uno mismo debe escribirse las propias explicaciones. Como anécdata os contaré que hace muchos años, en la Universidad, cuando un PC o una calculadora programable era una rareza, pero sí había terminales Unix, recuerdo que una vez tuve una serie de problemas que para resolverlos había que resolver sistemas de ecuaciones lineales de 7x7 y me programé el engendro correspondiente. Más tarde, años después, me encontré que necesitaba resolver sistemas de 9x9... y no tuve narices de modificar el programa... así que explicar un poquito cómo va y qué hace nunca está demás, incluso para el que lo escribe, mucho más si lo que se quiera es que cualquiera lo pueda modificar como quiera. Por ejemplo:
Ejercicio: MODIFICAR SCRIPT PARA AÑADIR UN NUEVO RECOVERYA) Windows
Supongamos que tenemos el guión o script para windows y nos han pasado un nuevo recovery . ¿Cómo modificaríamos el código para incorporarlo?Consideraciones:
- Ese recovery tienen un nombre, por ejemplo Súper Recovery Que Te Cagas v1.0,
- Ese recovery vendrá distribuido con el nombre recovery.img
Las secciones que hay que modificar son :MENU1 y crear una nueva versión para el recovery nuevo como :TOUCHRECOVERY6014, que ya viene hecha, que podemos llamar como queramos, por ejemplo :QTCRECOVERY10. Aprovecharemos la sección "preconfigurada" :EXTRARECOVERY1
Vamos al lío, como ya está preparado el guión para incorporar más recoveries nos aprovechamos para ahorrar trabajo.
:MENU1
cls
echo Step 1: RECOVERY SELECTION
echo.
echo 0) Quit
echo 1) NVSBL-Unusual Recovery
echo 2) CWM Recovery 6.0.1.2
echo 3) Touch Recovery 6.0.1.4
echo 4) QTC Recovery 1.0 (Quitamos REM y aqui le damos el nombre que nos dé la gana)
REM echo 5) Recovery Extra 2
REM
REM To add more recoveries... 
REM
echo.
set /p selrecov= Please select a Recovery or Quit [0-4]: (Metemos un recovery nuevo, pues una opción más, cambiamos 3 por 4)
if %selrecov%==0 goto ABANDON
if %selrecov%==1 goto NVSBLRECOVERY
if %selrecov%==2 goto CWMRECOVERY6012
if %selrecov%==3 goto TOUCHRECOVERY6014
if %selrecov%==4 goto QTCRECOVERY10 (Quitamos REM y cambiamos el nombre de la sección preconfigurada EXTRARECOVERY1 por el que queramos como QTCRECOVERY10)
REM if %selrecov%==5 goto EXTRARECOVERY2
REM
REM To add more recoveries... 
REM
echo Invalid option, try again (Press [Enter] to continue...)
pause > nul
goto MENU1
:TOUCHRECOVERY6014
copy /Y (Touch)recovery.img recovery.img
copy /Y (Flecky)flash.cfg flash.cfg
goto MENU2
:QTCRECOVERY10 (Quitamos REM y Cambiamos :EXTRARECOVERY1 por :QTCRECOVERY10, para ser congruentes con el cambio anterior)
copy /Y (QTC1)recovery.img recovery.img (El recovery vendrá en un archivo, y deberemos elegir un nombre diferente a recovery.img, por ejemplo (QTC1)recovery.img y con ese mismo nombre deberemos introducirlo también en el pack distribuir con nvflash -con recovery.img ya renombrado a (QTC1)recovery.img-).
copy /Y (Flecky)flash.cfg flash.cfg (Quitamos REM)
goto MENU2 (Quitamos REM)
Listo, pa habernos matao, ¿no? 
B) LinuxSupongamos que tenemos el guión o script para linux y nos han pasado un nuevo recovery . ¿Cómo modificaríamos el código para incorporarlo?Consideraciones:
- Ese recovery tienen un nombre, por ejemplo Súper Recovery Que Te Cagas v1.0,
- Ese recovery vendrá distribuido con el nombre recovery.img y tendremos que grabarlo en la carpeta con otro nombre, por ejemplo (QTC10)recovery.img
A diferencia del acaso anterior en linux (bash) no tendremos secciones sino funciones. Las funciones que hay que modificar son MENU1 y crear una nueva función para el nuevo recovery como TOUCHRECOVERY6014, ya hecha que podemos llamar como queramos, por ejemplo QTCRECOVERY10. Aprovecharemos la función "preconfigurada" EXTRARECOVERY1 . No es lo mismo pero práctamente es análogo al caso de la modificación del script para Windows.
Vamos al lío, como ya está preparado el guión para incorporar más recoveries nos aprovechamos para ahorrar trabajo.
MENU1 ()
{
clear
echo Step 1: RECOVERY SELECTION
echo
echo '0) Quit'
echo '1) NVSBL-Unusual Recovery'
echo '2) CWM Recovery 6.0.1.2'
echo '3) Touch Recovery 6.0.1.4'
echo '4) QTC Recovery 1.0' (Quitamos # y adecuamos el nombre tal y como queramos)
# echo '5) Recovery Extra 2'
#
# To add more recoveries... 
#
echo
echo Please select a Recovery or Quit [0-4]: (Como hemos metido un nuevo recovery, en vez de 3 escribiremos 4)
read selrecov
if [ $selrecov == 0 ]
then
ABANDON
fi
if [ $selrecov == 1 ]
then
NVSBLRECOVERY
fi
if [ $selrecov == 2 ]
then
CWMRECOVERY6012
fi
if [ $selrecov == 3 ]
then
TOUCHRECOVERY6014
fi
if [ $selrecov == 4 ] (Quitamos #)
then (Quitamos #)
QTCRECOVERY10 (Quitamos # y Cambiamos EXTRARECOVERY1 por QTCRECOVERY10, para ser congruentes con el cambio anterior)
fi (Quitamos #)
# if [ $selrecov == 5 ]
#then
#EXTRARECOVERY2
#fi
#
# To add more recoveries... 
#
clear
read -p "Invalid option, try again (Press [Enter] to continue...)"
MENU1
}
TOUCHRECOVERY6014 ()
{
cp '(Touch)recovery.img' recovery.img
cp '(Flecky)flash.cfg' flash.cfg
MENU2
}
QTCRECOVERY10 () (Quitamos # y cambiamos EXTRARECOVERY1 por QTCRECOVERY10, para ser congruentes con el cambio anterior)
{ (Quitamos #)
cp '(QTC1)recovery.img' recovery.img (Quitamos # El recovery vendrá en un archivo, y deberemos elegir un nombre diferente a recovery.img, por ejemplo (QTC1)recovery.img y con ese mismo nombre deberemos introducirlo también en el pack distribuir con nvflash -con recovery.img ya renombrado a (QTC1)recovery.img-).
cp '(Flecky)flash.cfg' flash.cfg (Quitamos #)
MENU2 (Quitamos #)
} (Quitamos #)
Fácil.
NOTA MUY IMPORTANTE EN LINUX:En linux distinguir entre mayúsculas y minúsculas es muy importante, crítico. Por ejemplo, si escribo cp '(QTC1)recovery.img' recovery.img renombrará recovery.img a (QTC1) recovery.img pero, sin embargo, si escribo CP '(QTC1)recovery.img' recovery.img o cp '(qtc1)recovery.img' recovery.img el programa no funcionará porque se hará un error. Así que una recomendación, fijaros cómo renombráis los nuevos recovery, por ejemplo:
si tenemos (NVSBL)recovery.img, lo lógico para no liarnos es que el nuevo recovery lo renombremos (QTC1)recovery.img, y al modificar el script lo pongamos igual, porque si empezamos a cambiar mayúsculas y minúsculas el programa dará error. Sí, en linux, al contrario que en Windows, echo -comando- no es lo mismo que ECHO -nada-, o recovery.img no es lo mismo que Recovery.img o RECOVERY.img, o recovery.Img, etc. -para linux son archivos distintos-.
Ejercicio: MODIFICAR SCRIPT PARA ELIMINAR UN RECOVERY
Eliminar opciones es aún más fácil... Ver el caso anterior y deshacerlo. No hay que escribir nada más que # en bash y REM en Batch
Última edición por Manolo55 Día 29/11/12 a las 09:30:46.
|