Poniedziałek, 21 Kwiecień 2014, 11:37

Autor Wątek: Budujemy nowy ROM. Część 3 - przekładamy system.  (Przeczytany 16095 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8375
  • Podziękowań: 140
  • Płeć: Mężczyzna
  • Samsung Galaxy S4
    • Wirtualne Zacisze utak3ra
Budujemy nowy ROM. Część 3 - przekładamy system.
« dnia: Sobota, 29 Grudzień 2007, 23:36 »
Przygotowania

W poprzednich częściach kursu przygotowaliśmy sobie dwa ROMy, jeden stary z naszego urządzenia, drugi nowy z obcego. Skopiujmy teraz katalog z nowym ROMem do nowego katalogu i nazwijmy np. Wizard_nowy_ROM (podaję nazwę po to, żeby było później odniesienie do głębszych ścieżek). Ściągamy wszystkie dostępne narzędzia (w zasadzie powinniśmy już mieć wszystkie, ale jeśli czegoś w trakcie zabraknie, można dociągnąć) i wrzucamy do tego katalogu.

Dosyć gadania, zabieramy się do roboty. Czas na...


Portowanie sekcji XIP

Zadanie, które odstrasza większość domorosłych portowców (hehe...) - obróbka sekcji XIP nowego ROMu. Faktem jest, że dopóki narzędzie, którym się będziemy za chwilę posługiwać, zawierało błędy w swojej głównej funkcji, pomyślne zakończenie operacji wymagało niezłego kombinowania i trochę wiedzy, to od pewnego czasu zostało ono już poprawione. Problemem tylko jest odnalezienie tej poprawnej wersji ;) bo  linków do tego programu w sieci jest zatrzęsienie. Dlatego właśnie pobierz go z naszej strony, będziesz miał pewność, że jest to ostatnia, poprawnie działająca wersja. Możesz go pobrać stąd.

W poprzedniej części tego kursu rozebraliśmy całą sekcję XIP obydwu ROMów na składniki. Pora na właściwe działanie.
W ROMie docelowym musimy zamienić kilka plików, które są wybitnie zależne od sprzętu na te pochodzące z ROMu naszego urządzenia. Podmieniamy więc:

- XIP\nk.nba
- XIP\OUT\PARTHDR.txt
- XIP\OUT\ROMHDR.txt
- XIP\OUT\MODULES\nk.exe
- XIP\OUT\MODULES\TrueFFS.dll
- XIP\OUT\MODULES\imgfs.dll
- XIP\OUT\MODULES\hd.dll
- XIP\OUT\MODULES\cecompr.dll

przy okazji możemy wyrzucić:

- XIP\OUT\MODULES\osaxst0.dll

dzięki czemu zyskamy miejsce, którego może nam zabraknąć (rozmiar sekcji XIP jest ograniczony sprzętowo!)

W trakcie prac lista ta może oczywiście ulec zmianom - wydłużeniu, skróceniu, przemodelowaniu itp.... W tym procesie nie ma rzeczy stałych i niezmiennych (no, może poza tym, że na pewno należy zmienić plik nk.exe - to jest jądro systemu).


Uruchamiamy program XIPPort i wciskamy klawisz "realloc P". Następnie upewniamy się, że w dolnym polu edycyjnym wpisana jest prawidłowa nazwa obrazu, jaką mamy w tym samym katalogu. W przypadku naszego tutoriala musimy zaprogramowaną nazwę nk.nb zmienić na nk.nba. Wciskamy "build xip_out.bin" i "write xip_out.bin to:". Zamykamy program :)

Wynikowy plik nk.nba kopiujemy katalog wyżej, do głównego katalogu naszego ROMu, zmieniając przy tym mu nazwę na OS.nb, nadpisując tym samym istniejący tam już plik o tej nazwie. Sekcję XIP możemy na razie zostawić, powinno już działać. W razie czego, jeżeli cokolwiek będziemy jeszcze zmienić, pamiętać należy o realokacji, zapisaniu do nk.nba i skopiowaniu na OS.nb.

To wszystko :) Czeka nas teraz...


Portowanie plików systemu

Zasada postępowania tutaj jest w zasadzie identyczna, jak w przypadku sekcji XIP, tylko narzędzia będą inne. Naszym głównym celem jest podstawienie do nowego ROMu sterowników przeznaczonych do naszego urządzenia, w miejsce tych oryginalnych. Lista plików, które wymagać będą podmianie, jest długa i nieokreślona ściśle - dlatego właśnie zalecam rozbicie dumpa ROMu za pomocą PackageTool - zadanie będzie nieco prostsze.

