Un program pentru flash-ul unei tablete cu firmware-ul extensiei img. Editarea firmware-ului img. Dezasamblarea imaginii sistemului ext4

MTwinTools este un utilitar care vă permite să lucrați cu fișiere de firmware și imagini boot.img, recovery.img și system.img. Autorul utilitarului este vin2809 de pe forumul 4pda. MTwinTool va fi util proprietarilor smartphone-uri Huawei bazat pe procesoare MTK.

Ghidul utilizatorului pentru lucrul cu MTwinTools

1. Introducere.

1.1. Scop.

Instrumentul MTwinTools este destinat pentru dezasamblarea/asamblarea imaginilor dispozitivelor bazate pe cipuri MT.

Este construit pentru utilizare în Linie de comanda bazat pe instrumentul RKwinTools, conceput pentru a funcționa cu dispozitive pe cipuri RK29xx-RK31xx și unele programe distribuite gratuit.

Funcționează numai sub Windows 7 și versiuni ulterioare, fără a instala CYGWIN și, de asemenea, nu necesită înregistrare suplimentară a căilor în variabile de mediu OS.

Instrumentul vă permite să:

  • despachetează și împachetează imaginea Boot.img;
  • despachetați și împachetați imaginea Recovery.img;
  • despachetați și împachetați imaginea Kernel.img;
  • despachetează și împachetează imaginea System.img, atât tipul yaffs, cât și ext2-ext4;
  • converti un fișier rar de tip sparse într-o imagine de tip ext4;
  • calculați suma de control a unui fișier în format md5;
  • inițiază SuperUser.

1.2. Instalarea MTwinTools.
Instalarea instrumentului se realizează prin despachetarea arhivei în orice loc convenabil pentru dvs. Aceasta va crea un folder MTwinTools care conține:

  • folderele _In/, App/ și Cygwin/;
  • precum și fișierele Readme.txt și menu.bat.

Dosarul _In este gol și este destinat să conțină imagini sursă pentru procesare. Dosarul App/ conține un set de fișiere de comandă care procesează imagini. Dosarul Cygwin/ conține biblioteci și fișiere de utilitate redistribuibile liber. Fișierul Readme.txt conține instrucțiuni pentru utilizator, adică. textul pe care îl citiți în prezent. Fișierul menu.bat este utilizat pentru a crea meniul pentru instrumentul MTwinTools.

ATENŢIE. NU ESTE NECESARĂ pentru specificarea căilor de acces la fișierele de service în variabilele de mediu ale sistemului de operare Windows.

Pe măsură ce lucrați, vor apărea și alte foldere necesare:

  • Pachet, care va conține fișierele Boot, Recovery și System după
    pachete, un folder md5 care conține fișiere cu o sumă de verificare, precum și un folder
    Firmware, în subdosarul Imagine al cărui fișiere Boot asamblate vor fi localizate,
    Recuperare și sistem;
  • Dezambalați, în care fișierele Boot, Recovery și System sunt COMPLET dezambalate
    va fi localizat în folderul Firmware, în subdosarul Imagine.

1.3. Dezinstalarea MTwinTools.

Instrumentul este dezinstalat prin ștergerea folderului rădăcină al instrumentului, adică. folderele MTwinTools.

2. Reguli de bază de lucru.

2.1.Pentru a începe, trebuie să rulați fișierul menu.bat, care va lansa meniul instrumentului.

2.2.Imaginile destinate despachetarii trebuie plasate in folderul _In al instrumentului. Numele fișierelor de intrare TREBUIE să conțină cuvinte cheie și pot avea nume precum următoarele:

  • *boot*.img;
  • *recuperare*.img;
  • *kernel*.img;
  • *sistem*.img.

2.3. Când porniți pentru prima dată, inițializați instrumentul. Când instrumentul este inițializat, TOATE fișierele aflate în folderul _In vor fi copiate în folderul de intrare de lucru Unpack/Firmware/Image. Acest lucru se face pentru a păstra fișierele originale.

2.4.După dezasamblarea imaginii, conținutul acesteia va fi plasat în folderul Unpack, în care va fi creată următoarea structură de foldere:

Boot (Recuperare)/cfg/
nucleu/
ramdisk/

Folderul cfg/ va conține setările de imagine, în folderul kernel veți găsi kernel-ul, adică. zImage fișier binar și folderul ramdisk va conține orice altceva. Pentru a asambla imaginea, părțile sale componente, de ex. Plasați discul ram, nucleul și eventual setările în folderele corespunzătoare din Unpack. Imaginea creată va fi localizată în folderul de ieșire a pachetului.

3. Descrierea produsului.

3.1. Meniul principal de comandă.

Meniul principal al comenzilor instrumentului arată astfel:

**************************
* MTwinTools_V_0.6 *
**************************
*Comenzi imagine:*
* ————— *
*1-Boot*
*2-Recuperare*
*3-kernel*
*4-Sisteme*
*5-Alte comenzi*
* *
**************************
* Comenzi instrumente: *
* ————— *
*Instrumente 6-Init*
*7-curat*
* *
**************************
*8-Ieșire*
**************************
Vă rugăm să alegeți comanda:

O comandă este selectată prin introducerea numărului indicat în fața acesteia. În versiunea actuală puteți face următoarele:

— accesați meniul de procesare a imaginii de pornire tastând numărul „1”;
— accesați meniul de procesare a imaginii de recuperare — „2”;
— accesați meniul de procesare a imaginii Kernel — „3”;
— accesați meniul de procesare a imaginii de sistem — „4”;
— accesați meniul altor comenzi — „5”;
— inițializați zona de lucru a instrumentului — „6”;
— curățați zona de lucru a produsului — „7”;
— finalizați lucrarea, de ex. ieși din unitate - „8”.

