还是计算机系统基础,即将对 arm 架构展开学习,使用的是华为的打开欧拉(openEuler)操作发行版。
进入镜像
- 首先下载虚拟机镜像,老师发的我安装不了,就在清华的镜像站下载了。
$ 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"
- 先调整一下镜像的磁盘大小。
$ qemu-img resize openEuler-20.03-LTS.aarch64.qcow2 +20G
- 启动镜像,注意需要使用引导文件。
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
新建用户,配置管理员权限之类的都是常规操作了,就不用赘述了。