Ett program för att flasha en surfplatta med img extension firmware. Redigera img firmware. Demontering av ext4-systembilden

MTwinTools är ett verktyg som låter dig arbeta med firmware-filer och bilder boot.img, recovery.img och system.img. Författaren till verktyget är vin2809 från 4pda-forumet. MTwinTool kommer att vara användbart för ägare Huawei smartphones baserad på MTK-processorer.

Användarhandbok för att arbeta med MTwinTools

1. Introduktion.

1.1. Syfte.

MTwinTools-verktyget är avsett för demontering/montering av bilder av enheter baserade på MT-chips.

Den är byggd för användning i kommandorad baserat på verktyget RKwinTools, designat för att fungera med enheter på RK29xx-RK31xx-chips, och några fritt distribuerade program.

Fungerar endast under Windows 7 och högre utan att installera CYGWIN, och kräver heller ingen ytterligare registrering av sökvägar i Miljövariabler OS.

Verktyget låter dig:

  • packa upp och packa Boot.img-avbildningen;
  • packa upp och packa Recovery.img-bilden;
  • packa upp och packa Kernel.img-bilden;
  • packa upp och packa System.img-avbildningen, både typ yaffs och ext2-ext4;
  • konvertera en sparse fil av typen sparse till en bild av typen ext4;
  • beräkna kontrollsumman för en fil i md5-format;
  • initiera SuperUser.

1.2. Installera MTwinTools.
Installation av verktyget utförs genom att packa upp arkivet på någon plats som är lämplig för dig. Detta kommer att skapa en MTwinTools-mapp som innehåller:

  • mappar _In/, App/ och Cygwin/;
  • samt Readme.txt och menu.bat filer.

Mappen _In är tom och är avsedd att innehålla källbilder för bearbetning. Appen/mappen innehåller en uppsättning kommandofiler som bearbetar bilder. Mappen Cygwin/ innehåller fritt omdistribuerbara verktygsbibliotek och filer. Readme.txt-filen innehåller användarinstruktioner, dvs. texten du läser just nu. Menu.bat-filen används för att skapa menyn för MTwinTools-verktyget.

UPPMÄRKSAMHET. Det KRÄVS INGET för att ange åtkomstsökvägar till tjänstefiler i miljövariabler för Windows OS.

När du arbetar kommer andra nödvändiga mappar att visas:

  • Pack, som kommer att innehålla start-, återställnings- och systemfilerna efter
    paket, en md5-mapp som innehåller filer med en kontrollsumma, samt en mapp
    Firmware, i undermappen Image där de sammansatta startfilerna kommer att finnas,
    Återställning och system;
  • Packa upp, där Boot-, Recovery- och Systemfiler är HELT uppackade
    kommer att finnas i mappen Firmware, i undermappen Image.

1.3. Avinstallera MTwinTools.

Verktyget avinstalleras genom att radera verktygets rotmapp, d.v.s. MTwinTools mappar.

2. Grundläggande arbetsregler.

2.1.För att komma igång måste du köra menu.bat-filen, som kommer att starta verktygets meny.

2.2. Bilder avsedda för uppackning måste placeras i verktygets _In-mapp. Namnen på indatafilerna MÅSTE innehålla nyckelord och kan ha följande namn:

  • *boot*.img;
  • *återställning*.img;
  • *kärna*.img;
  • *system*.img.

2.3.Initiera verktyget när du startar för första gången. När verktyget är initierat kommer ALLA filer som finns i mappen _In att kopieras till den fungerande inmatningsmappen Packa upp/Firmware/Bild. Detta görs för att bevara originalfilerna.

2.4. Efter att ha tagit isär bilden kommer dess innehåll att placeras i mappen Packa upp, där följande mappstruktur skapas:

Boot(Recovery)/cfg/
kärna/
ramdisk/

Cfg/-mappen kommer att innehålla bildinställningarna, i kernel-mappen hittar du kärnan, d.v.s. zImage binär fil, och ramdisk-mappen kommer att innehålla allt annat. För att montera bilden, dess beståndsdelar, d.v.s. Placera ramdisk, kärna och eventuellt inställningar i lämpliga mappar i Packa upp. Den skapade bilden kommer att finnas i mappen Pack output.

3. Beskrivning av produkten.

3.1. Huvudmeny med kommandon.

Huvudmenyn med verktygskommandon ser ut så här:

**************************
* MTwinTools_V_0.6 *
**************************
*Bildkommandon:*
* ————— *
*1-boot*
*2-Återhämtning*
*3-Kärna*
*4-System*
*5-Andra kommandon*
* *
**************************
* Verktygskommandon: *
* ————— *
*6-Init Tools*
*7-Ren*
* *
**************************
*8-Avsluta*
**************************
Vänligen välj kommando:

Ett kommando väljs genom att ange numret som anges framför det. I den nuvarande versionen kan du göra följande:

— gå till menyn Boot image processing genom att skriva siffran "1";
— gå till menyn för återställningsbildbehandling — “2”;
— gå till kärnans bildbehandlingsmeny — “3”;
— gå till menyn Systembildbehandling — “4”;
— gå till menyn för andra kommandon — “5”;
— initiera verktygets arbetsområde — “6”;
— rengör arbetsområdet för produkten — "7";
— slutföra arbetet, d.v.s. lämna anläggningen - "8".

