Autor Wątek: [Himalaya]Portowanie Jądra Systemu (Kernel)  (Przeczytany 3103 razy)

nokser

  • Gość
[Himalaya]Portowanie Jądra Systemu (Kernel)
« dnia: Poniedziałek, 09 Luty 2009, 10:43 »
Portowanie Sekcji XIP na Urządzeniach typu Himalaya

Kompatybilne:
O2 XDA II, T-Mobile MDA II, Qtek 2020, iMate Phone Edition, TSM500, and other PH10 variants

Z reguły  przenoszenie sekcji XIP (kernel – jądra systemu), polega na jednej zasadzie,
którą opiszę poniżej .Zasada portowania ogółem tyczy się Użytkowników Himalay-i


Przygotowanie:
Nie będę tu opisywał w jaki sposób uzyskać taką sekcję, zakładam że każdy z was ma już wydobyty xip.bin.

1) Tworzymy katalog o nazwie np. Old_XIP

-> kopiujemy do niego:
- xip.bin (wydłubany z nk.nba naszego urządzenia)
- XIPPort.exe
- pkgcommon.dll
- Mreloc.exe

Odpalamy XIPPort.exe i wciskamy:

->dump xip.bin
->realloc P
->write maps

Powstał folder o nazwie OUT a w nim 2 foldery MODULES i FILES:
-Usuwamy:

Z Katalogu FILES:

•   778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm
•    778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.dsm
•   723fb954-d931-4348-b672-82a188e587b5.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.rgu
•   723fb954-d931-4348-b672-82a188e587b5.rgu.imageinfo.txt
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm.imageinfo.txt
•   boot_ms.rgu
•   boot_ms.rgu.imageinfo.txt
•   mxip_lang.vol
•   mxip_lang.vol.imageinfo.txt
•   sysroots.p7b
•   sysroots.p7b.imageinfo.txt

Z Katalogu MODULES:

•   busenum.dll + busenum.dll.txt
•   cachefilt.dll + cachefilt.dll.txt
•   certmod.dll + certmod.dll.txt
•   coredll.dll + coredll.dll.txt
•   crypt32.dll + crypt32.dll.txt
•   device.exe + device.exe.txt
•   devmgr.dll + devmgr.dll.txt
•   diskcache.dll + diskcache.dll.txt
•   fatfsd.dll + fatfsd.dll.txt
•   fatutil.dll + fatutil.dll.txt
•   filesys.exe + filesys.exe.txt
•   fsdmgr.dll + fsdmgr.dll.txt
•   fsreplxfilt.dll + fsreplxfilt.dll.txt
•   mencfilt.dll + mencfilt.dll.txt
•   mspart.dll + mspart.dll.txt
•   pm.dll + pm.dll.txt
•   regenum.dll + regenum.dll.txt

Wszystkie moduły i pliki wraz z  odpowiadającymi im .txt, które usunęliśmy, musimy teraz zastąpić tymi z nowej sekcji XIP………….

2) Tworzymy katalog o nazwie np. New_ XIP

-> kopiujemy do niego:
- xip.bin (wydłubany z nk.nba innego urządzenia)
- XIPPort.exe
- pkgcommon.dll

Odpalamy XIPPort.exe i wciskamy:

->dump xip.bin
->make pkgs

Kopiujemy wszystkie Moduły i pliki wraz z odpowiadającymi im .txt, do starej sekcji XIP, czyli powinno wyglądać to tak:

W Katalogu FILES:

           Pliki z Nowej Sekcji XIP:

•   778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm
•    778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.dsm
•   723fb954-d931-4348-b672-82a188e587b5.dsm.imageinfo.txt
•   723fb954-d931-4348-b672-82a188e587b5.rgu
•   723fb954-d931-4348-b672-82a188e587b5.rgu.imageinfo.txt
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm
•   d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm.imageinfo.txt
•   boot_ms.rgu
•   boot_ms.rgu.imageinfo.txt
•   mxip_lang.vol
•   mxip_lang.vol.imageinfo.txt
•   sysroots.p7b
•   sysroots.p7b.imageinfo.txt

Pliki ze Starej Sekcji XIP:

•   8677e734-fc16-3610-0db1-001405fb4b9a.dsm
•   8677e734-fc16-3610-0db1-001405fb4b9a.dsm.imageinfo.txt
•   boot.hv
•   boot.hv.imageinfo.txt
•   boot.rgu
•   boot.rgu.imageinfo.txt
•   e27f9da5-f2bd-6586-1098-afeef97ab52a.dsm
•   e27f9da5-f2bd-6586-1098-afeef97ab52a.dsm.imageinfo.txt

