Un programa para actualizar una tableta con firmware de extensión img. Edición de firmware de imagen. Desmontaje de la imagen del sistema ext4

MTwinTools es una utilidad que le permite trabajar con archivos e imágenes de firmware boot.img, recovery.img y system.img. El autor de la utilidad es vin2809 del foro 4pda. MTwinTool será útil para los propietarios teléfonos inteligentes huawei Basado en procesadores MTK.

Guía del usuario para trabajar con MTwinTools

1. Introducción.

1.1. Objetivo.

La herramienta MTwinTools está destinada a desmontar/ensamblar imágenes de dispositivos basados ​​en chips MT.

Está construido para su uso en línea de comando basado en la herramienta RKwinTools, diseñada para funcionar con dispositivos en chips RK29xx-RK31xx y algunos programas de distribución gratuita.

Funciona solo en Windows 7 y superior sin instalar CYGWIN y tampoco requiere ningún registro adicional de rutas en Variables de entorno SO.

La herramienta le permite:

  • descomprima y empaquete la imagen Boot.img;
  • desempaquete y empaquete la imagen Recovery.img;
  • descomprimir y empaquetar la imagen Kernel.img;
  • descomprima y empaquete la imagen System.img, tanto de tipo yaffs como ext2-ext4;
  • convertir un archivo disperso de tipo disperso en una imagen de tipo ext4;
  • calcular la suma de comprobación de un archivo en formato md5;
  • iniciar superusuario.

1.2. Instalación de MTwinTools.
La instalación de la herramienta se realiza descomprimiendo el archivo en cualquier lugar que le resulte conveniente. Esto creará una carpeta MTwinTools que contiene:

  • carpetas _In/, App/ y Cygwin/;
  • así como archivos Readme.txt y menu.bat.

La carpeta _In está vacía y está destinada a contener imágenes de origen para su procesamiento. La carpeta App/ contiene un conjunto de archivos de comandos que procesan imágenes. La carpeta Cygwin/ contiene bibliotecas y archivos de utilidades libremente redistribuibles. El archivo Readme.txt contiene instrucciones para el usuario, es decir el texto que estás leyendo actualmente. El archivo menu.bat se utiliza para crear el menú de herramientas MTwinTools.

ATENCIÓN. NO ES NECESARIO especificar rutas de acceso a archivos de servicio en las variables de entorno del sistema operativo Windows.

Mientras trabaja, aparecerán otras carpetas necesarias:

  • Pack, que contendrá los archivos de arranque, recuperación y sistema después
    paquetes, una carpeta md5 que contiene archivos con una suma de verificación, así como una carpeta
    Firmware, en la subcarpeta Imagen en la que se ubicarán los archivos de arranque ensamblados,
    Recuperación y Sistema;
  • Desempaquetar, en el que los archivos de arranque, recuperación y sistema se descomprimen COMPLETAMENTE
    estará ubicado en la carpeta Firmware, en la subcarpeta Imagen.

1.3. Desinstalando MTwinTools.

La herramienta se desinstala eliminando la carpeta raíz de la herramienta, es decir. Carpetas MTwinTools.

2. Normas básicas de trabajo.

2.1.Para comenzar, debe ejecutar el archivo menu.bat, que iniciará el menú de la herramienta.

2.2.Las imágenes destinadas a descomprimir deben colocarse en la carpeta _In de la herramienta. Los nombres de los archivos de entrada DEBEN contener palabras clave y pueden tener nombres como los siguientes:

  • *arranque*.img;
  • *recuperación*.img;
  • *núcleo*.img;
  • *sistema*.img.

2.3.Al iniciar por primera vez, inicialice la herramienta. Cuando se inicializa la herramienta, TODOS los archivos ubicados en la carpeta _In se copiarán a la carpeta de entrada de trabajo Unpack/Firmware/Image. Esto se hace para preservar los archivos originales.

2.4.Después de desmontar la imagen, su contenido se colocará en la carpeta Unpack, en la que se creará la siguiente estructura de carpetas:

Arranque (recuperación)/cfg/
núcleo/
disco RAM/

La carpeta cfg/ contendrá la configuración de la imagen, en la carpeta del kernel encontrará el kernel, es decir. archivo binario zImage y la carpeta ramdisk contendrá todo lo demás. Para ensamblar la imagen, sus partes componentes, es decir. Coloque el disco ram, el kernel y posiblemente la configuración en las carpetas apropiadas en Unpack. La imagen creada se ubicará en la carpeta de salida del paquete.

3. Descripción del producto.

3.1. Menú de comando principal.

El menú principal de comandos de herramientas se ve así:

**************************
*MTwinTools_V_0.6*
**************************
*Comandos de imagen:*
* ————— *
*1-Bota*
*2-Recuperación*
*3 núcleos*
*4-Sistema*
*5-Otros comandos*
* *
**************************
* Comandos de herramientas: *
* ————— *
*Herramientas de 6 inicios*
*7-Limpiar*
* *
**************************
*8-Salir*
**************************
Por favor elija el comando:

Un comando se selecciona ingresando el número indicado delante de él. En la versión actual puedes hacer lo siguiente:

— vaya al menú Procesamiento de imagen de arranque escribiendo el número “1”;
— vaya al menú de procesamiento de imágenes de recuperación — “2”;
— vaya al menú de procesamiento de imágenes del Kernel — “3”;
— vaya al menú de procesamiento de imágenes del sistema — “4”;
— ir al menú de otros comandos — “5”;
— inicializar el área de trabajo de la herramienta — “6”;
— limpiar el área de trabajo del producto — “7”;
— completar el trabajo, es decir salir de la instalación - "8".