Problem jest tylko jeden: znaleźć wszystkie pliki, które należy podmienić, wraz z odpowiadającymi im wpisami rejestru (plikami RGU) ;)

Na początek śmiało można z naszego starego ROMu przekopiować wszystkie pliki z katalogu dump\OEM\OEMDrivers, a także większość z katalogu dump\OEM\OEMAPPS. Warto zajrzeć do katalogu dump\OEM\OEMOPERATORS, gdzie znajdują się ustawienia specyficzne dla operatora sieci (głównie pliki *.provxml).

Następnie w katalogu dump\SYS\.VM namierzamy plik imageinfo.txt i również podmieniamy naszym starym.

Teraz najgorsza część... przeglądamy resztę pakietów w katalogu dump\SYS. Znajdują się tam pliki i wpisy od wyposażenia urządzenia, typu bluetooth, IrDA itp. Do tego kroku będziemy powracać wielokrotnie, aż do osiągnięcia sukcesu końcowego - czyli w pełni działającego nowego ROMu.

Po zakończeniu operacji podmiany/edycji plików i RGU, do katalogu dump kopiujemy program G'Reloc i uruchamiamy. Jeżeli wcześniej skopiowaliśmy odpowiedni plik dump\SYS\.VM\imageinfo.txt, wprowadzone w oknie parametry będą prawidłowe - wciskamy "Doit!" i czekamy.

Pozostaje sekcja bootująca system. W katalogu dump tworzymy katalog ROM a w nim XIP, i kopiujemy do niego plik Wizard_nowy_ROM\XIP\OUT\FILES\boot.rgu.

Edycja plików zakończona, pozostaje tylko...


Złożenie końcowego obrazu ROMu

To są czynności, które po pierwsze, każdy powinien już jako tako znać, a po drugie, planuję napisać o tym jeszcze szerzej w następnej części tego kursu. Dlatego też tutaj potraktuję temat dość skrótowo, bez obszernych opisów, bardziej jak tutorial.

Za chwilę zbudujemy namiastkę mini-kuchni (prawdziwą kuchnię będziemy składać później). W plikach user.rgu i default.rgu zmieniamy kodowanie na Unicode i dodajemy w pierwszej linii napis REGEDIT4, oraz upewniamy się, że na końcu plików jest przynajmniej jedna pusta linia. Następnie tworzymy katalog dump\Tools i kopiujemy do niego wszystkie pliki EXE i DLL, które mamy w naszym głównym katalogu:

Wizard_nowy_ROM>mkdir dump\Tools
Wizard_nowy_ROM>copy *.dll dump\Tools
Wizard_nowy_ROM>copy *.exe dump\Tools
Wizard_nowy_ROM>cd dump

Do katalogu dump kopiujemy jeszcze BuildOS.exe i pkgcommon.dll, po czym uruchamiamy BuildOS, a w nim klikamy ikonkę podobną do "PLAY" w odtwarzaczach. Jeżeli program zwróci błąd podczas uruchamiania się, oznacza to, że mamy błąd w samej strukturze plików, np. zdublowane GUID w plikach RGU i/lub DSM. Jeżeli program zwróci błąd podczas budowania systemu, to może oznaczać np. zdublowane pliki, albo błąd podczas budowania rejestru. W katalogu dump\temp znajduje się plik log.txt, który taki błąd wychwyci i pokaże nam.

Po zakończeniu działania BuildOS budujemy z przygotowanego katalogu systemu obraz systemu plików do wpisania w ROM:

Wizard_nowy_ROM\dump>cd temp
Wizard_nowy_ROM\dump\temp>copy ..\..\imgfs.bin .
Wizard_nowy_ROM\dump\temp>..\Tools\ImgfsFromDump imgfs.bin imgfs-new.bin
Total Sectors: 0x17a00


Wizard_nowy_ROM\dump\temp>copy imgfs-new.bin ..\..
Wizard_nowy_ROM\dump\temp>cd ..\..
Wizard_nowy_ROM>ImgfsToNb imgfs-new.bin OS.nb OS-port.nb
ImgfsToNb 2.0 RC 2

Done!


W efekcie tych operacji w katalogu głównym mamy nowy plik OS-port.nb, który stanowi nasz nowy obraz ROMu. Pozostaje przygotować plik do flaszowania za pomocą programu nb2nbf.exe.


