Windows、macOS、liunx下使用qemu搭建riscv64/linux

背景

在Windows、macOS和Linux環境下使用QEMU搭建RISC-V 64位Linux系統,網絡上存在大量過時、不完整或錯誤的教程。且部分AI生成的內容“幻覺”現象嚴重,導致關鍵步驟錯誤且難以進行。為確保可靠性,本教程基于最新實測驗證,涵蓋三種操作系統環境,并以Casibase項目作為下游任務進行了搭建部署,如果讀者需要在riscv64部署、運行golang + react + mysql服務,可以參考下篇文章。

所有必要工具及文件的下載鏈接均來自官方源,避免因第三方托管導致的版本混亂或安全風險。以下內容經過完整測試,確保從環境配置到系統啟動的每一步均可復現。

關于Casibase

介紹:??AI Cloud OS: Open-source enterprise-level AI knowledge base and MCP (model-context-protocol)/A2A (agent-to-agent) management platform with admin UI, user management and Single-Sign-On??, supports ChatGPT, Claude, Llama, Ollama, HuggingFace, etc., chat bot demo:?https://ai.casibase.com, admin UI demo:?https://ai-admin.casibase.com

GitHub倉庫:https://github.com/casibase/casibase

官網:casibase.org

目標

分別在Windows、macOS、liunx下使用qemu搭建基于Debian的riscv64/linux系統。

我們需要三個必要的軟件:

  • QEMU
  • OpenSBI:一個開源項目:RISC-V Open Source Supervisor Binary Interface,SBI 是在 RISC-V 模式運行的硬件和操作系統之間的層,有點類似 BIOS。
  • U-Boot:一個開源的主引導加載程序,提供一系列用于引導操作系統內核的指令。

環境部署

一、Windows

? ? ? ?1.?從官網下載QEMU

?Download QEMU - QEMU?該下載鏈接簡短清晰,閱讀后直接下載即可。

? ? ? ? 2. 下載 OpenSBI 和 U-Boot

????????無需源碼構建(復雜),直接從 De-bian Archive 中下載預編譯的版本即可。

  • OpenSBI:Debian -- Details of package opensbi in sid
  • U-Boot:Debian -- Details of package u-boot-qemu in sid

????????下載會得到兩個?.deb?軟件包。這是Debian系統的軟件包文件,我們僅需要內部的fw_jump.elf和uboot.elf文件。所以,只需要解壓出這個.deb文件即可。

????????Windows下可以使用第三方解壓軟件,如7-Zip等。解壓后,繼續解壓data.tar.xz文件,形成usr目錄。之后按路徑:basePath\usr\lib\riscv64-linux-gnu\opensbi\generic\fw_jump.elf和basePath\usr\lib\u-boot\qemu-riscv64_smode\uboot.elf拿到對應要的文件(可以遷移到任何位置,并不依賴當前包下其他文件起作用)。

? ? ?3. 下載riscv64 QCOW2 虛擬磁盤。?

? ? ? ? 不需要自己去構建,直接使用Debian Quick Image Baker pre-baked images預編譯鏡像:Debian Quick Image Baker pre-baked images?下載 Release architectures---->Images for riscv64-virt項。下載后是一個無后綴的文件,將其重命名為zip后綴,然后解壓。得到關鍵文件:image.qcow2

至此,結束前期準備,可以啟動qemu riscv64了。請翻閱文末。

二、Linux

? ? ? ? 前言:qemu可從官網下載,OpenSBI、 U-Boot、QCOW2并不吃操作系統差異,所以即使按照window的配置流程進行也完全沒問題,只不過命令有差異而已。但是如Linux/macOS這類操作系統的包管理命令(apt、yum)可以很方便幫我們完成上述工作(缺點:包比較老舊,但是實測可用,未發生不兼容情況)。所以下文以Debian/ubuntu為例進行:

? ? ? ? 0. 安裝依賴包:

sudo apt-get install build-essential pkg-config libboost-all-dev autoconf libtool libssl-dev flex bison ninja-build libglib2.0-dev ? ?libpixman-1-dev libslirp-dev libncurses5-dev libncursesw5-dev?

? ? ? ?1.?下載QEMU

Arch:?pacman -S qemuDebian/Ubuntu:
For full system emulation:?apt-get install qemu-system
For emulating Linux binaries:?apt-get install qemu-user-static
Fedora:?dnf install @virtualizationGentoo:?emerge --ask app-emulation/qemuRHEL/CentOS:?yum install qemu-kvmSUSE:?zypper install qemu

