qemu搭建arm运行linux内核,centos使用qemu搭建ARM64运行环境

准备工作

(1) linux 内核源码, 从github上获取

git clone https://github.com/torvalds/linux

make kernelversion

(2) 交叉编译工具,从linaro官网(www.linaro.org)上获取

4f0cfe306c8472a63fd2451e1b6e53b0.png

38ab83ba7146ef94b2195bc313cc4e92.png

解压后设置环境变量即可

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内核》第六章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 某年某月中第几周 开始时间和结束时间_重磅!库里又要签下一超级大合同!4年2亿啊!退役时间也定了...

好家伙!现在的超级巨星都喜欢提前续约了,继詹姆斯与湖人签下两年8500万美元顶薪协议后,库里也有望达成这一成就。当地时间周一训练结束后,他接受采访谈到自己的续约问题,表示已经和球队交流过,同时明确表态…

vb ftp linux,VB FTP上传和下载模块

Option ExplicitPrivate Const INTERNET_OPEN_TYPE_DIRECT 1Private Const scuseragent "vb wininet"Private Const INTERNET_FLAG_PASSIVE &H8000000调用设置环境Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOp…

python struct pack一个数组_Python中struct.pack的一个疑问

展开全部的确很奇怪。我试验了10几分钟,你按下面的方法来做就可以正确。import structzzz ("{Type:2}").encode("utf-8")length len(zzz)a struct.pack("%ds"%length,zzz)print(a)简单的说32313133353236313431303231363533e59b9e…

linux list 添加失败,linux运维实战案例之Argument list too long错误与解决方法

1、错误现象这是一台Mysql数据库服务器,在系统中运行了很多定时任务,今天通过crontab命令又添加了一个计划任务,退出时发生了如下报错:#crontab -e编辑完成后,保存退出,就出现下面如下图所示错误&#xff1…

软件项目周报模板_一份高质量的职场工作周报,要这样写

周报是会呼吸的痛,它会在每个周五来回滚动。几乎每个职场人都会为周报所折腰,因为周报看起来是小事,但又不仅仅是小事。周报,是职场人士对一周工作的总结和记录,是展示自己工作状态和成果的重要载体,是领导…

linux 多线程客户端服务端通信,[转载]多线程实现服务器和客户端、客户端和客户端通信;需要代码,留言...

一、实验名称动手打造自己的 IM二、实验目的1本次实验旨在锻炼大家的Socket编程能力,以日常生活中广泛使用的IM软件为背景,培养大家对于网络编程的兴趣。2、通过本次实验,培养linux环境下网络编程能力,使得我们对网络应用层的网络…

python安装sqap_python文件I/O

python文件I/O键盘读入:raw_input函数str raw_input("请输入: ")input函数,可以接受一个python表达式作为输入str input("请输入:")输入:[ x*5 for x in range(2, 10, 2)]open函数:f…

linux 设置ssh并发度,在linux如何使用ControlPersist加快SSH连接速度的问题

不经意间我们又来到了文章的学习,在众多学习中,我们的文章也许不起眼,但是想必大家都有很多问题吧,所以重要的下面我们就来讲解一下,大家一定要认真看奥!!Linux系统进行服务器配置管理迁移的时候…

linux下c标准库位置,C 标准库 IO 使用详解

其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数、输出参数和返回值,接下来才能开始设计具体的实现过程。C 语言标准库提供的接口功能很有限,不像 Python 库。不过想把它用好也不容…

python调用系统_python 执行系统命令

Python中执行系统命令常见的几种方法:(1)os.system# 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息# 如果再命令行下执行,结果直接打印出来例如:>>> import os>>> os.system(ls)chk_err_log.py…

linux libbz2.so.1,libbz2.so.1.0: cannot open shared object file: No such file or directory

在解决这个报错的过程中,我学到了Linux下解决问题的一种新思路。这个报错很早之前就遇到过,当时是用自己安装的miniconda来下载安装samtools(非root用户),安装完成之后运行就这样报错了,但是其他的软件又可以正常运行,…

python文件对象是可以迭代的_详解python可迭代对象、迭代器和生成器

可迭代对象什么是可迭代对象?顾名思义就是可以迭代的一个对象,再通俗点就是可以被for循环遍历的对象,如常用的list、str等数据类型。我们可以使用isinstance来判断这个数据是否是可迭代对象,在此要先从Iterable包中导入模块collec…

linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...

一、限制并发连接数的配置方法如下:1、在nginx.conf里的http{}里加上如下代码:# vim /usr/local/nginx/conf/nginx.conf#在其中的36行加入下面的内容(在http{}模块中加入的)limit_conn_zone $binary_remote_addr zoneaddr:10m;#解释内容如下:要限制连接&…

python实现杨辉三角形博客园_Python实现杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二…

ftm模块linux驱动,飞思卡尔k系列_ftm模块详解.doc

飞思卡尔k系列_ftm模块详解1.5FTM模块1.5.1 FTM模块简介FTM模块是一个多功能定时器模块,主要功能有,PWM输出、输入捕捉、输出比较、定时中断、脉冲加减计数、脉冲周期脉宽测量。在K10中,共有FTM0,FTM1,FTM2三个独立的F…

python列表切片图解_Python列表切片操作实例总结

本文实例讲述了Python列表切片操作。分享给大家供大家参考,具体如下:切片指的是列表的一部分。1 基本用法指定第一个元素和最后一个元素的索引,即可创建切片 。Python 会在到达指定的第二个索引之前元素后停止 。books[半生缘,往事并不如烟,心…

乱码 讯飞 语音识别_一段讯飞、百度等语音识别API无法识别的语音最终解决办法...

最近在做语音识别、字幕扒词相关的工作,遇到了一段录音(https://download.csdn.net/download/u014220286/12169183,各位有兴趣的可以下载下来试试),音质什么的和其他处理过的无二异,也是普通话,照常理说应该能识别出来…

linux docker查看容器状态,Docker容器状态命令行工具——Ctop

Ctop是和Linux top展示效果类似的一个容器状态监视工具,Ctop可以动态的显示容器的cpu、内存、网络的使用情况。一共有两个叫Ctop的命令行工具,分别由GO和Python实现。Python实现的版本功能更强大一些。GO实现版本安装Linux$ wget https://github.com/bci…

plsql表设置主键_对复制实施主键约束

作者:Pedro Gomes 译:徐轶韬在本文中,我们介绍一个配置选项,该选项控制复制通道是否允许创建没有主键的表。这延续了我们最近在复制安全性方面的工作,在该工作中,我们允许用户强制执行权限检查和/或强制执行…

用c语言编写名字用字母表示,如何用C语言编写自己的姓名和学号

可以参考下面的代码&#xff1a;#include<stdio.h>#include<stdlib.h>intmain(void){FILE*fpfopen("data.txt","r");if(!fp){fpfopen("data.txt","w");printf("请输入姓名:");char*name;scanf("%s",n…