Jeśli wgrany ROM nie będzie działał (co podczas takich zajęć jest normą), następny próbny ROM wgrywamy z poziomu bootloadera (record+camera+reset).

To w zasadzie tyle, jeśli chodzi o techniczną stronę portowania ROMów z innych urządzeń. Jak z tego krótkiego opisu widać, jedyny problem leży w decyzji, które pliki podmienić. Poprawnie bootujący ROM uzyskacie bardzo szybko, natomiast sprawdzanie poszczególnych sterowników może zająć sporo czasu...

W następnej części kursu zbudujemy prostą kuchnię, na której z powodzeniem można smażyć wysoko-spersonalizowane ROMy.


« Ostatnia zmiana: Niedziela, 24 Luty 2008, 01:19 wysłana przez utak3r »

Offline baniaczek

  • GZU
  • Swojak
  • ****
  • Wiadomości: 137
  • Podziękowań: 16
  • Płeć: Mężczyzna
  • Nokia e63-1 [200.21.012]
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #1 dnia: Środa, 02 Styczeń 2008, 09:49 »
To ja się dorzucę z dwoma uwagami:

1. Warto spróbować przenieść coredll.dll z nowego ROMu. coredll.dll zawiera wszystkie podstawowe procedury systemowe i stanowi o wersji jądra systemu. Nie zawsze to się udaje (bo np. tak przygotowany XIP nie zmieści się), ale warto spróbować.

2. Trzeba zwracać uwagę na to, jakie pliki są w nowym XIPie, a jakie były w starym. Jeśli są różnice, to należy rozważnie do nich podejść. Tak, aby jakichś istotnych plików nie zabrakło, albo żeby nie były zdublowane (np między AKU 3.5 a 3.5.2 dla WM5 różnica była w certyfikatach - po bezrefleksyjnym przenoszeniu między jednym jądrem a drugim brakowało jednego zestawu certyfikatów i kupa :)
Respect++ if PrzydaloSie();

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8375
  • Podziękowań: 140
  • Płeć: Mężczyzna
  • Samsung Galaxy S4
    • Wirtualne Zacisze utak3ra
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #2 dnia: Środa, 02 Styczeń 2008, 10:22 »
1. Warto spróbować przenieść coredll.dll z nowego ROMu. coredll.dll zawiera wszystkie podstawowe procedury systemowe i stanowi o wersji jądra systemu. Nie zawsze to się udaje (bo np. tak przygotowany XIP nie zmieści się), ale warto spróbować.

Racja. Na szczęście zawsze mamy w zanadrzu osaxst0.dll i hd.dll, które można usunąć - to są elementy zdalnego debugera :)

Offline Chester

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 1184
  • Podziękowań: 26
  • Płeć: Mężczyzna
  • Sprzęt: SGSIII
  • GaduGadu: 1171845
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #3 dnia: Środa, 02 Styczeń 2008, 10:51 »
sorki że pytam ale z czego są te screeny?! Z Artemisa czy z Wizarda?!
« Ostatnia zmiana: Środa, 02 Styczeń 2008, 10:56 wysłana przez chester_csr »
Prawdziwy mężczyzna nie je miodu, tylko żuje pszczoły...

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8375
  • Podziękowań: 140
  • Płeć: Mężczyzna
  • Samsung Galaxy S4
    • Wirtualne Zacisze utak3ra
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #4 dnia: Środa, 02 Styczeń 2008, 11:12 »
Z Wizarda :)

Offline Chester

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 1184
  • Podziękowań: 26
  • Płeć: Mężczyzna
  • Sprzęt: SGSIII
  • GaduGadu: 1171845
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #5 dnia: Środa, 02 Styczeń 2008, 11:38 »
no i jak to działa? udostępnisz? jak z wydajnością?
Prawdziwy mężczyzna nie je miodu, tylko żuje pszczoły...

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8375
  • Podziękowań: 140
  • Płeć: Mężczyzna
  • Samsung Galaxy S4
    • Wirtualne Zacisze utak3ra
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #6 dnia: Środa, 02 Styczeń 2008, 11:46 »
Nie udostępnię, bo jeszcze nie wszystko działa. Generalnie, ten PL składam aktualnie z 3 różnych ROMów ;) Jak wszystko pójdzie, nie omieszkam was poinformować.

