Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3786021
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2020-04-13 19:32:45

https://www.cnblogs.com/xidongyu/p/11638627.html

制作文件系统
编译内核源码生成镜像
qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -m 2048 -smp 2 -kernel linux/arch/arm64/boot/Image -initrd rootfs.cpio.gz -append "rdinit=/linuxrc console=ttyAMA0"


RPM包安装

yum安装交叉编译工具

yum install -y binutils-aarch64-linux-gnu gcc-aarch64-linux-gnu bison flex glib2 glib2-devel pixman-devel bc 

手动安装glibc

yum库中没有glibc-aarch64,所以需要手动安装相应的包。在下载以下连个rpm包进行安装

  • glibc-aarch64-linux-gnu
  • glibc-aarch64-linux-gnu-devel

下载源码包

Linux源码

使用wget下载Linux源码()或者在CSDN上下载

busybox

qemu

qemu支持ARM64目前只能通过源码包形式安装

拷贝头文件

在编译时缺少一些头文件,可以将x86下的copy到aarch64下

cp -r /usr/include/rpc/* /usr/aarch64-linux-gnu/include/rpc/ 

安装

qemu

安装命令

# 解压qemu安装包进入其目录执行以下命令 ./configure --target-list=aarch64-softmmu,aarch64-linux-user --enable-virtfs --enable-debug && make -j4 && make install 

Linux

编译

# 设置环境变量 export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu- # 配置编译选项 make defconfig 
make menuconfig # 编译 make -j4 

busybox

配置

执行make menuconfig命令进行配置,以下两个选项需要设置

  • Busybox Setting -> Build Options -> static binary(enable)
  • Networking Utilities -> inetd(disable)
  • Busybox Setting -> BusyBox installation prefix(../rootfs)

编译

make -j4 && make install 

编译完成后在busybox的同级目录会生成一个rootfs目录

制作文件系统

进入rootfs,执行以下命令

mkdir dev etc mnt 
mkdir -p etc/init.d 

进入etc/init.d中创建文件rcS,在文件中加入以下内容,并修改rcS为可执行

mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s 

在etc/ 目录下新建一个inittab文件,加入以下内容

::sysinit:/etc/init.d/rcS 
::respawn:-/bin/sh 
::askfirst:-/bin/sh 
::ctrlaltdel:/bin/umount -a -r 

在dev目录下执行以下命令

mknod console c 5 1 
mknod null c 1 3 

在rootfs目录执行以下命令

find . | cpio -o -H newc > rootfs.cpio 
gzip -c rootfs.cpio > rootfs.cpio.gz 

至此,rootfs中的rootfs.cpio.gz就是制作好的文件系统

虚拟机管理

虚拟机启动

qemu-system-aarch64 -cpu cortex-a57 -machine type=virt -nographic -smp 1 -m 512 -kernel Image -append "rdinit=/linuxrc console=ttyAMA0" -initrd rootfs.cpio.gz -device virtio-scsi-device 
qemu-system-aarch64 二进制文件,提供模拟aarch64架构的虚拟机进程
-m 2048 分配2048MB内存
-M virt 模拟成什么服务器,我们一般选择virt就可以了,他会自动选择最高版本的virt
-cpu cortex-a72 模拟成什么CPU,其中cortex-a53\a57\a72都是ARMv8指令集的
-smp 2,cores=2,threads=1,sockets=1 2个vCPU,这2个vCPU由qemu模拟出的一个插槽(socket)中的2个核心,每个核心支持一个超线程构成。
-bios xxx 指定bios bin所在的路径
-device xxx 添加一个设备,参数可重复
-drive 添加一个驱动器,参数可重复
-net 添加网络设备

GDB调式

安装

下载GDB源码包, lasted version(suggestion)

编译&安装

./configure --target=aarch64-linux-gnu --program-prefix=aarch64-linux- --prefix=/usr/local/aarch64_gdb
make && make install 
阅读(6062) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~