环境
os:centos7
Arch: aarch64
安装qemu-kvm
yum install qemu-kvm kvm virt-install libvirt
systemctl start libvirtd.service
创建镜像
下载aarch64架构的Fedora36镜像
wget https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/36/Cloud/aarch64/images/Fedora-Cloud-Base-36-1.5.aarch64.qcow2 --no-check-certificate
制作一个新的镜像
qemu-img create -f qcow2 -b Fedora-Cloud-Base-36-1.5.aarch64.qcow2 my-fedora.qcow2 20G
创建一个名为meta-data的文件
cat > meta-data << EOF
instance-id: Cloud00
local-hostname: cloud-00
EOF
创建一个名为user-data的文件,内容如下(根据需要修改),这将默认用户设置为cloud密码为password并解锁帐户,以便可以在终端登录(无需 SSH)。也可以添加 SSH 密钥。
cat > user-data << EOF
#cloud-config
# Set the default user
system_info:default_user:name: cloudplain_text_passwd: 'password'groups: [wheel]# Unlock the default user
chpasswd:list: |cloud:passwordexpire: False# Other settings
ssh_pwauth: TrueEOF
Cloud init 在启动时挂载 CD-ROM,因此使用 genisoimage
从这些文件中创建 ISO 映像。
genisoimage -output my-seed.iso -volid cidata -joliet -rock user-data meta-data
virt-install安装启动vm
virt-install \--name fedora\--memory 4096 \--disk my-fedora.qcow2,device=disk,bus=virtio \--disk my-seed.iso,device=cdrom \--os-type linux \--os-variant fedora32 \--virt-type kvm \--graphics none \--network network=default \--import
出现Couldn't configure UEFI: Did not find any UEFI binary path for arch 'aarch64'
问题,原因是kvm没有 UEFI,需要更新最新的 libvirt和uefi package
#在/etc/yum.repos.d/添加libvirt.repo文件
cat > libvirt.repo << EOF
[libvirt-latest]
baseurl = https://buildlogs.centos.org/centos/7/virt/aarch64/libvirt-latest/
enabled = 1
gpgcheck = 0
name = kvm common for CentOS7
EOFwget https://www.kraxel.org/repos/firmware.repo -O /etc/yum.repos.d/firmware.repoyum update libvirt
yum install edk2.git-aarch64#在/etc/libvirt/qemu.conf文件中添加
nvram = ["/usr/share/edk2.git/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2.git/aarch64/vars-template-pflash.raw"]#重启libvirtd.service
systemctl restart libvirtd.service#重新执行virt-install
启动后使用user-data中设置的账号密码登录。
安装好vm后可以通过sudo virsh edit fedora
来修改虚拟机配置,如内存大小、cpu数量等,修改前需要关闭虚拟机virsh shutdown fedora
,修改完成后virsh start fedora
启动虚拟机,然后通过virsh console fedora
登录(退出为ctrl+]
),也可以通过ssh登录,例如ssh cloud@192.168.122.119
更换国内源(清华源)
参考https://mirrors.tuna.tsinghua.edu.cn/help/fedora/
备份文件
#备份文件
cd /etc/yum.repos.d/
sudo mkdir backup/
sudo cp *repo backup/
修改/etc/yum.repos.d/fedora.repo
[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Everything/$basearch/os/
metadata_expire=28d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
/etc/yum.repos.d/fedora-updates.repo
[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Everything/$basearch/
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
fedora-modular 仓库 (/etc/yum.repos.d/fedora-modular.repo)
[fedora-modular]
name=Fedora Modular $releasever - $basearch
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Modular/$basearch/os/
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
updates-modular 仓库 (/etc/yum.repos.d/fedora-updates-modular.repo)
[updates-modular]
name=Fedora Modular $releasever - $basearch - Updates
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Modular/$basearch/
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
更新本地缓存
sudo yum makecache