diff --git a/docs/zh/server/installation_upgrade/installation/risc-v-qemu.md b/docs/zh/server/installation_upgrade/installation/risc-v-qemu.md index 6ed7c17dc6524b737124950bc20da4273632ee4c..a169c97a4be65d0a16462989ce41336c7ea83158 100644 --- a/docs/zh/server/installation_upgrade/installation/risc-v-qemu.md +++ b/docs/zh/server/installation_upgrade/installation/risc-v-qemu.md @@ -1,45 +1,29 @@ # 安装指导 -本章以 QEMU 安装为例介绍安装openEuler,其他安装方式参考开发板安装页面。 +本章以 **通过 QEMU 虚拟机安装 RISC-V 架构 openEuler** 为例进行说明,其他安装方式可参考开发板安装页面。 ## 安装 QEMU ### 系统环境 -目前该方案测试过的环境包括 WSL2 (Ubuntu 20.04.4 LTS and Ubuntu 22.04.1 LTS) 和 Ubuntu 22.04.1 live-server LTS。 +目前该方案测试过的环境包括 Ubuntu 22.04.5 LTS 和 Ubuntu 24.04.1 LTS(WSL2)。 ## 安装支持 RISC-V 架构的 QEMU 模拟器 - -安装发行版提供的 `qemu-system-riscv64` 软件包。截止本文档编写时,openEuler 23.09 x86_64 提供 QEMU 6.2.0 (qemu-system-riscv-6.2.0-80.oe2309.x86_64): - +在 openEuler 中,安装软件包 `qemu-system-riscv` 和 `qemu-img`: ``` bash -dnf install -y qemu-system-riscv +dnf install -y qemu-system-riscv qemu-img ``` -由于 QEMU 8.0 及更新版本提供了大量针对 RISC-V 的修复和更新,我们推荐使用 QEMU 8.0 或更新版本以获得更佳体验。下面以 QEMU 8.1.2 为例。 - -### 手动编译安装 - -由于自带的包常常过旧,若软件包过旧,使用以下方案编译和安装。 +在 Ubuntu 中,安装软件包 `qemu-system-misc` 和 `qemu-utils`: ``` bash -wget https://download.qemu.org/qemu-8.1.2.tar.xz -tar -xvf qemu-8.1.2.tar.xz -cd qemu-8.1.2 -mkdir res -cd res -sudo apt install libspice-protocol-dev libepoxy-dev libgtk-3-dev libspice-server-dev build-essential autoconf automake autotools-dev pkg-config bc curl gawk git bison flex texinfo gperf libtool patchutils mingw-w64 libmpc-dev libmpfr-dev libgmp-dev libexpat-dev libfdt-dev zlib1g-dev libglib2.0-dev libpixman-1-dev libncurses5-dev libncursesw5-dev meson libvirglrenderer-dev libsdl2-dev -y -../configure --target-list=riscv64-softmmu,riscv64-linux-user --prefix=/usr/local/bin/qemu-riscv64 --enable-slirp -make -j$(nproc) -sudo make install +sudo apt update && sudo apt install qemu-system-misc qemu-utils ``` -上述指令会将 QEMU 安装到 `/usr/local/bin/qemu-riscv64`。将 `/usr/local/bin/qemu-riscv64/bin` 添加至 `$PATH` 即可使用。 -如需在其他操作系统下,包括 openEuler 下进行编译安装,请参考 [QEMU 官方文档](https://wiki.qemu.org/Hosts/Linux)。 - -openEuler 编译所需依赖包可参考 RHEL / CentOS,如下: +由于 QEMU 8.0 及更新版本提供了大量针对 RISC-V 的修复和更新,我们推荐使用 QEMU 8.0 或更新版本以获得更佳体验。若软件包过旧,可使用以下方案编译和安装,下面以 QEMU 8.1.2 为例。 +### 手动编译安装(适用于 openEuler ) ``` bash sudo dnf install -y git glib2-devel libfdt-devel pixman-devel zlib-devel bzip2 ninja-build python3 \ libaio-devel libcap-ng-devel libiscsi-devel capstone-devel \ @@ -59,21 +43,47 @@ make -j$(nproc) sudo make install ``` +### 手动编译安装(适用于 Ubuntu) + +``` bash +wget https://download.qemu.org/qemu-8.1.2.tar.xz +tar -xvf qemu-8.1.2.tar.xz +cd qemu-8.1.2 +mkdir res +cd res +sudo apt install libspice-protocol-dev libepoxy-dev libgtk-3-dev libspice-server-dev build-essential autoconf automake autotools-dev pkg-config bc curl gawk git bison flex texinfo gperf libtool patchutils mingw-w64 libmpc-dev libmpfr-dev libgmp-dev libexpat-dev libfdt-dev zlib1g-dev libglib2.0-dev libpixman-1-dev libncurses5-dev libncursesw5-dev meson libvirglrenderer-dev libsdl2-dev -y +../configure --target-list=riscv64-softmmu,riscv64-linux-user --prefix=/usr/local/bin/qemu-riscv64 --enable-slirp +make -j$(nproc) +sudo make install +``` + +上述指令会将 QEMU 安装到 `/usr/local/bin/qemu-riscv64`。将 `/usr/local/bin/qemu-riscv64/bin` 添加至 `$PATH` 即可使用。 +在 bash 中,执行 +``` bash +echo 'export PATH=/usr/local/bin/qemu-riscv64/bin:$PATH' >> ~/.bashrc +source ~/.bashrc +``` + +如需在其他操作系统下安装,请参考 [QEMU 官方文档](https://wiki.qemu.org/Hosts/Linux)。 + + ## 准备 openEuler RISC-V 磁盘映像 -### 下载磁盘映像 +### 下载启动文件 -需要下载启动固件 (`fw_payload_oe_uboot_2304.bin`),磁盘映像(`openEuler-23.09-RISC-V-qemu-riscv64.qcow2.xz`)和启动脚本(`start_vm.sh`)。 +需要下载启动固件(包括 `RISCV_VIRT_CODE.fd`、`RISCV_VIRT_VARS.fd`、`fw_dynamic_oe_penglai.bin`),磁盘映像(`openEuler-25.03-riscv64.qcow2.xz`)和启动脚本(`start_vm.sh`)。 ### 下载目录 -目前的构建位于 [openEuler Repo](https://repo.openeuler.org/openEuler-23.09/virtual_machine_img/riscv64/) 中。您也可以访问 [openEuler 官网](https://www.openeuler.org/zh/download/),从其他镜像源获取镜像。 +目前的构建位于 [openEuler Repo](https://repo.openeuler.org/openEuler-25.03/virtual_machine_img/riscv64/) 中。您也可以访问 [openEuler 官网](https://www.openeuler.org/zh/download/),从其他镜像源获取镜像。 ### 内容说明 -- `fw_payload_oe_uboot_2304.bin`: 启动固件 -- `openEuler-23.09-RISC-V-qemu-riscv64.qcow2.xz`: openEuler RISC-V QEMU 虚拟机磁盘映像压缩包 -- `openEuler-23.09-RISC-V-qemu-riscv64.qcow2.xz.sha256sum`: openEuler RISC-V QEMU 虚拟机磁盘映像压缩包的校验。使用 `sha256sum -c openEuler-23.09-RISC-V-qemu-riscv64.qcow2.xz.sha256sum` 校验。 +- `RISCV_VIRT_CODE.fd`: QEMU 启动所需的 UEFI 固件代码段 +- `RISCV_VIRT_VARS.fd`: QEMU 启动所需的 UEFI 固件变量段 +- `fw_dynamic_oe_penglai.bin`: 启动固件 +- `openEuler-25.03-riscv64.qcow2.xz`: openEuler RISC-V QEMU 虚拟机磁盘映像压缩包 +- `openEuler-25.03-riscv64.qcow2.xz.sha256sum`: openEuler RISC-V QEMU 虚拟机磁盘映像压缩包的校验 - `start_vm.sh`: 官方虚拟机启动脚本 ### [可选] 配置 copy-on-write(COW)磁盘 @@ -82,10 +92,10 @@ sudo make install #### 创建新映像 -使用如下的命令创建新的映像,并在下方启动虚拟机时使用新映像。假设原映像为 `openEuler-23.09-RISC-V-qemu-riscv64.qcow2`,新映像为 `test.qcow2`。 +使用如下的命令创建新的映像,并在下方启动虚拟机时使用新映像。假设原映像为 `openEuler-25.03-riscv64.qcow2`,新映像为 `test.qcow2`。 ``` bash -qemu-img create -o backing_file=openEuler-23.09-RISC-V-qemu-riscv64.qcow2,backing_fmt=qcow2 -f qcow2 test.qcow2 +qemu-img create -o backing_file=openEuler-25.03-riscv64.qcow2,backing_fmt=qcow2 -f qcow2 test.qcow2 ``` #### 查看映像信息 @@ -110,7 +120,7 @@ qemu-img rebase -b another.qcow2 test.qcow2 qemu-img commit test.qcow2 ``` -#### 扩容根分区 +### [可选] 扩容根分区 为了扩大根分区以获得更大的可使用空间,按照如下操作进行。 @@ -202,13 +212,13 @@ resize2fs /dev/vda2 ## 启动 openEuler RISC-V 虚拟机 ### 启动虚拟机 +- 确认当前目录内包含 `fw_dynamic_oe_penglai.bin`,磁盘映像压缩包,以及启动脚本。 +- 校验映像压缩包哈希值 `sha256sum -c openEuler-25.03-riscv64.qcow2.xz.sha256sum` +- 解压映像压缩包 `xz -dk openEuler-25.03-riscv64.qcow2.xz` +- 调整启动参数(可选,通过修改`start_vm.sh`) +- 执行启动脚本 `bash start_vm.sh` -- 确认当前目录内包含 `fw_payload_oe_uboot_2304.bin`,磁盘映像压缩包,以及启动脚本。 -- 解压映像压缩包 `xz -dk openEuler-23.09-RISC-V-qemu-riscv64.qcow2.xz` -- 调整启动参数 -- 执行启动脚本 `$ bash start_vm.sh` - -### [可选] 启动参数调整 +### [可选] 调整启动参数 - `vcpu` 为 QEMU 运行线程数,与 CPU 核数没有严格对应。当设定的 `vcpu` 值大于宿主机核心值时,可能导致运行阻塞和速度严重降低。默认为 `4`。 - `memory` 为虚拟机内存大小,可随需要调整。默认为 `2`。 @@ -226,7 +236,7 @@ resize2fs /dev/vda2 Secure Shell(安全外壳协议,简称 SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH 通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。SSH 最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。SSH 使用频率最高的场合是类 Unix 系统,但是 Windows 操作系统也能有限度地使用 SSH。2015 年,微软宣布将在未来的操作系统中提供原生SSH协议支持,Windows 10 1803 及更新版本中已提供 OpenSSH 客户端。 -- 用户名: `root` 或 `openeuler` +- 用户名: `root` - 默认密码: `openEuler12#$` - 登录方式: 参见脚本提示 (或使用您偏好的 ssh 客户端) @@ -234,23 +244,23 @@ Secure Shell(安全外壳协议,简称 SSH)是一种加密的网络传输 ``` bash Authorized users only. All activities may be monitored and reported. +localhost login: root +Password: +Last login: Tue Mar 25 03:45:08 on ttyS0 Authorized users only. All activities may be monitored and reported. -Last login: Sun Oct 15 17:19:52 2023 from 10.0.2.2 -Welcome to 6.4.0-10.1.0.20.oe2309.riscv64 -System information as of time: Sun Oct 15 19:40:07 CST 2023 +Welcome to 6.6.0-72.6.0.56.oe2503.riscv64 -System load: 0.47 -Processes: 161 -Memory used: .7% -Swap used: 0.0% -Usage On: 11% -IP address: 10.0.2.15 -Users online: 1 +System information as of time: Tue Mar 25 03:45:09 AM UTC 2025 -[root@openeuler ~]# +System load: 1.37 +Memory used: 1.6% +Swap used: 0.0% +Usage On: 12% +IP address: 10.0.2.15 +Users online: 1 ``` ### VNC 登录 @@ -281,7 +291,7 @@ cmd="${cmd} -vnc :"$((vnc_port-5900)) ## 修改默认软件源配置 -openEuler 23.09 RISC-V 版本的软件源目前仅包含 [OS] 和 [source] 仓库,而默认配置文件中包含了其他 RISC-V 版本并未提供的仓库。 +openEuler 25.03 RISC-V 版本的软件源目前仅包含 [OS] 和 [source] 仓库,而默认配置文件中包含了其他 RISC-V 版本并未提供的仓库。 用户在使用包管理器安装软件包之前,需要手动编辑软件源配置,移除 [OS] 和 [source] 两节之外的内容。 @@ -310,32 +320,32 @@ vi /etc/yum.repos.d/openEuler.repo [OS] name=OS -baseurl=http://repo.openeuler.org/openEuler-23.09/OS/$basearch/ +baseurl=http://repo.openeuler.org/openEuler-25.03/OS/$basearch/ metalink=https://mirrors.openeuler.org/metalink?repo=$releasever/OS&arch=$basearch metadata_expire=1h enabled=1 gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-23.09/OS/$basearch/RPM-GPG-KEY-openEuler +gpgkey=http://repo.openeuler.org/openEuler-25.03/OS/$basearch/RPM-GPG-KEY-openEuler [source] name=source -baseurl=http://repo.openeuler.org/openEuler-23.09/source/ +baseurl=http://repo.openeuler.org/openEuler-25.03/source/ metalink=https://mirrors.openeuler.org/metalink?repo=$releasever&arch=source metadata_expire=1h enabled=1 gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-23.09/source/RPM-GPG-KEY-openEuler +gpgkey=http://repo.openeuler.org/openEuler-25.03/source/RPM-GPG-KEY-openEuler ``` 接下来就可以正常使用 `dnf` 包管理器进行软件包的安装了。初次安装的时候需要导入 openEuler 的 GPG key,若出现如下提示时,需输入 y 并确认,还请注意。 ``` text -retrieving repo key for OS unencrypted from http://repo.openeuler.org/openEuler-23.09/OS/riscv64/RPM-GPG-KEY-openEuler +retrieving repo key for OS unencrypted from http://repo.openeuler.org/openEuler-25.03/OS/riscv64/RPM-GPG-KEY-openEuler OS 18 kB/s | 2.1 kB 00:00 Importing GPG key 0xB25E7F66: Userid : "private OBS (key without passphrase) " Fingerprint: 12EA 74AC 9DF4 8D46 C69C A0BE D557 065E B25E 7F66 - From : http://repo.openeuler.org/openEuler-23.09/OS/riscv64/RPM-GPG-KEY-openEuler + From : http://repo.openeuler.org/openEuler-25.03/OS/riscv64/RPM-GPG-KEY-openEuler Is this ok [y/N]: y Key imported successfully ```