qemu搭建arm运行linux内核,centos使用qemu搭建ARM64运行环境
准备工作
(1) linux 内核源码, 从github上获取
git clone https://github.com/torvalds/linux
make kernelversion
(2) 交叉编译工具,从linaro官网(www.linaro.org)上获取
解压后设置环境变量即可
xz -d gcc-linaro-xxx.tar.xz
tar -xvf gcc-linaro-xxx.tar
export PATH=$PATH:/yourpath
(3) 安装QEMU ,支持arm64需要源码安装https://www.qemu.org/
yum install gtk2-devel
./configure –target-list=aarch64-softmmu
make && make install
安装完成后,有qemu-system-aarch64命令即可
内核代码编译
进入下载好的内核源码目录
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
make menuconfig
make -j4
制作文件系统
(1)下载安装busybox : https://busybox.net/
make menuconfig
settings->build options->build static library(enable)
make
make install
(2) 制作根文件系统
mkdir rootfs
cp busybox/_install/* rootfs/ -rf
cd rootfs/_install
mkdir dev etc mnt
mkdir -p etc/init.d
在_install/etc/init.d/目录下新建一个文件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
在_inistall/etc/ 目录下新建一个fstab文件:
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug debugfs defaults 0 0
在_inistall/etc/ 目录下新建一个inittab文件:
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
cd init.d
在_install/dev目录下新建节点:
mknod console c 5 1
mknod null c 1 3
返回上层目录,压缩
cd ../..
find . | cpio -o -H newc > rootfs.cpio
gzip -c rootfs.cpio > rootfs.cpio.gz
QEMU启动ARM64虚拟机
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"
启动成功后,查看内核版本
/ # uname -r
4.20.0-rc4-00007-gef78e5e
关闭虚拟机
另起一个超级终端,输入
killall -9 qemu-system-aarch64
参考文章
《奔跑吧linux内核》第六章
qemu搭建arm运行linux内核,centos使用qemu搭建ARM64运行环境相关推荐
- (编译适用于ARM的linux内核并进行QEMU仿真)Compile Linux kernel 3.2 for ARM and emulate with QEMU
译者序 作为第一篇翻译文档,一方面对于翻译经验不足.措辞不当,另一方面对于linux我也是初学者,很多东西尚处于待学阶段,而翻译此文的动机就是我要学习如何跨平台进行文件系统的编译,所以翻译的结果肯定有 ...
- 搭建《深入Linux内核架构》的Linux环境
搭建<深入Linux内核架构>的Linux环境 阅读目录(Content) 作者 软件 概述 正文 一.安装GCC 二.编译Linux内核 三.制作跟文件系统 四.运行qemu 五.启动l ...
- [转载]基于ARM的linux内核裁剪与移植
基于ARM的linux内核裁剪与移植 http://bbs.elecfans.com/forum.php?mod=viewthread&tid=185020 wutaimin( 楼主 ) 2 ...
- [arm驱动]linux内核时钟
<[arm驱动]linux内核时钟>涉及内核驱动函数四个,内核结构体一个,分析了内核驱动函数一个:可参考的相关应用程序模板或内核驱动模板一个,可参考的相关应用程序模板或内核驱动一个 一.内 ...
- 【学习笔记】编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译
本文主要介绍Linxu2.6的内核配置系统. 如果你浏览一下源代码目录,就可以发现源码目录及其子目录中有很多的KConfig文件和Makefile文件.这些文件什么作用呢?正是这些文件组成了Linux ...
- KConfig、Makefile详解以及ARM平台Linux内核的编译
本文主要介绍Linxu2.6的内核配置系统. 如果你浏览一下源代码目录,就可以发现源码目录及其子目录中有很多的KConfig文件和Makefile文件.这些文件什么作用呢?正是这些文件组成了Linux ...
- 从入门到精通ARM(4412)-Linux内核驱动编程【下】-李志勇-专题视频课程
从入门到精通ARM(4412)-Linux内核驱动编程[下]-247人已学习 课程介绍 嵌入式绝对是当前IT领域最炙手可热的话题了.其主要应用领域涵盖与人类相关的各行各业: * 消费电 ...
- 编译arm linux内核,编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译...
转载自:http://blog.csdn.net/newthinker_wei/article/details/8022696 本文主要介绍Linxu2.6的内核配置系统. 如果你浏览一下源代码目录, ...
- [arm驱动]linux内核中断编程
第一部分获取中断(开启硬件中断) 一.中断的申请注销: 1)中断的申请 1 2 int request_irq(unsigned int irq, irq_handler_t handler, ...
最新文章
- serv-u的语言界面的切换(汉英切换)
- Winform根据控件名获取指定控件
- 《大话数据结构》第1章 数据结构绪论 1.1 开场白
- eui自带字体是什么_阿里巴巴居然出品了两款字体,免费可商用,网友:太良心了...
- WCF六大步的前三步
- Interpreter(解释器)--类行为型模式
- C#使用集合组织相关数据
- SysinternalsSuite工具
- Pseudo-document-based Topic Model(基于伪文档的主题模型)的理解以及源码解读
- 解决 spring mvc 3.0 结合 hibernate3.2 使用tx:annotation-driven声明式事务无法提交的问题(转载)...
- c大小写转换函数_字符处理——大小写转换编程思路扩展
- openstack中彻底删除计算节点的操作记录
- MySQL8.0数据库配置注意事项
- 毕业设计 嵌入式电子时钟设计与实现
- html5 canvas 虚线,HTML5 canvas画带箭头的虚线
- 阿尔法狗怎么用机器学习做决策:马尔科夫链减少搜索空间说起(附PDF公号发“马链搜索”下载)
- “胡焕庸”线 - 中国人口分布地理界线
- 安卓前端车牌识别技术
- sklearn线性回归,支持向量机SVR回归,随机森林回归,神经网络回归参数解释及示例
- SQL注入回顾篇(四)
热门文章
- 牛客16429 组合数问题(二维前缀和、杨辉三角)
- 如何看打印机的缓存区域_松下打印机好吗 松下打印机卡纸如何解决【详解】...
- java简单小项目_Java简易抽奖系统小项目
- ansible执行mysql命令,Ansible常用命令(ad-hoc 命令)
- 为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?
- python内部函数和比外部函数快_Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量...
- pytorch的nn.CrossEntropyLoss()函数使用方法
- 实数序列频谱的共轭对称性(DFT与IDFT仿真实现)
- TensorFlow的基本介绍及Hello,world
- 硬件安全 (1) —— SHA-1算法在FPGA上的实现