惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
S
Securelist
U
Unit 42
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog
T
Tenable Blog
The Hacker News
The Hacker News
The Register - Security
The Register - Security
IT之家
IT之家
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
博客园_首页
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
A
Arctic Wolf
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
V2EX
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
V
Visual Studio Blog
月光博客
月光博客
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

泠泫凝的异次元空间

通过串口安装Linux | 泠泫凝的异次元空间 curl自编译 | 泠泫凝的异次元空间 Minecraft 认证服务器代理 | 泠泫凝的异次元空间 飞塔分流配置实战 | 泠泫凝的异次元空间 Windows 安全启动证书检查 | 泠泫凝的异次元空间 Lxn-OneDriveCLI | 泠泫凝的异次元空间 华三交换机配置 ERPS 环网 | 泠泫凝的异次元空间 PVE 配置 VLAN 感知 | 泠泫凝的异次元空间 MT7922 无线网卡安装 | 泠泫凝的异次元空间 无显示输出 Linux 主机配置桌面显示 | 泠泫凝的异次元空间 Wireguard 部署 SOP 手册(自用) | 泠泫凝的异次元空间 Zabbix 7.4 通过钉钉发送告警提醒 | 泠泫凝的异次元空间 Debian with xfce 通过 VNC 共享屏幕 华三S6860 IRF堆叠 | 泠泫凝的异次元空间 iPad 应用侧载 | 泠泫凝的异次元空间 Smart DNS 分区解析 | 泠泫凝的异次元空间 建立 NFS 服务器并挂载到客户端 | 泠泫凝的异次元空间 将 Android 以 MTP 方式连接至 Debian PVE 虚拟机迁移至 vCenter | 泠泫凝的异次元空间 vCenter 虚拟机迁移至 PVE | 泠泫凝的异次元空间 PVE迁移时提示密钥验证失败 | 泠泫凝的异次元空间 修改Windows设备设置区域 | 泠泫凝的异次元空间 恢复 SecureCRT 7.x 保存的密码 | 泠泫凝的异次元空间 PVE 超融合下电与上电流程 | 泠泫凝的异次元空间 记一次Zabbix异常处理 | 泠泫凝的异次元空间 苹果设备保存SHSH2 | 泠泫凝的异次元空间 PVE超融合部署 | 泠泫凝的异次元空间 树莓派启用zram | 泠泫凝的异次元空间 在 Hyper-V 上安装 EVE-NG | 泠泫凝的异次元空间 Zabbix 部署与 Windows 硬件信息收集 | 泠泫凝的异次元空间 在WSL2中安装CUDA支持 | 泠泫凝的异次元空间 MinIO 集群部署 | 泠泫凝的异次元空间 vmware 虚拟化平台备份工具 Veeam 12 安装及配置 ubuntu 24.04 安装 nVidia 驱动后网卡消失 XMRig 自编译 | 泠泫凝的异次元空间 云桌面通过组策略统一体验配置 | 泠泫凝的异次元空间 Fortigate SSLVPN 无法连接内网 VNC 服务器 CentOS 7 使用镜像作为本地源并将自身作为YUM源服务器 | 泠泫凝的异次元空间 CentOS 7 离线更新 OpenSSH 服务 使用KubeKey离线部署Kubernetes | 泠泫凝的异次元空间 使用PGP对消息进行签名 | 泠泫凝的异次元空间 禁止MinIO展示桶内文件列表 | 泠泫凝的异次元空间 华为 Fusion Access 云桌面部署 | 泠泫凝的异次元空间 vmware Horizon 模板机部署 | 泠泫凝的异次元空间 vmware Horizon 云桌面与云应用部署 | 泠泫凝的异次元空间 Citrix XenApp 云应用交付 | 泠泫凝的异次元空间 Citrix XenDesktop 云桌面部署 | 泠泫凝的异次元空间 PVE LVM 扩容 | 泠泫凝的异次元空间 Linux 网络聚合(bond方式) | 泠泫凝的异次元空间 Citrix XenServer 7.2 部署教程 | 泠泫凝的异次元空间 在 Windows Server 2019 上安装 AMD 显卡驱动 openEuler 安装并使用 EPEL 源 | 泠泫凝的异次元空间 从已有Linux系统创建带桌面环境的Docker镜像 | 泠泫凝的异次元空间 下载联想原厂镜像及解密 | 泠泫凝的异次元空间 在基于 arm 架构的服务器上安装 PVE | 泠泫凝的异次元空间 自制 EVE-NG 镜像 | 泠泫凝的异次元空间 不使用 Snap 在 ubuntu 上安装 Chromium 浏览器 Fortigate 6.2 固件从 PPPoE 获得 IPv6 地址 Fortigate 手记 | 泠泫凝的异次元空间 Fortigate 通过命令行自定义 NTP 服务器 | 泠泫凝的异次元空间 arm 架构 CentOS 7 安装 MySQL 5.7 版本 ubuntu 20 安装计算卡驱动和 CUDA Toolkit 锐捷诺客云添加设备后一直显示“等待同步” | 泠泫凝的异次元空间 Windows 10 自动登录 | 泠泫凝的异次元空间 OpenWRT IPv6 防火墙设置 | 泠泫凝的异次元空间 k8s 部署踩坑合集 | 泠泫凝的异次元空间 改变 Ubuntu TTY 终端字体 | 泠泫凝的异次元空间 Parted 无损扩容磁盘分区 | 泠泫凝的异次元空间 NTP服务器测试 | 泠泫凝的异次元空间 【相亲相爱】2024祝大家!新年快乐!!! ESXi中重新挂载数据盘 | 泠泫凝的异次元空间 使用 MediaMTX + RTSP 搭建低延迟直播服务器 Firewalld 手记 | 泠泫凝的异次元空间 Ubuntu 上不使用 snapd 安装 Firefox 在 armbian 上安装 xfce 和 VNC 做远程桌面 在 ubuntu 20 上使用 TigerVNC 做远程桌面 在 openEuler 上部署安装 openGauss | 泠泫凝的异次元空间 Wireguard 组网笔记 | 泠泫凝的异次元空间 让特定IP(段)走VPN连接 | 泠泫凝的异次元空间 在Wireguard中排除部分IP(段) | 泠泫凝的异次元空间 CentOS 7 上升级 OpenSSL | 泠泫凝的异次元空间 将黑群晖部署到ESXi(笔记) | 泠泫凝的异次元空间 apk 代码反编译笔记 | 泠泫凝的异次元空间 Windows 搭建 iSCSI 服务器全攻略 | 泠泫凝的异次元空间 CentOS 7 编译安装 Python 3 开源语音识别工具 Whisper | 泠泫凝的异次元空间 Ubuntu 下 Python 编译安装及关联问题解决 | 泠泫凝的异次元空间 Ansible Tower 安装 | 泠泫凝的异次元空间 提高 PowerPoint 导出到图片时的分辨率 | 泠泫凝的异次元空间 利用亚马逊云服务器和VPC 构建安全可靠的虚拟网络 | 泠泫凝的异次元空间 Windows Server 多网卡链路聚合 | 泠泫凝的异次元空间 MT3000路由+移远EC20模块体验 | 泠泫凝的异次元空间 Python安装依赖时出现ctype问题 | 泠泫凝的异次元空间 GL-MT3000日用设置 | 泠泫凝的异次元空间 解除 vCenter 的最低内存限制 | 泠泫凝的异次元空间 跳过Windows 11的强制联网和账户登录 | 泠泫凝的异次元空间 Cloudflare Trace API 信息详解 | 泠泫凝的异次元空间 在CentOS中搭建由nginx反代和Apache2作为后端的Wordpress | 泠泫凝的异次元空间 通过nginx进行文件共享 | 泠泫凝的异次元空间 禁用 sudo 时密码认证 | 泠泫凝的异次元空间
CentOS 7 运行 ARM 架构虚拟机
Lxn's Area · 2023-04-13 · via 泠泫凝的异次元空间