? ? ? ? 驗證:qemu-system-riscv64 --version

? ? ? ? 2. 下載 OpenSBI 和 U-Boot

sudo apt update
sudo apt install qemu-system-misc opensbi u-boot-qemu

? ? ?3. 下載riscv64 QCOW2 虛擬磁盤。?

? ? ? ? 不需要自己去構建,直接使用Debian Quick Image Baker pre-baked images預編譯鏡像:Debian Quick Image Baker pre-baked images?下載 Release architectures---->Images for riscv64-virt項。下載后是一個無后綴的文件,將其重命名為zip后綴,然后解壓。得到關鍵文件:image.qcow2:

# 下載鏡像
wget -O dqib_riscv64-virt.zip "https://gitlab.com/api/v4/projects/giomasce%2Fdqib/jobs/artifacts/master/download?job=convert_riscv64-virt"# 重命名并解壓
unzip dqib_riscv64-virt.zip# 顯示文件列表
ls -la

至此,結束前期準備,可以啟動qemu riscv64了。請翻閱文末。

三、MacOS

? ? ? ? 前言:qemu可從官網下載,OpenSBI、 U-Boot、QCOW2并不吃操作系統差異,所以即使按照window的配置流程進行也完全沒問題,只不過命令有差異而已。但是如Linux/macOS這類操作系統的包管理命令(apt、yum、brew)可以很方便幫我們完成上述工作(缺點:包比較老舊,但是實測可用,未發生不兼容情況)。所以下文以Debian/ubuntu為例進行:

? ? ? ?1.?下載QEMU

brew install qemu

? ? ? ? 驗證:qemu-system-riscv64 --version

? ? ? ? 2. 下載 OpenSBI 和 U-Boot

?無需源碼構建(復雜),直接從 De-bian Archive 中下載預編譯的版本即可。

  • OpenSBI:Debian -- Details of package opensbi in sid
  • U-Boot:Debian -- Details of package u-boot-qemu in sid

????????下載會得到兩個?.deb?軟件包。這是Debian系統的軟件包文件,我們僅需要內部的fw_jump.elf和uboot.elf文件。所以,只需要解壓出這個.deb文件即可。

????????MacOS下可以使用“ar?-x 文件名”進行解壓。解壓后,繼續解壓data.tar.xz文件,形成usr目錄。之后按路徑:basePath\usr\lib\riscv64-linux-gnu\opensbi\generic\fw_jump.elf和basePath\usr\lib\u-boot\qemu-riscv64_smode\uboot.elf拿到對應要的文件(可以遷移到任何位置,并不依賴當前包下其他文件起作用)。

? ? ? ? 3. 下載riscv64 QCOW2 虛擬磁盤。?

? ? ? ? 不需要自己去構建,直接使用Debian Quick Image Baker pre-baked images預編譯鏡像:Debian Quick Image Baker pre-baked images?下載 Release architectures---->Images for riscv64-virt項。下載后是一個無后綴的文件,將其重命名為zip后綴,然后解壓。得到關鍵文件:image.qcow2:

# 下載鏡像
wget -O dqib_riscv64-virt.zip "https://gitlab.com/api/v4/projects/giomasce%2Fdqib/jobs/artifacts/master/download?job=convert_riscv64-virt"# 重命名并解壓
unzip dqib_riscv64-virt.zip# 顯示文件列表
ls -la

至此,結束前期準備,可以啟動qemu riscv64了。請翻閱文末。

四、啟動

建議把前期的四個工具的文件都整到一起,便于管理(qemu、OpenSBI、 U-Boot、QCOW2)

qemu riscv64/linux啟動命令:

qemu-system-riscv64 -machine virt -m 8G -smp 8 -cpu rv64 \
-device virtio-blk-device,drive=hd \
-drive file=image.qcow2,if=none,id=hd \
-device virtio-net-device,netdev=net \
-netdev user,id=net,hostfwd=tcp::2222-:22,hostfwd=tcp::14000-:14000 \
-bios ~/riscv-linux/opensbi-1.3-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.elf \
-kernel ~/riscv-linux/usr/lib/u-boot/qemu-riscv64_smode/uboot.elf \
-object rng-random,filename=/dev/urandom,id=rng \
-device virtio-rng-device,rng=rng \
-nographic -append "root=LABEL=rootfs console=ttyS0"

注意:

? ? ? ? 1. -drive file參數,后面跟著的是QCOW2的image.qcow2文件。注意路徑要正確。

????????2. -bios 參數,后面跟著的是opensbi的elf文件。注意路徑要正確。

