원문 : https://wiki.lineageos.org/devices/gta4xlwifi/install

롬을 빌드하거나 https://download.lineageos.org/gta4xlwifi에서 두 개 다운로드

이미 oem언락 된 상태라면 1~3 과정은 생략

1. adb 디버그 허용, oem 언락 허용(빌드버전 연타하면 나옴)

2. 파워 off 후 볼륨 상 + 볼륨 하(One UI 3.0이상,보통 안드로이드11버전)를 동시에 누르면서, 1초후에 usb를 연결한다. (연결되어있는 상태면 안되고 타이밍 맞게 연결해줘야됨) 잠시 후 다운로드 모드로 진입하게 된다.

볼륨상을 길게 눌러 부트로더 언락을 진행한다.

3. 초기화 완료되면 다시 빌드버전 연타한 후 oem이 언락되어 있는지 확인

4. https://androidfilehost.com/?w=files&flid=304516 heimdall 다운로드

5. 2번처럼 한 후에 언락이 아닌 볼륨 업을 한번만 누른 후 다운로드 모드로 진입. 이후 Zadig를 실행 (https://github.com/pbatard/libwdi/releases)

Options->List All Devices 클릭

반드시 다운로드 모두 진입 후 실행해야 목록에 Samsung USB Composite Device or Gadget Serial이 보임

보이는 것중에 하나 선택하고 Replace Driver를 클릭

만약 Gadget Serial이 두 개 보인다면 둘다 해보는 수 밖에 없음

6. cmd 실행

heimdall print-pit

장치가 재부팅 되는지 확인

7. usb 연결 상태에서 다운로드 모드 진입 후(5번 참고) cmd 실행

heimdall flash --RECOVERY lineage-18.1-20220413-recovery-gta4xlwifi.img --no-reboot

8.  볼륨 다운 + 파워를 8~10초간 누르고 있다가 손 뗌

9. 재부팅 되면 usb연결 후 볼륨 업 + 파워로 리커버리 모드 진입  

(녹스 워런티 깨졌다고 경고 창 뜨면 그 상태에서 볼륨 업 + 파워 길게 눌러주면 됨)

10. Factory Reset -> 3개 전부 실행

11. 메인 메뉴로 이동 후 Apply update-> apply from adb 선택 후 cmd 실행

adb sideload lineage-18.1-20220413-nightly-gta4xlwifi-signed.zip

adb sideload open_gapps-arm64-11.0-pico-20220215.zip (https://opengapps.org/ 에서 다운로드)

adb sidelaod Magisk-v21.4.zip (https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip 다른 버전 받으면 안돼서 고생 좀 할것임)

adb shell에서만 su가 필요하다면, Magisk를 설치하지 말고 개발자 옵션에서 "디버깅 시 루트 권한 사용" 체크 후 adb root -> adb shell로 접속

12. 재부팅

이 방식을 사용하면 바로 태블릿에 설치 가능한 형태로 빌드된다.

커널 소스 혹은 defconfig를 수정한 후 사용하고자 할 때 유용하다

빌드 방법 원문 : https://wiki.lineageos.org/devices/gta4xlwifi/build

0. vm에 ubuntu 18.04.6 설치 (하드 용량은 넉넉히 500기가 정도)

200기가로 빌드 불가능했음

램은 20기가 정도 설정

1. 의존 패키지 설치

sudo apt-get install openssh-server libwxgtk3.0-dev bc bison build-essential ccache curl python flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev vim

2. adb 설치

https://dl.google.com/android/repository/platform-tools-latest-linux.zip

unzip platform-tools-latest-linux.zip -d ~

~/.profile에 아래 추가

# add Android SDK platform tools to path
if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi

3. 디렉토리 생성

mkdir -p ~/bin
mkdir -p ~/android/lineage

4. repo 설치

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
git config --global user.email "abc@lol.com"
git config --global user.name "kim kim"

5.

export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache

6. ~/.bashrc 에 아래 추가 

ccache -M 50G

source ~/.profile 실행

7. 리니지OS 소스 전체 다운로드 (OS+소스 =  기가)

cd ~/android/lineage
repo init -u https://github.com/LineageOS/android.git -b lineage-18.1
repo sync

8. 갤럭시 탭 S6용 커널 다운로드

source build/envsetup.sh
breakfast gta4xlwifi

중간에 vendor 어쩌고 Makefile에러가 발생하면 9번 항목 실행후 breakfast 재시도

(대부분의 makefile에러는 make clean과 breakfast반복으로 해결 가능)

breakfast중 sepolicy.mk 에러가 발생한다면

cd ~/android/lineage/device
mkdir samsung_slsi
cd samsung_slsi
git clone https://github.com/LineageOS/android_device_samsung_slsi_sepolicy
mv android_device_samsung_slsi_sepolicy sepolicy

이 후 make clean 후 breakfast 재시도

9. ubuntu vm에 태블릿 연결 후 태블릿에서 충전이 아닌 PTP로 설정

주의 : adb shell에 su권한이 없으면 파일 복사를 실패함 -> 개발자 옵션에서 디버깅 시 루트 권한 사용 반드시 체크

cd ~/android/lineage/device/samsung/gta4xlwifi
./extract-files.sh

10. 커널 보호 기능 해제

~/android/lineage/kernel/samsung/gta4xl/arch/arm64/configs​/exynos9611-gta4xlwifi_defconfig 편집

아래의 각 라인을 찾아 y를 n으로 수정

(그외 참조 : https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)

CONFIG_EXYNOS_KERNEL_PROTECTION=y  
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_STRICT_MODULE_RWX=y
CONFIG_EXYNOS_CONTENT_PATH_PROTECTION=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=n

https://codetronik.tistory.com/155 참조하여 소스도 수정하여야 한다.

11. 빌드

cd ~/android/lineage
source build/envsetup.sh (커널소스 재빌드 시)

brunch gta4xlwifi

12. 출력 파일 확인

cd $OUT

존재 여부 확인 : recovery.img / lineage-18.1-20220418-UNOFFICIAL-gta4xlwifi.zip 

13. 태블릿에 롬 설치 후 adb shell 접속 후 dmesg > grep exynos로 아래의 로그가 뜨는지 확인 (뜨면 defconfig 수정 실패한 것임)

[    0.371387] exynos_protect_kernel_text: Kernel text start VA(0xffffff8008188000), PA(0x80188000)
[    0.371398] exynos_protect_kernel_text: Kernel text end VA(0xffffff8008e28000), PA(0x80e28000)

에러 유형은 dmesg에서 확인할 수 있다.

./insmod 1.ko

1) 에러 유형: 커널 컴파일 시 컴파일러를 android-aach64를 사용하여야 한다. android용이 아니면 에러가 발생한다.

2) 에러 유형: 커널 모듈과 커널 버전이 완전히 일치하여야 한다.

- lkm 버전 확인 : modinfo [lkm.ko]

- 리눅스 커널 버전 확인 : cat /proc/version

insmod: failed to load 1.ko: Invalid argument

(dmesg) 1.ko : disagrees about version of symbol printk

(demsg) 1.ko : Unknown symbol printk (err -22)

 

에러 유형: 커널 모듈과 커널 버전이 완전히 일치하여야 한다.

insmod: failed to load 1.ko: Exec format error

(dmesg) 1.ko : disagrees about version of symbol module_layout

 

에러 유형 : 삼성 단말기에선 LKM을 허용하지 않음 -> 이 경우, 우회하거나 커스텀 os를 새로 설치하여야 한다.

insmod: failed to load 1.ko: Exec format error

(dmesg) LKM is not allowed by Samsung security policy.

+ Recent posts