3.2. Menú de arranque.

Para continuar con el procesamiento de la imagen de arranque, ejecute el comando "1-Boot". Esto lo llevará al menú "Comandos de arranque".

El menú de procesamiento de imágenes de arranque tiene este aspecto:

**************************
* Comandos de arranque: *
* ————— *
*1-Descomprimir el arranque*
*Paquete de 2 botas*
* *
**************************
*3-Regreso*
**************************
Por favor elija el comando:

El comando “1” descomprime las imágenes de arranque, el comando “2” empaqueta las imágenes de arranque. El comando “3” regresa al menú principal de la herramienta.

2.2.1. Desmontando la imagen boot.img.

2.2.2. Construya la imagen boot.img.

Al crear la imagen de inicio, aparecerá un menú para seleccionar una fuente de datos.

**************************
*Elección de imagen fuente:*
* 1. Descomprimir directorio *
* 2. Directorio del paquete *
*3.Regreso*
**************************
Por favor elige fuente:

Tiene la oportunidad de crear una imagen a partir de una imagen descomprimida ubicada en la carpeta Unpack/Boot; para hacer esto, seleccione el elemento del menú “1. Desempaquete el directorio”. Si selecciona el elemento del menú “2. Pack dir", luego se creará la imagen a partir de los datos ubicados en la carpeta Pack/boot. Para cancelar la operación, seleccione el elemento del menú “3. Devolver". Al mismo tiempo tu
regrese al menú "Comandos de arranque".

3.3. Menú de recuperación.

Para proceder a procesar la imagen de recuperación, ejecute el comando "2-Recovery". Esto lo llevará al menú "Comandos de recuperación". El menú de procesamiento de imágenes de recuperación se ve así:

**************************
*Comandos de recuperación:*
* —————— *
* 1-Recuperación desempaquetar *
*2-Paquete de recuperación*
* *
**************************
*3-Regreso*
**************************
Por favor elija el comando:

El comando "1" descomprime las imágenes de recuperación, el comando "2" empaqueta las imágenes de recuperación. El comando “3” regresa al menú principal de la herramienta.
2.3.1. Desmontando la imagen recovery.img.

Todas las acciones se realizan automáticamente, es decir. Sin su participación no hay nada que describir aquí.

2.3.2. Cree la imagen recovery.img.

Al crear la imagen de recuperación, aparecerá un menú para seleccionar una fuente de datos.

**************************
*Elección de imagen fuente:*
* 1. Descomprimir directorio *
* 2. Directorio del paquete *
*3.Regreso*
**************************
Por favor elige fuente:

Tiene la oportunidad de crear una imagen a partir de una imagen descomprimida ubicada en la carpeta Unpack/recovery; para hacer esto, seleccione el elemento del menú “1. Desempaquete el directorio”. Si selecciona el elemento del menú “2. Pack dir", luego la imagen se creará a partir de los datos ubicados en la carpeta Pack/recovery.

Para cancelar la operación, seleccione el elemento del menú “3. Devolver". Esto lo regresará al menú "Comandos de recuperación".

3.4. Menú del núcleo.

Para proceder a procesar la imagen del Kernel, ejecute el comando “3-Kernel”. Esto lo llevará al menú "Comandos del kernel".

El menú de procesamiento de imágenes del Kernel se ve así:

**************************
* Comandos del núcleo: *
* —————— *
* 1-Kernel desempaquetar *
*Paquete de 2 núcleos*
* *
**************************
*3-Regreso*
**************************
Por favor elija el comando:

El comando "1" descomprime las imágenes del Kernel, el comando "2" empaqueta las imágenes del Kernel. El comando “3” regresa al menú principal de la herramienta.

3.4.1. Desmontando la imagen kernel.img.

Todas las acciones se realizan automáticamente, es decir. Sin su participación no hay nada que describir aquí.

3.4.2. Construyendo la imagen kernel.img.

Al crear la imagen del kernel, aparecerá un menú para seleccionar una fuente de datos.

**************************
*Elección de imagen fuente:*
* 1. Descomprimir directorio *
* 2. Directorio del paquete *
*3.Regreso*
**************************
Por favor elige fuente:

Tiene la oportunidad de crear una imagen a partir de una imagen descomprimida ubicada en la carpeta Unpack/Kernel; para hacer esto, seleccione el elemento del menú “1. Desempaqueta el directorio”. Si selecciona el elemento del menú “2. Pack dir", luego se creará la imagen a partir de los datos ubicados en la carpeta Pack/Kernel.

Para cancelar la operación, seleccione el elemento del menú “3. Devolver". Esto lo regresará al menú "Comandos del kernel".

3.5. Sistema de menús.

Para proceder a procesar la imagen del sistema, ejecute el comando “3-System”. Esto lo llevará al menú "Comandos del sistema".

El menú de procesamiento de imágenes del sistema se ve así:


* Comandos del sistema: *
* ——————————————— *
* 1 paquete de yaffs * 2 paquetes de yaffs *
* 3-descomprimir ext3 * 4-empaquetar ext3 *
* 5-descomprimir ext4 * 6-empaquetar ext4 *
* 7-disperso a ext4 * *
* * *
***************************************************
*8-Regreso*
***************************************************
Por favor elija el comando:

3.5.1. Desmontando una imagen del sistema como yaffs.

El comando "1" descomprime las imágenes del sistema del tipo yaffs en la carpeta Unpack/System.

3.5.2. Construyendo una imagen del sistema como yaffs.