3.2. Startmenyn.

Kör kommandot "1-Boot" för att fortsätta bearbeta Boot-avbildningen. Detta tar dig till menyn "Startkommandon".

Boot image processing-menyn ser ut så här:

**************************
* Startkommandon: *
* ————— *
*1-Start uppackning*
*2-boot pack*
* *
**************************
*3-Retur*
**************************
Vänligen välj kommando:

Kommando “1” packar upp startbilder, kommando “2” packar upp startbilder. Kommandot "3" återgår till verktygets huvudmeny.

2.2.1. Demonterar boot.img-bilden.

2.2.2. Bygg boot.img-avbildningen.

När du bygger uppstartsavbildningen visas en meny för val av datakälla.

**************************
* Valkällbild: *
* 1. Packa upp dir *
* 2. Pack dir *
*3.Retur*
**************************
Välj källa:

Du har möjlighet att bygga en bild från en uppackad bild som finns i mappen Unpack/Boot för att göra detta, välj menyalternativet "1. Packa upp dir." Om du väljer menyalternativet "2. Pack dir", kommer bilden att skapas från data som finns i Pack/boot-mappen. För att avbryta operationen, välj menyalternativet "3. Lämna tillbaka". Samtidigt du
gå tillbaka till menyn "Startkommandon".

3.3. Återställningsmeny.

För att fortsätta bearbeta återställningsbilden, kör kommandot "2-Recovery". Detta tar dig till menyn "Återställningskommandon". Menyn för återställningsbildbehandling ser ut så här:

**************************
* Återställningskommandon: *
* —————— *
* 1-återställningsuppackning *
* 2-återställningspaket *
* *
**************************
*3-Retur*
**************************
Vänligen välj kommando:

Kommando "1" packar upp återställningsbilder, kommando "2" packar återställningsbilder. Kommandot "3" återgår till verktygets huvudmeny.
2.3.1. Demonterar recovery.img-bilden.

Alla åtgärder utförs automatiskt, d.v.s. Det finns inget att beskriva här utan ditt deltagande.

2.3.2. Bygg recovery.img-avbildningen.

När du bygger återställningsbilden visas en meny för val av datakälla.

**************************
* Valkällbild: *
* 1. Packa upp dir *
* 2. Pack dir *
*3.Retur*
**************************
Välj källa:

Du har möjlighet att bygga en bild från en uppackad bild som finns i mappen Packa upp/återställning för att göra detta, välj menyalternativet "1. Packa upp dir." Om du väljer menyalternativet "2. Pack dir" kommer bilden att skapas från data som finns i Pack/recovery-mappen.

För att avbryta operationen, välj menyalternativet "3. Lämna tillbaka". Detta kommer att återgå till menyn "Återställningskommandon".

3.4. Kärnmeny.

Kör kommandot "3-Kernel" för att fortsätta bearbeta kärnbilden. Detta tar dig till menyn "Kärnkommandon".

Kärnbildbehandlingsmenyn ser ut så här:

**************************
* Kärnkommandon: *
* —————— *
* Packa upp 1 kärna *
*2-kärnpaket*
* *
**************************
*3-Retur*
**************************
Vänligen välj kommando:

Kommando "1" packar upp kärnbilder, kommando "2" packar kärnbilder. Kommandot "3" återgår till verktygets huvudmeny.

3.4.1. Demontering av kernel.img-bilden.

Alla åtgärder utförs automatiskt, d.v.s. Det finns inget att beskriva här utan ditt deltagande.

3.4.2. Bygger kernel.img-bilden.

När du bygger kärnavbildningen visas en meny för att välja en datakälla.

**************************
* Valkällbild: *
* 1. Packa upp dir *
* 2. Pack dir *
*3.Retur*
**************************
Välj källa:

Du har möjlighet att bygga en bild från en uppackad bild som finns i mappen Unpack/Kernel för att göra detta, välj menyalternativet "1. Packa upp dir.” Om du väljer menyalternativet "2. Pack dir", kommer bilden att skapas från data som finns i Pack/Kernel-mappen.

För att avbryta operationen, välj menyalternativet "3. Lämna tillbaka". Detta kommer att återgå till menyn "Kärnkommandon".

3.5. Menysystem.

För att fortsätta bearbeta systemavbildningen, kör kommandot "3-System". Detta tar dig till menyn "Systemkommandon".

Menyn för systembildbehandling ser ut så här:


* Systemkommandon: *
* ——————————————— *
* 1-pack yaffs * 2-pack yaffs *
* 3-pack ext3 * 4-pack ext3 *
* 5-pack ext4 * 6-pack ext4 *
* 7-gles till ext4 * *
* * *
***************************************************
*8-Retur*
***************************************************
Vänligen välj kommando:

3.5.1. Att demontera en systembild som yaffs.

Kommandot "1" packar upp systembilder av typen yaffs i mappen Unpack/System.

3.5.2. Att bygga en systembild som yaffs.

