AOSP build on ARM for ARM 1일차시도


을 해보려고, ARM서버를 사볼까. 뭘해볼가 고민하던중에

  • 전에 GCP에서 T2A라고 ARM서버를 제공한다는 것을 뒤늦게 다시 떠올리고서 열심히 GCP 무료계정으로 생성해보려고 노력해봤으나,
    아래 5개 리전이 제공가능한데. vCPU 8개*4GB=32GB램에, 500GB SSD로 설정해서 생성시도를 해봤을 때, 시험판으로는
    – 미주(us-central1)-시간당 0.38(한달약US$274.84)
    – 싱가포르(asia-southeast1-b, asia-southeast1-c)-시간당 0.46(한달약US333)
    – 유럽 네델란드(europe-west4-a,b)-시간당 US$0.41(한달약US$302.44)
    모두 꽝이네요
  • 두번째로 오라클로 가봅니다. 어느 분 블로그에서 프리티어 춘천은 가능한 듯 보여(https://hoing.io/archives/304, https://hoing.io/archives/24489#ARM)
    잽싸게 따라해 봅니다. 설명은 보니 GCP와 동일한 Ampere 코어인가보네요. RAM 24GB까지 된다고 하니 그냥 직진해봅니다. 근데 계정 생성도 꽤나 오래걸리네요.
    클럭은 보니까. 2.8Ghz로 도는것 같고 뭔가 경고가 없는건 12Core정도이고, 64GB RAM도 무리 없는것 같아서 선택해봅니다.
    SSH도 받아두고요
    Boot volume은 500GB로 해두고.. 좀 모자라겠지만.. 뭐.. 적당히
    VPU라고 Performance설정하는게 있나본데… 무료니 그냥 10기본값(25000IOPS, 240MB/s)이라고 하는데, 2 Gbps면 SATA 1~2대역폭이긴 한데,, 고급 HDD정도 보다는 나은 수준이겠네요. SSD쓰긴 쓰는데, 나눠 쓰는거라 성능은 많이 안 나오나봅니다. 만약 된다면 다른분께 폐 안 끼치기를 바랍니다.
    120인 UHP(50000IOPS에 680MB/s)는 좀 옛날 SSD 쓰는정도?
    결과는… AD-1에 capa부족, 8코어 32GB 실패.. 8코어 24GB 실패… 하아..
  • 이제 Azure로 넘어가봅니다.. Europe West Europe 딱 하나 선택 가능하네요. Standard_D8pds_v5 – 8 vcpu, 32GiB (357954원/월)
    가격들은 얼추 다 비슷비슷한가봅니다.
    기본 스토리지 설정이 1TB가 들어가네요.. 최공!!!!
    가격은 490.3473원/시간 당. 근데 코어 4개제한에 걸렸다고 나옵니다..
    왜 진행된건데. –; 결국 다시 기본 메뉴에 있던,
    4 vcpu, 16GiB 로 내려가 봅니다. 151,063원/월, 시간당 206.9356원,
    Ubuntu 20.04 LTS. 생성 성공, SSH 프라이빗 키 받아두고 이제 접속해봅니다.
    Privatekey permission 600 아니면 linux에서 사용을 못하고 아예 무시되는군요. –; 처음 알았습니다. 복사후 permission 600으로 해주고
    ssh -i ~~~.pem ID@ip 로 들어가니 짜잔… 드디어 받아 냈습니다. 감격~
  • 4 vcpu, 16GiB RAM, 1TB HDD!!!!!
    근데 추가 1TB는 스스로 파티션 잡고 포맷하고 마운트 해야됩니다. Azure가이드에 상세히 나와 있어서 어려움은 없었습니다. lsblk로 dev이름만 잘 찾아서 mount option에 바꾸어주면 OK. 저는 /dev/sdb1으로 포맷했습니다.

본격 AOSP 개발환경 구축하기 : AOSP 사이트에 있는 가이드대로 따라하면, X86용 툴들로 되어 있는 것들이 있어서 ARM Host 에서는 의존성 때문에 몇 개가 걸려나오고 설치가 진행이 안됩니다.

ID@AOSPonARM:/mnt/bsp$ sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
Reading package lists… Done
Building dependency tree
Reading state information… Done
Note, selecting 'git' instead of 'git-core'
Package gcc-multilib is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'gcc-multilib' has no installation candidate
E: Unable to locate package g++-multilib
E: Couldn't find any package by regex 'g++-multilib'
E: Unable to locate package libc6-dev-i386
E: Unable to locate package lib32ncurses5-dev
E: Unable to locate package lib32z1-dev

package들을 열심히 검색해서 바꾸어 봅니다.
– git-core는 git으로 대체
– gcc-multilib은 gcc-multilib-arm-linux-gnueabihf
– g++multilib도 g++-multilib-arm-linux-gnueabihf
– libc6-dev-i386은 libc65-dev-armhf-cross
– lib32ncurses5-dev 는 libncurses5-dev
– lib32z1-dev는 libz1->zlib1g
로 바꾸면 일단 나름 구색은 맞추어서 환경 설정은 완료… 나중에 알겠죠. 뭔가 문제 터지면..

이제 AOSP 코드 받으러 고고

python이 없어서, 추가로
apt install python3 python-is-python3
하고, apt로 repo설치는 안되는 듯 하니. AOSP가이드 대로 프로젝트에서 직접 다운 받아서 설치
https://source.android.com/docs/setup/develop#installing-repo:~:text=export%20REPO%3D%24(mktemp%20/tmp/repo.XXXXXXXXX)%0Acurl%20%2Do%20%24%7BREPO%7D%20https%3A//storage.googleapis.com/git%2Drepo%2Ddownloads/repo%0Agpg%20%2D%2Drecv%2Dkey%208BB9AD793E8E6153AF0F9A4416530D5E920F5C65%0Acurl%20%2Ds%20https%3A//storage.googleapis.com/git%2Drepo%2Ddownloads/repo.asc%20%7C%20gpg%20%2D%2Dverify%20%2D%20%24%7BREPO%7D%20%26%26%20install%20%2Dm%20755%20%24%7BREPO%7D%20~/bin/repo

bin폴더 생성하고, 다운받고, .bashrc에 path까지 잡아서 source해주면, 아래처럼 아름다운 버전이 표시됨.
ID@AOSPonARM:/mnt/bsp$ repo version
repo launcher version 2.21
(from /home/ID/bin/repo)
git 2.25.1
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0]
OS Linux 5.15.0-1017-azure (#20~20.04.1-Ubuntu SMP Fri Aug 5 15:46:55 UTC 2022)
CPU aarch64 (aarch64)
Bug reports: https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue

이제 받아봅니다.

ID@AOSPonARM:/mnt/bsp$ repo init -u https://android.googlesource.com/platform/manifest
Downloading Repo source from https://gerrit.googlesource.com/git-repo
repo: Updating release signing keys to keyset ver 2.3

Your Name [Ubuntu]: ~~~
Your Email [~~~]: ~~~

Your identity is: ~~~ ~~@~~
is this correct [y/N]? y

Testing colorized output (for 'repo diff', 'repo status'):
black red green yellow blue magenta cyan white
bold dim ul reverse
Enable color display in this user account (y/N)? y

repo has been initialized in /mnt/bsp/
If this is not the directory in which you want to initialize repo, please run:
rm -r /mnt/bsp//.repo
and try again.

이제 repo sync 하고 기다려봅니다.. 속도는 제법 나오는것 같네요.. 언제 Network 속도제한 걸릴지는 모르겠지만요.

이것저것 설정 다 하고, 무료체험 224,930 크레딧 남음… 언제 다 떨어질려나요. 자고 일어나면, 좀 달라져 있겠죠? 다 받고, 잠시 꺼놓고 있고 싶은데..

Fetching: 100% (1148/1148), done in 30m58.248s
Garbage collecting: 100% (1148/1148), done in 22.240s
Checking out: 100% (1148/1148), done in 6m12.272s

이 정도 시간이 걸리는군요.

그냥 빌드하려 lunch하니 아무것도 안 떠서, 다시 한번 repo init -b master로 지정하고 받아봅니다.

Fetching: 100% (1148/1148), done in 2m35.073s
Garbage collecting: 100% (1148/1148), done in 5.170s
Checking out: 100% (1148/1148), done in 10.328s
repo sync has finished successfully.

ID@AOSPonARM:/mnt/bsp$ . build/envsetup.sh
ID@AOSPonARM:/mnt/bsp$ lunch

You're building on Linux
Warning: Cannot display lunch menu.
Note: You can invoke lunch with an explicit target:
usage: lunch [target]

Which would you like? [aosp_arm-eng]
Pick from common choices above (e.g. 13) or specify your own (e.g. aosp_barbet-eng):
/mnt/bsp/build/blueprint/microfactory/microfactory.bash: line 63: /mnt/bsp/prebuilts/go/linux-x86//bin/go: cannot execute binary file: Exec format error

toolchain이 아직이네요.. 흠..

일단 go부터 어택하기로 마음먹고.
https://go.dev/dl/
인스턴스는 중지시킵니다. 혹여나 하는 마음에 다시 실행해보니. 마운트만 자동처리 안해놔서 끊겨 있고, 다시 마운트 하니 일단 다 살아 있네요. 중지 시켜 두고, 비용이랑 자료가 언제까지 살아 있나도 봐야겠네요..