? ? ? ? 3. -kernel參數,后面跟著的是u-boot的elf文件。注意路徑要正確。

? ? ? ? 4. 第一行-m、-smp參數,后面跟著的分別是內存和核心數,要根據自己電腦配置來,不然啟動會失敗,建議不要吝嗇,因為qemu本身把riscv命令變為?86等命令就很耗時,再加上riscv架構上許多應用適配不好,進一步加劇性能損耗,不加大內存和核心數的話很容易卡死riscv系統。

? ? ? ? 5. -netdev參數,后面跟著的是要映射的主機端口,因為riscv和本機默認是NAT方式。如果我們希望riscv中的某些端口可以被外界訪問,那么就需要配置映射,例如,本例中增加了14000作為映射端口,希望可以在宿主機使用localhost:14000的方式訪問riscv服務。(建議保留2222-:22的映射)。

? ? ? ? 6. 此外的報錯,碰見缺啥依賴包下載啥就行了,都是包管理工具直接下載的包。

四、補充

下載下來的riscv64 QCOW2 虛擬磁盤默認是10G大小,很多情況下根本不夠用。如果未來出現問題,可以進行擴容:

? ? ? ? 1. 進入到image.qcow2所在文件夾下,執行:

qemu-img resize image.qcow2 +10G

? ? ? ? 2.??擴容

# 更新包列表
sudo apt update# 安裝cloud-guest-utils包(包含growpart工具)
sudo apt install cloud-guest-utils# 查看磁盤分區
sudo fdisk -l# 擴展第一個分區到最大可用空間
sudo growpart /dev/vda 1# 驗證分區是否擴展成功
sudo fdisk -l /dev/vda# 檢查文件系統類型
df -T /# 如果是ext4文件系統
sudo resize2fs /dev/vda1# 如果是xfs文件系統
sudo xfs_growfs /# 驗證擴展結果
df -h /

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915083.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915083.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915083.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡單使用MCP

1、說明# 測試環境服務器 CPU數量:2核 內存:4GB 磁盤:50GB# 補充 如果不想使用Docker進行操作,只需要跳過Docker相關命令操作 即:使用Ollama運行模型,使用Python來創建MCP2、安裝Docker# 安裝Docker https:…

電腦裝機軟件一鍵安裝管理器

軟件使用 現在的裝機軟件很多,主要幾種類型就是辦公、看圖、影音、下載等,如果每次裝機之后,手動一個一個去安裝,費時費力還容易安裝到全家桶。 就有人整理了網絡上常用的一系列裝機軟件純凈和諧版本,并打包到一起&a…

深度學習入門-深度學習簡介

深度學習是加深了層的深度神經網絡。只需通過疊加層,就可以創建深度網絡。1、 加深網絡將深度學習中的重要技術(構成神經網絡的各種層、學習時的有效技巧、對圖像特別有效的CNN、參數的最優化方法等)匯總起來,創建一個深度網絡&am…

Linux 下安裝DM8數據庫詳細教程

Linux 下安裝DM8數據庫詳細教程 一、環境準備 1.操作系統要求 DM 數據庫支持多種操作系統,如 Windows、Linux 等。對于 Linux 系統,確保內核版本符合要求,例如 CentOS 7 或更高版本。同時,要保證系統有足夠的磁盤空間(建議至少 10GB 以上)和內存(至少 1GB 以上)。 對…

搭建基于Gitee文檔筆記自動發布

搭建基于Gitee文檔筆記自動發布由于現在gitee不支持代理靜態頁面,并且github.io需要VPN,實際使用的話gitee更為方便。一、為服務器和個人PC添加免密push和pull 參考鏈接:https://help.gitee.com/base/account/SSH%E5%85%AC%E9%92%A5%E8%AE%BE…

【Lua】閉包可能會導致的變量問題

先思考下面這個問題:local function counter()local count 0return function()count count 1return countend endlocal a counter() local b counter()print(a()) --> ? print(a()) --> ? print(b()) --> ? print(a()) --> ?輸出結果&#xff…

可觀測性、OpenTracing、OpenCensus、OpenTelemetry、Jaeger

監控與觀測 隨著軟件應用從單片架構向分布式微服務體系轉變,應用監控(Monitoring)和觀測(Observability)的需求也隨之提升。兩者存在相同的定義,目的都是為了發現應用程序中的問題。但還是有差別: 監控:目的是為了捕獲已知的問題…

Linux下使用原始socket收發數據包

