Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统 1

简介: Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统

遇到的问题

qemu-system-aarch64 启动的虚拟机,无法受到 kvm 的管理,也无法在后台运行

终端一旦断开了,虚拟机就被关掉了,想再次进入目前没找到方法,都会回到安装操作系统的步骤

可能是 centos 有某些特殊性吧,暂时没太多时间研究,后期有时间了再看看有没有解决的方案

安装 qemu-system-aarch64

qemu-5.2.0 和之后的版本都需要使用 python 3.6 以上版本的环境才可以编译,不然会返回下面的报错

ERROR: Cannot use '/usr/bin/python', Python >= 3.6 is required.
       Use --python=/path/to/python to specify a supported Python.

安装依赖

yum install -y qemu-* pixman-devel gcc gcc-c++ make

不安装 pixman-devel 会有下面的报错

ERROR: pixman >= 0.21.8 not present.
       Please install the pixman devel package.

开始编译

wget --no-check-certificate https://download.qemu.org/qemu-4.2.0.tar.xz
tar xf qemu-4.2.0.tar.xz
cd qemu-4.2.0/
./configure --target-list=aarch64-softmmu
make
make install

--target-list 指定需要装的架构,支持的架构非常多,默认这个 参数是 ALL ,太多了,没必要,这里就取自己需要的 aarch64-softmmu

创建 aarch64 操作系统

创建 kvm 存储路径

mkdir -p /data/kvm/iso
cd /data/kvm/iso

准备 aarch64 的 iso 镜像

就还是拿 centos 举个栗子吧

使用的镜像版本高于当前宿主机的版本会有如下报错(而且和当前版本持平也不行,必须低一个子版本......)

Failed to set MokListRT: Invalid Parameter
Something has gone seriously wrong: import_mok_state() failed
: Invalid Parameter
wget -c --no-check-certificate \
https://archive.kernel.org/centos-vault/altarch/7.6.1810/isos/aarch64/CentOS-7-aarch64-Minimal-1804.iso

下载 aarch64 的 UEFI 固件

wget http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/QEMU_EFI.fd -O /data/kvm/QEMU_EFI.fd

创建虚拟磁盘

qemu-img create -f qcow2 /data/kvm/centos-aarch64.qcow2 100G

创建虚拟机

参数相关的,可以参考这篇博客:qemu-system-aarch64 使用和相关参数介绍

qemu-system-aarch64 \
-machine virt \
-cpu cortex-a57 \
-smp 1 \
-m 2048 \
-bios /data/kvm/QEMU_EFI.fd \
-device virtio-scsi-device \
-device scsi-cd,drive=cdrom \
-drive if=none,file=/data/kvm/iso/CentOS-7-aarch64-Minimal-1804.iso,id=cdrom,media=cdrom \
-device virtio-blk-device,drive=vd0 \
-drive if=none,file=/data/kvm/centos-aarch64.qcow2,id=vd0 \
-device virtio-net-device,netdev=eth0 \
-netdev user,id=eth0,hostfwd=tcp:172.72.0.106:10022-:22 \
-nographic

键盘方向键来选择安装

因为没有配置网络,这里是不支持 vnc ,因为没有开图形化,所以只能使用 text 的形式来选择

如果按了方向键出现乱码,可以按住 ctrl 键 + backspace 减来删除

已配置的项目,都会显示 [x]

输入数字 1~9 回车来配置不同的内容,输入 q 退出,输入 b 开始安装,输入 r 刷新、

  1. 语言设置
  2. 时区设置
  3. 安装来源
  4. 软件选择
  5. 磁盘分区
  6. Kdump 配置
  7. 网络配置
  8. root 用户密码
  9. 创建用户
语言设置

这里我就默认是英文,就不操作了

时区设置

输入 2 之后回车

  1. 修改时区
  2. 配置 ntp 服务

输入 1 之后回车,修改时区

  1. 欧洲
  2. 亚洲
  3. 美洲
  4. 非洲
  5. 南极洲
  6. 太平洋
  7. 澳大利亚
  8. 大西洋
  9. 印度
  10. 北极
  11. 美国
  12. etc 时区

输入 2 回车,这里需要再敲一次回车,但是我们可以先看这里面有没有自己想要的时区,比如我选择 上海,那就是数字 64

