Un programme pour flasher une tablette avec le firmware d'extension img. Modification du firmware img. Démontage de l'image système ext4

MTwinTools est un utilitaire qui vous permet de travailler avec des fichiers et des images de firmware boot.img, recovery.img et system.img. L'auteur de l'utilitaire est vin2809 du forum 4pda. MTwinTool sera utile aux propriétaires Smartphones Huawei basé sur des processeurs MTK.

Guide de l'utilisateur pour travailler avec MTwinTools

1. Introduction.

1.1. But.

L'outil MTwinTools est destiné au démontage/assemblage d'images d'appareils basés sur des puces MT.

Il est conçu pour être utilisé dans ligne de commande basé sur l'outil RKwinTools, conçu pour fonctionner avec des appareils équipés de puces RK29xx-RK31xx et certains programmes distribués gratuitement.

Fonctionne uniquement sous Windows 7 et supérieur sans installer CYGWIN et ne nécessite pas non plus d'enregistrement supplémentaire des chemins dans Variables d'environnement Système d'exploitation.

L'outil vous permet de :

  • décompressez et emballez l'image Boot.img ;
  • décompressez et emballez l'image Recovery.img ;
  • décompressez et emballez l'image Kernel.img ;
  • décompressez et emballez l'image System.img, à la fois de type yaffs et ext2-ext4 ;
  • convertir un fichier clairsemé de type clairsemé en une image de type ext4 ;
  • calculer la somme de contrôle d'un fichier au format md5 ;
  • lancer le superutilisateur.

1.2. Installation de MTwinTools.
L'installation de l'outil s'effectue en décompressant l'archive dans n'importe quel endroit qui vous convient. Cela créera un dossier MTwinTools contenant :

  • dossiers _In/, App/ et Cygwin/ ;
  • ainsi que les fichiers Readme.txt et menu.bat.

Le dossier _In est vide et est destiné à contenir les images sources à traiter. Le dossier App/ contient un ensemble de fichiers de commandes qui traitent les images. Le dossier Cygwin/ contient des bibliothèques et des fichiers d'utilitaires librement redistribuables. Le fichier Readme.txt contient des instructions utilisateur, c'est-à-dire le texte que vous lisez actuellement. Le fichier menu.bat est utilisé pour créer le menu de l'outil MTwinTools.

ATTENTION. Il n'est PAS REQUIS pour spécifier les chemins d'accès aux fichiers de service dans les variables d'environnement du système d'exploitation Windows.

Au fur et à mesure que vous travaillez, d'autres dossiers nécessaires apparaîtront :

  • Pack, qui contiendra les fichiers de démarrage, de récupération et système après
    packages, un dossier md5 contenant des fichiers avec une somme de contrôle, ainsi qu'un dossier
    Firmware, dans le sous-dossier Image duquel se trouveront les fichiers de Boot assemblés,
    Récupération et système ;
  • Décompresser, dans lequel les fichiers de démarrage, de récupération et système sont COMPLÈTEMENT décompressés
    sera situé dans le dossier Firmware, dans le sous-dossier Image.

1.3. Désinstallation de MTwinTools.

L'outil est désinstallé en supprimant le dossier racine de l'outil, c'est-à-dire Dossiers MTwinTools.

2. Règles de base du travail.

2.1.Pour commencer, vous devez exécuter le fichier menu.bat, qui lancera le menu de l'outil.

2.2.Les images destinées au déballage doivent être placées dans le dossier _In de l'outil. Les noms des fichiers d'entrée DOIVENT contenir des mots-clés et peuvent avoir des noms comme celui-ci :

  • *démarrage*.img;
  • *récupération*.img;
  • *noyau*.img;
  • *système*.img.

2.3.Lors du premier démarrage, initialisez l'outil. Lorsque l'outil est initialisé, TOUS les fichiers situés dans le dossier _In seront copiés dans le dossier d'entrée de travail Unpack/Firmware/Image. Ceci est fait afin de préserver les fichiers originaux.

2.4.Après avoir désassemblé l'image, son contenu sera placé dans le dossier Unpack, dans lequel la structure de dossiers suivante sera créée :

Démarrage (récupération)/cfg/
noyau/
disque virtuel/

Le dossier cfg/ contiendra les paramètres de l'image, dans le dossier du noyau vous trouverez le noyau, c'est à dire. Fichier binaire zImage et le dossier ramdisk contiendra tout le reste. Pour assembler l'image, ses éléments constitutifs, c'est-à-dire Placez le disque virtuel, le noyau et éventuellement les paramètres dans les dossiers appropriés dans Unpack. L'image créée sera située dans le dossier de sortie du Pack.

3. Description du produit.

3.1. Menu de commande principal.

Le menu principal des commandes de l'outil ressemble à ceci :

**************************
* MTwinTools_V_0.6 *
**************************
*Commandes d'image :*
* ————— *
*1-démarrage*
*2-Récupération*
*3-noyau*
*4-Système*
*5-Autres commandes*
* *
**************************
* Commandes d'outils : *
* ————— *
*6-Outils d'initialisation*
*7-Nettoyer*
* *
**************************
*8-Sortie*
**************************
Veuillez choisir la commande :

Une commande est sélectionnée en saisissant le numéro indiqué devant elle. Dans la version actuelle, vous pouvez effectuer les opérations suivantes :

— allez dans le menu Traitement de l'image de démarrage en tapant le chiffre « 1 » ;
— allez dans le menu Traitement des images de récupération — « 2 » ;
— allez dans le menu Traitement d'image du noyau — « 3 » ;
— allez dans le menu Traitement de l'image système — « 4 » ;
— allez dans le menu des autres commandes — « 5 » ;
— initialiser la zone de travail de l'outil — « 6 » ;
— nettoyer la zone de travail du produit — « 7 » ;
— terminer le travail, c'est-à-dire quitter l'établissement - "8".