Offline Chester

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 1184
  • Podziękowań: 26
  • Płeć: Mężczyzna
  • Sprzęt: SGSIII
  • GaduGadu: 1171845
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #7 dnia: Środa, 02 Styczeń 2008, 11:51 »
więc czekam niecierpliwie :p
Prawdziwy mężczyzna nie je miodu, tylko żuje pszczoły...

nothin

  • Gość
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #8 dnia: Środa, 02 Styczeń 2008, 12:48 »
Na szczęście zawsze mamy w zanadrzu osaxst0.dll i hd.dll, które można usunąć - to są elementy zdalnego debugera :)

krótkie pytanie: można je wywalić bez obaw? nie chce znów battery draina, jeśli coś się będzie co chwilę odwoływać do tych plików i szukać w nieskończoność..

akurat samo portowanie mnie niespecjalnie(w sytuacji wizarda) interesuje...
« Ostatnia zmiana: Środa, 02 Styczeń 2008, 13:01 wysłana przez nothin »

Offline wojnar

  • Klubowicz
  • **
  • Wiadomości: 42
  • Podziękowań: 1
  • Płeć: Mężczyzna
  • Hermes.dot
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #9 dnia: Środa, 02 Styczeń 2008, 12:51 »
ja usunalem osaxst0.dll i nie bylo zadnych problemow

jak sie sprawa przedstawia z flashdrv.dll??

i pozostalymi plikami

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8375
  • Podziękowań: 140
  • Płeć: Mężczyzna
  • Samsung Galaxy S4
    • Wirtualne Zacisze utak3ra
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #10 dnia: Środa, 02 Styczeń 2008, 14:12 »
Na szczęście zawsze mamy w zanadrzu osaxst0.dll i hd.dll, które można usunąć - to są elementy zdalnego debugera :)
krótkie pytanie: można je wywalić bez obaw?
[ciach]
akurat samo portowanie mnie niespecjalnie(w sytuacji wizarda) interesuje...

Skoro nic nie portujesz, to zostaw je w spokoju - nic nie osiągniesz. Tak, można je wywalić, korzysta z nich PlatformBuilder, ale skoro i tak nie zmieniasz XIPa... i tak nic innego tam nie wrzucisz.



dodano: Środa, 02 Styczeń 2008, 14:09
jak sie sprawa przedstawia z flashdrv.dll??
i pozostalymi plikami

No, to zależy  ;D  flashdrv.dll to sterownik jednego z DOCów - np. w Kaiserze jest i innych. Powiem tak - nie można powiedzieć, co można wywalić generalnie, a czego nie, to wszystko zależy od tego, co dokładnie robisz. Spróbuj, a się dowiesz... tu nie ma recepty.

Jakby była, to bym napisał batcha portuj.bat, a nie pisał tyle tekstu...  :p

nothin

  • Gość
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #11 dnia: Środa, 02 Styczeń 2008, 14:41 »
utakeeeer, pytałem tylko: tak, czy nie.
cel jakiś mam, skoro pytam, wierz mi...

gratuluję kursu, btw.
« Ostatnia zmiana: Środa, 02 Styczeń 2008, 14:43 wysłana przez nothin »

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8375
  • Podziękowań: 140
  • Płeć: Mężczyzna
  • Samsung Galaxy S4
    • Wirtualne Zacisze utak3ra
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #12 dnia: Środa, 02 Styczeń 2008, 14:43 »
utakeeeer, pytałem tylko: tak, czy nie.
cel jakiś mam, skoro pytam...wierz mi..

;)
No to: tak. A w każdym razie osaxst0.dll - to już tyle razy przetestowałem, że.... hd.dll tylko raz usuwałem.

Offline baniaczek

  • GZU
  • Swojak
  • ****
  • Wiadomości: 137
  • Podziękowań: 16
  • Płeć: Mężczyzna
  • Nokia e63-1 [200.21.012]
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #13 dnia: Środa, 02 Styczeń 2008, 15:16 »
Cytat: nothin
nie chce znów battery draina, jeśli coś się będzie co chwilę odwoływać do tych plików i szukać w nieskończoność..


To Ci pokaże do jakich plików (.dll też) system ustawicznie się odwołuje i nie może załadować: http://forum.xda-developers.com/showthread.php?t=247425
[Nie sprawdzałem pod WM6]
Respect++ if PrzydaloSie();

nothin

  • Gość
Odp: Budujemy nowy ROM. Część 3 - przekładamy system.
« Odpowiedź #14 dnia: Środa, 02 Styczeń 2008, 15:27 »
rewelacja!
to i reglogger, mogą się bardzo przydać.