Kommando "2" packar systembilder av typen yaffs. En meny för att välja en datakälla visas.

**************************
* Valkällbild: *
* 1. Packa upp dir *
* 2. Pack dir *
*3.Retur*
**************************
Välj källa:

Du har möjlighet att bygga en bild från en uppackad bild som finns i mappen Packa upp/system för att göra detta, välj menyalternativet "1. Packa upp dir.” Om du väljer menyalternativet "2. Pack dir", kommer bilden att skapas från data som finns i mappen Pack/system.

För att avbryta operationen, välj menyalternativet "3. Return” och du kommer tillbaka till den tidigare menyn “System commands”.

3.5.3. Demonterar systemavbildningen av ext3-typ.

Kommando “3” packar upp systembilder av typen ext2-ext3 till mappen Unpack/System.

3.5.4. Bygga en systemavbildning av typ ext3.

Kommando "4" bygger systembilden av typen ext2-ext3. Packning utförs på samma sätt som avsnitt 3.5.2. endast utdatabilden kommer att vara av typen ext3.

3.5.5. Demontering av ext4-systembilden.

Kommandot "5" packar upp ext4 systemavbildningar till mappen Unpack/System.

3.5.6. Bygga en systembild av ext4-typ.

Kommandot "6" bygger systembilden av typ ext4. Packning utförs på samma sätt som avsnitt 3.5.2. endast utdatabilden kommer att vara av typen ext4.

3.5.7. Konvertera sparsam komprimerad bild till ext4.

Kommandot "7" konverterar (konverterar eller omkodar) komprimerade bilder av den glesa typen till bilder av typen ext4 (analogt med simg2img-operationen).

3.5.8.Återgå till huvudmenyn.

Kommandot "8" återgår till verktygets huvudmeny.

3.6. Meny med andra kommandon.

För att gå vidare till att utföra andra kommandon, kör kommandot "5-Övriga kommandon". Detta tar dig till menyn "Andra kommandon". Menyn för att utföra andra kommandon ser ut så här:

**************************
* Andra kommandon: *
* —————- *
*1-Init SuperUser*
* 2-beräkna md5 *
* *
**************************
*3-Retur*
**************************
Vänligen välj kommando:

Kommando "1" initierar SuperUser i systembilden, kommando "2" beräknar filens kontrollsumma. Kommandot "3" återgår till verktygets huvudmeny.

3.6.1. Initierar SuperUser.

När SuperUser initieras visas en meny för val av källa:

**************************
* Valkälla init: *
* 1. Packa upp dir *
* 2. Pack dir *
*3.Retur*
**************************
Välj källa:

Du har möjlighet att initiera den uppackade bilden som finns i mappen Packa upp/system för att göra detta, välj menyalternativet "1. Packa upp dir.” Om du väljer menyalternativet "2. Pack dir" kommer bilden som finns i mappen Pack/system att initieras. För att avbryta operationen, välj menyalternativet "3. Lämna tillbaka".
Initiering görs genom kopiering nödvändiga filer(su och SuperSU.apk) i den demonterade System.img-bilden. För att få root-åtkomst behöver du:

— packa upp systemavbildningen med kommandot “3” i huvudmenyn
verktyg eller placera den uppackade bilden i mappen Unpack (eller Pack)/System/;
— kör kommandot "1-init SuperUser" i menyn "Andra kommandon".

Efter att ha blinkat System.img-bilden har du root-åtkomst på din enhet. Om filer av en annan version används för att få root-åtkomst på din enhet behöver du bara uppdatera (ersätta) su- och SuperSU.apk-filerna i mappen App/.

3.6.2. Checksumma beräkning.

För att beräkna kontrollsumman för en fil eller filer, placera dem i mappen Pack/md5/. Efter att ha utfört kommandot "2-Calculate md5" kommer alla filer som finns i mappen Pack/md5 att läggas till kontrollsumma, beräknad med md5-algoritmen. Endast filer utan tillägg eller med tillägg .img, .tar, .zip bearbetas.

3.7. Initialisering.

För att utföra initiering, kör kommandot "6-init Tools". Detta kommer att skapa alla nödvändiga mappstrukturer för att MTwinTools ska fungera och kopiera indatabilderna till arbetsmappen Unpack/Firmware/Image.

3.8. Rengöringsprodukt.

För att rensa arbetsområdet, skriv "7-CLEAN". I det här fallet kommer ALLA ytterligare mappar tillsammans med deras innehåll att raderas, MTwinTools-verktyget kommer att slutföra sitt arbete och anta den form det hade omedelbart efter installationen.

3.9. Utgång.

För att avsluta, slå “8-Exit”. I detta fall kommer ENDAST produkten att komma ut utan någon rengöring.

Interpolation, interpolation- i beräkningsmatematik, en metod för att hitta mellanliggande värden av en kvantitet från en befintlig diskret uppsättning kända värden.

Många av dem som sysslar med vetenskapliga och tekniska beräkningar måste ofta arbeta med uppsättningar värden som erhållits empiriskt eller genom slumpmässigt urval. Som regel, baserat på dessa uppsättningar, är det nödvändigt att konstruera en funktion i vilken andra erhållna värden kan falla med hög noggrannhet. Denna uppgift kallas approximation. Interpolation är en typ av approximation där kurvan för den konstruerade funktionen passerar exakt genom de tillgängliga datapunkterna.