3.2. Menu de démarrage.

Pour procéder au traitement de l'image de démarrage, exécutez la commande « 1-Boot ». Cela vous amènera au menu « Commandes de démarrage ».

Le menu de traitement de l'image de démarrage ressemble à ceci :

**************************
* Commandes de démarrage : *
* ————— *
*1-Déballage du démarrage*
*Pack de 2 bottes*
* *
**************************
*3-Retour*
**************************
Veuillez choisir la commande :

La commande « 1 » décompresse les images de démarrage, la commande « 2 » regroupe les images de démarrage. La commande « 3 » renvoie au menu principal de l'outil.

2.2.1. Démontage de l'image boot.img.

2.2.2. Créez l'image boot.img.

Lors de la création de l'image de démarrage, un menu permettant de sélectionner une source de données apparaîtra.

**************************
* Choix de l'image source : *
* 1. Décompressez le répertoire *
* 2. Répertoire du pack *
*3.Retour*
**************************
Veuillez choisir la source :

Vous avez la possibilité de créer une image à partir d'une image décompressée située dans le dossier Unpack/Boot ; pour cela, sélectionnez l'élément de menu « 1. Décompressez le répertoire." Si vous sélectionnez l'élément de menu « 2. Pack dir", alors l'image sera créée à partir des données situées dans le dossier Pack/boot. Pour annuler l'opération, sélectionnez l'élément de menu « 3. Retour". En même temps tu
revenez au menu « Commandes de démarrage ».

3.3. Menu de récupération.

Pour procéder au traitement de l'image de récupération, exécutez la commande « 2-Recovery ». Cela vous mènera au menu « Commandes de récupération ». Le menu de traitement des images de récupération ressemble à ceci :

**************************
* Commandes de récupération : *
* —————— *
*1-Déballage de récupération*
*2-Pack de récupération*
* *
**************************
*3-Retour*
**************************
Veuillez choisir la commande :

La commande « 1 » décompresse les images de récupération, la commande « 2 » regroupe les images de récupération. La commande « 3 » renvoie au menu principal de l'outil.
2.3.1. Démontage de l'image recovery.img.

Toutes les actions sont effectuées automatiquement, c'est-à-dire Sans votre participation, il n'y a rien à décrire ici.

2.3.2. Créez l’image recovery.img.

Lors de la création de l'image de récupération, un menu permettant de sélectionner une source de données apparaîtra.

**************************
* Choix de l'image source : *
* 1. Décompressez le répertoire *
* 2. Répertoire du pack *
*3.Retour*
**************************
Veuillez choisir la source :

Vous avez la possibilité de créer une image à partir d'une image décompressée située dans le dossier Unpack/recovery ; pour cela, sélectionnez l'élément de menu « 1. Décompressez le répertoire." Si vous sélectionnez l'élément de menu « 2. Pack dir", alors l'image sera créée à partir des données situées dans le dossier Pack/recovery.

Pour annuler l'opération, sélectionnez l'élément de menu « 3. Retour". Cela vous ramènera au menu « Commandes de récupération ».

3.4. Menu du noyau.

Pour procéder au traitement de l'image du noyau, exécutez la commande « 3-Kernel ». Cela vous amènera au menu « Commandes du noyau ».

Le menu de traitement d'image du noyau ressemble à ceci :

**************************
* Commandes du noyau : *
* —————— *
* 1-Kernel décompressé *
*Pack 2 noyaux*
* *
**************************
*3-Retour*
**************************
Veuillez choisir la commande :

La commande « 1 » décompresse les images du noyau, la commande « 2 » regroupe les images du noyau. La commande « 3 » renvoie au menu principal de l'outil.

3.4.1. Démontage de l'image kernel.img.

Toutes les actions sont effectuées automatiquement, c'est-à-dire Sans votre participation, il n'y a rien à décrire ici.

3.4.2. Construire l'image kernel.img.

Lors de la construction de l'image du noyau, un menu permettant de sélectionner une source de données apparaîtra.

**************************
* Choix de l'image source : *
* 1. Décompressez le répertoire *
* 2. Répertoire du pack *
*3.Retour*
**************************
Veuillez choisir la source :

Vous avez la possibilité de construire une image à partir d'une image décompressée située dans le dossier Unpack/Kernel ; pour cela, sélectionnez l'élément de menu « 1. Décompressez le répertoire." Si vous sélectionnez l'élément de menu « 2. Pack dir", alors l'image sera créée à partir des données situées dans le dossier Pack/Kernel.

Pour annuler l'opération, sélectionnez l'élément de menu « 3. Retour". Cela vous ramènera au menu « Commandes du noyau ».

3.5. Système de menus.

Pour procéder au traitement de l'image système, exécutez la commande « 3-System ». Cela vous mènera au menu « Commandes système ».

Le menu Traitement de l'image système ressemble à ceci :


* Commandes système : *
* ——————————————— *
* 1 paquet de yaffs * 2 paquets de yaffs *
* 3-décompresser ext3 * 4-pack ext3 *
* 5-décompresser ext4 * 6-pack ext4 *
* 7-sparse vers ext4 * *
* * *
***************************************************
*8-Retour*
***************************************************
Veuillez choisir la commande :

3.5.1. Démonter une image système comme yaffs.

La commande « 1 » décompresse les images système de type yaffs dans le dossier Unpack/System.

