在ubuntu bionic下对基于qemu的arm64进行linux内核5.0.1版本的编译和运行
一.环境介绍
OS:ubuntu bionic 64bit
二.准备工作
2.1 安装必要的开发工具
sudo apt-get install git flex bison build-essential gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu pkg-config libglib2.0-dev libpixman-1-dev libssl-dev -y
2.2 编译qemu
wget https://download.qemu.org/qemu-3.1.0.tar.xz -P ~/
tar xvJf ~/qemu-3.1.0.tar.xz
cd ~/qemu-3.1.0
./configure --target-list=aarch64-softmmu
make -j4
sudo make install
2.3 编译busybox
wget https://busybox.net/downloads/busybox-1.30.1.tar.bz2 -P ~/
tar xvf ~/busybox-1.30.1.tar.bz2 -C ~
cd ~/busybox-1.30.1
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make menuconfig (配置为使用静态库,非常重要,Settings->Build static binary (no shared lib))

make -j4
make install
三.编译
3.1 获取内核
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.1.tar.xz
tar xvf linux-5.0.1.tar.xz
cd linux-5.0.1
3.2 配置环境变量
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make defconfig
3.3 加入文件系统
cp ~/busybox-1.30.1/_install ./
mkdir _install/dev
cd _install/dev
sudo mknod console c 5 1
sudo mknod null c 1 3
cd ../..
make menuconfig
出现图形界面,把_install配置到Initramfs source file中,如下图(General setup->Initramfs source file):

3.4 编译
make all -j4
四.运行
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"
在ubuntu bionic下对基于qemu的arm64进行linux内核5.0.1版本的编译和运行的更多相关文章
- 如何在Ubuntu/CentOS上安装Linux内核4.0
大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为‘Hurr durr I'm a sheep’的Linux内核4.0是目前为止最新的主干内核.它是稳定版3. ...
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序(老罗学习笔记2)
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序.在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文 ...
- Linux内核3.0移植并基于Initramfs根文件系统启动
Linux内核移植与启动 Target borad:FL2440 Bootloader:U-boot-2010.09 交叉编译器:buildroot-2012.08 1.linux内核基础知识 首先, ...
- Ubuntu系统下OpenDaylight源码编译安装
操作系统:Linux x64 / Ubuntu 14.04 研究领域:软件定义网络SDN (Software-defined Networking) 开发组件:OpenDaylight 声明:转载请注 ...
- Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核
Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核 标签(空格分隔): Qemu ARM Linux 在上文<Qemu搭建ARM vexpress开发环 ...
- Centos下编译Linux内核
Linux内核编译是一件简单却费事的事.但是独立的编译linux内核会帮助你很好的理解Linux内核的工作机理. 首先编译linux内核我们需要在当前linux操作系统下安装gcc编译器,因为我是Ce ...
- 《Linux内核分析》第五周学习总结 扒开系统调用的三层皮(下)
扒开系统调用的三层皮(下) 郝智宇 无转载 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给Men ...
- linux下怎么安装Go开发环境?linux部署golang
linux下怎么安装Go开发环境?linux部署golang 0.请自行安装SSH远程工具 1. SSH远程登录你的linux服务器 2. yum install mercurial安装 me ...
- Ubuntu系统下基于docker部署Jenkins环境
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...
随机推荐
- idea 创建的maven+spring+mybatis项目整合 报错无法创建bean
报错如下: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with n ...
- [python+opencv] ROI(Range Of Interest)与泛洪填充
python+opencv3.3视频教学 基础入门笔记(贾志刚老师) https://www.bilibili.com/video/av24998616/?p=8 ROI(Range Of Inter ...
- celery消息的编码和序列化(转)
add by zhj: 原文讲的是序列化时的安全问题,不过,我关心的是怎样可以看到消息队列中的数据.下面是在broker中看到的消息,body是先用 body_encoding编码,然后用conten ...
- CentOS 6 网络设置
系统配置: 系统硬件:vmware workstation 系统版本:Centos-6.6-x86_64 路由器网关:192.168.1.1 linux系统网络设置须知: 1.主机所有网卡信息配置文件 ...
- 带分数dfs+剪枝优化
#include<iostream>#include<cstdio>#include<cstdlib>#include<ctime>using name ...
- redis 介绍
缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是 ...
- C语言typeof详解
前言: typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛. 一,说明 typeof的参数可以是两种形式:表达式或类型. 1,表达式的的例子: ...
- thinkphp input
变量修饰符 input函数支持对变量使用修饰符功能,可以更好的过滤变量. 用法如下: input('变量类型.变量名/修饰符'); 或者 Request::instance()->变量类型('变 ...
- windows配置承载网络的一个批处理程序
@rem 这是windows中创建承载网络的相关命令title wifi热点@echo off set ssid=abcdeset key=123456789 :beginclsecho ------ ...
- VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)
上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...