반응형

이전 글(https://hackcatml.tistory.com/188) 에서 S10에 리니지를 올려봤는데요,

픽셀 익스 12 + kernelSU 도 올라가네요.

주로 픽셀폰을 써서 그런지 편하네요.

 

픽셀 익스 12는 https://get.pixelexperience.org/changelog/beyond1lte/PixelExperience_beyond1lte-12.1-20220928-1602-OFFICIAL.zip 에서 다운로드 받을 수 있습니다.

 

이하 커널 빌드 방법만 다룹니다. 나머지 절차는 이전 글(https://hackcatml.tistory.com/188) 참고 바랍니다.

 

※ 픽셀 익스 13(https://get.pixelexperience.org/changelog/beyond1lte/PixelExperience_beyond1lte-13.0-20230815-0644-OFFICIAL.zip) 을 올리고 싶은 경우 "git checkout twelve" 는 생략하고 커널 빌드

 

- Build Kernel

출처: https://github.com/CruelKernel/samsung-exynos9820

# Install prerequisites
# If you use ubuntu or ubuntu based distro then you need to install these tools:
sudo apt-get install build-essential libncurses-dev libtinfo5 bc bison flex libssl-dev libelf-dev heimdall-flash android-tools-adb android-tools-fastboot curl p7zip-full

# Install avbtool
wget -q https://android.googlesource.com/platform/external/avb/+archive/refs/heads/master.tar.gz -O - | tar xzf - avbtool.py
chmod +x avbtool.py
sudo mv avbtool.py /usr/local/bin/avbtool

# Install mkbootimg
wget -q https://android.googlesource.com/platform/system/tools/mkbootimg/+archive/refs/heads/master.tar.gz -O - | tar xzf - mkbootimg.py gki
chmod +x mkbootimg.py
sudo mv mkbootimg.py /usr/local/bin/mkbootimg
sudo mv gki $(python -c 'import site; print(site.getsitepackages()[0])')

# Install mkdtboimg
wget -q https://android.googlesource.com/platform/system/libufdt/+archive/refs/heads/master.tar.gz -O - | tar --strip-components 2 -xzf - utils/src/mkdtboimg.py
chmod +x mkdtboimg.py
sudo mv mkdtboimg.py /usr/local/bin/mkdtboimg

# Get the sources
git clone https://github.com/PixelExperience-Devices/kernel_samsung_exynos9820.git
cd kernel_samsung_exynos9820
git checkout twelve
git clone --depth=1 https://github.com/kdrag0n/proton-clang.git

 

kernelSU를 받고,

curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -

 

커널 소스 코드를 수동으로 패치 (출처: https://kernelsu.org/guide/how-to-integrate-for-non-gki.html)

(1) fs/exec.c 파일 패치

다음 코드 추가

extern int ksu_handle_execveat(int *fd, struct filename **filename_ptr, void *argv, void *envp, int *flags);

ksu_handle_execveat(&fd, &filename, &argv, &envp, &flags);

 

(2) fs/open.c 파일 패치

다음 코드 추가

extern int ksu_handle_faccessat(int *dfd, const char __user **filename_user, int *mode, int *flags);

ksu_handle_faccessat(&dfd, &filename, &mode, NULL);

 

(3) fs/read_write.c 파일 패치

다음 코드 추가

extern int ksu_handle_vfs_read(struct file **file_ptr, char __user **buf_ptr, size_t *count_ptr, loff_t **pos);

ksu_handle_vfs_read(&file, &buf, &count, &pos);

 

(4) fs/stat.c 파일 패치

다음 코드 추가

extern int ksu_handle_stat(int *dfd, const char __user **filename_user, int *flags);

ksu_handle_stat(&dfd, &filename, &flags);

 

(5) Makefile 수정

빌드 에러나기 때문에, 515번째줄 주석 처리

 

다음 명령어 순서대로 입력해서 커널 빌드. 대략 20분정도 소요됨.

export PATH=~/kernel_samsung_exynos9820/proton-clang/bin:${PATH}

make O=out ARCH=arm64 CC=clang exynos9820-beyond1lte_defconfig

make O=out ARCH=arm64 CC=clang CROSS_COMPILE=aarch64-linux-gnu- CROSS_COMPILE_ARM32=arm-linux-gnueabi- AR=llvm-ar NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump STRIP=llvm-strip -j12

 

 

반응형

+ Recent posts