3.5.2. Construire une image système comme yaffs.

La commande « 2 » regroupe les images système de type yaffs. Un menu pour sélectionner une source de données apparaîtra.

**************************
* Choix de l'image source : *
* 1. Décompressez le répertoire *
* 2. Répertoire du pack *
*3.Retour*
**************************
Veuillez choisir la source :

Vous avez la possibilité de construire une image à partir d'une image décompressée située dans le dossier Unpack/system ; pour cela, sélectionnez l'élément de menu « 1. Décompressez le répertoire." Si vous sélectionnez l'élément de menu « 2. Pack dir", alors l'image sera créée à partir des données situées dans le dossier Pack/system.

Pour annuler l'opération, sélectionnez l'élément de menu « 3. Retour » et vous reviendrez au menu précédent « Commandes système ».

3.5.3. Démontage de l'image système de type ext3.

La commande « 3 » décompresse les images système de type ext2-ext3 dans le dossier Unpack/System.

3.5.4. Construire une image système de type ext3.

La commande « 4 » crée l'image système de type ext2-ext3. L'emballage est effectué de la même manière qu'à la clause 3.5.2. seule l'image de sortie sera de type ext3.

3.5.5. Démontage de l'image système de type ext4.

La commande « 5 » décompresse les images système ext4 dans le dossier Unpack/System.

3.5.6. Construire une image système de type ext4.

La commande «6» construit l'image système de type ext4. L'emballage est effectué de la même manière qu'à la clause 3.5.2. seule l'image de sortie sera de type ext4.

3.5.7. Convertissez une image compressée clairsemée en ext4.