因为分辨率的问题,还有其他城市没有展示出来,下面的这个界面,就可以输入 64 然后回车了

安装来源

输入 3 回车

  1. CD/DVD
  2. 本地 ISO 文件
  3. 网络

可以直接按 c 回车,默认是 本地 ISO 文件 的方式

软件选择

输入 4 回车

因为我下载的是 minimal 的镜像,所以没有其他选择,centos 完整镜像会有很多选项,这一块大家知道是啥内容就可以了,思路和上面的时区配置是一样的,只需要输入对应的数字再回车就好了

我这里就输入 c 继续了

磁盘分区

输入 5 回车

选择磁盘,我这里只有一块 100G 的,只需要输入 c 回车就好了

  1. 替换现有 Linux 系统
  2. 使用全部的空间
  3. 使用空余的空间

我这边就使用默认的,[x] 在 2 的位置,直接输入 c 回车就可以了

配置分区方案

  1. 标准分区
  2. Btrfs
  3. LVM 逻辑卷
  4. LVM 精简资源调配

没其他特殊情况,就用默认的 LVM 逻辑卷 模式,输入 c 直接回车,好像 text 模式就自动分区了…

目录
相关文章
|
3天前
|
Java Linux Maven
Linux环境下maven的安装
Linux环境下maven的安装
11 0
|
6天前
|
负载均衡 Java 应用服务中间件
nginx安装在linux上
nginx安装在linux上
34 2
|
4天前
|
Unix Linux
Linux/FreeBSD 安装
在Linux/FreeBSD上安装Julia 1.7.2的步骤:从[官方](https://julialang-s3.julialang.org/bin/linux/x64/1.7/julia-1.7.2-linux-x86_64.tar.gz)或[Tsinghua镜像](https://mirrors.tuna.tsinghua.edu.cn/julia-releases/bin/linux/x86/1.7/julia-1.7.2-linux-i686.tar.gz)下载二进制包,然后使用`tar`解压。
|
2天前
|
存储 关系型数据库 MySQL
linux安装MySQL8.0,密码修改权限配置等常规操作详解
linux安装MySQL8.0,密码修改权限配置等常规操作详解
|
2天前
|
Linux Python Windows
Python虚拟环境virtualenv安装保姆级教程(Windows和linux)
Python虚拟环境virtualenv安装保姆级教程(Windows和linux)
|
3天前
|
Ubuntu Linux 开发工具
【专栏】如何在 Linux 上安装和使用 exa?
【4月更文挑战第28天】在Linux上,exa是一个现代化的文件管理系统替代工具,提供直观的文件信息展示。要安装exa,可以在基于Debian的系统(如Ubuntu)上运行`sudo apt install exa`,基于RedHat(如CentOS)的系统运行`sudo yum install exa`,或从源代码编译安装。使用exa的基本命令是`exa`,它列出当前目录的文件和目录。通过选项如`-F`(显示文件类型)、`-h`(人类可读大小)、`-l`(详细信息)和`-s`(排序)可以定制输出。exa还能与其他命令(如grep)结合使用,提升效率。
|
3天前
|
存储 监控 Linux
【专栏】如何在 Linux 中列出已安装的驱动器?
【4月更文挑战第28天】在 Linux 中,了解已安装驱动器是系统管理的关键。本文介绍了三种方法:1) 使用 `lsblk` 命令显示设备名、大小和类型;2) `fdisk -l` 命令提供详细分区信息;3) `gnome-disks` 等系统管理工具展示驱动器信息。此外,还讨论了驱动器类型识别、挂载点概念及其应用。通过这些方法,用户能有效地监控和管理 Linux 系统中的驱动器。
|
3天前
|
存储 安全 数据管理
【专栏】如何在 Rocky Linux 8 上安装和配置 Elasticsearch
【4月更文挑战第28天】本文指导在Rocky Linux 8上安装配置Elasticsearch,包括添加仓库,运行`yum install elasticsearch`进行安装,修改配置文件如`cluster.name`和`network.host`,启动服务并验证其正常运行。同时,文章提及了内存、文件描述符设置及安全配置,并列出常见问题及解决方法,帮助用户成功搭建Elasticsearch。
|
3天前
|
存储 Linux 虚拟化
虚拟机(vmware)中安装linux系统
虚拟机(vmware)中安装linux系统
|
5天前
|
监控 关系型数据库 MySQL