还是计算机系统基础,即将对 arm 架构展开学习,使用的是华为的打开欧拉(openEuler)操作发行版。

进入镜像

  1. 首先下载虚拟机镜像,老师发的我安装不了,就在清华的镜像站下载了。
$ aria2c -x 15 -s 2 "https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-20.03-LTS/virtual_machine_img/aarch64/openEuler-20.03-LTS.aarch64.qcow2.xz"
  1. 先调整一下镜像的磁盘大小。
$ qemu-img resize openEuler-20.03-LTS.aarch64.qcow2 +20G
  1. 启动镜像,注意需要使用引导文件。
qemu-system-aarch64 -m 4096 \
        -cpu cortex-a57 \
        -smp 4 \
        -M virt \
        -bios edk2-aarch64-code.fd \
        -hda openEuler-20.03-LTS.aarch64.qcow2 \
        -nographic \

配置网络

配置网络这部分,尤其是网卡那部分我不是很懂,基本上是照着教程来做。

虽然 QEMU 的字符界面用起来很顺手,几乎和使用了 ssh 连接一样,但是在一些 curses 库的 TUI 界面中显示不佳,我还是准备使用 ssh 。

总所周知,虚拟机有多种连接网络的方式,这次配置我使用的是“用户网络”的方式,然后将端口 22 和主机端口 10021 绑定。

#!/bin/bash
qemu-system-aarch64 -m 4096 \
        -cpu cortex-a57 \
        -smp 4 \
        -M virt \
        -bios edk2-aarch64-code.fd \
        -net nic,model=e1000 \
        -net user,hostfwd=tcp::10021-:22 \
        -hda openEuler-20.03-LTS.aarch64.qcow2 \
        -nographic

使用脚本进入后发现没有 ip ,说明网卡配置还不正确。

创建并编辑/etc/sysconfig/newwork-scipts/ifcfg-eth0文件。使用nmcli c查看 UUID ,使用ifconfig查看 MAC 地址。

DEVICE=eth0
HWADDR=52:54:00:12:34:56
UUID=e449c48a-45a7-3db7-8cf3-349bd209b064
NM_CONTROLLED=yes
ONBOOT=yes
BOOTPROTO=dhcp
type=Ethernet
IPV6INIT=no
USERCTL=no

重启 NetworkManager 和使 ssh 自启动。

$ systemctl restart NetworkManager
$ systemctl enable sshd

打开网卡并测试。

$ ifup eth0
$ ping baidu.com

使用 ssh 连接。

$ ssh -p 10021 root@localhost

配置软件

创建并编辑/etc/yum.repos.d/openEuler.repo

[OS]
name=openEuler-$releasever - OS
baseurl=https://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler

[update]
name=openEuler-$releasever - Update
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/RPM-GPG-KEY-openEuler

[extras]
name=openEuler-$releasever - Extras
baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/extras/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/extras/$basearch/RPM-GPG-KEY-openEuler

安装常用软件。

$ dnf install gcc gcc-c++ libstdc++-devel gdb nasm

新建用户,配置管理员权限之类的都是常规操作了,就不用赘述了。