La commande « 7 » convertit (convertit ou transcode) les images compressées de type clairsemé en images de type ext4 (analogue à l'opération simg2img).

3.5.8.Retour au menu principal.

La commande « 8 » renvoie au menu principal de l'outil.

3.6. Menu d'autres commandes.

Pour passer à l'exécution d'autres commandes, exécutez la commande « 5-Autres commandes ». Cela vous amènera au menu « Autres commandes ». Le menu pour exécuter d'autres commandes ressemble à ceci :

**************************
* Autres commandes : *
* —————- *
*1-Superutilisateur d'initialisation*
*2-Calculer md5*
* *
**************************
*3-Retour*
**************************
Veuillez choisir la commande :

La commande « 1 » initialise le superutilisateur dans l'image système, la commande « 2 » calcule la somme de contrôle du fichier. La commande « 3 » renvoie au menu principal de l'outil.

3.6.1. Initialisation du superutilisateur.

Lors de l'initialisation de SuperUser, un menu de sélection de source apparaîtra :

**************************
* Choix de la source d'initialisation : *
* 1. Décompressez le répertoire *
* 2. Répertoire du pack *
*3.Retour*
**************************
Veuillez choisir la source :

Vous avez la possibilité d'initialiser l'image décompressée située dans le dossier Unpack/system ; pour cela, sélectionnez l'élément de menu « 1. Décompressez le répertoire." Si vous sélectionnez l'élément de menu « 2. Pack dir", alors l'image située dans le dossier Pack/system sera initialisée. Pour annuler l'opération, sélectionnez l'élément de menu « 3. Retour".
L'initialisation se fait par copie fichiers nécessaires(su et SuperSU.apk) dans l'image System.img démontée. Pour obtenir un accès Root, vous avez besoin de :

— décompressez l'image système en utilisant la commande "3" du menu principal
outils ou placez l'image décompressée dans le dossier Unpack (ou Pack)/System/ ;
— exécuter la commande « 1-init SuperUser » dans le menu « Autres commandes ».

Après avoir flashé l'image System.img, vous aurez un accès root sur votre appareil. Si des fichiers d'une version différente sont utilisés pour obtenir un accès Root sur votre appareil, il vous suffit alors de mettre à jour (remplacer) les fichiers su et SuperSU.apk dans le dossier App/.

3.6.2. Calcul de la somme de contrôle.

Pour calculer la somme de contrôle d'un ou plusieurs fichiers, placez-les dans le dossier Pack/md5/. Après avoir exécuté la commande « 2-Calculate md5 », tous les fichiers situés dans le dossier Pack/md5 seront ajoutés somme de contrôle, calculé à l'aide de l'algorithme md5. Seuls les fichiers sans extension ou avec extension .img, .tar, .zip sont traités.

3.7. Initialisation.

Pour effectuer l'initialisation, exécutez la commande « 6-init Tools ». Cela créera toutes les structures de dossiers nécessaires au fonctionnement de MTwinTools et copiera les images d'entrée dans le dossier de travail Unpack/Firmware/Image.

3.8. Nettoyage du produit.

Pour vider la zone de travail, tapez « 7-CLEAN ». Dans ce cas, TOUS les dossiers supplémentaires ainsi que leur contenu seront supprimés, MTwinTools terminera son travail et prendra la forme qu'il avait immédiatement après l'installation.

3.9. Sortie.

Pour sortir, composez « 8-Exit ». Dans ce cas, SEUL le produit sortira sans aucun nettoyage.

Interpolation, interpolation- en mathématiques computationnelles, une méthode permettant de trouver des valeurs intermédiaires d'une quantité à partir d'un ensemble discret existant de valeurs connues.

Beaucoup de ceux qui s'occupent des calculs scientifiques et techniques doivent souvent opérer avec des ensembles de valeurs obtenues de manière empirique ou par échantillonnage aléatoire. En règle générale, sur la base de ces ensembles, il est nécessaire de construire une fonction dans laquelle d'autres valeurs obtenues pourraient tomber avec une grande précision. Cette tâche s'appelle approximation. L'interpolation est un type d'approximation dans lequel la courbe de la fonction construite passe exactement par les points de données disponibles.

Il existe de nombreuses méthodes d’interpolation par différences finies. La plupart
La méthode de Newton pour l'interpolation directe (méthode Newton-Gregory) est courante. Le polynôme d'interpolation dans ce cas a la forme :

On trouve les coefficients C à l'aide de la formule :

Implémentation du programme en C# :
utiliser le système ; Interpolation d'espace de noms (classe Programme…

Visualisation des algorithmes de tri

Le programme est divisé en deux threads dans l'un desquels le tri est effectué et dans l'autre le redessin Interface graphique. Après avoir cliqué sur le bouton « Trier », le programme appelle la méthode « RunSorting », dans laquelle l'algorithme de tri est défini et un nouveau thread est créé avec le processus de tri en cours d'exécution.
vide privé RunSo…

Kacher Brovina sur KT819G

Aujourd'hui, je veux montrer mon Kacher, que j'ai fabriqué lors des dernières vacances d'hiver. Je ne décrirai pas l'ensemble du processus de fabrication, car il existe de nombreux articles sur Internet. Je n'écrirai que sur ses principaux paramètres.

Ci-dessous quelques photos prises lors du montage de l'appareil.

La bobine est enroulée avec environ 2000 tours de fil de 0,08 mm sur un tuyau PVC d'un diamètre de 50 mm et d'une hauteur de 200 mm.

Une plaque d'une ancienne servait de borne. disque dur. Tout le reste a été assemblé selon le schéma situé tout en bas de la page.

La première option était alimentée par l'alimentation d'un ancien ordinateur, avec une tension de 12 V. Ensuite, une alimentation séparée a été réalisée, avec une tension de 30 V et avec refroidissement intégré.

Schéma de l'appareil :

Qu'est-ce que CORS et comment l'utiliser

Le partage de ressources inter-domaines (CORS) est une spécification du W3C qui permet la communication entre domaines dans le navigateur. En s'appuyant sur l'objet XMLHttpRequest, CORS permet aux développeurs de travailler avec les mêmes idiomes que les requêtes avec le même domaine. Le cas d’utilisation de CORS est simple. Imaginez qu'Alice.com possède des données que Bob.com souhaite obtenir. Ce type de demande n'est traditionnellement pas autorisé dans le cadre de la même politique d'origine du navigateur. Cependant, en prenant en charge les requêtes CORS, alice.com peut ajouter des en-têtes de réponse spéciaux qui permettent à bob.com d'accéder aux données. Comme vous pouvez le voir sur cet exemple, la prise en charge de CORS nécessite une coordination entre le serveur et le client. Heureusement, si vous êtes un développeur côté client, vous êtes protégé de la plupart de ces détails. Le reste de cet article montre comment les clients peuvent effectuer des requêtes d'origine croisée et comment les serveurs peuvent se configurer pour prendre en charge CORS. A continué…

Presque tout le monde utilisateur Android smartphone, il y avait une envie de créer ou de modifier le firmware en fonction de vos besoins et de vos envies. Dans cet article nous verrons le principe d'édition du firmware pour CWM (au format zip).

Préparation:

Tout d'abord, nous devons décider quel firmware nous utiliserons comme base. Il vaut mieux l'utiliser. firmware en zip. Pour presque tous les appareils courants, il existe un firmware propre + une racine.
Lorsque le firmware est sélectionné, il doit être téléchargé à n'importe quel endroit qui vous convient sur votre PC (pas besoin de le déballer).
Nous aurons également besoin d'un archiveur, je recommande d'utiliser 7zip et le meilleur du genre éditeur de texte Bloc-notes++.

Structure du micrologiciel :

En ouvrant l'archive avec le firmware, vous voyez ce qui suit :
MÉTA-INF- Le dossier contient les scripts d'installation du firmware.
système- un dossier avec tous les fichiers du firmware (applications, réglages, scripts, etc.).
démarrage.img- le cœur du système.

Presque toutes les manipulations sont effectuées dans le dossier système, sa structure :
application- les applications système.
poubelle- les ressources du système lui-même.
etc.- Scripts, ajustements, configurations, profils et paramètres système.
polices- Polices système.
cadre- les principaux fichiers système sont stockés ici (graphiques, paramètres de texte d'animation, etc.).
lib- les bibliothèques système.
médias- des fichiers multimédias (sonneries de notification, animation de chargement, fond d'écran, etc.).
usr- des paramètres qui ne pourront plus être modifiés par le système à l'avenir (ils fonctionnent en mode lecture seule).
xbin- encore une fois, les configurations système et autres ajustements.
build.prop- des informations sur le système, les paramètres régionaux et les performances du système.

Applications:

Avant d'ajouter/supprimer un logiciel au système, vous devez vérifier si votre micrologiciel est désodexé (c'est-à-dire vérifier la présence de fichiers .odex dans le dossier de l'application. S'il y a des fichiers, vous devez vous en débarrasser en utilisant ceci instructions .
Ajoutez un logiciel au firmware :
Tout d'abord, vous devez installer dans votre smart les programmes que vous souhaitez ajouter à l'assemblage. Après l'installation, nous les supprimons du système en utilisant Explorateur racine et ses analogues, ils sont situés sur le chemin data/app, nous avons également besoin de leurs libs (si elles existent, bien sûr), elles sont situées sur le chemin data/data. Ils se trouvent dans le dossier du même nom dans l'application et portent l'extension .donc. Puis saisi .apk placez les fichiers dans l'archive le long du chemin system/app et les fichiers avec l'extension .donc(libs) le long du chemin system/lib .
Nous supprimons le logiciel du firmware :
Tout est simple ici, allez dans le dossier application- nous décidons de ce dont nous n'avons pas besoin et supprimons tous les logiciels inutiles (il vaut mieux ne pas toucher au système).

Langue et version du firmware :

Copiez le fichier build.prop sur votre bureau. Ouvrez-le avec le bloc-notes et recherchez les lignes :

ro.product.locale.langue=fr
ro.product.locale.region=États-Unis

pour la langue russe, vous devez faire ceci :

ro.product.locale.langue=ru
ro.product.locale.region=RU

entrez le nom de votre mod dans la ligne

dans le même build.prop

Arts graphiques:

Toute la partie graphique du firmware est stockée dans deux fichiers chemin du fichier framework-res.apk cadre système et SystemUI.apk en cours de route application système. Et la partie graphique de l'application des paramètres est naturellement stockée dans l'application Settings.apk.

Scripts et ajustements (accélération et optimisation du système) :

La plupart des réglages sont effectués dans le fichier build.prop, vous pouvez lire à ce sujet. De plus, si votre noyau prend en charge init.d il existe un certain nombre de scripts pour optimiser le système, l'un d'eux est décrit dans cet article (optimisation de la RAM) et dans cet article Modifier les scripts pour init.d

Remplacement des polices système :

Comme indiqué ci-dessus, toutes les polices sont contenues dans le dossier polices, les polices principales sont : DroidSans.ttf et DroidSans-Bold.ttf, elles peuvent être remplacées par n'importe quelle police, en les renommant de la même manière que ci-dessus et en les remplaçant dans l'archive avec le firmware dans le dossier polices.

Cœur:

Théoriquement, il suffit de remplacer démarrage.img le sien, mais dans certains cas, les Cores sont accompagnés de scripts supplémentaires. Je vous conseille donc de ne rien faire si vous avez des doutes.



Commençons par le fait que vous avez besoin de Linux. Sous Windows, vous pouvez uniquement démonter le firmware, mais vous ne pourrez pas le remonter pour des raisons purement techniques. Parlons maintenant du firmware. Ils sont généralement distribués sous forme d'archives ZIP flashées via une récupération personnalisée. C'est l'un d'entre eux dont nous aurons besoin pour les expériences. Je recommande de commencer le parcours d'un romodel avec quelque chose d'aussi proche que possible de l'AOSP micrologiciel personnalisé, car il est souvent plus facile à comprendre que le stock.

  1. Décompressez l'archive avec le firmware dans n'importe quel dossier.
  2. Téléchargez le script à partir du lien et décompressez-le dans n'importe quel dossier.
  3. Nous lançons le fichier ext (s'il se plaint du manque de Java, sautez simplement en appuyant sur y ; Java n'est nécessaire que pour l'empaquetage).
  4. Sélectionnez maintenant le déballage en appuyant sur le bouton 1 puis sur Entrée.
  5. Un nouveau dossier nommé extract_* apparaîtra à côté du fichier ext et du dossier outils. Copiez-y les fichiers system.new.dat et system.transfer.list.
  6. Après avoir copié les fichiers, appuyez sur Entrée et attendez. Après un certain temps, vous devrez appuyer à nouveau sur Entrée, saisir le mot de passe administrateur et appuyer à nouveau sur Entrée.
  7. Prêt. Le contenu du système se trouve dans le dossier extract_*/output.

Méthode manuelle

Décompressez l'archive avec le firmware dans n'importe quel dossier (par exemple, rom) :

$ mkdir ~/rom $ décompresser path_to_archive -d ~/rom/

Téléchargez les outils dont nous avons besoin dans ce dossier :

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

Exécutons le script :

$ chmod +x sdat2img.py $ ./sdat2img.py system.transfer.list system.new.dat system.img

Il convertit le fichier system.new.dat en une image brute appelée system.img . Montez l'image dans le sous-dossier mnt :

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

Structure du répertoire Android

Après avoir décompressé le système, la structure de répertoires suivante apparaîtra :

  • application - applications préinstallées avec des privilèges standards ;
  • application privée- des applications préinstallées avec des privilèges élevés, y compris certains composants du système ;
  • poubelle- des fichiers binaires au format ELF, un analogue des répertoires /bin et /usr/bin sous Linux. Contient divers composants système utilisés par les composants système de niveau supérieur ;
  • etc.- les fichiers de paramètres. Un analogue complet de /etc sous Linux, utilisé cependant uniquement par ces mêmes composants du système. Applications Android magasin paramètres individuels dans les répertoires /data/data/ ;
  • polices- les polices. Par défaut, il contient uniquement les polices de marque Roboto ;
  • cadre- des bibliothèques de classes Java utilisées par le système et les applications. Il existe également un fichier framework-res.apk contenant une description complète de l'interface système opérateur, y compris tous les fichiers graphiques ;
  • lib Et lib64- Bibliothèques Linux utilisées par les composants système de bas niveau. Analogue des répertoires /lib et /usr/lib sous Linux, y compris les suivants bibliothèques standards, comme libc, libz, libssl. Sur les appareils dotés d'une architecture ARMv7 et inférieure, le répertoire lib64 sera manquant ;
  • médias- fichiers multimédias : sonneries, sons de notification, sons d'interface et animation de chargement du système d'exploitation ;
  • tts- les fichiers nécessaires au synthétiseur vocal ;
  • usr- un répertoire qui contient généralement les fichiers nécessaires à l'exécution des applications à partir du répertoire bin. Essentiellement un analogue de /usr/share ;
  • fournisseur- les fichiers fournis par le fabricant de l'appareil. Contient généralement un micrologiciel binaire pour divers composants matériels, par exemple un module Wi-Fi ;
  • xbin- répertoire facultatif ; les firmwares personnalisés l'utilisent pour stocker des éléments tels que l'interpréteur bash, SSH, PowerTOP, BusyBox et d'autres outils utiles ;
  • build.prop- un fichier contenant des informations sur l'assemblage, ainsi que divers paramètres de bas niveau ;
  • module complémentaire.d- contient des scripts lancés après l'installation du firmware. Les GApp écrivent également ici leur script, grâce auquel ils sont réactivés après la réinstallation du firmware.

Maintenant que nous connaissons la structure de base d’Android, commençons à apporter des modifications.

Suppression et ajout d'applications

Tous programmes préinstallés se trouve dans deux dossiers :

  • /système/app/;
  • /system/priv-app/.

Ils diffèrent les uns des autres par les privilèges d'accès. Si les programmes de l'application disposent des mêmes autorisations que programmes tiers(par exemple, installé depuis le Play Store), les applications de priv-app peuvent utiliser des API privilégiées (droits privilégiés). Vous pouvez en apprendre davantage à ce sujet sur .

Pour préinstaller une application dans le firmware, déposez simplement son fichier APK dans /system/app/ . Vous pouvez bien sûr créer un dossier séparé, mais dans notre cas, cela n'a aucun sens, car le dossier est utilisé pour stocker des bibliothèques et des fichiers odex, que nous n'avons tout simplement pas. Pour le supprimer, supprimez simplement le dossier contenant celui-ci.

Vous pouvez aller plus loin et remplacer les applications d'origine par des analogues. Par exemple, pour remplacer le calendrier, supprimez le dossier Calendrier et copiez notre com.rpagyc.simplecalendar.apk préféré dans /system/app. Et vous n’êtes pas obligé de le copier. Ensuite, le firmware sera sans calendrier.

La principale chose à retenir est que les programmes de stockage peuvent être liés les uns aux autres. Par conséquent, la suppression d'un programme peut très bien conduire à l'inopérabilité totale d'un autre (par exemple, CalendarProvider et Calendar : en supprimant le premier, vous rendrez inutilisable non seulement le calendrier de stock, mais également tout autre calendrier). Heureusement, dans le firmware AOSP pur, il n'y a pas beaucoup d'interconnexions.

Changer l'animation de chargement

L'animation est stockée sous forme d'images PNG, emballées dans l'archive /system/media/bootanimation.zip sans compression. A l'intérieur des archives se trouvent :

  • desc.txt- un fichier décrivant l'animation ;
  • partie0- un dossier avec les fichiers d'animation qui sont lus en premier ;
  • partie 1- un dossier avec les fichiers d'animation qui sont lus en second ;
  • partie?- le dernier dossier dont les images sont lues à la fin.

Le fichier desc.txt peut contenir quelque chose comme

1920 1080 60 p 1 0 partie0 p 0 0 partie1

Le but de ces lignes est intuitif : 1920 × 1080 est la résolution de l'image, 60 est le nombre d'images par seconde. Part0 et part1 indiquent les dossiers à partir desquels l'animation sera jouée et la séquence de lecture. En général, il peut y avoir soit une partie, soit plusieurs (trois ou plus).

Les images situées dans les dossiers des pièces sont numérotées de cinq numéros dans l'ordre de lecture : 00000.png, 00001.png, 00002.png... Ces images peuvent être remplacées par les vôtres, créant ainsi une animation originale. Ou vous pouvez simplement supprimer le fichier bootanimation.zip. Ensuite, l'appareil affichera une animation de Android standard. Ou utilisez une collection d'animations prêtes à l'emploi sur w3bsit3-dns.com.

Changer la conception sonore

En fait, tous les sons joués par le système sont stockés dans le dossier /system/media/audio. À l’intérieur, vous trouverez les dossiers suivants :

  • alarmes- des mélodies de réveil ;
  • avis- les sons de notification ;
  • sonneries- des sonneries ;
  • interface utilisateur- les sons du système, tels que batterie faible, mise au point de la caméra, sélection des éléments d'interface.

Dans les alarmes, notifications, sonneries, vous pouvez ajouter autant de mélodies que vous le souhaitez. Vous pouvez les prendre par exemple ici :

  • sonneries standard de différents téléphones et smartphones Nokia ;

Et un petit hack de vie : la suppression de fichiers du dossier ui n'entraînera pas de plantages et d'erreurs, mais la disparition des sons du système. Par conséquent, vous pouvez facilement désactiver le son de la prise de vue depuis l'appareil photo, en prenant une capture d'écran, simplement en effaçant les fichiers contenant ces sons (leurs noms sont intuitifs).

Ajout de polices

Les polices sont stockées dans fonts . Vous pouvez trouver des archives avec des fichiers de polices sur w3bsit3-dns.com et XDA. Pour l'installer, copiez et remplacez simplement les fichiers ttf de l'archive vers le dossier des polices.

Modification des paramètres système (build.prop)

L'image système contient un fichier build.prop intéressant contenant de nombreuses informations utiles sur le matériel de l'appareil et les paramètres par défaut de diverses applications de stock. Pour être honnête, je constate que ce n’est pas toujours le cas. Par exemple, dans Gigaset ME et ME Pro, build.prop est divisé en deux parties. Une partie contient les paramètres pour Gigaset ME, et pour ME Pro certaines lignes sont dupliquées, mais les touches (nom du smartphone, etc.) sont différentes. Cela a été fait pour garantir un fonctionnement plus ou moins correct du même firmware sur différents appareils.


Build.prop contient (ou peut contenir) un grand nombre de paramètres. Certains d’entre eux ne changent rien, certains améliorent une chose au détriment d’une autre, mais il y a ceux qui sont vraiment utiles :

  • ro.product.model Et ro.product.fabricant- modèle de smartphone et nom du fabricant. En remplaçant ces lignes, vous pouvez faire croire au Play Store que vous possédez un autre smartphone, ce qui ouvrira l'accès à davantage de logiciels. Pour tous ces peu connus Smartphones chinois ces lignes peuvent sauver des vies ;
  • hw.qemu.mainkeys- ne prend que deux valeurs : 0 - affiche les touches de navigation à l'écran, 1 - n'affiche pas les boutons. L'absence de ligne correspond à 0 ;
  • debug.sf.nobootanimation- la valeur 1 désactive le chargement de l'animation, ce qui augmente légèrement sa vitesse. Le mettre à 0 ou supprimer la ligne remet l'animation à sa place ;
  • ro.telephony.default_network- indique au système dans quel mode il doit être commuté réseau mobile pendant le chargement ;
  • ro.sf.lcd_density- Affichage DPI, la valeur la plus précise pour l'affichage peut être calculée via un site Web pratique. Mais personne n'interdit de définir une valeur supérieure ou inférieure à votre guise : des valeurs plus élevées rendent les éléments d'interface plus grands, des valeurs plus faibles rendent les éléments d'interface plus petits ;
  • ro.config.vc_call_vol_steps- nombre de pas de volume lors d'un appel (par défaut 8) ;
  • ro.config.media_vol_steps- nombre d'étapes de volume multimédia (par défaut 15).

Nous implémentons Google Apps dans le firmware

Presque toujours, le firmware personnalisé est livré sans Services Google et magasin d'applications. Les développeurs nous suggèrent de les installer séparément à l'aide du package GApps. Il peut cependant être intégré directement au firmware.

Vous devez d’abord télécharger le package GApps. Je recommande de prendre les archives Open GApps. Tu choisis Version Android, l'architecture du processeur et l'option de configuration (Pico, Nano, Stock...), qui détermine le nombre de processeurs différents Applications Google contient une archive. Je recommande de télécharger la version Pico. Il contient uniquement le Play Store et un ensemble de bibliothèques nécessaires à son fonctionnement.

L'intégration des GApps dans le firmware se fait comme ceci :

  1. Décompressez l'archive ZIP GApps à l'aide de n'importe quel archiveur.
  2. Accédez au dossier Core.
  3. Nous voyons de nombreuses archives avec l'extension .tar.lz. Extrayez à l'aide de lzip.
  4. Après le déballage, copiez les fichiers des dossiers vers les dossiers correspondants du système. Il est facile de deviner quoi jeter où à partir de la structure des répertoires de l'archive. Par exemple, configupdater (à partir de la capture d'écran) doit être placé dans le dossier priv-app.
  5. Accédez au dossier GApps (situé à côté de Core) et suivez les étapes 3 et 4 pour les fichiers qu'il contient.
  6. Ça y est, nous avons intégré les GApps dans notre firmware !

Place libre

Il faut comprendre que l'espace pour installer le firmware est limité. Vous ne pouvez pas installer un micrologiciel dont la taille dépasse la taille de la partition système du périphérique. Vous pouvez visualiser sa valeur en utilisant :

$ adb shell df /système

Deuxième option : mettre un terminal sur l'appareil et taper la commande

$df/système

Vous pouvez connaître la taille de la partition en octets en installant BusyBox sur votre smartphone et en exécutant la commande dans le terminal

$ occupébox df -B 1 /système

Ou pareil avec en utilisant la BAD:

$ adb shell occupébox df -B 1 /système

L'espace occupé par le firmware sera approximativement égal à la taille du système une fois déballé. En général, lors de la création d'un firmware, il faut tenir compte du fait que l'utilisateur peut également flasher diverses modifications dessus (SuperSU, Xposed) ou transférer des applications vers la section système. Par exemple, le package d'application minimum de Google (Pico) nécessite un minimum de 150 Mo d'espace d'installation supplémentaire.

Si nécessaire, la taille du fichier du micrologiciel peut être réduite en supprimant non seulement programmes inutiles depuis /system/app (/system/priv-app) et appelez les sons depuis system/media/audio et bootanimation.zip , mais aussi :

  • /système/tts/lang_pico- les langues du moteur vocal primitif Pico TTS, le moteur vocal Google ne seront pas affectés ;
  • /système/usr/srec/config/- langues hors ligne. Vous pourrez le télécharger en ligne plus tard si nécessaire.

Assemblée

Après avoir apporté des modifications, vous devez tout remettre en place. Tout d’abord, regroupons la section système dans system.new.dat . Téléchargez les outils dont nous avons besoin :

$ 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

Reconvertissons notre dossier en image RAW. Appelons-le system_new.img :

$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a système system_new.img sortie/

1073741824 est remplacé par la taille de la partition système en octets. Il serait même conseillé de le rendre un peu plus petit. Nous créons une image clairsemée à partir de l'image RAW :

$ img2simg system_new.img system_snew.img

Convertissons notre image en system.transfer.list et system.new.dat, qui devraient être jetés dans l'archive avec le firmware, mais nous supprimerons d'abord les anciens fichiers :

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

Séparons les fichiers du firmware de l'enveloppe excédentaire (fichiers que nous avons téléchargés pour le travail. Pour cela, il est pratique d'utiliser l'archive avec le firmware). Supprimé ? Vous devez maintenant regrouper le firmware dans une archive ZIP (avec n'importe quel archiveur).

Il ne reste plus qu'à signer l'archive. Cela peut être fait à la fois sur Android lui-même à l'aide de ZipSigner et sur un PC (vous aurez besoin d'installer Java) :

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

Rochers sous-marins

Lors de la construction de system.new.dat, vous pouvez rencontrer plusieurs problèmes causés par des changements constants dans les mécanismes de génération. Micrologiciel Android. La méthode décrite ci-dessus devrait bien fonctionner dans le cas d'un firmware basé sur Android 5.1 ; les plus récents peuvent rencontrer des difficultés, vous devrez donc utiliser d'autres versions des outils de build. Malheureusement, nous ne pouvons pas décrire toutes les nuances de l'assemblage, vous devrez donc peut-être le rechercher sur Google.

Installation

Pour installer un firmware personnalisé, vous avez besoin d'un récupération TWRP, qui vous permet d'installer un firmware non signé ou signé avec une clé de test (c'est exactement ce que nous avons créé). Dans le magazine, nous avons décrit à plusieurs reprises le processus d'installation, et dans les fils de discussion dédiés à votre appareil, il y a généralement suffisamment d'informations pour ce faire.

TWRP

conclusions

Cet article ne décrit que la pointe d’un énorme iceberg appelé « modification du firmware ». Un firmware « sérieux » complète non seulement le noyau et le firmware lui-même avec des applications de base avec de nombreuses fonctions (qui sont souvent tirées d'autres noyaux et firmware), organisant voire modifiant les principes de leur interaction, mais peut aussi changer radicalement les principes de fonctionnement de le système d'exploitation. Certes, un tel hack n'est plus Android, mais un système d'exploitation distinct, même si les services Play peuvent y être installés (d'ailleurs, de telles actions, pour le moins, ne sont pas encouragées par Google). Eh bien, n'oubliez pas : toutes les coques des fabricants - TouchWiz, ZenUI, HTC Sense, etc. - ne sont que des coques personnalisées ordinaires, liées au maximum au matériel de l'appareil et les unes aux autres.

Interpolation, interpolation- en mathématiques computationnelles, une méthode permettant de trouver des valeurs intermédiaires d'une quantité à partir d'un ensemble discret existant de valeurs connues.

Beaucoup de ceux qui s'occupent des calculs scientifiques et techniques doivent souvent opérer avec des ensembles de valeurs obtenues de manière empirique ou par échantillonnage aléatoire. En règle générale, sur la base de ces ensembles, il est nécessaire de construire une fonction dans laquelle d'autres valeurs obtenues pourraient tomber avec une grande précision. Cette tâche s'appelle approximation. L'interpolation est un type d'approximation dans lequel la courbe de la fonction construite passe exactement par les points de données disponibles.

Il existe de nombreuses méthodes d’interpolation par différences finies. La plupart
La méthode de Newton pour l'interpolation directe (méthode Newton-Gregory) est courante. Le polynôme d'interpolation dans ce cas a la forme :

On trouve les coefficients C à l'aide de la formule :

Implémentation du programme en C# :
utiliser le système ; Interpolation d'espace de noms (classe Programme…

Le programme est divisé en deux threads dans l'un desquels le tri est effectué et dans l'autre l'interface graphique est redessinée. Après avoir cliqué sur le bouton « Trier », le programme appelle la méthode « RunSorting », dans laquelle l'algorithme de tri est défini et un nouveau thread est créé avec le processus de tri en cours d'exécution.
vide privé RunSo…

Aujourd'hui, je veux montrer mon Kacher, que j'ai fabriqué lors des dernières vacances d'hiver. Je ne décrirai pas l'ensemble du processus de fabrication, car il existe de nombreux articles sur Internet. Je n'écrirai que sur ses principaux paramètres.

Ci-dessous quelques photos prises lors du montage de l'appareil.

La bobine est enroulée avec environ 2000 tours de fil de 0,08 mm sur un tuyau PVC d'un diamètre de 50 mm et d'une hauteur de 200 mm.

Une plaque d'un ancien disque dur a été utilisée comme terminal. Tout le reste a été assemblé selon le schéma situé tout en bas de la page.

La première option était alimentée par l'alimentation d'un ancien ordinateur, avec une tension de 12 V. Ensuite, une alimentation séparée a été réalisée, avec une tension de 30 V et avec refroidissement intégré.

Schéma de l'appareil :

Le partage de ressources inter-domaines (CORS) est une spécification du W3C qui permet la communication entre domaines dans le navigateur. En s'appuyant sur l'objet XMLHttpRequest, CORS permet aux développeurs de travailler avec les mêmes idiomes que les requêtes avec le même domaine. Le cas d’utilisation de CORS est simple. Imaginez qu'Alice.com possède des données que Bob.com souhaite obtenir. Ce type de demande n'est traditionnellement pas autorisé dans le cadre de la même politique d'origine du navigateur. Cependant, en prenant en charge les requêtes CORS, alice.com peut ajouter des en-têtes de réponse spéciaux qui permettent à bob.com d'accéder aux données. Comme vous pouvez le voir sur cet exemple, la prise en charge de CORS nécessite une coordination entre le serveur et le client. Heureusement, si vous êtes un développeur côté client, vous êtes protégé de la plupart de ces détails. Le reste de cet article montre comment les clients peuvent effectuer des requêtes d'origine croisée et comment les serveurs peuvent se configurer pour prendre en charge CORS. A continué…




Haut