qemu搭建ARM64开发环境。记录备忘
0. 环境

1.准备工具
a. 安装工具链
sudo apt install gcc-aarch64-linux-gnu

b. 下载linux
内核

d. 下载文件系统busybox-1.25.0
2. 制作文件系统
过程与以前32位系统的制作方式相似:
解压进入busybox目录
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make menuconfig, 配置成表态编译,Busybox Setting--> Build Options -->
下图

然后,make;make install会在busybox的根目录下生成_install目录
将此_install文件复制到linux-4.0目录下
cp -a _install linux-4.0
在linux-4.0/_install目录下新建目录
mkdir -pv etc/init.d dev
在新建的etc/init.d/目录下新建文件rcS, 内容如下:

rcS需要可执行权限。否则后面启动系统会报错
在新建的etc/目录下新建文件fstab, 内容如下:
新建文件inittab, 内容如下:

在新建的目录dev下新建文件
sudo mknod console c 5 1
sudo mknod null c 1 3
3. 编译内核
进入linux-4.0目录
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make menuconfig
a. 配置ram disk
General setup [*] initial RAM filesystem and RAM disk(initramfs/initrd)support
(_install_arm64)initramfs source file(s)
在initramfs source file中填_install_arm64(也就是使用刚才编译busybox后copy过来的东东)

Kernel Features-->Page size(4KB)-->Virtual address space size(48-bit)

b. 编译内核
make -j4
4. 运行
qemu-system-aarch64 -machine virt -cpu cortex-a57 -machine type=virt -nographic -m 2048 --smp 2 -kernel arch/arm64/boot/Image --append "rdinit=/linuxrc console=ttyAMA0"
进入控制台

5. tmpfs挂载失败问题
上面进入控制台的界面有
mount: mounting tmpfs on /tmp failed: Invalid argument
mount: mounting tmpfs on /dev failed: Invalid argument
如下配置内核可解决

重新编译后启动,如下,
阅读(4289) | 评论(0) | 转发(0) |