3.2. Meniul de pornire.

Pentru a continua la procesarea imaginii de pornire, executați comanda „1-Boot”. Aceasta vă va duce la meniul „Comenzi de pornire”.

Meniul de procesare a imaginii de pornire arată astfel:

**************************
* Comenzi de pornire: *
* ————— *
*1-Boot despachetat*
*Pachet de 2 cizme*
* *
**************************
*3-Retur*
**************************
Vă rugăm să alegeți comanda:

Comanda „1” despachetează imaginile de pornire, comanda „2” ambalează imaginile de pornire. Comanda „3” revine la meniul principal al instrumentului.

2.2.1. Demontarea imaginii boot.img.

2.2.2. Construiți imaginea boot.img.

La construirea imaginii de boot, va apărea un meniu pentru selectarea unei surse de date.

**************************
* Imagine sursă aleasă: *
* 1. Despachetează director *
* 2. Director pachet *
*3.Întoarcere*
**************************
Vă rugăm să alegeți sursa:

Aveți posibilitatea de a construi o imagine dintr-o imagine dezambalată aflată în folderul Dezambalare/Boot, selectați elementul de meniu „1. Despachetează dir.” Dacă selectați elementul de meniu „2. Pack dir”, apoi imaginea va fi creată din datele aflate în folderul Pack/boot. Pentru a anula operația, selectați elementul de meniu „3. Întoarcere". În același timp, tu
reveniți la meniul „Comenzi de pornire”.

3.3. Meniul de recuperare.

Pentru a continua la procesarea imaginii de recuperare, executați comanda „2-Recovery”. Aceasta vă va duce la meniul „Comenzi de recuperare”. Meniul de procesare a imaginii de recuperare arată astfel:

**************************
* Comenzi de recuperare: *
* —————— *
* 1-despachetare de recuperare *
* 2-Pachet de recuperare *
* *
**************************
*3-Retur*
**************************
Vă rugăm să alegeți comanda:

Comanda „1” despachetează imaginile de recuperare, comanda „2” ambalează imaginile de recuperare. Comanda „3” revine la meniul principal al instrumentului.
2.3.1. Demontarea imaginii recovery.img.

Toate acțiunile sunt efectuate automat, adică Nu există nimic de descris aici fără participarea dumneavoastră.

2.3.2. Construiți imaginea recovery.img.

La construirea imaginii de recuperare, va apărea un meniu pentru selectarea unei surse de date.

**************************
* Imagine sursă aleasă: *
* 1. Despachetează director *
* 2. Director pachet *
*3.Întoarcere*
**************************
Vă rugăm să alegeți sursa:

Aveți posibilitatea de a construi o imagine dintr-o imagine dezambalată situată în folderul Dezambalare/recuperare, selectați elementul de meniu „1. Despachetează dir.” Dacă selectați elementul de meniu „2. Pack dir”, apoi imaginea va fi creată din datele aflate în folderul Pack/recovery.

Pentru a anula operația, selectați elementul de meniu „3. Întoarcere". Acest lucru vă va întoarce la meniul „Comenzi de recuperare”.

3.4. Meniul Kernel.

Pentru a continua la procesarea imaginii Kernel, rulați comanda „3-Kernel”. Aceasta vă va duce la meniul „Comenzi kernel”.

Meniul de procesare a imaginii Kernel arată astfel:

**************************
* Comenzi kernel: *
* —————— *
* 1-kernel despachetat *
*Pachet cu 2 nuclee*
* *
**************************
*3-Retur*
**************************
Vă rugăm să alegeți comanda:

Comanda „1” despachetează imaginile Kernel, comanda „2” ambalează imaginile Kernel. Comanda „3” revine la meniul principal al instrumentului.

3.4.1. Dezasamblarea imaginii kernel.img.

Toate acțiunile sunt efectuate automat, adică Nu există nimic de descris aici fără participarea dumneavoastră.

3.4.2. Construirea imaginii kernel.img.

La construirea imaginii nucleului, va apărea un meniu pentru selectarea unei surse de date.

**************************
* Imagine sursă aleasă: *
* 1. Despachetează director *
* 2. Director pachet *
*3.Întoarcere*
**************************
Vă rugăm să alegeți sursa:

Aveți posibilitatea de a construi o imagine dintr-o imagine dezambalată situată în folderul Unpack/Kernel pentru a face acest lucru, selectați elementul de meniu „1. Despachetează dir.” Dacă selectați elementul de meniu „2. Pack dir”, apoi imaginea va fi creată din datele aflate în folderul Pack/Kernel.

Pentru a anula operația, selectați elementul de meniu „3. Întoarcere". Acest lucru vă va întoarce la meniul „Comenzi kernel”.

3.5. Sistem de meniu.

Pentru a continua la procesarea imaginii de sistem, executați comanda „3-System”. Aceasta vă va duce la meniul „Comenzi de sistem”.

Meniul de procesare a imaginii de sistem arată astfel:


* Comenzi de sistem: *
* ——————————————— *
* 1 pachet iafa * 2 pachete de iaf *
* 3-unpack ext3 * 4-pachet ext3 *
* 5 ext4 despachetați * 6 pachete ext4 *
* 7-sparse la ext4 * *
* * *
***************************************************
*8-Retur*
***************************************************
Vă rugăm să alegeți comanda:

3.5.1. Dezasamblarea unei imagini de sistem, cum ar fi yaffs.

Comanda „1” despachetează imaginile de sistem ale tipului yaffs în folderul Unpack/System.

3.5.2. Construirea unei imagini de sistem precum iafa.

Comanda „2” împachetează imagini de sistem de tip iaf. Va apărea un meniu pentru selectarea unei surse de date.

**************************
* Imagine sursă aleasă: *
* 1. Despachetează director *
* 2. Director pachet *
*3.Întoarcere*
**************************
Vă rugăm să alegeți sursa:

Aveți posibilitatea de a construi o imagine dintr-o imagine dezambalată situată în folderul Dezambalare/sistem, selectați elementul de meniu „1. Despachetează dir.” Dacă selectați elementul de meniu „2. Pack dir”, apoi imaginea va fi creată din datele aflate în folderul Pack/system.

Pentru a anula operația, selectați elementul de meniu „3. Return” și veți reveni la meniul anterior „Comenzi de sistem”.

3.5.3. Dezasamblarea imaginii sistemului de tip ext3.

Comanda „3” despachetează imaginile de sistem de tip ext2-ext3 în folderul Unpack/System.

3.5.4. Construirea unei imagini de sistem de tip ext3.

Comanda „4” construiește imaginea de sistem de tip ext2-ext3. Ambalarea se realizează în mod similar cu clauza 3.5.2. doar imaginea de ieșire va fi de tip ext3.

3.5.5. Dezasamblarea imaginii sistemului de tip ext4.

Comanda „5” despachetează imaginile ext4 System în folderul Unpack/System.

3.5.6. Construirea unei imagini de sistem de tip ext4.

Comanda „6” construiește imaginea de sistem de tip ext4. Ambalarea se realizează în mod similar cu clauza 3.5.2. doar imaginea de ieșire va fi de tip ext4.

3.5.7. Convertiți imaginea comprimată rară în ext4.

Comanda „7” convertește (conversează sau transcodează) imaginile comprimate de tip rar în imagini de tip ext4 (analog cu operația simg2img).

3.5.8.Reveniți la meniul principal.

Comanda „8” revine la meniul principal al instrumentului.

3.6. Meniul altor comenzi.

Pentru a trece la executarea altor comenzi, executați comanda „5-Alte comenzi”. Aceasta vă va duce la meniul „Alte comenzi”. Meniul pentru executarea altor comenzi arată astfel:

**************************
* Alte comenzi: *
* —————- *
*1-Superutilizator inițial*
* 2-Calculați md5 *
* *
**************************
*3-Retur*
**************************
Vă rugăm să alegeți comanda:

Comanda „1” inițializează SuperUser în imaginea de sistem, comanda „2” calculează suma de verificare a fișierului. Comanda „3” revine la meniul principal al instrumentului.

3.6.1. Inițializare SuperUser.

La inițializarea SuperUser, va apărea un meniu de selecție a sursei:

**************************
* Sursa de alegere init: *
* 1. Despachetează director *
* 2. Director pachet *
*3.Întoarcere*
**************************
Vă rugăm să alegeți sursa:

Aveți posibilitatea de a inițializa imaginea dezambalată aflată în folderul Dezambalare/sistem, selectați elementul de meniu „1. Despachetează dir.” Dacă selectați elementul de meniu „2. Pack dir”, apoi imaginea aflată în folderul Pack/system va fi inițializată. Pentru a anula operația, selectați elementul de meniu „3. Întoarcere".
Inițializarea se face prin copiere fisierele necesare(su și SuperSU.apk) în imaginea dezasamblată System.img. Pentru a obține accesul rădăcină aveți nevoie de:

— despachetați imaginea sistemului utilizând comanda „3” din meniul principal
instrumente sau plasați imaginea dezambalată în folderul Unpack (sau Pack)/System/;
— executați comanda „1-init SuperUser” din meniul „Alte comenzi”.

După afișarea intermitentă a imaginii System.img, veți avea acces Root pe dispozitiv. Dacă sunt utilizate fișiere cu o versiune diferită pentru a obține accesul Root pe dispozitivul dvs., atunci trebuie doar să actualizați (înlocuiți) fișierele su și SuperSU.apk din folderul App/.

3.6.2. Calculul sumei de control.

Pentru a calcula suma de control a unui fișier sau fișiere, plasați-le în folderul Pack/md5/. După executarea comenzii „2-Calculate md5”, toate fișierele aflate în folderul Pack/md5 vor fi adăugate verifica suma, calculat folosind algoritmul md5. Sunt procesate numai fișierele fără extensie sau cu extensia .img, .tar, .zip.

3.7. Inițializare.

Pentru a efectua inițializarea, executați comanda „6-init Tools”. Acest lucru va crea toate structurile de foldere necesare pentru ca MTwinTools să funcționeze și va copia imaginile de intrare în folderul de lucru Unpack/Firmware/Image.

3.8. Produs de curățare.

Pentru a goli zona de lucru, tastați „7-CLEAN”. În acest caz, TOATE folderele suplimentare împreună cu conținutul lor vor fi șterse, MTwinTools își va finaliza munca și va lua forma pe care a avut-o imediat după instalare.

3.9. Ieșire.

Pentru a ieși, formați „8-Exit”. În acest caz, DOAR produsul va ieși fără nicio curățare.

Interpolare, interpolare- în matematica computațională, o metodă de găsire a valorilor intermediare ale unei mărimi dintr-un set discret existent de valori cunoscute.

