옛날부터 올려야지~ 하고 있다가 이제서야 올립니다..
원래는 우분투 24.04 LTS 최신 버전에서 하고 싶었는데 python2가 설치가 안 되어서 22.04 LTS를 사용합니다.
개발 환경
- 우분투 22.04 LTS AMD64
- Docker, WSL2 등 상관X
// Install Packages
sudo apt install -y bc binutils-dev bison build-essential build-essential ca-certificates ca-certificates-java ccache clang cmake cmake curl file flex freeglut3-dev g++-aarch64-linux-gnu g++-arm-linux-gnueabi git gnupg gperf imagemagick lib32readline-dev lib32z1-dev libavcodec-dev libavformat-dev libavutil-dev libc++-dev libelf-dev libfreeimage-dev libgl-dev libglew-dev libglfw3-dev libglm-dev liblz4-dev liblz4-tool libmpv-dev libncurses5-dev libpulse-dev libpulse0 libsdl1.2-dev libsdl2-dev libssl-dev libswscale-dev libxcursor-dev libxi-dev libxinerama-dev libxml2 libxml2-utils libxrandr-dev libxxf86vm-dev lld lolcat lzop make mpv nano neofetch neovim net-tools ninja-build pigz pngcrush python-is-python3 python2 python3-dev repo rsync schedtool squashfs-tools texinfo u-boot-tools unzip vim wget xsltproc xz-utils zip zlib1g-dev zstd
// Setup Git
git config --global user.name "<username>"
git config --global user.email "<useremail>"
// Make Build Directory
mkdir gcc64
mkdir gcc32
mkdir clang
mkdir source
// Download && Unarchive Files
cd gcc64
wget https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/+archive/refs/heads/android12L-release.tar.gz
tar -xvf android12L-release.tar.gz
cd gcc32
wget https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/+archive/refs/heads/android12L-release.tar.gz
tar -xvf android12L-release.tar.gz
cd clang
wget https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/+archive/refs/heads/main/clang-r522817.tar.gz
tar -xvf clang-r522817.tar.gz
// Setup $PATH
cd
nvim .bashrc
```
export PATH="$HOME/gcc64/bin:$HOME/gcc32/bin:$HOME/clang/bin:$PATH"
```
source .bashrc
// Clone Kernel Source
cd source
git clone --depth=1 <Kenrel Source Git> <Name>
cd <Name>
// Edit defconfig
nvim arch/arm64/configs/<Device_defconfig>
```
// Example
CONFIG_LOCALVERSION="-Paiath"
```
// Build Kernel
make O=out <Device_defconfig>
make -j$(nproc --all) O=out CC=clang CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi-
// Kernel Locaction
out/arch/arm64/boot/Image.lz4-dtb
// Boot to Image.lz4-dtb
fastboot boot Image.lz4-dtb
저는 픽셀3의 PixelBuild 롬의 커널 소스를 이용하였고, defconfig은 다음과 같았습니다.
arch/arm64/configs/b1c1_defconfig
CLANG 같은 경우에는 2024-10-18 기준 안드로이드 V Release인 clang-r522817를 사용하였습니다.
GCC와 CLANG의 PATH는 당연히 원하시는 곳에 넣고 경로 지정만 잘 해주시면 됩니다.
Image.lz4-dtb에서 boot.img로 빌드하는 건 AOSP Tree를 이용한다는 것 같은데 아직 시도는 못 해봤습니다..
참고로 Image.lz4-dtb로 부팅하면 재부팅 시 원래 커널로 돌아가니 정말 커널 버전에 닉네임 남기는 용도 & 커널 빌드 시도 정도로만 생각하시면 될 것 같습니다.
'IT' 카테고리의 다른 글
픽셀3에 postmarketOS를 설치해봤습니다. (0) | 2024.11.29 |
---|---|
라즈베리파이에 카카오톡 설치하기 (0) | 2024.11.29 |
i3wm setup for Raspberry PI 400 (0) | 2024.09.30 |
갤럭시 S24 울트라 간단하게 살펴본 후기 (0) | 2024.01.21 |
Asahi Linux에서 드디어 스피커와 터치바가 작동하는군요 (0) | 2023.12.22 |