Ubuntu 20.04使用qemu搭建ARM64 Linux系统
1、安装所需依赖
$ sudo apt-get install debian-archive-keyring gcc-aarch64-linux-gnu bison flex bc build-essential libncurses* libssl-dev
$ sudo apt-get install qemu qemu-user-static binfmt-support debootstrap
2、使用debootstrap命令创建文件系统
使用debootstrap制作根文件系统会分成两个阶段。第一阶段是,使用debootstrap命令来下载软件包。
debootstrap命令基本格式:
$ sudo debootstrap --arch [平台] [发行版本代号] [构建目录] [镜像地址]
当前debootstrap支持的发行版本可以在
/usr/share/debootstrap/scripts
查看。
在自己创建的工作目录下执行以下命令:
$ sudo su
$ debootstrap --arch=arm64 --foreign buster linux_rootfs http://mirrors.ustc.edu.cn/debian/
- –arch:指定要制作文件系统的处理器体系结构,比如arm64
- buster::指定Debian的版本。buster是Debian 10系统。
- linux_rootfs:本地目录,最后制作好的文件系统会在此目录。本实验使用“linux_rootfs”目录作为根文件系统目录。
- –foreign:只执行引导的初始解包阶段,仅仅下载和解压
- http://mirrors.ustc.edu.cn/debian/: 国内debian镜像源地址
第二阶段,需要安装软件包。
因为主机跑在x86架构上,而我们要制作的文件系统是跑在ARM64上,因此可以使用qemu-aarche64-static来模拟成arm64环境的执行环境。
$ cp /usr/bin/qemu-aarch64-static ./linux_rootfs/usr/bin/
下面使用debootstrap命令进行软件包的安装和配置
$ chroot linux_rootfs/ debootstrap/debootstrap --second-stage
–second-stage表示执行第二阶段的安装
显示“I:Base system installed successfully.”说明第二阶段完成。
使用chroot命令切换到刚才制作的根文件系统
$ chroot linux_rootfs/
配置root用户密码
# 先设置root用户的密码
$ passwd root
添加用户及设置密码
$ USER= xx #设置你想要的用户名
$ useradd -G sudo -m -s /bin/bash $USER
$ passwd $USER
设置主机名
$ HOST= xxxxx #设置你想要的主机名
$ echo $HOST > /etc/hostname
设置网络
$ echo "auto lo" > /etc/network/interfaces
$ echo "iface lo inet loopback" >> /etc/network/interfaces
$ echo "allow-hotplug enp0s1" > /etc/network/interfaces
$ echo "iface enp0s1 inet dhcp" >> /etc/network/interfaces
按照需求安装一些依赖
$ apt update
$ apt install net-tools
以上全部完成后,我们的根文件系统就制作好了,输入exit退出。
$ exit
3、制作ext4文件系统
首先使用dd命令来创建一个image文件,bs=1M表示block大小,count=2048,表示该image大小为2GB,读者可以根据主机磁盘空间,适当调整该大小,建议不小于2GB。
$ dd if=/dev/zero of=linux_rootfs.ext4 bs=1M count=2048
使用mkfs.ext4命令来格式化
$ mkfs.ext4 linux_rootfs.ext4
挂载ext4文件系统并拷贝内容
$ mkdir -p tmpfs
$ mount -t ext4 linux_rootfs.ext4 tmpfs/ -o loop
$ cp -af linux_rootfs/* tmpfs/
$ umount tmpfs
$ chmod 777 linux_rootfs.ext4
4、编译Linux内核
在官网(https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/)下载Linux内核文件,我下载的版本是5.10.87,解压后执行以下命令:
$ cd linux-5.10.87/
$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-linux-gnu-
$ make defconfig
$ make -j4
编译成功会在linux-5.10.87
目录下生成vmlinux
,在arch/arm64/boot/
目录下生成Image
文件。
5、使用qemu运行我们刚刚制作的Debian系统
以上步骤执行完毕,工作目录下的文件如图所示:
在工作目录下执行:
$ qemu-system-aarch64 -m 1024 -cpu cortex-a57 -M virt -nographic -smp 4 -kernel linux-5.10.87/arch/arm64/boot/Image -append "noinintrd sched_debug root=/dev/vda rootfstype=ext4 rw crashkernel=256M loglevel=8" -drive if=none,file=linux_rootfs.ext4,id=hd0 -device virtio-blk-device,drive=hd0
其中,“-drive if=none,file=myrootfs_arm64.ext4,id=hd0 -device virtio-blk-device,drive=hd0”添加根文件系统支持。
成功进入系统,我们使用root登录
检查网络链接,正常:
使用apt可以正常安装一些软件:
参考链接:
1、debootstrap 制作arm64位根文件系统
2、debootstrap 制作根文件系统
3、ubuntu根文件系统构造
4、实验指导手册-奔跑吧Linux内核入门篇第二版
Ubuntu 20.04使用qemu搭建ARM64 Linux系统相关推荐
- ubuntu虚拟机中使用QEMU搭建ARM64环境
软件环境: 平台:ubuntu20.04 kernel版本:linux 4.14.221 qemu版本:6.2.92 qemu模拟环境:ARM64 gcc version :9.4.0 交叉编译工具链 ...
- ubuntu 20.04中sources.list文件恢复系统默认源
前言 ubuntu 20.04中sources.list文件恢复系统默认源 小白学习,误该后改不回来,找了很久才找到,做个记录 一.sources.list文件恢复系统默认源 1.进入编辑 sourc ...
- QEMU搭建arm64 Linux调试环境
https://zhuanlan.zhihu.com/p/345232459 简述 本文记录了在ubuntu20.04上,使用QEMU搭建arm64 的Linux开发调试环境.可以方便得使用gdb调试 ...
- 零基础 Ubuntu 20.04.01 下搭建51单片机开发环境[开源编译器SDCC]
原创首发于CSDN,转载请注明出处,谢谢! 文章目录 为何会在Linux下开发单片机 个人系统环境与所用开发板 安装开源编译器 sdcc STC MCU ISP 闪存工具 stcgal 的安装 单片机 ...
- Ubuntu 20.04 搜索引擎环境搭建 (PostgreSQL 12.3, Redis 6, ELK[Elasticsearch 7.8, Logstash 7.8, Kibana 7.8])
2021/02/04 更新redis安装步骤 在软件开发项目中,会遇到搜索引擎.日志收集等需求,本教程在阿里云选择公共镜像 Ubuntu 20.04 后,部署 apt-fast, java, axel ...
- 基于ubuntu 20.04与cri-docker 搭建部署高可用k8s 1.25.3
目录 一.overlay简介 二.overlay通信过程 三.overlay应用场景 四.underlay简介 五.underlay实现模式简介 六.MAC Vlan工作模式 七.kubernetes ...
- Ubuntu 20.04 VNC server 搭建及客户端访问
vnc server安装 sudo su root apt-get update apt install gnome-panel gnome-settings-daemon metacity naut ...
- Ubuntu 20.04 LTS Server搭建软路由
首先是安装Ubuntu 20.04 LTS Server,这个步骤网上都可以找到 注意的是,安装的时候开启openssh-server 下述步骤是是指定安装好Ubuntu 20.04 LTS Serv ...
- Linux(Ubuntu 20.04 LTS)之shell使用基础教程
Linux(Ubuntu 20.04 LTS)之shell使用基础教程 我在此使用的是VMware虚拟机安装的Ubuntu 20.04 LTS. Shell是linux系统的用户界面.Shell即是一 ...
最新文章
- Cython——[FutureWarning: Cython directive ‘language_level’ not set, using 2 for now (Py2)]解决方案
- python 复制文件_10 行 Python 代码写 1 个 USB 病毒
- MySQL-Cluster7.2.5安装和配置
- jQuery设置iframe的高度
- 计算机毕业生学士服,特殊毕业季,这些“别人家的高校”为毕业生送上定制版学士服...
- cJSON使用详细教程 | 一个轻量级C语言JSON解析器
- arm 开发环境搭建-基于QEMU和Docker
- python timer详解_Python timer定时器两种常用方法解析
- 入门图形学:Texture3D
- 计算机存储一个字节数是,在计算机中,如果一个存储单元能存放一个字节,则容量为64KB的存储器中的存储单元个数 。...
- 小米12S和红米K50至尊版哪个好
- ubuntu服务器上,求生之路2服务器如何把监听地址改为0.0.0.0
- ME21N采购订单增强-税码字段默认值
- 【名字无关紧要,实战才是唯一】——吾神·娜迦卡布洛斯
- NCBI|叶绿体基因组数据上传
- matlab获取图像某点RGB值、灰度值的方法
- 理解Profiles, Services,Characteristics,UUID等值
- 【FPGA - 基础知识(一)】复位操作
- centos usb转网口_Linux系统入门学习:在CentOS7上改变网络接口名
- 解决TC中Make sure FMS_HOME is set properly