El comando “2” empaqueta imágenes del sistema del tipo yaffs. Aparecerá un menú para seleccionar una fuente de datos.

**************************
*Elección de imagen fuente:*
* 1. Descomprimir directorio *
* 2. Directorio del paquete *
*3.Regreso*
**************************
Por favor elige fuente:

Tiene la oportunidad de crear una imagen a partir de una imagen descomprimida ubicada en la carpeta Unpack/system; para hacer esto, seleccione el elemento del menú “1. Desempaquete el directorio”. Si selecciona el elemento del menú “2. Pack dir", luego se creará la imagen a partir de los datos ubicados en la carpeta Pack/system.

Para cancelar la operación, seleccione el elemento del menú “3. Volver” y volverá al menú anterior de “Comandos del sistema”.

3.5.3. Desmontaje de la imagen del sistema tipo ext3.

El comando "3" descomprime las imágenes del sistema de tipo ext2-ext3 en la carpeta Unpack/System.

3.5.4. Construyendo una imagen del sistema de tipo ext3.

El comando "4" crea la imagen del sistema de tipo ext2-ext3. El embalaje se realiza de manera similar al párrafo 3.5.2. sólo la imagen de salida será de tipo ext3.

3.5.5. Desmontaje de la imagen del sistema tipo ext4.

El comando "5" descomprime las imágenes del sistema ext4 en la carpeta Unpack/System.

3.5.6. Construyendo una imagen del sistema de tipo ext4.

El comando "6" construye la imagen del sistema de tipo ext4. El embalaje se realiza de manera similar al párrafo 3.5.2. sólo la imagen de salida será del tipo ext4.

3.5.7. Convierta una imagen comprimida escasa a ext4.

El comando "7" convierte (convierte o transcodifica) imágenes comprimidas de tipo disperso en imágenes de tipo ext4 (análoga a la operación simg2img).

3.5.8.Volver al menú principal.

El comando “8” regresa al menú principal de la herramienta.

3.6. Menú de otros comandos.

Para pasar a ejecutar otros comandos, ejecute el comando “5-Otros comandos”. Esto lo llevará al menú "Otros comandos". El menú para ejecutar otros comandos se ve así:

**************************
* Otros comandos: *
* —————- *
*1-Superusuario inicial*
*2-Calcular md5*
* *
**************************
*3-Regreso*
**************************
Por favor elija el comando:

El comando "1" inicializa el SuperUsuario en la imagen del sistema, el comando "2" calcula la suma de comprobación del archivo. El comando “3” regresa al menú principal de la herramienta.

3.6.1. Inicializando superusuario.

Al inicializar SuperUser, aparecerá un menú de selección de fuente:

**************************
* Elección de fuente de inicio: *
* 1. Descomprimir directorio *
* 2. Directorio del paquete *
*3.Regreso*
**************************
Por favor elige fuente:

Tiene la oportunidad de inicializar la imagen descomprimida ubicada en la carpeta Unpack/system; para hacer esto, seleccione el elemento del menú “1. Desempaquetar directorio." Si selecciona el elemento del menú “2. Pack dir", luego se inicializará la imagen ubicada en la carpeta Pack/system. Para cancelar la operación, seleccione el elemento del menú “3. Devolver".
La inicialización se realiza copiando. archivos necesarios(su y SuperSU.apk) en la imagen System.img desensamblada. Para obtener acceso Root necesita:

— descomprime la imagen del sistema usando el comando “3” del menú principal
herramientas o coloque la imagen descomprimida en la carpeta Unpack (o Pack)/System/;
— ejecute el comando “1-init SuperUser” en el menú “Otros comandos”.

Después de mostrar la imagen System.img, tendrá acceso de root en su dispositivo. Si se utilizan archivos de una versión diferente para obtener acceso Root en su dispositivo, entonces sólo necesita actualizar (reemplazar) los archivos su y SuperSU.apk en la carpeta App/.

3.6.2. Cálculo de suma de comprobación.

Para calcular la suma de comprobación de un archivo o archivos, colóquelos en la carpeta Pack/md5/. Después de ejecutar el comando “2-Calcular md5”, se agregarán todos los archivos ubicados en la carpeta Pack/md5 suma de cheque, calculado utilizando el algoritmo md5. Sólo se procesan archivos sin extensión o con extensión .img, .tar, .zip.

3.7. Inicialización.

Para llevar a cabo la inicialización, ejecute el comando “6-init Tools”. Esto creará todas las estructuras de carpetas necesarias para que MTwinTools funcione y copie las imágenes de entrada a la carpeta de trabajo Unpack/Firmware/Image.

3.8. Limpieza del producto.

Para limpiar el área de trabajo, escriba "7-CLEAN". En este caso, TODAS las carpetas adicionales junto con su contenido se eliminarán, MTwinTools completará su trabajo y tomará la forma que tenía inmediatamente después de la instalación.

3.9. Salida.

Para salir, marque “8-Salir”. En este caso SÓLO saldrá el producto sin ningún tipo de limpieza.

Interpolación, interpolación- en matemáticas computacionales, un método para encontrar valores intermedios de una cantidad a partir de un conjunto discreto existente de valores conocidos.

Muchos de quienes se ocupan de cálculos científicos y de ingeniería a menudo tienen que operar con conjuntos de valores obtenidos empíricamente o mediante muestreo aleatorio. Como regla general, basándose en estos conjuntos, es necesario construir una función en la que otros valores obtenidos puedan caer con alta precisión. Esta tarea se llama aproximación. La interpolación es un tipo de aproximación en la que la curva de la función construida pasa exactamente por los puntos de datos disponibles.

