Linux 利用 qemu-system-aarch64 实现 x86 机器安装 arm64 的操作系统
qemu-system-aarch64 启动的虚拟机,无法受到 kvm 的管理,也无法在后台运行,终端一旦断开了,虚拟机就被关掉了,想再次进入目前没找到方法,都会回到安装操作系统的步骤,可能是 `centos` 有某些特殊性吧,暂时没太多时间研究,后期有时间了再看看有没有解决的方案
遇到的问题
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
刷新、
语言设置
时区设置
安装来源
软件选择
磁盘分区
Kdump 配置
网络配置
root 用户密码
创建用户
语言设置
这里我就默认是英文,就不操作了
时区设置
输入 2 之后回车
修改时区
配置 ntp 服务
输入 1 之后回车,修改时区
欧洲
亚洲
美洲
非洲
南极洲
太平洋
澳大利亚
大西洋
印度
北极
美国
etc 时区
输入 2 回车,这里需要再敲一次回车,但是我们可以先看这里面有没有自己想要的时区,比如我选择
上海
,那就是数字 64
因为分辨率的问题,还有其他城市没有展示出来,下面的这个界面,就可以输入 64 然后回车了
安装来源
输入 3 回车
CD/DVD
本地 ISO 文件
网络
可以直接按 c 回车,默认是
本地 ISO 文件
的方式
软件选择
输入 4 回车
因为我下载的是 minimal 的镜像,所以没有其他选择,centos 完整镜像会有很多选项,这一块大家知道是啥内容就可以了,思路和上面的时区配置是一样的,只需要输入对应的数字再回车就好了
我这里就输入 c 继续了
磁盘分区
输入 5 回车
选择磁盘,我这里只有一块 100G 的,只需要输入 c 回车就好了
替换现有 Linux 系统
使用全部的空间
使用空余的空间
我这边就使用默认的,
[x]
在 2 的位置,直接输入 c 回车就可以了
配置分区方案
标准分区
Btrfs
LVM 逻辑卷
LVM 精简资源调配
没其他特殊情况,就用默认的
LVM 逻辑卷
模式,输入 c 直接回车,好像 text 模式就自动分区了…
Kdump 配置
输入 6 回车
开启 kdump
([x]
表示开启,[ ]
表示关闭)kdump 大小
(默认 128 MB)
一般是不开启 kdump,输入 1 之后回车,然后再输入 c 继续
网络配置
输入 7 回车
配置主机名
配置 eth0 网卡
主机名看自己需求要不要配置,我这就输入 2 配置网卡了
配置静态 ipv4 的 ip 地址或者 dhcp 模式
(默认 dhcp)配置 ipv4 的子网掩码
配置 ipv4 的网关
配置 ipv6 静态地址或者 dhcp 模式
配置 ipv6 的网关
配置 dns
重启后自动开启网卡
在安装程序中应用配置
依次输入 7 和 8 之后,输入两次 c 继续后面的设置
root 用户密码
输入 8 回车
密码不是明文显示的,输入密码之后回车就可以了,如果密码太简单,输入 yes 就可以了
创建用户
输入 9 回车
输入 1 回车,开始创建用户
创建用户
([x]
表示创建,[ ]
表示不创建)全名
用户名
配置密码
是否管理员
用户组
输入 2 创建全名后,用户名也会被复用,这里直接输入用户名就可以了,比如我这里创建的用户名是:chen2ha
输入 4 回车,配置用户密码,这时候会多一个选项 5 来配置密码
输入 5 配置密码,这个创建 root 用户密码是一样的操作,没有附加组的情况下,直接输入 c 继续就可以了
安装操作系统
所有配置都显示
[x]
之后,输入 b 回车,开始操作系统的安装,静静的等待安装完成
等待安装完成后,就进入虚拟机了
安装完成后,默认是
ssh
是禁止root
用户登录的,可以使用下面的命令来验证
grep -i rootlogin /etc/ssh/sshd_config
需要打开
root
用户远程登录,就取消PermitRootLogin yes
前面的注释,重启sshd
服务就好了
更多推荐
所有评论(0)