lab4:以time/gettimeofday系统调用为例分析ARM64 Linux 5.4.34

本文详细介绍了如何在Ubuntu环境下配置ARM64Linux5.4.34环境,包括使用QEMU模拟器,内核编译选项配置,关闭KASLR,制作根文件系统,以及通过内联汇编触发系统调用。同时,文章还涉及了使用VSCode进行代码编辑、编译及调试的配置,包括生成编译命令文件、设置C/C++配置和GDB调试配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.环境准备

环境配置,安装ARM64 Linux 5.4.34

下载qemu

apt-get install build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev python-pip python-capstone virtualenv
wget https://download.qemu.org/qemu-4.2.1.tar.xz
tar xvJf qemu-4.2.1.tar.xz
cd qemu-4.2.1
./configure --target-list=x86_64-softmmu,x86_64-linux-user,arm-softmmu,arm-linux-user,aarch64-softmmu,aarch64-linux-user --enable-kvm
make 
sudo make install

配置arm64环境

 在linux-5.3.34文件夹中,配置内核编译选项:

make defconfig ARCH=arm64
 
make menuconfig ARCH=arm64

在menuconfig中完成以下更改

Kernel hacking  --->
    Compile-time checks and compiler options  --->
        [*] Compile the kernel with debug info
        [*]   Provide GDB scripts for kernel debugging
    [*] Kernel debugging
# 关闭KASLR,否则会导致调试的时候打断点失败
Processor type and features ---->
    [] Randomize the address of the kernel image (KASLR)

更改后开始编译:

export ARCH=arm64
 
export CROSS_COMPILE=aarch64-linux-gnu-
 
make Image -j$(nproc)

制作跟文件系统:

与上个实验类似,下载busybox并解压:

wget https://busybox.net/downloads/busybox-1.36.0.tar.bz2
 
tar -jxvf busybox-1.36.0.tar.bz2
 
cd busybox-1.36.0

编译前需要设置:

export ARCH=arm64
 
export CROSS_COMPILE=aarch64-linux-gnu-

然后配置:

make menuconfig
 
Settings  --->
    [*] Build static binary (no shared libs)

之后就可以编译:

make -j$(nproc) && make install

/rootfs目录下添加init脚本:

#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
echo "Wellcome TryOS!"
echo "--------------------"
cd home
/bin/sh

并加上运行权限:

chmod +x init

打包成镜像文件存放在与rootfs的同级目录下:

find . -print0 | cpio --null -ov --format=newc | gzip -9 > ~/linux_lab4/rootfs.cpio.gz

启动内核:

qemu-sys
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值