Existen muchos métodos de interpolación en diferencias finitas. Mayoría
El método de Newton para la interpolación directa (método de Newton-Gregory) es común. El polinomio de interpolación en este caso tiene la forma:

Encontramos los coeficientes C usando la fórmula:

Implementación del programa en C#:
usando Sistema; Interpolación del espacio de nombres (clase Programa…

Visualización de algoritmos de clasificación.

El programa se divide en dos subprocesos, en uno de los cuales se realiza la clasificación y en el otro se vuelve a dibujar. GUI. Después de hacer clic en el botón "Ordenar", el programa llama al método "RunSorting", en el que se define el algoritmo de clasificación y se crea un nuevo hilo con el proceso de clasificación ejecutándose en él.
vacío privado RunSo…

Kacher Brovina en KT819G

Hoy quiero enseñaros mi Kacher, que hice las pasadas vacaciones de invierno. No describiré todo el proceso de fabricación, ya que hay muchos artículos en Internet. Escribiré solo sobre sus parámetros principales.

A continuación se muestran algunas fotografías tomadas durante el montaje del dispositivo.

La bobina se enrolla con aproximadamente 2000 vueltas de alambre de 0,08 mm sobre un tubo de PVC con un diámetro de 50 mm y una altura de 200 mm.

Como terminal se utilizó una placa antigua. disco duro. Todo lo demás se montó según el diagrama ubicado al final de la página.

La primera opción se alimentaba desde la fuente de alimentación de una computadora vieja, con un voltaje de 12 V. Luego se hizo una fuente de alimentación separada, con un voltaje de 30 V y con refrigeración incorporada.

Diagrama del dispositivo:

¿Qué es CORS y cómo usarlo?

El intercambio de recursos entre dominios (CORS) es una especificación del W3C que permite la comunicación entre dominios en el navegador. Al construir sobre el objeto XMLHttpRequest, CORS permite a los desarrolladores trabajar con los mismos modismos que las solicitudes con el mismo dominio. El caso de uso de CORS es simple. Imagine que alice.com tiene algunos datos que bob.com quiere obtener. Este tipo de solicitud tradicionalmente no está permitido según la misma política de origen del navegador. Sin embargo, al admitir solicitudes CORS, alice.com puede agregar algunos encabezados de respuesta especiales que permiten a bob.com acceder a los datos. Como puede ver en este ejemplo, la compatibilidad con CORS requiere coordinación entre el servidor y el cliente. Afortunadamente, si eres desarrollador del lado del cliente, estás protegido de la mayoría de estos detalles. El resto de este artículo muestra cómo los clientes pueden realizar solicitudes entre orígenes y cómo los servidores pueden configurarse para admitir CORS. Continuado…

Casi todos usuario de android teléfono inteligente, existía el deseo de crear o editar el firmware para satisfacer sus necesidades y deseos. En este artículo veremos el principio de edición de firmware para CWM (en formato zip).

Preparación:

En primer lugar, debemos decidir qué firmware utilizaremos como base. Es mejor usarlo apagado. firmware en zip. Para casi todos los dispositivos comunes hay un firmware limpio + raíz.
Cuando se selecciona el firmware, debe descargarlo en cualquier ubicación que le resulte conveniente en su PC (no es necesario descomprimirlo).
También necesitaremos un archivador, recomiendo usar 7zip y lo mejor de su tipo editor de texto Bloc de notas++.

Estructura del firmware:

Al abrir el archivo con el firmware, verá lo siguiente:
META-INF- La carpeta contiene scripts de instalación del firmware.
sistema- una carpeta con todos los archivos de firmware (aplicaciones, ajustes, scripts, etc.).
arranque.img- el núcleo del sistema.

Casi todas las manipulaciones se realizan en la carpeta. sistema, su estructura:
aplicación- aplicaciones del sistema.
papelera- recursos del propio sistema.
etc.- Scripts, ajustes, configuraciones, perfiles y configuraciones del sistema.
fuentes- Fuentes del sistema.
estructura- aquí se almacenan los archivos principales del sistema (gráficos, configuración de texto de animación, etc.).
biblioteca- bibliotecas del sistema.
medios de comunicación- archivos multimedia (tonos de llamada de notificación, animación de carga, fondo de pantalla, etc.).
usr- configuraciones que el sistema no puede cambiar en el futuro (funcionan en modo de solo lectura).
xbin- nuevamente, configuraciones del sistema y otros ajustes.
construir.prop- información sobre el sistema, configuración regional y rendimiento del sistema.

Aplicaciones:

Antes de agregar o quitar software al sistema, debe verificar si su firmware está deodexado (es decir, verifique la presencia de archivos .odex en la carpeta de la aplicación. Si hay archivos, entonces debe deshacerse de ellos usando este instrucciones .
Agregue software al firmware:
En primer lugar, debe instalar en su dispositivo inteligente aquellos programas que desea agregar al ensamblaje. Después de la instalación, los eliminamos del sistema usando Explorador raíz y sus análogos, están ubicados en la ruta de datos/aplicación, también necesitamos sus bibliotecas (si existen, por supuesto), están ubicadas en la ruta de datos/datos. Se encuentran en la carpeta del mismo nombre en la aplicación y tienen la extensión .entonces. Luego se apoderó .apk coloque los archivos en el archivo a lo largo de la ruta sistema/aplicación y los archivos con la extensión .entonces(libs) a lo largo de la ruta system/lib .
Eliminamos el software del firmware:
Aquí todo es sencillo, ve a la carpeta. aplicación- decidimos lo que no necesitamos y eliminamos todo el software innecesario (es mejor no tocar el sistema).

Idioma y versión de firmware:

Copie el archivo build.prop a su escritorio. Ábrelo con el bloc de notas y busca las líneas:

ro.product.locale.language=en
ro.product.locale.region=EE.UU.

para el idioma ruso necesitas hacer esto:

ro.product.locale.language=en
ro.product.locale.region=RU

ingresa el nombre de tu mod en la línea

en el mismo build.prop

Artes graficas:

Toda la parte gráfica del firmware se almacena en dos archivos, ruta del archivo framework-res.apk marco del sistema y SystemUI.apk en el camino aplicación del sistema. Y la parte gráfica de la aplicación de configuración se almacena naturalmente en la aplicación Settings.apk.

Scripts y ajustes (aceleración y optimización del sistema):

La mayoría de las configuraciones se realizan en el archivo. construir.prop, puedes leer sobre esto. Además, si su kernel admite inicio.d Hay varios scripts para optimizar el sistema, uno de ellos se describe en este artículo. (optimización de RAM) y en este artículo Modificar scripts para init.d

Reemplazo de fuentes del sistema:

Como se indicó anteriormente, todas las fuentes están contenidas en la carpeta fuentes, las fuentes principales son: DroidSans.ttf y DroidSans-Bold.ttf. Se pueden reemplazar con cualquier fuente, renombrándolas de manera similar a lo anterior y moviéndolas con el reemplazo al archivo con el firmware en la carpeta. fuentes.

Centro:

Teóricamente basta con sustituir arranque.img propio, pero en algunos casos los Cores van acompañados de scripts adicionales. Por eso te aconsejo que no hagas nada si tienes dudas.



Comencemos con el hecho de que necesitas Linux. En Windows, sólo puedes desmontar el firmware, pero no podrás volver a montarlo por motivos puramente técnicos. Ahora sobre el firmware. Por lo general, se distribuyen en forma de archivos ZIP actualizados mediante recuperación personalizada. Es uno de ellos que necesitaremos para experimentos. Recomiendo iniciar el camino de un romodel con algo lo más cercano posible a AOSP. firmware personalizado, porque suele ser más fácil de entender que el stock.

  1. Desempaquete el archivo con el firmware en cualquier carpeta.
  2. Descargue el script desde el enlace y descomprímalo en cualquier carpeta.
  3. Lanzamos el archivo ext (si se queja de la falta de Java, simplemente salte presionando y; Java solo es necesario para empaquetar).
  4. Ahora seleccione desempaquetar presionando el botón 1 y luego Enter.
  5. Aparecerá una nueva carpeta llamada extract_* junto al archivo ext y la carpeta de herramientas. Copie los archivos system.new.dat y system.transfer.list en él.
  6. Después de copiar los archivos, presione Enter y espere. Después de un tiempo, deberá presionar Enter nuevamente, ingresar la contraseña de administrador y presionar Enter nuevamente.
  7. Listo. El contenido del sistema está en la carpeta extract_*/output.

método manual

Desempaquete el archivo con el firmware en cualquier carpeta (por ejemplo, rom):

$ mkdir ~/rom $ descomprimir ruta_al_archivo -d ~/rom/

Descargue las herramientas que necesitamos en esta carpeta:

$ cd ~/rom $ wget https://github.com/xpirt/sdat2img/raw/master/sdat2img.py

Ejecutemos el script:

$ chmod +x sdat2img.py $ ./sdat2img.py sistema.transfer.list sistema.nuevo.dat sistema.img

Convierte el archivo system.new.dat en una imagen sin formato llamada system.img. Monte la imagen en la subcarpeta mnt:

$ mkdir mnt $ sudo mount -t text4 -o loop system.img ~/rom/mnt

Estructura de directorios de Android

Después de descomprimir el sistema, aparecerá la siguiente estructura de directorios:

  • aplicación - aplicaciones preinstaladas con privilegios estándar;
  • aplicación privada- aplicaciones preinstaladas con privilegios elevados, incluidos algunos componentes del sistema;
  • papelera- archivos binarios en formato ELF, un análogo de los directorios /bin y /usr/bin en Linux. Contiene varios componentes del sistema utilizados por componentes del sistema de nivel superior;
  • etc.- archivos de configuración. Un análogo completo de /etc en Linux, utilizado, sin embargo, sólo por esos mismos componentes del sistema. Aplicaciones de Android almacenar ajustes individuales en los directorios /data/data/;
  • fuentes- fuentes. De forma predeterminada, contiene sólo fuentes de la marca Roboto;
  • estructura- bibliotecas de clases Java utilizadas por el sistema y las aplicaciones. También hay un archivo framework-res.apk que contiene una descripción completa de la interfaz. Sistema operativo, incluidos todos los archivos gráficos;
  • biblioteca Y lib64- Bibliotecas de Linux utilizadas por componentes del sistema de bajo nivel. Análogo de los directorios /lib y /usr/lib en Linux, incluidos los siguientes bibliotecas estándar, como libc, libz, libssl. En dispositivos con arquitectura ARMv7 e inferior, faltará el directorio lib64;
  • medios de comunicación- archivos multimedia: tonos de llamada, sonidos de notificación, sonidos de interfaz y animación de carga del sistema operativo;
  • tts- archivos necesarios para el sintetizador de voz;
  • usr- un directorio que normalmente contiene archivos necesarios para ejecutar aplicaciones desde el directorio bin. Esencialmente un análogo de /usr/share ;
  • proveedor- archivos proporcionados por el fabricante del dispositivo. Generalmente contiene firmware binario para varios componentes de hardware, por ejemplo un módulo Wi-Fi;
  • xbin- directorio opcional; los firmware personalizados lo utilizan para almacenar cosas como el intérprete bash, SSH, PowerTOP, BusyBox y otras herramientas útiles;
  • construir.prop- un archivo que contiene información sobre el montaje, así como varias configuraciones de bajo nivel;
  • complemento.d- contiene scripts que se inician después de instalar el firmware. Las GApps también escriben aquí su script, gracias al cual se reactivan después de reinstalar el firmware.

Ahora que estamos familiarizados con la estructura básica de Android, comencemos a realizar cambios.

Eliminar y agregar aplicaciones

Todo programas preinstalados se puede encontrar en dos carpetas:

  • /sistema/aplicación/;
  • /system/priv-aplicación/.

Se diferencian entre sí en los privilegios de acceso. Si los programas de la aplicación tienen los mismos permisos que programas de terceros(por ejemplo, instalada desde Play Store), las aplicaciones de la aplicación privada pueden usar API privilegiadas (derechos privilegiados). Puedes obtener más información sobre esto en.

Para preinstalar una aplicación en el firmware, simplemente coloque su archivo APK en /system/app/. Por supuesto, puede crear una carpeta separada, pero en nuestro caso esto no tiene sentido, porque la carpeta se usa para almacenar bibliotecas y archivos odex, que simplemente no tenemos. Para eliminarlo, simplemente elimine la carpeta que lo contiene.

Puede ir más allá y reemplazar las aplicaciones estándar con contrapartes. Por ejemplo, para reemplazar el calendario, elimine la carpeta Calendario y copie nuestro com.rpagyc.simplecalendar.apk favorito en /system/app. Y no tienes que copiarlo. Entonces el firmware se quedará sin calendario.

Lo principal que hay que recordar es que los programas de acciones pueden estar relacionados entre sí. Por lo tanto, eliminar un programa puede provocar la inoperancia total de otro (por ejemplo, CalendarProvider y Calendar: al eliminar el primero, dejará inoperable no solo el calendario de acciones, sino también cualquier otro calendario). Afortunadamente, en el firmware AOSP puro no hay muchas interconexiones.

Cambiando la animación de carga

La animación se almacena como imágenes PNG, empaquetadas en el archivo /system/media/bootanimation.zip sin compresión. Dentro del archivo se encuentran:

  • desc.txt- un archivo que describe la animación;
  • parte0- una carpeta con los archivos de animación que se reproducen primero;
  • parte 1- una carpeta con archivos de animación que se reproducen en segundo lugar;
  • ¿parte?- la última carpeta, cuyas imágenes se reproducen al final.

El archivo desc.txt puede contener algo como

1920 1080 60 p 1 0 parte0 p 0 0 parte1

El propósito de estas líneas es intuitivo: 1920 × 1080 es la resolución de la imagen, 60 es el número de fotogramas por segundo. Part0 y part1 indican las carpetas desde las que se reproducirá la animación y la secuencia de reproducción. En general, puede haber una parte o varias (tres o más).

Las imágenes ubicadas en las carpetas de piezas están numeradas con cinco números en orden de reproducción: 00000.png, 00001.png, 00002.png... Estas imágenes se pueden reemplazar por las suyas propias, creando así una animación original. O simplemente puede eliminar el archivo bootanimation.zip. Luego el dispositivo mostrará una animación de Android estándar. O utilice una colección de animaciones ya preparada en w3bsit3-dns.com.

Cambiando el diseño de sonido.

De hecho, todos los sonidos que reproduce el sistema se almacenan en la carpeta /system/media/audio. Dentro de él encontrarás las siguientes carpetas:

  • alarmas- melodías del despertador;
  • notificaciones- sonidos de notificación;
  • tonos de llamada- tonos de llamada;
  • interfaz de usuario- sonidos del sistema, como batería baja, enfoque de la cámara, selección de elementos de la interfaz.

En alarmas, notificaciones, tonos de llamada puedes agregar tantas melodías como quieras. Puedes tomarlos, por ejemplo, aquí:

  • tonos de llamada estándar de diferentes teléfonos y smartphones Nokia;

Y un pequeño truco: eliminar archivos de la carpeta ui no provocará fallas ni errores, sino la desaparición de los sonidos del sistema. Por lo tanto, puede desactivar fácilmente el sonido al tomar una fotografía con la cámara, tomando una captura de pantalla, simplemente borrando los archivos que contienen estos sonidos (sus nombres son intuitivos).

Agregar fuentes

Las fuentes se almacenan en fuentes. Puede encontrar archivos con archivos de fuentes en w3bsit3-dns.com y XDA. Para instalar, simplemente copie y reemplace los archivos ttf del archivo a la carpeta de fuentes.

Cambiar la configuración del sistema (build.prop)

La imagen del sistema contiene un interesante archivo build.prop que contiene mucha información útil sobre el hardware del dispositivo y la configuración predeterminada para varias aplicaciones estándar. Para ser justos, observo que no siempre es así. Por ejemplo, en Gigaset ME y ME Pro build.prop se divide en dos partes. Una parte contiene configuraciones para Gigaset ME y para ME Pro algunas líneas están duplicadas, pero las teclas (nombre del teléfono inteligente, etc.) son diferentes. Esto se hizo para garantizar un funcionamiento más o menos correcto del mismo firmware en diferentes dispositivos.


Build.prop contiene (o puede contener) una gran cantidad de configuraciones. Algunos de ellos no cambian nada, otros mejoran una cosa a expensas de otra, pero hay aquellas que son realmente útiles:

  • ro.modelo.de.producto Y ro.producto.fabricante- modelo de teléfono inteligente y nombre del fabricante. Al reemplazar estas líneas, puedes hacer que Play Store piense que tienes un teléfono inteligente diferente, lo que abrirá el acceso a más software. Para todos aquellos poco conocidos teléfonos inteligentes chinos estas líneas pueden salvar vidas;
  • hw.qemu.claves principales- toma solo dos valores: 0 - muestra las teclas de navegación en pantalla, 1 - no muestra los botones. La ausencia de línea corresponde a 0;
  • debug.sf.nobootanimation- el valor 1 desactiva la animación de carga, lo que aumenta ligeramente su velocidad. Establecerlo en 0 o eliminar la línea devuelve la animación a su lugar;
  • ro.telefonía.default_network- le dice al sistema a qué modo debe cambiarse red móvil mientras se carga;
  • ro.sf.lcd_densidad- Mostrar DPI, el valor más preciso para la pantalla se puede calcular a través de un sitio web conveniente. Pero nadie prohíbe establecer un valor mayor o menor a su gusto: los valores más altos hacen que los elementos de la interfaz sean más grandes, los valores más bajos hacen que los elementos de la interfaz sean más pequeños;
  • ro.config.vc_call_vol_steps- número de pasos de volumen durante una llamada (8 por defecto);
  • ro.config.media_vol_steps- número de pasos de volumen de medios (predeterminado 15).

Implementamos Google Apps en el firmware.

Casi siempre el firmware personalizado viene sin servicios de google y tienda de aplicaciones. Los desarrolladores sugieren que los instalemos por separado utilizando el paquete GApps. Sin embargo, se puede integrar directamente en el firmware.

Primero necesitas descargar el paquete GApps. Recomiendo tomar los archivos de Open GApps. Tu eliges versión de Android, arquitectura del procesador y opción de configuración (Pico, Nano, Stock...), que determina cuántas diferentes aplicaciones de google contiene un archivo. Recomiendo descargar la versión Pico. Contiene únicamente Play Store y un conjunto de bibliotecas necesarias para su funcionamiento.

La integración de GApps en el firmware se realiza así:

  1. Desempaquete el archivo ZIP de GApps usando cualquier archivador.
  2. Vaya a la carpeta principal.
  3. Vemos muchos archivos con la extensión .tar.lz. Extraer usando lzip.
  4. Después de descomprimir, copie los archivos de las carpetas a las carpetas correspondientes en el sistema. Es fácil adivinar qué tirar y dónde desde la estructura de directorios del archivo. Por ejemplo, configupdater (de la captura de pantalla) debe colocarse en la carpeta priv-app.
  5. Vaya a la carpeta GApps (ubicada al lado de Core) y siga los pasos 3 y 4 para los archivos que contiene.
  6. Eso es todo, ¡hemos integrado GApps en nuestro firmware!

Lugar libre

Es necesario comprender que el espacio para instalar el firmware es limitado. No puede instalar firmware cuyo tamaño exceda el tamaño de la partición del sistema del dispositivo. Puedes ver su valor usando:

$ adb shell df /sistema

Segunda opción: poner un terminal en el dispositivo y escribir el comando

$df/sistema

Puede averiguar el tamaño de la partición en bytes instalando BusyBox en su teléfono inteligente y ejecutando el comando en la terminal

$ caja ocupada df -B 1 /sistema

O lo mismo con usando el BAD:

$ adb shell ocupadobox df -B 1 /sistema

El espacio ocupado por el firmware será aproximadamente igual al tamaño del sistema cuando se descomprime. En general, al crear firmware, es necesario tener en cuenta que el usuario también puede actualizar varias modificaciones encima (SuperSU, Xposed) o transferir aplicaciones a la sección del sistema. Por ejemplo, el paquete mínimo de aplicaciones de Google (Pico) requiere un mínimo de 150 MB de espacio de instalación adicional.

Si es necesario, el tamaño del archivo de firmware se puede reducir eliminando no solo programas innecesarios desde /system/app (/system/priv-app) y llamar a sonidos desde system/media/audio y bootanimation.zip, pero también:

  • /system/tts/lang_pico- los idiomas del motor de voz primitivo Pico TTS, el motor de voz de Google no se verán afectados;
  • /sistema/usr/srec/config/- idiomas fuera de línea. Puede descargarlo en línea más tarde si es necesario.

Asamblea

Después de realizar cambios, debes volver a armar todo. Primero, empaquetemos la sección del sistema en system.new.dat. Descarga las herramientas que necesitamos:

$ wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py $ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py $ wget https://github. com/xpirt/img2sdat/raw/master/common.py $ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py $ wget https://github.com/xpirt/img2sdat/raw/ master/sparse_img.py $ sudo apt-get install android-tools-fsutils

Convirtamos nuestra carpeta nuevamente a una imagen RAW. Llamémoslo system_new.img:

$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a salida del sistema system_new.img/

1073741824 se cambia al tamaño de la partición del sistema en bytes. Sería recomendable incluso hacerlo un poco más pequeño. Hacemos una imagen dispersa a partir de la imagen RAW:

$ img2simg sistema_nuevo.img sistema_snuevo.img

Convirtamos nuestra imagen en system.transfer.list y system.new.dat, que deberían guardarse en el archivo con el firmware, pero primero eliminaremos los archivos antiguos:

$ rm -rf system.transfer.list $ rm -rf system.new.dat $ rm -rf system.patch.dat $ chmod +x img2sdat.py $ ./img2sdat.py system_snew.img

Separemos los archivos de firmware del exceso de cáscara (archivos que descargamos para trabajar. Para ello es conveniente utilizar el archivo con el firmware). ¿Eliminado? Ahora necesita empaquetar el firmware en un archivo ZIP (con cualquier archivador).

Sólo queda firmar el archivo. Esto se puede hacer tanto en Android usando ZipSigner como en una PC (necesitará tener Java instalado):

$ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ java -jar archivo.zip

Rocas submarinas

Mientras construye system.new.dat, puede encontrar varios problemas causados ​​por cambios constantes en los mecanismos de generación. firmware de Android. El método descrito anteriormente debería funcionar bien en el caso de firmware basado en Android 5.1; los más nuevos pueden tener dificultades, por lo que necesitarás usar otras versiones de las herramientas de compilación. Lamentablemente, no podemos describir todos los matices del montaje, por lo que es posible que tengas que buscarlo en Google.

Instalación

Para instalar firmware personalizado necesita un firmware personalizado recuperación TWRP, que le permite instalar firmware sin firmar o firmado con una clave de prueba (esto es exactamente lo que creamos). En la revista hemos descrito repetidamente el proceso de instalación y en los hilos del foro dedicados a su dispositivo suele haber suficiente información para hacerlo.

TWRP

conclusiones

Este artículo describe sólo la punta de un enorme iceberg llamado “modificación de firmware”. El firmware "serio" no sólo complementa el kernel y el firmware mismo con aplicaciones estándar con muchas funciones (que a menudo se toman de otros kernels y firmware), organizando o incluso cambiando los principios de su interacción, sino que también puede cambiar radicalmente los principios operativos de el sistema operativo. Es cierto que tal truco ya no es Android, sino un sistema operativo separado, incluso si los servicios Play se pueden instalar allí (por cierto, Google no recomienda tales acciones, por decirlo suavemente). Bueno, no lo olvides: todas las carcasas de los fabricantes (TouchWiz, ZenUI, HTC Sense, etc.) son simplemente personalizadas, ligadas al máximo al hardware del dispositivo y entre sí.

Interpolación, interpolación- en matemáticas computacionales, un método para encontrar valores intermedios de una cantidad a partir de un conjunto discreto existente de valores conocidos.

Muchos de quienes se ocupan de cálculos científicos y de ingeniería a menudo tienen que operar con conjuntos de valores obtenidos empíricamente o mediante muestreo aleatorio. Como regla general, basándose en estos conjuntos, es necesario construir una función en la que otros valores obtenidos puedan caer con alta precisión. Esta tarea se llama aproximación. La interpolación es un tipo de aproximación en la que la curva de la función construida pasa exactamente por los puntos de datos disponibles.

Existen muchos métodos de interpolación en diferencias finitas. Mayoría
El método de Newton para la interpolación directa (método de Newton-Gregory) es común. El polinomio de interpolación en este caso tiene la forma:

Encontramos los coeficientes C usando la fórmula:

Implementación del programa en C#:
usando Sistema; Interpolación del espacio de nombres (clase Programa…

El programa se divide en dos subprocesos, en uno de los cuales se realiza la clasificación y en el otro se vuelve a dibujar la interfaz gráfica. Después de hacer clic en el botón "Ordenar", el programa llama al método "RunSorting", en el que se define el algoritmo de clasificación y se crea un nuevo hilo con el proceso de clasificación ejecutándose en él.
vacío privado RunSo…

Hoy quiero enseñaros mi Kacher, que hice las pasadas vacaciones de invierno. No describiré todo el proceso de fabricación, ya que hay muchos artículos en Internet. Escribiré solo sobre sus parámetros principales.

A continuación se muestran algunas fotografías tomadas durante el montaje del dispositivo.

La bobina se enrolla con aproximadamente 2000 vueltas de alambre de 0,08 mm sobre un tubo de PVC con un diámetro de 50 mm y una altura de 200 mm.

Como terminal se utilizó una placa de un disco duro antiguo. Todo lo demás se montó según el diagrama ubicado al final de la página.

La primera opción se alimentaba desde la fuente de alimentación de una computadora vieja, con un voltaje de 12 V. Luego se hizo una fuente de alimentación separada, con un voltaje de 30 V y con refrigeración incorporada.

Diagrama del dispositivo:

El intercambio de recursos entre dominios (CORS) es una especificación del W3C que permite la comunicación entre dominios en el navegador. Al construir sobre el objeto XMLHttpRequest, CORS permite a los desarrolladores trabajar con los mismos modismos que las solicitudes con el mismo dominio. El caso de uso de CORS es simple. Imagine que alice.com tiene algunos datos que bob.com quiere obtener. Este tipo de solicitud tradicionalmente no está permitido según la misma política de origen del navegador. Sin embargo, al admitir solicitudes CORS, alice.com puede agregar algunos encabezados de respuesta especiales que permiten a bob.com acceder a los datos. Como puede ver en este ejemplo, la compatibilidad con CORS requiere coordinación entre el servidor y el cliente. Afortunadamente, si eres desarrollador del lado del cliente, estás protegido de la mayoría de estos detalles. El resto de este artículo muestra cómo los clientes pueden realizar solicitudes entre orígenes y cómo los servidores pueden configurarse para admitir CORS. Continuado…




Arriba