Det finns många finita differensinterpolationsmetoder. Mest
Newtons metod för framåtinterpolation (Newton-Gregory-metoden) är vanlig. Interpolationspolynomet har i detta fall formen:

Vi hittar koefficienterna C med formeln:

Implementering av programmet i C#:
använder System; namnrymdsinterpolation ( klass Program ...

Visualisering av sorteringsalgoritmer

Programmet är uppdelat i två trådar i varav den ena utförs sortering och i den andra omritning GUI. Efter att ha klickat på knappen "Sortera" anropar programmet metoden "RunSorting", där sorteringsalgoritmen definieras och en ny tråd skapas med sorteringsprocessen som körs i den.
privat void KörSå...

Kacher Brovina på KT819G

Idag vill jag visa min Kacher som jag gjorde förra vinterlovet. Jag kommer inte att beskriva hela tillverkningsprocessen, eftersom det finns många artiklar på Internet. Jag kommer bara att skriva om dess huvudparametrar.

Nedan är några bilder tagna under monteringen av enheten.

Spolen är lindad med cirka 2000 varv av 0,08 mm tråd på ett PVC-rör med en diameter på 50 mm och en höjd av 200 mm.

En platta från en gammal användes som terminal. hårddisk. Allt annat monterades enligt diagrammet som finns längst ner på sidan.

Det första alternativet strömförsörjdes från en gammal dators strömförsörjning, med en spänning på 12 V. Sedan gjordes en separat strömförsörjning, med en spänning på 30 V och med inbyggd kylning.

Enhetsdiagram:

Vad är CORS och hur man använder det

Cross-domain resource sharing (CORS) är en W3C-specifikation som tillåter kommunikation över flera domäner i webbläsaren. Genom att bygga ovanpå XMLHttpRequest-objektet tillåter CORS utvecklare att arbeta med samma idiom som förfrågningar med samma domän. Användningsfallet för CORS är enkelt. Föreställ dig att alice.com har en del data som bob.com vill skaffa. Denna typ av begäran är traditionellt sett inte tillåten under samma webbläsares ursprungspolicy. Men genom att stödja CORS-förfrågningar kan alice.com lägga till några speciella svarsrubriker som tillåter bob.com att komma åt data. Som du kan se från detta exempel kräver CORS-stöd samordning mellan servern och klienten. Lyckligtvis, om du är en utvecklare på klientsidan, är du skyddad från de flesta av dessa detaljer. Resten av den här artikeln visar hur klienter kan utföra förfrågningar med flera ursprung och hur servrar kan konfigurera sig själva för att stödja CORS. Fortsatt…

Nästan alla android användare smartphone, det fanns en önskan att skapa eller redigera firmware för att passa dina behov och önskemål. I den här artikeln kommer vi att titta på principen för redigering av firmware för CWM (i zip-format).

Förberedelse:

Först och främst måste vi bestämma vilken firmware vi ska använda som grund. Det är bättre att använda av. firmware i zip. För nästan alla vanliga enheter finns det en ren firmware + root.
När den fasta programvaran har valts måste den laddas ner till vilken plats som helst på din PC (du behöver inte packa upp).
Vi kommer också att behöva en arkiverare, jag rekommenderar att du använder 7 zip och det bästa i sitt slag textredigerare Anteckningar++.

Firmware struktur:

När du öppnar arkivet med firmware ser du följande:
META-INF- Skript för installation av firmware lagras i mappen.
systemet- en mapp med alla firmware-filer (applikationer, tweaks, skript, etc.).
boot.img- kärnan i systemet.

Nästan alla manipulationer utförs i mappen systemet, dess struktur:
app- systemapplikationer.
bin- resurser i själva systemet.
etc- Skript, tweaks, konfigurationer, profiler och systeminställningar.
teckensnitt- Systemteckensnitt.
ramverk- de viktigaste systemfilerna lagras här (grafik, animerade textinställningar, etc.).
lib- systembibliotek.
media- multimediafiler (aviseringsringsignaler, laddar animationer, tapeter, etc.).
usr- inställningar som inte kan ändras i framtiden av systemet (de fungerar i skrivskyddat läge).
xbin- igen, systemkonfigurationer och andra justeringar.
bygga.prop- information om systemet, lokalinställningar och systemprestanda.

Applikationer:

Innan du lägger till/tar bort programvara till systemet måste du kontrollera om din firmware är avodexad (det vill säga, kontrollera om det finns .odex-filer i app-mappen. Om det finns filer måste du bli av med dem med hjälp av detta instruktioner .
Lägg till programvara till firmware:
Först och främst måste du installera i din smarta de program som du vill lägga till i monteringen. Efter installationen tar vi bort dem från systemet med hjälp av Root Explorer och dess analoger, de finns på data-/app-vägen, vi behöver också deras libs (om de finns såklart), de finns på data-/datavägen. De finns i mappen med samma namn i applikationen och har tillägget .så. Sedan beslagtagen .apk lägg filerna i arkivet längs sökvägssystemet/appen och filer med tillägget .så(libs) längs vägsystemet/lib .
Vi tar bort programvaran från firmware:
Allt är enkelt här, gå till mappen app- vi bestämmer vad vi inte behöver och tar bort all onödig programvara (det är bättre att inte röra systemet).

Språk och firmwareversion:

Kopiera filen build.prop till ditt skrivbord. Öppna den med anteckningsblock och hitta linjerna:

ro.product.locale.language=sv
ro.product.locale.region=USA

för det ryska språket måste du göra detta:

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

ange namnet på din mod i raden

i samma bygg.prop

Grafisk konst:

Hela den grafiska delen av firmware lagras i två filer framework-res.apk filsökväg systemramverk och SystemUI.apk längs vägen systemapp. Och den grafiska delen av inställningsapplikationen lagras naturligt i applikationen Settings.apk.

Skript och justeringar (systemacceleration och optimering):

De flesta inställningarna görs i filen bygga.prop, du kan läsa om detta. Dessutom, om din kärna stöder init.d det finns ett antal skript för att optimera systemet, ett av dem beskrivs i den här artikeln (RAM-optimering) och i den här artikeln Tweak skript för init.d

Ersätter systemteckensnitt:

Som nämnts ovan finns alla typsnitt i mappen teckensnitt, huvudteckensnitten är: DroidSans.ttf och DroidSans-Bold.ttf de kan ersättas med alla typsnitt, byta namn på dem på samma sätt som ovan och flytta med ersättning till arkivet med firmware i mappen teckensnitt.

Kärna:

Teoretiskt räcker det att ersätta boot.img sin egen, men i vissa fall åtföljs kärnorna av ytterligare skript. Därför råder jag dig att inte göra något om du har några tvivel.



Låt oss börja med att du behöver Linux. I Windows kan du bara ta isär den fasta programvaran, men du kommer inte att kunna sätta ihop den igen av rent tekniska skäl. Nu om firmware. De distribueras vanligtvis i form av ZIP-arkiv som flashas genom anpassad återställning. Det är en av dem som vi kommer att behöva för experiment. Jag rekommenderar att du startar vägen för en romodell med något så nära AOSP som möjligt anpassad firmware, eftersom det ofta är lättare att förstå än lager.

  1. Packa upp arkivet med firmware i valfri mapp.
  2. Ladda ner skriptet från länken och packa upp det i valfri mapp.
  3. Vi lanserar ext-filen (om den klagar på bristen på Java, hoppa över genom att trycka på y; Java behövs bara för paketering).
  4. Välj nu uppackning genom att trycka på knapp 1 och sedan på Enter.
  5. En ny mapp med namnet extract_* visas bredvid ext-filen och verktygsmappen. Kopiera filerna system.new.dat och system.transfer.list till den.
  6. När du har kopierat filerna, tryck på Enter och vänta. Efter ett tag måste du trycka på Enter igen, ange administratörslösenordet och trycka på Enter igen.
  7. Redo. Innehållet i systemet finns i mappen extract_*/output.

Manuell metod

Packa upp arkivet med firmware i valfri mapp (till exempel rom):

$ mkdir ~/rom $ unzip path_to_archive -d ~/rom/

Ladda ner verktygen vi behöver till denna mapp:

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

Låt oss köra skriptet:

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

Den konverterar filen system.new.dat till en råbild som heter system.img. Montera bilden i undermappen mnt:

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

Android katalogstruktur

Efter uppackning av systemet visas följande katalogstruktur:

  • app - förinstallerade applikationer med standardprivilegier;
  • priv-app- Förinstallerade applikationer med förhöjda privilegier, inklusive vissa systemkomponenter;
  • bin- binära filer i ELF-format, en analog av katalogerna /bin och /usr/bin i Linux. Innehåller olika systemkomponenter som används av systemkomponenter på högre nivå;
  • etc- inställningsfiler. En komplett analog av /etc i Linux, men används endast av samma systemkomponenter. Android-applikationer Lagra individuella inställningar i /data/data/-katalogerna;
  • teckensnitt- typsnitt. Som standard innehåller den bara Roboto-märkta typsnitt;
  • ramverk- bibliotek av Java-klasser som används av systemet och applikationerna. Det finns också en fil framework-res.apk som innehåller en fullständig beskrivning av gränssnittet operativ system, inklusive alla grafiska filer;
  • lib Och lib64- Linux-bibliotek som används av systemkomponenter på låg nivå. Analog av katalogerna /lib och /usr/lib i Linux, inklusive följande standardbibliotek, som libc, libz, libssl. På enheter med ARMv7-arkitektur och lägre kommer lib64-katalogen att saknas;
  • media- Mediefiler: ringsignaler, meddelandeljud, gränssnittsljud och animering av OS-laddning;
  • tts- filer som behövs av talsyntesen;
  • usr- en katalog som vanligtvis innehåller filer som behövs för att köra applikationer från bin-katalogen. I huvudsak en analog av /usr/share ;
  • Säljare- filer som tillhandahålls av enhetstillverkaren. Innehåller vanligtvis binär firmware för olika hårdvarukomponenter, till exempel en Wi-Fi-modul;
  • xbin- valfri katalog; anpassade firmwares använder den för att lagra saker som bash-tolken, SSH, PowerTOP, BusyBox och andra användbara verktyg;
  • bygga.prop- en fil som innehåller information om monteringen, samt olika lågnivåinställningar;
  • addon.d- innehåller skript som startas efter installation av firmware. GApps skriver också sitt eget skript här, tack vare vilket de återupplivas efter ominstallation av firmware.

Nu när vi är bekanta med den grundläggande strukturen för Android, låt oss börja göra ändringar.

Ta bort och lägga till applikationer

Allt förinstallerade program finns i två mappar:

  • /system/app/;
  • /system/priv-app/.

De skiljer sig från varandra i åtkomstprivilegier. Om program från appen har samma behörigheter som tredjepartsprogram(till exempel installerat från Play Butik), kan appar från priv-appen använda privilegierade API:er (privilegierade rättigheter). Du kan lära dig mer om detta från.

För att förinstallera ett program i firmware, släpp bara dess APK-fil i /system/app/ . Du kan naturligtvis skapa en separat mapp, men i vårt fall är det ingen mening, eftersom mappen används för att lagra bibliotek och odex-filer, som vi helt enkelt inte har. För att ta bort den, radera helt enkelt mappen med den.

Du kan gå längre och ersätta lagerapplikationer med analoger. Till exempel, för att ersätta kalendern, radera mappen Kalender och kopiera vår favorit com.rpagyc.simplecalendar.apk till /system/app. Och du behöver inte kopiera det. Då blir den fasta programvaran utan kalender.

Det viktigaste att komma ihåg: aktieprogram kan vara relaterade till varandra. Därför kan en radering av ett program mycket väl leda till att ett annat inte fungerar fullständigt (till exempel CalendarProvider och Calendar: genom att ta bort det första gör du inte bara aktiekalendern inoperabel, utan även vilken annan kalender som helst). Lyckligtvis finns det inte många sammankopplingar i ren AOSP-firmware.

Ändra laddningsanimeringen

Animationen lagras som PNG-bilder, packade i arkivet /system/media/bootanimation.zip utan komprimering. Inuti arkivet finns:

  • desc.txt- en fil som beskriver animeringen;
  • del0- en mapp med animationsfiler som spelas upp först;
  • del 1- en mapp med animationsfiler som spelas upp i andra hand;
  • del?- den sista mappen, från vilken bilderna spelas upp i slutet.

Filen desc.txt kan innehålla något liknande

1920 1080 60 p 1 0 del0 p 0 0 del1

Syftet med dessa rader är intuitivt: 1920 × 1080 är bildupplösningen, 60 är antalet bilder per sekund. Del0 och del1 anger de mappar som animeringen kommer att spelas upp från och uppspelningssekvensen. I allmänhet kan det vara antingen en del eller flera (tre eller fler).

Bilderna som finns i delmapparna är numrerade med fem siffror i uppspelningsordning: 00000.png, 00001.png, 00002.png... Dessa bilder kan ersättas med dina egna, vilket skapar en originalanimation. Eller så kan du helt enkelt ta bort filen bootanimation.zip. Sedan kommer enheten att visa animering från standard Android. Eller använd en färdig samling animationer på w3bsit3-dns.com.

Ändra ljuddesignen

Faktum är att alla ljud som systemet spelar upp lagras i mappen /system/media/audio. Inuti den hittar du följande mappar:

  • larm- melodier för väckarklockan;
  • meddelanden- meddelandeljud;
  • ringsignaler- ringsignaler;
  • ui- systemljud, såsom lågt batteri, kamerafokusering, val av gränssnittselement.

I larm, notiser, ringsignaler kan du lägga till så många melodier du vill. Du kan ta dem till exempel här:

  • standardringsignaler från olika Nokia-telefoner och smartphones;

Och ett litet life hack: radering av filer från ui-mappen kommer inte att leda till krascher och fel, utan till att systemljud försvinner. Därför kan du enkelt stänga av ljudet för att ta en bild från kameran, ta en skärmdump, helt enkelt genom att radera filerna som innehåller dessa ljud (deras namn är intuitiva).

Lägga till teckensnitt

Teckensnitt lagras i typsnitt. Du kan hitta arkiv med teckensnittsfiler på w3bsit3-dns.com och XDA. För att installera, kopiera och ersätt bara ttf-filerna från arkivet till fonts-mappen.

Ändra systeminställningar (build.prop)

Systemavbildningen innehåller en intressant build.prop-fil som innehåller mycket användbar information om enhetens hårdvara och standardinställningar för olika lagerapplikationer. För att vara rättvis noterar jag att så inte alltid är fallet. Till exempel i Gigaset ME och ME Pro är build.prop uppdelad i två delar. En del innehåller inställningar för Gigaset ME, och för ME Pro är vissa rader duplicerade, men knapparna (smarttelefonens namn, etc.) är olika. Detta gjordes för att säkerställa mer eller mindre korrekt drift av samma firmware på olika enheter.


Build.prop innehåller (eller kan innehålla) ett stort antal inställningar. Vissa av dem förändrar ingenting, vissa förbättrar en sak på bekostnad av en annan, men det finns de som verkligen är användbara:

  • ro.produkt.modell Och ro.produkt.tillverkare- smartphonemodell och tillverkarens namn. Genom att ersätta dessa rader kan du få Play Store att tro att du har en annan smartphone, vilket kommer att öppna åtkomst till mer programvara. För alla de lite kända Kinesiska smartphones dessa linjer kan bli livräddande;
  • hw.qemu.mainkeys- tar bara två värden: 0 - visa navigeringsknappar på skärmen, 1 - visar inte knappar. Frånvaron av en linje motsvarar 0;
  • debug.sf.nobootanimation- värde 1 inaktiverar laddning av animering, vilket ökar hastigheten något. Om du ställer in den på 0 eller tar bort raden återställs animationen till sin plats;
  • ro.telephony.default_network- talar om för systemet vilket läge det ska växlas till mobilnät under laddning;
  • ro.sf.lcd_density- Display DPI, det mest exakta värdet för displayen kan beräknas via en bekväm webbplats. Men ingen förbjuder dig att ställa in ett högre eller lägre värde efter din smak: högre värden gör gränssnittselementen större, lägre värden gör gränssnittselementen mindre;
  • ro.config.vc_call_vol_steps- antal volymsteg under ett samtal (standard 8);
  • ro.config.media_vol_steps- antal medievolymsteg (standard 15).

Vi implementerar Google Apps i firmware

Nästan alltid anpassad firmware kommer utan Googles tjänster och applikationsbutik. Utvecklarna föreslår att vi installerar dem separat med GApps-paketet. Den kan dock integreras direkt i den fasta programvaran.

Först måste du ladda ner GApps-paketet. Jag rekommenderar att du tar Open GApps-arkivet. Du väljer Android version, processorarkitektur och konfigurationsalternativ (Pico, Nano, Stock...), som bestämmer hur många olika Google-applikationer innehåller ett arkiv. Jag rekommenderar att du laddar ner Pico-versionen. Den innehåller endast Play Butik och en uppsättning bibliotek som är nödvändiga för dess drift.

Att integrera GApps i firmware görs så här:

  1. Packa upp GApps ZIP-arkiv med valfri arkivering.
  2. Gå till Core-mappen.
  3. Vi ser många arkiv med tillägget .tar.lz. Extrahera med lzip.
  4. Efter uppackning kopierar du filerna från mapparna till motsvarande mappar i systemet. Det är lätt att gissa vad man ska kasta var från katalogstrukturen i arkivet. Till exempel måste configupdater (från skärmdumpen) placeras i mappen priv-app.
  5. Gå till mappen GApps (som finns bredvid Core) och följ steg 3 och 4 för filerna i den.
  6. Det var allt, vi har integrerat GApps i vår firmware!

Friplats

Det är nödvändigt att förstå att utrymmet för att installera firmware är begränsat. Du kan inte installera firmware vars storlek överstiger storleken på enhetens systempartition. Du kan se dess värde med:

$ adb skal df /system

Andra alternativet: sätt en terminal på enheten och skriv kommandot

$df/system

Du kan ta reda på partitionsstorleken i byte genom att installera BusyBox på din smartphone och köra kommandot i terminalen

$ busybox df -B 1 /system

Eller samma sak med använder ADB:

$ adb skal busybox df -B 1 /system

Utrymmet som upptas av den fasta programvaran kommer att vara ungefär lika med storleken på systemet när det packas upp. I allmänhet, när du skapar firmware, är det nödvändigt att ta hänsyn till att användaren också kan flasha olika modifieringar ovanpå den (SuperSU, Xposed) eller överföra applikationer till systemdelen. Till exempel kräver Googles lägsta applikationspaket (Pico) minst 150 MB extra installationsutrymme.

Om det behövs kan storleken på firmwarefilen minskas genom att inte bara radera onödiga program från /system/app (/system/priv-app) och samtalsljud från system/media/audio och bootanimation.zip , men också:

  • /system/tts/lang_pico- Språken för den primitiva röstmotorn Pico TTS, Googles röstmotor kommer inte att påverkas;
  • /system/usr/srec/config/- offline språk. Du kan ladda ner den online senare om det behövs.

hopsättning

När du har gjort ändringar måste du sätta ihop allt igen. Låt oss först packa in systemavsnittet i system.new.dat . Ladda ner de verktyg vi behöver:

$ 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

Låt oss konvertera tillbaka vår mapp till en RAW-bild. Låt oss kalla det system_new.img:

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

1073741824 ändras till storleken på systempartitionen i byte. Det skulle vara tillrådligt att till och med göra den lite mindre. Vi gör en sparsam bild från RAW-bilden:

$ img2simg system_new.img system_snew.img

Låt oss konvertera vår bild till system.transfer.list och system.new.dat, som ska kastas in i arkivet med firmware, men först tar vi bort de gamla filerna:

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

Låt oss separera firmwarefilerna från överskottsskalet (filer som vi laddade ner för arbete. För detta är det bekvämt att använda arkivet med firmware). Raderade? Nu måste du packa in den fasta programvaran i ett ZIP-arkiv (med valfritt arkiv).

Allt som återstår är att signera arkivet. Detta kan göras både på Android själv med ZipSigner och på en PC (du behöver Java installerat):

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

Undervattensstenar

När du bygger system.new.dat kan du stöta på flera problem orsakade av ständiga förändringar i genereringsmekanismerna Android firmware. Metoden som beskrivs ovan bör fungera bra i fallet med firmware baserad på Android 5.1. Nyare kan ha svårigheter, så du måste använda andra versioner av byggverktygen. Tyvärr kan vi inte beskriva alla nyanser av sammansättningen, så du kanske måste Googla det.

Installation

För att installera anpassad firmware behöver du en anpassad återställning TWRP, som låter dig installera osignerad eller signerad med en testnyckelfirmware (det här är precis vad vi skapade). I tidningen har vi upprepade gånger beskrivit processen för att installera den, och i forumtrådarna som är dedikerade till din enhet finns det vanligtvis tillräckligt med information för att göra detta.

TWRP

Slutsatser

Den här artikeln beskriver bara toppen av ett stort isberg som kallas "firmware modification". "Seriös" firmware kompletterar inte bara kärnan och själva firmware med lagerapplikationer med många funktioner (som ofta hämtas från andra kärnor och firmware), organiserar eller till och med ändrar principerna för deras interaktion, utan kan också radikalt förändra driftsprinciperna för OS. Det är sant att ett sådant hack inte längre är Android, utan ett separat operativsystem, även om Play-tjänster kan installeras där (förresten, sådana åtgärder, för att uttrycka det milt, uppmuntras inte av Google). Tja, glöm inte: alla skal från tillverkare - TouchWiz, ZenUI, HTC Sense och så vidare - är bara vanliga anpassade, maximalt bundna till enhetens hårdvara och till varandra.

Interpolation, interpolation- i beräkningsmatematik, en metod för att hitta mellanliggande värden av en kvantitet från en befintlig diskret uppsättning kända värden.

Många av dem som sysslar med vetenskapliga och tekniska beräkningar måste ofta arbeta med uppsättningar värden som erhållits empiriskt eller genom slumpmässigt urval. Som regel, baserat på dessa uppsättningar, är det nödvändigt att konstruera en funktion i vilken andra erhållna värden kan falla med hög noggrannhet. Denna uppgift kallas approximation. Interpolation är en typ av approximation där kurvan för den konstruerade funktionen passerar exakt genom de tillgängliga datapunkterna.

Det finns många finita differensinterpolationsmetoder. Mest
Newtons metod för framåtinterpolation (Newton-Gregory-metoden) är vanlig. Interpolationspolynomet har i detta fall formen:

Vi hittar koefficienterna C med formeln:

Implementering av programmet i C#:
använder System; namnrymdsinterpolation ( klass Program ...

Programmet är uppdelat i två trådar i varav den ena utförs sortering och i den andra ritas det grafiska gränssnittet om. Efter att ha klickat på knappen "Sortera" anropar programmet metoden "RunSorting", där sorteringsalgoritmen definieras och en ny tråd skapas med sorteringsprocessen som körs i den.
privat void KörSå...

Idag vill jag visa min Kacher som jag gjorde förra vinterlovet. Jag kommer inte att beskriva hela tillverkningsprocessen, eftersom det finns många artiklar på Internet. Jag kommer bara att skriva om dess huvudparametrar.

Nedan är några bilder tagna under monteringen av enheten.

Spolen är lindad med cirka 2000 varv av 0,08 mm tråd på ett PVC-rör med en diameter på 50 mm och en höjd av 200 mm.

En platta från en gammal hårddisk användes som terminal. Allt annat monterades enligt diagrammet som finns längst ner på sidan.

Det första alternativet strömförsörjdes från en gammal dators strömförsörjning, med en spänning på 12 V. Sedan gjordes en separat strömförsörjning, med en spänning på 30 V och med inbyggd kylning.

Enhetsdiagram:

Cross-domain resource sharing (CORS) är en W3C-specifikation som tillåter kommunikation över flera domäner i webbläsaren. Genom att bygga ovanpå XMLHttpRequest-objektet tillåter CORS utvecklare att arbeta med samma idiom som förfrågningar med samma domän. Användningsfallet för CORS är enkelt. Föreställ dig att alice.com har en del data som bob.com vill skaffa. Denna typ av begäran är traditionellt sett inte tillåten under samma webbläsares ursprungspolicy. Men genom att stödja CORS-förfrågningar kan alice.com lägga till några speciella svarsrubriker som tillåter bob.com att komma åt data. Som du kan se från detta exempel kräver CORS-stöd samordning mellan servern och klienten. Lyckligtvis, om du är en utvecklare på klientsidan, är du skyddad från de flesta av dessa detaljer. Resten av den här artikeln visar hur klienter kan utföra förfrågningar med flera ursprung och hur servrar kan konfigurera sig själva för att stödja CORS. Fortsatt…




Topp