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系统相关推荐

  1. ubuntu虚拟机中使用QEMU搭建ARM64环境

    软件环境: 平台:ubuntu20.04 kernel版本:linux 4.14.221 qemu版本:6.2.92 qemu模拟环境:ARM64 gcc version :9.4.0 交叉编译工具链 ...

  2. ubuntu 20.04中sources.list文件恢复系统默认源

    前言 ubuntu 20.04中sources.list文件恢复系统默认源 小白学习,误该后改不回来,找了很久才找到,做个记录 一.sources.list文件恢复系统默认源 1.进入编辑 sourc ...

  3. QEMU搭建arm64 Linux调试环境

    https://zhuanlan.zhihu.com/p/345232459 简述 本文记录了在ubuntu20.04上,使用QEMU搭建arm64 的Linux开发调试环境.可以方便得使用gdb调试 ...

  4. 零基础 Ubuntu 20.04.01 下搭建51单片机开发环境[开源编译器SDCC]

    原创首发于CSDN,转载请注明出处,谢谢! 文章目录 为何会在Linux下开发单片机 个人系统环境与所用开发板 安装开源编译器 sdcc STC MCU ISP 闪存工具 stcgal 的安装 单片机 ...

  5. 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 ...

  6. 基于ubuntu 20.04与cri-docker 搭建部署高可用k8s 1.25.3

    目录 一.overlay简介 二.overlay通信过程 三.overlay应用场景 四.underlay简介 五.underlay实现模式简介 六.MAC Vlan工作模式 七.kubernetes ...

  7. Ubuntu 20.04 VNC server 搭建及客户端访问

    vnc server安装 sudo su root apt-get update apt install gnome-panel gnome-settings-daemon metacity naut ...

  8. Ubuntu 20.04 LTS Server搭建软路由

    首先是安装Ubuntu 20.04 LTS Server,这个步骤网上都可以找到 注意的是,安装的时候开启openssh-server 下述步骤是是指定安装好Ubuntu 20.04 LTS Serv ...

  9. Linux(Ubuntu 20.04 LTS)之shell使用基础教程

    Linux(Ubuntu 20.04 LTS)之shell使用基础教程 我在此使用的是VMware虚拟机安装的Ubuntu 20.04 LTS. Shell是linux系统的用户界面.Shell即是一 ...

最新文章

  1. Cython——[FutureWarning: Cython directive ‘language_level’ not set, using 2 for now (Py2)]解决方案
  2. python 复制文件_10 行 Python 代码写 1 个 USB 病毒
  3. MySQL-Cluster7.2.5安装和配置
  4. jQuery设置iframe的高度
  5. 计算机毕业生学士服,特殊毕业季,这些“别人家的高校”为毕业生送上定制版学士服...
  6. cJSON使用详细教程 | 一个轻量级C语言JSON解析器
  7. arm 开发环境搭建-基于QEMU和Docker
  8. python timer详解_Python timer定时器两种常用方法解析
  9. 入门图形学:Texture3D
  10. 计算机存储一个字节数是,在计算机中,如果一个存储单元能存放一个字节,则容量为64KB的存储器中的存储单元个数 。...
  11. 小米12S和红米K50至尊版哪个好
  12. ubuntu服务器上,求生之路2服务器如何把监听地址改为0.0.0.0
  13. ME21N采购订单增强-税码字段默认值
  14. 【名字无关紧要,实战才是唯一】——吾神·娜迦卡布洛斯
  15. NCBI|叶绿体基因组数据上传
  16. matlab获取图像某点RGB值、灰度值的方法
  17. 理解Profiles, Services,Characteristics,UUID等值
  18. 【FPGA - 基础知识(一)】复位操作
  19. centos usb转网口_Linux系统入门学习:在CentOS7上改变网络接口名
  20. 解决TC中Make sure FMS_HOME is set properly

热门文章

  1. 智慧扫码点餐系统源码
  2. 图像分类之花卉图像分类(五)测试数据
  3. ConcurrentHashMap cas操作以及AtomicLongMap类
  4. 超好用的视频图片去除水印软件免费下载
  5. 用手机画画什么触控笔比较好?性价比高的触控笔推荐
  6. hive sql趣味题-求两两的共同好友
  7. 【化学信息学】药物设计中的生物电子等排体
  8. 代码随想录训练营第二天|LeetCode977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
  9. RS232标准中的RTS与CTS
  10. 多孔石墨烯基纳米材料Lammps实现(复现SCIENCE ADVANCES)