Instrukcja dla systemu GNU/Linux.
Wykonujesz na własną odpowiedzialność.
Przygotowania:
Do pobrania: kompilator (np.
ten ), źródła kernela ze
strony Samsunga i zImage ze stockowego romu1.
Skrypt wypakowujący initramfs ze stockowego zImage (pierwszy argument to ścieżka do zImage, drugi to katalog docelowy (jeśli nie istnieje, zostanie utworzony)):#!/bin/bash
extract() { pos=`grep -Fabom 1 "$1" "$2"` && tail -c+$((${pos%%:*}+1)) "$2"; }
img=`mktemp` && {
extract $'\x1F\x8B\x08' "$1" | zcat > $img
[ $? -ne 1 ] && mkdir -p "$2" && {
cd "$2"
extract '070701' $img | cpio -iv --no-absolute-filenames
cd -
}
rm -f $img
}
Wypakuj kompilator, źródła kernela oraz wyodrębnij initramfs.
[*]Konfiguracja kernela:
Przejdź do katalogu z kernelem.
Uruchom make aries_eur_defconfig
Wykonaj modinfo -F vermagic plik_modułu na dowolnym module w initramfs (plik .ko w katalogu lib/modules) i skopiuj fragment oznaczenia wersji od pierwszego myślnika (włącznie). Dla JW8 jest to -I9000XWJW8-CL1152999
Uruchom make menuconfig:
W General setup->Local version - append to kernel release (CONFIG_LOCALVERSION) ustaw skopiowany ciąg.
W General setup->Initramfs source file(s) (CONFIG_INITRAMFS_SOURCE) ustaw ścieżkę do katalogu z initramfs.
W General setup->User ID to map to 0 (user root) (CONFIG_INITRAMFS_ROOT_UID) i General setup->Group ID to map to 0 (group root) (CONFIG_INITRAMFS_ROOT_GID) ustaw identyfikatory użytkownika (
UID ) i grupy (
GID ), z którymi został wypakowany initramfs (można je sprawdzić komendą stat PLIK, gdzie PLIK to dowolny plik w initramfs).
Odznacz (wyłącz) Kernel hacking->Compile the kernel with debug info (CONFIG_DEBUG_INFO).
Wyjdź zapisując ustawienia.
[*]Modyfikacje initramfs (opcjonalne):
Adb domyślnie włączone:
W pliku default.prop ustaw persist.service.adb.enable na 1
Uprawnienia roota w adb (nietestowane):
W pliku default.prop ustaw ro.secure na 0
Adb w recovery:
W pliku recovery.rc odkomentuj (usuń znaki #) w liniach:on property:persist.service.adb.enable=1
start adbd
on property:persist.service.adb.enable=0
stop adbd
Akceptowanie paczek podpisanych kluczem testowym:
W pliku res/keys do pierwszej linijki dopisz przecinek i dodaj drugą:{64,0xc926ad21,{1795090719,2141396315,950055447,2581568430,4268923165,1920809988,546586521,3498997798,1776797858,3740060814,1805317999,1429410244,129622599,1422441418,1783893377,1222374759,2563319927,323993566,28517732,609753416,1826472888,215237850,4261642700,4049082591,3228462402,774857746,154822455,2497198897,2758199418,3019015328,2794777644,87251430,2534927978,120774784,571297800,3695899472,2479925187,3811625450,3401832990,2394869647,3267246207,950095497,555058928,414729973,1136544882,3044590084,465547824,4058146728,2731796054,1689838846,3890756939,1048029507,895090649,247140249,178744550,3547885223,3165179243,109881576,3944604415,1044303212,3772373029,2985150306,3737520932,3599964420},{3437017481,3784475129,2800224972,3086222688,251333580,2131931323,512774938,325948880,2657486437,2102694287,3820568226,792812816,1026422502,2053275343,2800889200,3113586810,165549746,4273519969,4065247892,1902789247,772932719,3941848426,3652744109,216871947,3164400649,1942378755,3996765851,1055777370,964047799,629391717,2232744317,3910558992,191868569,2758883837,3682816752,2997714732,2702529250,3570700455,3776873832,3924067546,3555689545,2758825434,1323144535,61311905,1997411085,376844204,213777604,4077323584,9135381,1625809335,2804742137,2952293945,1117190829,4237312782,1825108855,3013147971,1111251351,2568837572,1684324211,2520978805,367251975,810756730,2353784344,1175080310}}
[*]Kompilacja kernela:
(opcja -j8 oznacza użycie ośmiu wątków. Można zmienić tą wartość według uznania)
Przejdź do katalogu z kernelem
export CROSS_COMPILE=prefix
(prefix ustaw zgodnie z lokalizacją kompilatora)
make -j8 modules
find -name '*.ko' -exec cp -vt INITRAMFS/lib/modules {} +
i dla pewności:
chmod 644 INITRAMFS/lib/modules/*
(INITRAMFS zastąp ścieżką do initramfs)
make -j8 zImage
(zImage powinien zostać utworzony w arch/arm/boot)
[*]Przygotowanie paczki do flashowania:
zImage może być bezpośrednio flashowany przez Heimdall.
W przypadku Odina należy utworzyć archiwum tar:
tar -cvf PDA.tar --numeric-owner --owner 0 --group 0 zImage
do którego można dodać sumę kontrolną:
cat PDA.tar <(md5sum PDA.tar) > PDA.tar.md5
Uwagi:
1Użycie różnych wersji źródeł jądra i bazowego kernela (ze stockowego romu) może powodować problemy z kompatybilnością własnościowych modułów.