Files
cgproxy/execsnoop-kernel/arm64.md

1.7 KiB

Cross Compile

docker pull debian:buster

# in container
dpkg --add-architecture arm64
apt update
apt install gcc-8-aarch64-linux-gnu # cross compile toolchain
apt install libelf-dev:arm64 # target depency library
...

Emulation

Register qemu-user-static

  • before register binfmt
docker run --rm -t arm64/ubuntu uname -m
  • register binfmt
# through docker
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# or through systemd
pacman -S qemu-user-static binfmt-qemu-static
systemctl restart systemd-binfmt.service
# test
cat /proc/sys/fs/binfmt_misc/qemu-aarch64
  • after register binfmt
docker run --rm -t arm64/ubuntu uname -m

M1: Docker

# start container background
docker run -dit --name arm64 -v /home/fancy/workspace-xps:/data arm64v8/ubuntu

# enter container
docker exec -it arm64 bash

M2: Chroot

download image ubuntu-base-20.04-base-arm64.tar.gz, extract and chroot to it.

sudo arch-chroot ubuntu-base-20.04-base-arm64

Refer

Compile

ready some depencies.

# maybe repository: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
# install in container for kernel bpf build
apt install dialog apt-utils
apt install build-essential gcc clang llvm
apt install bison flex bc rsync libssl-dev binutils-dev libreadline-dev libelf-dev
apt install make cmake
# for cgproxy
apt install nlohmann-json3-dev rpm