最近工作中需要给 ARM 架构的服务器安装 Python 的 Conda 开发环境,而且服务器不能连接外网。手动安装有些繁琐,最方便的方式是在另一台相同配置的机器上安装好,然后将环境整体打包上传到服务器。
但是我手头的电脑都是 x86 架构,在不购买云服务器的情况下,怎样才能弄一台 ARM 的机器呢?查了一下有一个虚拟机软件叫 QEMU,可以安装 ARM 的镜像,虽然性能有很大的折扣,但是是完全能用的,可以满足我测试环境的需求,下面就把这一过程记录一下。
安装步骤
下载前置所需文件:
CentOS7 系统镜像:https://mirrors.bfsu.edu.cn/centos-altarch/7.9.2009/isos/aarch64/CentOS-7-aarch64-Minimal-2009.iso
Miniforge 安装包:https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
UEFI 固件:http://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/
我使用的操作系统是 Ubuntu20,首先使用 APT 自动安装 QEMU:
sudo apt install -y qemu-system-arm
创建一个 .img 的虚拟机文件,类似使用 VMware 时创建的 .vmdx 文件:
qemu-img create -f raw -o size=40G CentOS_7_aarch64.img
开始安装虚拟机:
qemu-system-aarch64 \
-m 2048 \
-cpu cortex-a57 \
-smp 2 \
-M virt \
-bios QEMU_EFI.fd \
-nographic \
-drive if=none,file=CentOS-7-aarch64-Minimal-2009.iso,id=cdrom,media=cdrom \
-device virtio-scsi-device \
-device scsi-cd,drive=cdrom \
-drive if=none,file=CentOS_7_aarch64.img,id=hd0 \
-device virtio-blk-device,drive=hd0
因为要指定虚拟机的各项配置信息,所以这个命令非常冗长。为了阅读方便,每个参数结束后后换行一次。这个安装界面全部是基于文字的,但设计思路与图形界面类似,根据提示操作即可。
下面进入安装过程,选择数字选项进入设置
1语言不用改,2设置时区亚洲/上海,5设置磁盘,7设置主机名和网络,8设置root密码,9创建用户设置密码赋予管理员权限,r更新,b进行安装,大约40分钟
命令行配置系统
上面创建虚拟机命令最终需要你配置系统基础设置,带 [!]
基本都是要配置的,按照顺序往下配置,按对用的数字以此进行设置。
Installation
1) [x] Language settings 2) [!] Timezone settings
(English (United States)) (Timezone is not set.)
3) [!] Installation source 4) [!] Software selection
(Processing...) (Processing...)
5) [!] Installation Destination 6) [x] Kdump
(No disks selected) (Kdump is enabled)
7) [ ] Network configuration 8) [!] Root password
(Not connected) (Password is not set.)
9) [!] User creation
(No user will be created)
Please make your choice from above ['q' to quit | 'b' to begin installation |
'r' to refresh]:
- Timezone settings 时区设置选择
5) Asia亚洲
,再选择城市62) Shanghai上海
Available regions
1) Africa 6) Atlantic 10) Pacific
2) America 7) Australia 11) US
3) Antarctica 8) Europe 12) Etc
4) Arctic 9) Indian
5) Asia
Please select the timezone.
Use numbers or type names directly [b to region list, q to quit]: 5
--------------------
8) Baghdad 35) Kathmandu 61) Seoul
9) Bahrain 36) Khandyga 62) Shanghai
10) Baku 37) Kolkata 63) Singapore
26) Hong_Kong 53) Pontianak
27) Hovd
Please select the timezone.
Use numbers or type names directly [b to region list, q to quit]: 62
- Installation source 安装源输入数字
2
Choose an installation source type.
1) CD/DVD
2) local ISO file
3) Network
Please make your choice from above ['q' to quit | 'c' to continue |
'r' to refresh]: 2
- Software selection 软件选择
Base environment
Software selection
Base environment
1) [x] Minimal Install
Please make your choice from above ['q' to quit | 'c' to continue |
'r' to refresh]:
- Installation Destination 安装目的地
Installation Destination
[x] 1) : 40 GiB (vda)
1 disk selected; 40 GiB capacity; 40 GiB free ...
Please make your choice from above ['q' to quit | 'c' to continue |
'r' to refresh]: c
Autopartitioning Options 自动分区选项
[ ] 1) Replace Existing Linux system(s) 替换现有的Linux系统
[x] 2) Use All Space 使用所有空间
[ ] 3) Use Free Space 使用可用空间
================================================================================
Partition Scheme Options 分区方案选项
[ ] 1) Standard Partition 标准分区
[ ] 2) Btrfs Btrfs
[x] 3) LVM LVM(逻辑卷管理)
[ ] 4) LVM Thin Provisioning 精简配置
Select a partition scheme configuration.
Please make your choice from above ['q' to quit | 'c' to continue |
'r' to refresh]: c
此处也可以只设置 Root 密码
和Installation Destination 安装目的地
其它进入系统设置比如时区设置如下:
echo "TZ='Asia/Shanghai'; export TZ" >> /etc/profile
开启 sshd 服务:
安装好之后,默认命令行界面比较小,无法显示完整的命令,开启 sshd 服务会方便一些。
使用 sudo 权限编辑 /etc/ssh/sshd_config 文件,解除以下内容的注释:
Port 22
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin yes
PasswordAuthentication yes
开启 ssh 服务:
sudo service sshd start
验证 sshd 服务是否开启:
ps -e | grep sshd
netstat -an | grep 22
使用 sudo poweroff 关机后启动系统,需要添加转发 22 端口的配置:
qemu-system-aarch64 \
-m 2048 \
-cpu cortex-a57 \
-smp 2 \
-M virt \
-bios QEMU_EFI.fd \
-nographic \
-drive if=none,id=system,format=raw,media=disk,file=CentOS_7_aarch64.img \
-device ramfb \
-device qemu-xhci,id=xhci -usb \
-device usb-kbd \
-device usb-mouse \
-device usb-tablet \
-k en-us \
-device virtio-blk,drive=system,bootindex=0 \
-net user,hostfwd=tcp::10021-:22 \
-net nic
在本机使用 ssh 连接虚拟机:
ssh -p 10021 tom@127.0.0.1
参考资料
X86 平台安装 ARM 虚拟机:https://www.cnblogs.com/linuxxl/p/11658387.html
Centos7 开启 SSH 服务:https://www.cnblogs.com/kinwing/p/11134179.html
Miniforge Github 仓库:https://github.com/conda-forge/miniforge
QEMU 官网:https://www.qemu.org/
Linux Mint 官网:https://www.linuxmint.com/