Mulți dintre cei care se ocupă de calcule științifice și de inginerie trebuie adesea să opereze cu seturi de valori obținute empiric sau prin eșantionare aleatorie. De regulă, pe baza acestor seturi, este necesar să se construiască o funcție în care alte valori obținute să poată cădea cu mare precizie. Această sarcină se numește apropiere. Interpolarea este un tip de aproximare în care curba funcției construite trece exact prin punctele de date disponibile.

Există multe metode de interpolare cu diferențe finite. Cel mai
Metoda lui Newton pentru interpolarea directă (metoda Newton-Gregory) este comună. Polinomul de interpolare în acest caz are forma:

Găsim coeficienții C folosind formula:

Implementarea programului în C#:
folosind System; Interpolarea spațiului de nume (clasa Program...

Vizualizarea algoritmilor de sortare

Programul este împărțit în două fire în care unul se realizează sortarea, iar în celălalt redesenarea GUI. După ce faceți clic pe butonul „Sort”, programul apelează metoda „RunSorting”, în care se definește algoritmul de sortare și se creează un fir nou cu procesul de sortare care rulează în el.
vid privat RunSo...

Kacher Brovina pe KT819G

Astăzi vreau să-mi arăt Kacher-ul, pe care l-am făcut sărbătorile de iarnă trecute. Nu voi descrie întregul proces de fabricație, deoarece există multe articole pe Internet. Voi scrie doar despre parametrii săi principali.

Mai jos sunt câteva fotografii făcute în timpul asamblarii dispozitivului.

Bobina este bobinată cu aproximativ 2000 de spire de sârmă de 0,08 mm pe o țeavă din PVC cu diametrul de 50 mm și înălțimea de 200 mm.

O placă de la una veche a fost folosită ca terminal. hard disk. Toate celelalte au fost asamblate conform diagramei situate în partea de jos a paginii.

Prima varianta a fost alimentata de la sursa de alimentare a unui calculator vechi, cu o tensiune de 12 V. Apoi s-a realizat o alimentare separata, cu o tensiune de 30 V si cu racire incorporata.

Diagrama dispozitivului:

Ce este CORS și cum se utilizează

Partajarea resurselor între domenii (CORS) este o specificație W3C care permite comunicarea între domenii în browser. Construind pe deasupra obiectului XMLHttpRequest, CORS permite dezvoltatorilor să lucreze cu aceleași expresii ca și cererile cu același domeniu. Cazul de utilizare pentru CORS este simplu. Imaginați-vă că alice.com are niște date pe care bob.com dorește să le obțină. În mod tradițional, acest tip de solicitare nu este permis în cadrul aceleiași politici de origine a browserului. Cu toate acestea, prin sprijinirea cererilor CORS, alice.com poate adăuga câteva antete speciale de răspuns care permit lui bob.com să acceseze datele. După cum puteți vedea din acest exemplu, suportul CORS necesită coordonare între server și client. Din fericire, dacă ești un dezvoltator pe partea clientului, ești protejat de majoritatea acestor detalii. Restul acestui articol arată modul în care clienții pot efectua solicitări între origini și cum se pot configura serverele pentru a accepta CORS. Continuare…

Aproape toti utilizator Android smartphone, a existat dorința de a crea sau edita firmware-ul pentru a se potrivi nevoilor și dorințelor dumneavoastră. În acest articol ne vom uita la principiul editării firmware-ului pentru CWM (în format zip).

Preparare:

În primul rând, trebuie să decidem ce firmware vom folosi ca bază. Este mai bine să folosiți off. firmware în zip. Pentru aproape fiecare dispozitiv comun există un firmware curat + root.
Când este selectat firmware-ul, acesta trebuie să fie descărcat în orice locație convenabilă pentru dvs. pe computer (nu este nevoie să despachetați).
Vom avea nevoie și de un arhivator, recomand să folosim 7zipși cele mai bune de acest gen editor de text Notepad++.

Structura firmware:

Deschizând arhiva cu firmware-ul, vedeți următoarele:
META-INF- Folderul conține scripturi de instalare a firmware-ului.
sistem- un folder cu toate fișierele de firmware (aplicații, ajustări, scripturi etc.).
boot.img- nucleul sistemului.

Aproape toate manipulările sunt efectuate în folder sistem, structura sa:
aplicația- aplicatii de sistem.
cos- resursele sistemului propriu-zis.
etc- Scripturi, ajustări, configurații, profiluri și setări de sistem.
fonturi- Fonturi de sistem.
cadru- aici sunt stocate principalele fișiere de sistem (grafice, setări de text de animație etc.).
lib- biblioteci de sistem.
mass-media- fișiere multimedia (tonuri de apel de notificare, animație de încărcare, tapet etc.).
usr- setări care nu pot fi modificate în viitor de către sistem (funcționează în modul doar citire).
xbin- din nou, configurații de sistem și alte modificări.
construi.prop- informații despre sistem, setările locale și performanța sistemului.

Aplicatii:

Înainte de a adăuga/elimina software-ul în sistem, trebuie să verificați dacă firmware-ul dvs. este deodexat (adică, verificați prezența fișierelor .odex în folderul aplicației. Dacă există fișiere, atunci trebuie să scăpați de ele folosind acest lucru instrucțiuni .
Adăugați software la firmware:
În primul rând, trebuie să instalați în smart acele programe pe care doriți să le adăugați la ansamblu. După instalare, le scoatem din sistem folosind Rădăcină de explorareși analogii săi, sunt localizați pe calea datelor/aplicației, avem nevoie și de bibliotecile lor (dacă există, desigur), sunt localizate pe calea datelor/datelor. Ele se află în folderul cu același nume din aplicație și au extensia .asa de. Apoi confiscat .apk puneți fișierele în arhivă de-a lungul căii sistem/aplicație și fișierele cu extensia .asa de(libs) de-a lungul căii system/lib .
Eliminam software-ul din firmware:
Totul este simplu aici, mergi la folder aplicația- decidem ce nu avem nevoie și eliminăm toate programele care nu sunt necesare (este mai bine să nu atingem sistemul).

Limba și versiunea de firmware:

Copiați fișierul build.prop pe desktop. Deschideți-l cu notepad și găsiți rândurile:

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

pentru limba rusă trebuie să faceți acest lucru:

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

introduceți numele modului dvs. în rând

în aceeași construcție.prop

Arte grafice:

Întreaga parte grafică a firmware-ului este stocată în două fișiere calea fișierului framework-res.apk cadru de sistemși SystemUI.apk pe parcurs systemapp. Iar partea grafică a aplicației de setări este stocată în mod natural în aplicația Settings.apk.

Scripturi și ajustări (accelerare și optimizare a sistemului):

Majoritatea setărilor sunt făcute în fișier construi.prop, puteți citi despre asta. De asemenea, dacă nucleul dvs. acceptă init.d există o serie de scripturi pentru optimizarea sistemului, unul dintre ele este descris în acest articol (optimizare RAM) si in acest articol Modificați scripturile pentru init.d

Înlocuirea fonturilor de sistem:

După cum sa menționat mai sus, toate fonturile sunt conținute în folder fonturi, fonturile principale sunt: ​​DroidSans.ttf și DroidSans-Bold.ttf pot fi înlocuite cu orice fonturi, redenumindu-le similar celor de mai sus și deplasându-se cu înlocuirea în arhivă cu firmware-ul din folder fonturi.

Miez:

Teoretic, este suficient să înlocuiți boot.img propriu, dar în unele cazuri Core-urile sunt însoțite de scripturi suplimentare. Prin urmare, vă sfătuiesc să nu faceți nimic dacă aveți îndoieli.



Să începem cu faptul că aveți nevoie de Linux. În Windows, puteți doar dezasambla firmware-ul, dar nu îl veți putea pune la loc din motive pur tehnice. Acum despre firmware. Ele sunt de obicei distribuite sub formă de arhive ZIP flash prin recuperare personalizată. Este unul dintre ele de care vom avea nevoie pentru experimente. Vă recomand să începeți calea unui romodel cu ceva cât mai aproape de AOSP firmware personalizat, deoarece este adesea mai ușor de înțeles decât stocul.

  1. Despachetați arhiva cu firmware-ul în orice folder.
  2. Descărcați scriptul de pe link și dezarhivați-l în orice folder.
  3. Lansăm fișierul ext (dacă se plânge de lipsa Java, săriți apăsând pe y; Java este necesar doar pentru ambalare).
  4. Acum selectați despachetarea apăsând butonul 1 și apoi Enter.
  5. Un folder nou numit extract_* va apărea lângă fișierul ext și folderul instrumente. Copiați fișierele system.new.dat și system.transfer.list în ele.
  6. După ce ați copiat fișierele, apăsați Enter și așteptați. După un timp, va trebui să apăsați din nou pe Enter, să introduceți parola de administrator și să apăsați din nou pe Enter.
  7. Gata. Conținutul sistemului se află în folderul extract_*/output.

Metoda manuala

Despachetați arhiva cu firmware-ul în orice folder (de exemplu, rom):

$ mkdir ~/rom $ dezarhivare calea_la_arhivă -d ~/rom/

Descărcați instrumentele de care avem nevoie în acest folder:

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

Să rulăm scriptul:

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

Acesta convertește fișierul system.new.dat într-o imagine brută numită system.img . Montați imaginea în subfolderul mnt:

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

Structura directorului Android

După dezambalarea sistemului, va apărea următoarea structură de directoare:

  • aplicația - aplicații preinstalate cu privilegii standard;
  • priv-app- aplicații preinstalate cu privilegii ridicate, inclusiv unele componente ale sistemului;
  • cos- fișiere binare în format ELF, un analog al directoarelor /bin și /usr/bin din Linux. Conține diverse componente ale sistemului utilizate de componentele de sistem de nivel superior;
  • etc- fisiere de setari. Un analog complet al /etc în Linux, folosit, totuși, numai de aceleași componente ale sistemului. Aplicații Android magazin setări individualeîn directoarele /data/data/;
  • fonturi- fonturi. În mod implicit, conține doar fonturi de marcă Roboto;
  • cadru- biblioteci de clase Java utilizate de sistem și aplicații. Există, de asemenea, un fișier framework-res.apk care conține o descriere completă a interfeței sistem de operare, inclusiv toate fișierele grafice;
  • libȘi lib64- Biblioteci Linux utilizate de componentele sistemului de nivel scăzut. Analog al directoarelor /lib și /usr/lib din Linux, inclusiv următoarele biblioteci standard, cum ar fi libc, libz, libssl. Pe dispozitivele cu arhitectură ARMv7 și mai mici, directorul lib64 va lipsi;
  • mass-media- fișiere media: tonuri de apel, sunete de notificare, sunete de interfață și animație de încărcare a sistemului de operare;
  • tts- fișiere necesare sintetizatorului de vorbire;
  • usr- un director care conține de obicei fișiere necesare pentru ca aplicațiile să ruleze din directorul bin. În esență, un analog al lui /usr/share ;
  • vânzător- fișiere furnizate de producătorul dispozitivului. De obicei, conține firmware binar pentru diferite componente hardware, de exemplu un modul Wi-Fi;
  • xbin- directorul optional; firmware-urile personalizate îl folosesc pentru a stoca lucruri precum interpretul bash, SSH, PowerTOP, BusyBox și alte instrumente utile;
  • construi.prop- un fișier care conține informații despre ansamblu, precum și diverse setări de nivel scăzut;
  • addon.d- conține scripturi care sunt lansate după instalarea firmware-ului. GApps își scriu și aici propriul script, datorită căruia sunt reînviați după reinstalarea firmware-ului.

Acum că suntem familiarizați cu structura de bază a Androidului, să începem să facem modificări.

Eliminarea și adăugarea aplicațiilor

Toate programe preinstalate poate fi găsit în două foldere:

  • /sistem/aplicație/;
  • /system/priv-app/.

Ele diferă unele de altele prin privilegiile de acces. Dacă programele din aplicație au aceleași permisiuni ca programe de la terți(de exemplu, instalate din Magazinul Play), apoi aplicațiile din aplicația priv pot folosi API-uri privilegiate (drepturi privilegiate). Puteți afla mai multe despre asta de la.

Pentru a preinstala o aplicație în firmware, pur și simplu introduceți fișierul APK în /system/app/ . Puteți, desigur, să creați un folder separat, dar în cazul nostru acest lucru nu are sens, deoarece folderul este folosit pentru a stoca biblioteci și fișiere Odex, pe care pur și simplu nu le avem. Pentru a-l elimina, pur și simplu ștergeți folderul cu el.

Puteți merge mai departe și puteți înlocui aplicațiile stoc cu analogi. De exemplu, pentru a înlocui calendarul, ștergeți folderul Calendarși copiați com.rpagyc.simplecalendar.apk-ul nostru preferat în /system/app. Și nu trebuie să-l copiați. Apoi firmware-ul va fi fără calendar.

Principalul lucru de reținut este că programele de stoc pot fi legate între ele. Prin urmare, ștergerea unui program poate duce la inoperabilitatea completă a altuia (de exemplu, CalendarProvider și Calendar: prin ștergerea primului, veți face nu numai calendarul stoc inoperabil, ci și orice alt calendar). Din fericire, în firmware-ul AOSP pur nu există multe interconexiuni.

Modificarea animației de încărcare

Animația este stocată ca imagini PNG, ambalate în arhiva /system/media/bootanimation.zip fără compresie. În interiorul arhivei se află:

  • desc.txt- un fișier care descrie animația;
  • partea 0- un folder cu fișiere de animație care sunt redate primele;
  • partea 1- un folder cu fișiere de animație care sunt redate secunde;
  • parte?- ultimul folder, imaginile din care sunt redate la final.

Fișierul desc.txt poate conține ceva de genul

1920 1080 60 p 1 0 part0 p 0 0 part1

Scopul acestor linii este intuitiv: 1920 × 1080 este rezoluția imaginii, 60 este numărul de cadre pe secundă. Part0 și part1 indică folderele din care va fi redată animația și secvența de redare. În general, pot exista fie o parte, fie mai multe (trei sau mai multe).

Imaginile aflate în folderele părți sunt numerotate cu cinci numere în ordinea redării: 00000.png, 00001.png, 00002.png... Aceste imagini pot fi înlocuite cu propriile imagini, creând astfel o animație originală. Sau puteți șterge pur și simplu fișierul bootanimation.zip. Apoi dispozitivul va afișa animație de la Android standard. Sau folosiți o colecție gata făcută de animații pe w3bsit3-dns.com.

Schimbarea designului sunetului

De fapt, toate sunetele pe care sistemul le redă sunt stocate în folderul /system/media/audio. În interiorul acestuia veți găsi următoarele foldere:

  • alarme- melodii de ceas deșteptător;
  • notificări- sunete de notificare;
  • tonuri de apel- tonuri de apel;
  • ui- sunete de sistem, cum ar fi bateria descărcată, focalizarea camerei, selecția elementelor de interfață.

În alarme, notificări, tonuri de apel puteți adăuga câte melodii doriți. Le puteți lua, de exemplu, aici:

  • tonuri de apel standard de la diferite telefoane și smartphone-uri Nokia;

Și un mic truc de viață: ștergerea fișierelor din folderul ui nu va duce la blocări și erori, ci la dispariția sunetelor de sistem. Prin urmare, puteți dezactiva cu ușurință sunetul fotografierii de pe cameră, luând o captură de ecran, pur și simplu ștergând fișierele care conțin aceste sunete (numele lor sunt intuitive).

Adăugarea fonturilor

Fonturile sunt stocate în fonturi. Puteți găsi arhive cu fișiere de font pe w3bsit3-dns.com și XDA. Pentru a instala, trebuie doar să copiați și să înlocuiți fișierele ttf din arhivă în folderul cu fonturi.

Modificarea setărilor sistemului (build.prop)

Imaginea sistemului conține un fișier build.prop interesant care conține o mulțime de informații utile despre hardware-ul dispozitivului și setările implicite pentru diverse aplicații stoc. Pentru a fi corect, observ că nu este întotdeauna cazul. De exemplu, în Gigaset ME și ME Pro build.prop este împărțit în două părți. O parte conține setări pentru Gigaset ME, iar pentru ME Pro unele linii sunt duplicate, dar tastele (numele smartphone-ului etc.) sunt diferite. Acest lucru a fost făcut pentru a asigura funcționarea mai mult sau mai puțin corectă a aceluiași firmware pe dispozitive diferite.


Build.prop conține (sau poate conține) un număr mare de setări. Unele dintre ele nu schimbă nimic, altele îmbunătățesc un lucru în detrimentul altuia, dar există cele care sunt cu adevărat utile:

  • ro.produs.modelȘi ro.produs.producător- modelul smartphone-ului și numele producătorului. Prin înlocuirea acestor linii, puteți face Magazinul Play să creadă că aveți un alt smartphone, care va deschide accesul la mai multe software. Pentru toți cei puțin cunoscuți smartphone-uri chinezești aceste linii pot deveni salvatoare;
  • hw.qemu.mainkeys- ia doar două valori: 0 - afișați tastele de navigare pe ecran, 1 - nu afișați butoanele. Absența unei linii corespunde cu 0;
  • debug.sf.nobootanimation- valoarea 1 dezactivează încărcarea animației, ceea ce îi crește ușor viteza. Setarea lui la 0 sau ștergerea liniei readuce animația la locul ei;
  • ro.telefonie.default_network- spune sistemului în ce mod ar trebui să fie comutat rețea de telefonie mobilăîn timpul încărcării;
  • ro.sf.lcd_density- Display DPI, cea mai precisă valoare pentru afișaj poate fi calculată printr-un site convenabil. Dar nimeni nu vă interzice să setați o valoare mai mare sau mai mică după bunul plac: valorile mai mari măresc elementele de interfață, valorile mai mici fac elementele de interfață mai mici;
  • ro.config.vc_call_vol_steps- numărul de pași de volum în timpul unui apel (implicit 8);
  • ro.config.media_vol_steps- numărul de pași de volum media (implicit 15).

Implementăm Google Apps în firmware

Aproape întotdeauna firmware-ul personalizat vine fără servicii Googleși magazin de aplicații. Dezvoltatorii sugerează să le instalăm separat folosind pachetul GApps. Cu toate acestea, poate fi integrat direct în firmware.

Mai întâi trebuie să descărcați pachetul GApps. Recomand să luați arhivele Open GApps. Tu alegi Versiunea Android, arhitectura procesorului și opțiunea de configurare (Pico, Nano, Stock...), care determină câte diferite aplicații Google conţine o arhivă. Recomand să descărcați versiunea Pico. Conține doar Magazinul Play și un set de biblioteci necesare funcționării sale.

Integrarea GApps în firmware se face astfel:

  1. Despachetați arhiva ZIP GApps folosind orice arhivator.
  2. Accesați folderul Core.
  3. Vedem multe arhive cu extensia .tar.lz. Extrageți folosind lzip.
  4. După despachetare, copiați fișierele din foldere în folderele corespunzătoare din sistem. Este ușor să ghiciți ce să aruncați din structura directorului din arhivă. De exemplu, configuratorul (din captura de ecran) trebuie să fie plasat în folderul priv-app.
  5. Accesați folderul GApps (situat lângă Core) și urmați pașii 3 și 4 pentru fișierele din acesta.
  6. Gata, am integrat GApps în firmware-ul nostru!

Loc liber

Este necesar să înțelegeți că spațiul pentru instalarea firmware-ului este limitat. Nu puteți instala firmware a cărui dimensiune depășește dimensiunea partiției de sistem a dispozitivului. Puteți vedea valoarea acestuia folosind:

$ adb shell df /system

A doua opțiune: puneți un terminal pe dispozitiv și introduceți comanda

$df/sistem

Puteți afla dimensiunea partiției în octeți instalând BusyBox pe smartphone și rulând comanda în terminal

$ busybox df -B 1 /sistem

Sau la fel cu folosind ADB:

$ adb shell busybox df -B 1 /sistem

Spațiul ocupat de firmware va fi aproximativ egal cu dimensiunea sistemului atunci când este despachetat. În general, la crearea firmware-ului, este necesar să se țină cont de faptul că utilizatorul poate, de asemenea, să flash diverse modificări deasupra acestuia (SuperSU, Xposed) sau să transfere aplicații în secțiunea de sistem. De exemplu, pachetul minim de aplicații Google (Pico) necesită un spațiu de instalare suplimentar de minim 150 MB.

Dacă este necesar, dimensiunea fișierului firmware poate fi redusă prin ștergere nu numai programe inutile din /system/app (/system/priv-app) și sunete de apel din system/media/audio și bootanimation.zip , dar și:

  • /system/tts/lang_pico- limbile motorului vocal primitiv Pico TTS, motorul vocal Google nu vor fi afectate;
  • /system/usr/srec/config/- limbi offline. Îl puteți descărca online mai târziu, dacă este necesar.

Asamblare

După ce faceți modificări, trebuie să puneți totul la loc. Mai întâi, să împachetăm secțiunea de sistem în system.new.dat . Descărcați instrumentele de care avem nevoie:

$ 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

Să ne convertim folderul înapoi într-o imagine RAW. Să-i spunem system_new.img:

$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output/

1073741824 este modificat la dimensiunea partiției de sistem în octeți. Ar fi indicat să-l faceți chiar puțin mai mic. Facem o imagine rară din imaginea RAW:

$ img2simg system_new.img system_snew.img

Să ne convertim imaginea în system.transfer.list și system.new.dat, care ar trebui să fie aruncate în arhiva cu firmware-ul, dar mai întâi vom șterge fișierele vechi:

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

Să separăm fișierele de firmware de excesul de husk (fișiere pe care le-am descărcat pentru lucru. Pentru aceasta este convenabil să folosiți arhiva cu firmware-ul). Șters? Acum trebuie să împachetați firmware-ul într-o arhivă ZIP (cu orice arhivator).

Mai rămâne doar să semnezi arhiva. Acest lucru se poate face atât pe Android însuși folosind ZipSigner, cât și pe un computer (veți avea nevoie de Java instalat):

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

Stânci subacvatice

În timpul construcției system.new.dat este posibil să întâmpinați mai multe probleme cauzate de schimbările constante în mecanismele de generare Firmware Android. Metoda descrisă mai sus ar trebui să funcționeze bine în cazul firmware-ului bazat pe Android 5.1, cele mai noi pot avea dificultăți, așa că va trebui să utilizați alte versiuni ale instrumentelor de compilare. Din păcate, nu putem descrie toate nuanțele ansamblului, așa că poate fi necesar să îl căutați pe Google.

Instalare

Pentru a instala un firmware personalizat, aveți nevoie de un firmware personalizat TWRP de recuperare, care vă permite să instalați un firmware nesemnat sau semnat cu o cheie de testare (aceasta este exact ceea ce am creat). În revistă, am descris în mod repetat procesul de instalare a acestuia, iar în firele de forum dedicate dispozitivului dvs., există de obicei suficiente informații pentru a face acest lucru.

TWRP

concluzii

Acest articol descrie doar vârful unui aisberg imens numit „modificare firmware”. Firmware-ul „serios” nu numai că completează nucleul și firmware-ul în sine cu aplicații stoc cu multe funcții (care sunt adesea preluate din alte nuclee și firmware), organizând sau chiar schimbând principiile interacțiunii lor, dar poate schimba radical și principiile de funcționare ale sistemul de operare. Adevărat, un astfel de hack nu mai este Android, ci un sistem de operare separat, chiar dacă acolo pot fi instalate serviciile Play (apropo, astfel de acțiuni, ca să spunem ușor, nu sunt încurajate de Google). Ei bine, nu uitați: toate shell-urile de la producători - TouchWiz, ZenUI, HTC Sense și așa mai departe - sunt doar personalizate obișnuite, legate maxim de hardware-ul dispozitivului și unele de altele.

Interpolare, interpolare- în matematica computațională, o metodă de găsire a valorilor intermediare ale unei mărimi dintr-un set discret existent de valori cunoscute.

Mulți dintre cei care se ocupă de calcule științifice și de inginerie trebuie adesea să opereze cu seturi de valori obținute empiric sau prin eșantionare aleatorie. De regulă, pe baza acestor seturi, este necesar să se construiască o funcție în care alte valori obținute să poată cădea cu mare precizie. Această sarcină se numește apropiere. Interpolarea este un tip de aproximare în care curba funcției construite trece exact prin punctele de date disponibile.

Există multe metode de interpolare cu diferențe finite. Cel mai
Metoda lui Newton pentru interpolarea directă (metoda Newton-Gregory) este comună. Polinomul de interpolare în acest caz are forma:

Găsim coeficienții C folosind formula:

Implementarea programului în C#:
folosind System; Interpolarea spațiului de nume (clasa Program...

Programul este împărțit în două fire în care unul se realizează sortarea, iar în celălalt este redesenată interfața grafică. După ce faceți clic pe butonul „Sort”, programul apelează metoda „RunSorting”, în care se definește algoritmul de sortare și se creează un fir nou cu procesul de sortare care rulează în el.
vid privat RunSo...

Astăzi vreau să-mi arăt Kacher-ul, pe care l-am făcut sărbătorile de iarnă trecute. Nu voi descrie întregul proces de fabricație, deoarece există multe articole pe Internet. Voi scrie doar despre parametrii săi principali.

Mai jos sunt câteva fotografii făcute în timpul asamblarii dispozitivului.

Bobina este bobinată cu aproximativ 2000 de spire de sârmă de 0,08 mm pe o țeavă din PVC cu diametrul de 50 mm și înălțimea de 200 mm.

O placă de pe un hard disk vechi a fost folosită ca terminal. Toate celelalte au fost asamblate conform diagramei situate în partea de jos a paginii.

Prima varianta a fost alimentata de la sursa de alimentare a unui calculator vechi, cu o tensiune de 12 V. Apoi s-a realizat o alimentare separata, cu o tensiune de 30 V si cu racire incorporata.

Diagrama dispozitivului:

Partajarea resurselor între domenii (CORS) este o specificație W3C care permite comunicarea între domenii în browser. Construind pe deasupra obiectului XMLHttpRequest, CORS permite dezvoltatorilor să lucreze cu aceleași expresii ca și cererile cu același domeniu. Cazul de utilizare pentru CORS este simplu. Imaginați-vă că alice.com are niște date pe care bob.com dorește să le obțină. În mod tradițional, acest tip de solicitare nu este permis în cadrul aceleiași politici de origine a browserului. Cu toate acestea, prin sprijinirea cererilor CORS, alice.com poate adăuga câteva antete speciale de răspuns care permit lui bob.com să acceseze datele. După cum puteți vedea din acest exemplu, suportul CORS necesită coordonare între server și client. Din fericire, dacă ești un dezvoltator pe partea clientului, ești protejat de majoritatea acestor detalii. Restul acestui articol arată modul în care clienții pot efectua solicitări între origini și cum se pot configura serverele pentru a accepta CORS. Continuare…




Top