W Katalogu MODULES:

            Moduły z Nowej Sekcji XIP:

•   busenum.dll + busenum.dll.txt
•   cachefilt.dll + cachefilt.dll.txt
•   certmod.dll + certmod.dll.txt
•   coredll.dll + coredll.dll.txt
•   crypt32.dll + crypt32.dll.txt
•   device.exe + device.exe.txt
•   devmgr.dll + devmgr.dll.txt
•   diskcache.dll + diskcache.dll.txt
•   fatfsd.dll + fatfsd.dll.txt
•   fatutil.dll + fatutil.dll.txt
•   filesys.exe + filesys.exe.txt
•   fsdmgr.dll + fsdmgr.dll.txt
•   fsreplxfilt.dll + fsreplxfilt.dll.txt
•   mencfilt.dll + mencfilt.dll.txt
•   mspart.dll + mspart.dll.txt
•   pm.dll + pm.dll.txt
•   regenum.dll + regenum.dll.txt

Moduły ze Starej Sekcji XIP:

•   msflash.dll + msflash.dll.txt
•   cecompr.dll + cecompr.dll.txt
•   ceddk.dll + ceddk.dll.txt
•   nk.exe + nk.exe.txt
•   relfsd.dll + relfsd.dll.txt
•   imgfs.dll + imgfs.dll.txt
•   initvmmap.exe + initvmmap.exe.txt


W takiej strukturze powinien wyglądać nasz folder Out, musimy pamiętać o tym, że PLIKI i MODUŁY ze Starego i Nowego XIP-a zamieszczamy w Katalogu ze starego jądra systemu, ponieważ ponad folderami FILES i MODULES, mamy 4 pliki .txt ze starego Kernel-a. Musimy pamiętać, że grają one tu pierwsze skrzypce……..

   Dla ułatwienia te pliki to:

1.   PARTHDR.txt
2.   ROMHDR.txt
3.   MAP.physical.txt
4.   MAP.txt*

*Według pliku MAP.txt, będziemy układać cała sekcję opierając się na jego adresach pamięci wirtualnej.

 Z reguły wygląda to tak:

01fa01fe - 01fa01fe L00000000 Start: first DLL address
01fa01fe - 01feb000 L0004ae02 NUL
01feb000 - 01fec000 L00001000 initialized data of region_1 ceddk.dll
01fec000 - 01fed000 L00001000 initialized data of region_1 msflash.dll
01fed000 - 01fee000 L00001000 initialized data of region_1 relfsd.dll
01fee000 - 01fef000 L00001000 initialized data of region_2 cecompr.dll
01fef000 - 01ff0000 L00001000 initialized data of region_1 regenum.dll
01ff0000 - 01ff1000 L00001000 initialized data of region_1 pm.dll
01ff1000 - 01ff2000 L00001000 initialized data of region_1 mspart.dll
01ff2000 - 01ff3000 L00001000 initialized data of region_1 imgfs.dll
01ff3000 - 01ff4000 L00001000 initialized data of region_1 fsreplxfilt.dll
01ff4000 - 01ff5000 L00001000 initialized data of region_1 fsdmgr.dll
01ff5000 - 01ff6000 L00001000 initialized data of region_1 fatutil.dll
01ff6000 - 01ff7000 L00001000 initialized data of region_1 fatfsd.dll
01ff7000 - 01ff8000 L00001000 initialized data of region_1 encfilt.dll
01ff8000 - 01ff9000 L00001000 initialized data of region_1 diskcache.dll
01ff9000 - 01ffa000 L00001000 initialized data of region_1 devmgr.dll
01ffa000 - 01ffc000 L00002000 initialized data of region_1 crypt32.dll
01ffc000 - 01ffd000 L00001000 initialized data of region_1 coredll.dll
01ffd000 - 01ffe000 L00001000 initialized data of region_1 certmod.dll
01ffe000 - 01fff000 L00001000 initialized data of region_1 cachefilt.dll
01fff000 - 02000000 L00001000 initialized data of region_1 busenum.dll
02000000 - 02000000 L00000000 End: last DLL address