在x86架构的CentOS 7上通过qemu运行ARM架构虚拟机。

注意

截至目前,本文内容总的来说仍存在问题,目前仍在更新,请酌情参考。之后会重写一篇系统性介绍QEMU各架构的编译与用法。跳过glib那块的话(纯文本-nographic)是可以跑通的。

准备阶段

目前新版本的QEMU所需要的编译链和依赖项在CentOS7版本中可能没有或版本较旧无法使用,以下均为我在实际环境中执行后所得结果,除非有特殊标记,否则所有步骤都不能跳过且尽量按照本文顺序执行。

安装基础依赖

  1. 实用工具:
    1
    yum install -y net-tools wget git bzip2 make texinfo
  2. 开发工具和依赖项:
    1
    2
    3
    4
    5
    6
    yum groupinstall 'Development Tools' -y
    yum groupinstall "Virtualization Host" -y
    yum install -y kvm qemu virt-viewer virt-manager libvirt libvirt-python python-virtinst
    yum install libguestfs-tools -y
    yum install virt-install.noarch -y
    yum install python2 zlib-devel glib2-devel pixman-devel -y
  3. 设置libvirtd
    1
    2
    systemctl enable libvirtd
    systemctl start libvirtd
    将当前用户添加到libvirt组:
    1
    usermod -aG libvirt $(whoami)
  4. 安装其他依赖:
    1
    yum install virt-install virt-viewer virt-manager -y

修改QEMU的配置文件

打开/etc/libvirt/qemu.conf,找到如下usergroup行,并取消注释:

1
2
3
4
5
6
7
8
9
10
11






user = "root"



group = "root"

修改保存后重启一下主机。

安装EFI

我这里替换成了清华源。

1
yum install -y http://mirrors4.tuna.tsinghua.edu.cn/centos-altarch/7/os/aarch64/Packages/AAVMF-20180508-6.gitee3198e672e2.el7.noarch.rpm

编译Ninja

  1. 将Ninja的仓库从Github上拉取下来:
    1
    2
    git clone https://github.com/ninja-build/ninja.git && cd ninja
    git checkout release
  2. 执行编译
    1
    ./configure.py --bootstrap
  3. 将Ninja丢到/usr/bin/
    1
    cp ninja /usr/bin/
  4. 在外部执行ninja -h验证是否有正确返回。