在Linux系統中,使用非原始的socket,可以收發TCP或者UDP等網絡層數據包。如果要處理網絡層以下的數據包,比如ICMP、ARP等,或者更底層,比如鏈路層數據包,就得使用原始socket了。 創建socket 創建socket要使用…

暑期自學嵌入式——Day05補充(C語言階段)

接續上文:暑期自學嵌入式——Day05(C語言階段)-CSDN博客 主頁點關注不迷路喲。你的點贊、收藏,一鍵三連,是我持續更新的動力喲!!! 主頁: 一位搞嵌入式的 genius-CSDN博…

.NET Core EFCore零基礎快速入門簡單使用

一、什么是 Entity Framework (EF) Core Entity Framework (EF) Core 是輕量化、可擴展和跨平臺版的對象關系映射程序 (O/RM)數據訪問技術,。 它將開發人員從編寫大量 SQL 語句中解放出來。 二、EF的相關程序包 Microsoft.EntityFrameworkCore 核心程序包&#x…

AAC音頻格式

目錄 AAC音頻格式介紹 主要特點 技術優勢 常見文件擴展名 應用領域 AAC與PCM的區別與優勢對比 基本概念差異 主要技術區別 各自優勢 PCM的優勢 AAC的優勢 應用場景選擇 AAC音頻數據格式解析 1. AAC 文件格式 (1) ADIF (Audio Data Interchange Format) (2) ADT…

pom.xml文件中的${}變量從哪里傳值

在 Maven 的 pom.xml 文件中,${} 格式的變量(稱為屬性占位符)的值來源主要有以下幾種途徑: 1. ?內置屬性(Maven 預定義)?? ${project.basedir}:項目根目錄${project.version}:項…

【人工智能】項目案例分析:使用TensorFlow進行大規模對象檢測

????歡迎大家來到我們的天空???? ?? 作者簡介:我們的天空 ??《頭銜》:大廠高級軟件測試工程師,阿里云開發者社區專家博主,CSDN人工智能領域新星創作者。 ??《博客》:人工智能,深度學習,機器學習,python,自然語言處理,AIGC等分享。 所屬的專欄:TensorF…

C++---cout、cerr、clog

在C編程里,cout、cerr和clog是標準庫提供的重要輸出流對象,在數據輸出方面發揮著關鍵作用。 一、cout:標準輸出流 cout 是 std::ostream 類的對象,其作用是向標準輸出設備(一般是控制臺)輸出數據。它和 C 語…

脈沖神經網絡(Spiking Neural Network, SNN)與知識蒸餾(Knowledge Distillation, KD)

目錄 脈沖神經網絡(Spiking Neural Network, SNN) 知識蒸餾(Knowledge Distillation, KD) 三種類別 三種變體 脈沖神經網絡(Spiking Neural Network, SNN) 收到生物神經系統的啟發,設計的&a…

使用Java完成下面項目

第一題:從控制臺輸入十個學生的成績,使用list集合來保存數據, 遍歷并打印其中成績不及格的成績,打印最高成績,最低成績,并計算及格率代碼如下public class Home1 {public static void main(String[] args) …

龍虎榜——20250718

上證指數今天上漲收陽線,繼續在5天均線保持強勢上漲,個股下跌稍多,大盤股上漲為主。深證指數收小陽線,繼續在5天均線上,總體保持強勢,調整更多是小票。2025年7月18日龍虎榜行業方向分析1. 醫藥醫療? 代表標…

2025年華為認證之HCIE-云計算方向的報考流程

一、先搞明白:HCIE - 云計算認證到底是啥? HCIE - 云計算(華為認證 ICT 專家 - 云計算)是華為體系里云計算領域的頂級認證,說白了,就是證明你有能力搞定大型企業的云平臺設計、部署和運維。現在政企、金融…

什么是私有化部署企業即時通訊?吱吱企業即時通訊安全嗎?

在企業數字化轉型加速的今天,溝通工具的選擇已經從滿足簡單溝通,升級為“安全、高效、可控”。其中,“私有化部署企業即時通訊”成為許多中小型企業、跨國企業以及數據敏感型企業的核心需求。 那么,究竟什么是私有化部署&#xff…

Vue3 中使用 Element Plus 實現自定義按鈕的 ElNotification 提示框

在 Vue3 項目中,我們經常會用到 ElNotification 作為消息提醒組件,尤其是在異步操作、任務完成或用戶需要交互確認時。然而,Element Plus 默認的 Notification 是非交互式的,不能直接嵌入按鈕或事件。 今天我們來實現一個帶自定義…