02000000 - 03dc0000 L01dc0000 NUL
03dc0000 - 03dc6000 L00006000 Virtual base address of ceddk.dll
03dc6000 - 03dd0000 L0000a000 NUL
03dd0000 - 03dda000 L0000a000 Virtual base address of msflash.dll
03dda000 - 03de0000 L00006000 NUL
03de0000 - 03de7000 L00007000 Virtual base address of relfsd.dll
03de7000 - 03df0000 L00009000 NUL
03df0000 - 03df7000 L00007000 Virtual base address of cecompr.dll
03df7000 - 03e5e000 L00067000 NUL
03e5e000 - 03e62000 L00004000 Virtual base address of regenum.dll
03e62000 - 03e71000 L0000f000 Virtual base address of pm.dll
03e71000 - 03e79000 L00008000 Virtual base address of mspart.dll
03e79000 - 03e83000 L0000a000 Virtual base address of imgfs.dll
03e83000 - 03e8d000 L0000a000 Virtual base address of fsreplxfilt.dll
03e8d000 - 03ea2000 L00015000 Virtual base address of fsdmgr.dll
03ea2000 - 03eab000 L00009000 Virtual base address of fatutil.dll
03eab000 - 03ebe000 L00013000 Virtual base address of fatfsd.dll
03ebe000 - 03eca000 L0000c000 Virtual base address of encfilt.dll
03eca000 - 03ed0000 L00006000 Virtual base address of diskcache.dll
03ed0000 - 03edc000 L0000c000 Virtual base address of devmgr.dll
03edc000 - 03f4e000 L00072000 Virtual base address of crypt32.dll
03f4e000 - 03fe4000 L00096000 Virtual base address of coredll.dll
03fe4000 - 03ff0000 L0000c000 Virtual base address of certmod.dll
03ff0000 - 03ffa000 L0000a000 Virtual base address of cachefilt.dll
03ffa000 - 04000000 L00006000 Virtual base address of busenum.dll
04000000 - 801c0000 L7c1c0000 NUL

Ważne: musimy pamiętać, aby w mapie końcowej, po całej relokacji, nie znalazł się żaden wykrzyknik……. 
W podmianie Adresów pomoże nam M’reloc, jednak do tego, trzeba w każdym Module w pliku imageinfo.txt , z mienić adres na taki jak zmieniamy w w/w aplikacji, inaczej nasz OS nie wstanie…………

Treść i Ogólna zasada, opisana powyżej oparta na Artykule Baniaczka:
   
Budujemy nowy ROM: Przenoszenie XIP prawie na maksa


i Artykule Utak3ra
Budowa uniwersalnej kuchni - Portowanie ROM'u
« Ostatnia zmiana: Niedziela, 15 Luty 2009, 09:11 wysłana przez NOKser »

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #1 dnia: Poniedziałek, 09 Luty 2009, 10:46 »
pliizzz..... wyłącz tego centera!....  :8)


nokser

  • Gość
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #2 dnia: Poniedziałek, 09 Luty 2009, 10:50 »
Jak mi się coś przypomni ważnego to dopiszę.......


Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #3 dnia: Poniedziałek, 09 Luty 2009, 10:53 »
I masz plusa za uporządkowanie wiedzy na temat XIPa w Himci :)

nokser

  • Gość
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #4 dnia: Poniedziałek, 09 Luty 2009, 10:55 »
A dzięki, to wszystko przez to że mi tel chwilowo umarł i nie mam zajęcia..... :'(
« Ostatnia zmiana: Poniedziałek, 09 Luty 2009, 11:00 wysłana przez NOKser »


Offline globalbus

  • GZU
  • Core
  • ****
  • Podziękowań: 77
  • N900 + Zest
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #5 dnia: Poniedziałek, 09 Luty 2009, 16:28 »
nie potrzeba .rgu do xipa, bez .dsm też działa.
inittvmmap też można wywalić, jeśli poprawisz boot.hv

nokser

  • Gość
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #6 dnia: Poniedziałek, 09 Luty 2009, 18:06 »
Rozumiem i wiem ale po co wywalać skoro gra, pamiętaj wyrzucając cokolwiek zawsze jest jakiś tego defekt

Offline globalbus

  • GZU
  • Core
  • ****
  • Podziękowań: 77
  • N900 + Zest
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #7 dnia: Poniedziałek, 09 Luty 2009, 18:12 »
ja tam żadnego nie zauważyłem. mencfilt też nie jest konieczny -> szyfrowanie

nokser

  • Gość
Odp: [Himalaya]Portowanie Jądra Systemu (Kernel)
« Odpowiedź #8 dnia: Poniedziałek, 09 Luty 2009, 20:56 »
ok ok mi nie szkodzi że są, a zwiekszenie pamięci virtualnej i tak się nie bawię na razie, ale może na drugim wydaniu bety 6.5  :oT