安装GCC

这里我们一步到位直接上GCC 9.3。

1
2
3
yum -y install centos-release-scl 
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash

这里通过scl设置完后只是一次性的,重新登录console或重启后失效,如果需要长久使用需要将source /opt/rh/devtoolset-9/enable写入/etc/profile

额外提一嘴:也可以自己编译GCC然后make install,不过参考“在一台Intel Xeon 2.30GHz的48核128GB内存机器上花费228分钟(将近4个小时,不包括make install的时间),编译GCC-8.3.0的GCC版本为4.8.5(64位)。”,时间不充裕的话就算了吧。

看一下版本:

1
2
3
4
5
6
7
8
[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-9/root/usr --mandir=/opt/rh/devtoolset-9/root/usr/share/man --infodir=/opt/rh/devtoolset-9/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --with-default-libstdcxx-abi=gcc4-compatible --enable-plugin --enable-initfini-array --with-isl=/builddir/build/BUILD/gcc-9.3.1-20200408/obj-x86_64-redhat-linux/isl-install --disable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC)

编译 Python 3.7

QEMU 7.2.0版本编译要求Python版本高于或等于3.6即可,这里选择安装3.7版本。

  1. 安装依赖:
    1
    yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel
  2. 下载Python 3.7源码:
    1
    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz -O Python-3.7.0.tgz
  3. 解压:
    1
    2
    tar -zxvf Python-3.7.0.tgz
    cd Python-3.7.0/
  4. 编译:
    1
    2
    3
    ./configure --enable-optimizations
    make -j8
    make install

Python 3.7编译速度还可以,8c8g的机子二十分钟以内能编译完。

编译glib

如果需要启用dbus_display特性则需要glib 2.64及以上版本,如果不需要该特性此步可以跳过。截至我做实验的时候glib的最新版本为2.76.1,本文以此版本为例。

  1. 下载m4源码:
    1
    wget http://mirrors.kernel.org/gnu/m4/m4-latest.tar.gz -O m4-latest.tar.gz
  2. 编译m4:
    1
    2
    3
    cd m4-1.4.19/
    ./configure -prefix=/usr/local
    make&&make install
    验证m4安装好:
    1
    m4 --version
  3. 下载autoconf源码:
    源码地址:Index of /gnu/autoconf
    1
    wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz -O autoconf-2.71.tar.gz --no-check-certificate
  4. 编译autoconf:
    1
    2
    3
    cd autoconf-2.71/
    ./configure -prefix=/usr/local
    make -j4 && make install
  5. 下载libffi源码:
    1
    git clone https://github.com/libffi/libffi.git
  6. 编译libffi:
    1
    2
    3
    4
    cd libffi/
    ./autogen.sh
    ./configure
    make && make install
  7. 把libffi加入系统环境变量
    打开/etc/profile,添加如下内容:
    1
    2
    3
    4
    # libffi
    export LIBFFI_CFLAGS=/usr/local/include
    export LIBFFI_LIBS=/usr/local/lib64/libffi.la
    PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
    应用环境变量:
    1
    source /etc/profile
  8. 安装meson:
    因为从源安装的meson大概率不是最新版本,所以不如直接从pip安装。刚才我们已经装好Python 3.7了,因此直接从pip安装即可。
    1
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple meson
  9. 下载glib源码:
    glib源码仓库,下载直接复制链接即可,会自动301到镜像源。
    1
    wget https://download.gnome.org/sources/glib/2.76/glib-2.76.1.tar.xz -O glib-2.76.1.tar.xz --no-check-certificate
  10. 解压:
    1
    2
    tar -Jxvf glib-2.76.1.tar.xz
    cd glib-2.76.1/
  11. 修改配置文件
    如果与Github的连接有问题的话,需要修改一下subprojects下面的的仓库地址以正确拉取。
  12. 编译:
    1
    meson build

这块没写完,未完待续哈。

编译QEMU

这里以QEMU 7.2.0版本为例。

  1. 下载QEMU源码:
    1
    wget https://download.qemu.org/qemu-7.2.0.tar.bz2 -O qemu-7.2.0.tar.bz2 --no-check-certificate
  2. 解压:
    1
    2
    tar -jxvf qemu-7.2.0.tar.bz2
    cd qemu-7.2.0/
  3. 编译:
    1
    2
    3
    ./configure --target-list=aarch64-softmmu --prefix=/usr
    make -j8
    make install

运行虚拟机

目前来说是通过文本模式运行操作系统,不过我还是想通过图形化运行,之后会研究。

以文本模式运行

1
2
3
4
5
qemu-system-aarch64 \
-m 1024 -cpu cortex-a57 -smp 2 -M virt \
-bios /usr/share/AAVMF/AAVMF_CODE.fd -nographic \
-drive if=none,file=/opt/os/CentOS-7-aarch64-Minimal-2009.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom \
-drive if=none,file=/var/lib/libvirt/images/test.img,id=hd0 -device virtio-blk-device,drive=hd0

 上一篇

Linux Docker