Qemu搭建RISC-V,運行opensbi+u-boot+img

?1.先下載一個Ubuntu鏡像

https://cdimage.ubuntu.com/releases/24.04/release/
我這里下載的是這個RISC-V的
在這里插入圖片描述

🌟1.2.解壓鏡像

xz -d ubuntu-24.04.2-preinstalled-server-riscv64.img.xz

?2.準備RISC-V的QEMU

打開qemu官網https://www.qemu.org/,下載qemu-9.1.3.tar.xz
在這里插入圖片描述

🌟2.1.解壓qemu

tar xf qemu-9.1.3.tar.xz

🌟2.3.編譯qemu

cd qemu-9.1.3
mkdir build
cd build
../configure --enable-slirp --target-list=riscv64-softmmu
make -j$(nproc)
make install

編譯完成之后可以看到系統下有qemu-system-riscv64生成
在這里插入圖片描述

🌟2.4 注意:

博主在這里編譯qemu的時候也遇到了一些問題,一般都能百度解決我就不貼在這里了,一般會遇到的問題有Glib的版本要大于2.66.0版本,這里可以通過以下方式升級,如果版本高于2.66則忽略該步驟。

🌟2.4.1 查看Glib版本

pkg-config --modversion glib-2.0  # 如果低于2.66.0的話可以手動編譯

🌟2.4.2 手動安裝編譯Glib版本

# 安裝編譯依賴
sudo apt install -y build-essential git meson ninja-build libffi-dev python3-dev# 下載GLib源碼
cd ~
wget https://download.gnome.org/sources/glib/2.66/glib-2.66.0.tar.xz
tar -xf glib-2.66.0.tar.xz
cd glib-2.66.0# 配置、編譯和安裝
mkdir build && cd build
meson --prefix=/usr/local ..
ninja
sudo ninja install# 更新動態鏈接庫緩存
sudo ldconfig

🌟2.4.3 驗證安裝

pkg-config --modversion glib-2.0 # 顯示更高版本

?3.安裝riscv64編譯器

這里直接使用apt進行安裝:

sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu -y

?4.準備固件和依賴

QEMU運行RISC-V需要固件(如OpenSBI和U-Boot)。Ubuntu官方教程推薦以下文件:
OpenSBI(提供固件支持):
Ubuntu系統中通常已包含,位于 /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf。
如果缺失,可從 https://github.com/riscv/opensbi 下載并編譯

🌟4.1.下載opensbi

從github上clone opensbi:

git clone https://github.com/riscv-software-src/opensbi.git -b v1.5.1

🌟4.2 .編譯opensbi:

cd opensbi
make CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic all -j$(nproc)

編譯完成后,在build/platform/generic/firmware目錄下生成相應的bin文件,后面我們要用到fw_jump.bin文件:
在這里插入圖片描述

?5. 編譯u-boot

● Ubuntu系統中通常位于 /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf。
● 如果缺失,可從 https://github.com/u-boot/u-boot 下載并編譯:

git clone https://github.com/u-boot/u-boot
cd u-boot
make qemu-riscv64_smode_defconfig
make CROSS_COMPILE=riscv64-linux-gnu- -j$(nproc)

編譯完之后會生成一個u-boot.bin的文件
在這里插入圖片描述

?6.啟動 RISC-V鏡像

qemu-system-riscv64 \-nographic \-machine virt \-m 8G \-smp 8 \-bios /home/risc-v/opensbi/build/platform/generic/firmware/fw_jump.bin \-kernel /home/risc-v/u-boot/u-boot.bin \-append "root=/dev/vda rw console=ttyS0" \-drive file=/home/risc-v/ubuntu-24.04.2-preinstalled-server-riscv64.img,format=raw,id=hd0,if=none \-device virtio-blk-device,drive=hd0 \-netdev user,id=net0,hostfwd=tcp:0.0.0.0:2223-:22 \-device virtio-net-device,netdev=net0

成功安裝Ubuntu24.04 riscv架構的操作系統
在這里插入圖片描述

?注意點:

1.首次安裝成功之后賬號密碼默認是ubuntu/ubuntu,進入到系統之后修改root密碼:sudo passwd root修改即可
2. -netdev user,id=net0,hostfwd=tcp:0.0.0.0:2223-:22 端口不能沖突,可以通過netstat -tuln | grep 2223查看是否端口沖突了。
3.啟動的路徑需要對照自己的路徑來修改
4.如果有自己對應的內核可以自己修改啟動腳本
5.編譯Qemu和uboot的話需要安裝很多依賴包,具體遇到哪些報錯就安裝即可,一般python3,gcc,make,ninja,meson等都需要安裝好。

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

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

相關文章

【實戰手冊】銀河麒麟服務器系統進入單用戶模式修改密碼(root)指南

目錄 前言 一、銀河麒麟單用戶模式簡介 二、進入單用戶模式修改密碼 三、登錄驗證新密碼 結語 前言 在日常服務器運維工作中,忘記root密碼是系統管理員偶爾會遇到的問題。作為國產操作系統的優秀代表,銀河麒麟服務器系統提供了通過單用戶模式重置r…

偏微分方程通解求解2

題目 求下列方程的通解: { u x y = u x u y u ? 1 ; u x y = u x u y ; u x y = u x u y u u 2 + 1 ; \begin{cases} u_{xy} = u_x u_y u^{-1}; \\ u_{xy} = u_x u_y; \\ u_{xy} = \dfrac{u_x u_y u}{u^2 + 1}; \end{cases} ????????uxy?=ux?uy?u?1;uxy?=ux?…

用于算法性能預測的 GNN 框架

大家讀完覺得有幫助記得關注和點贊!!! 抽象。 數值黑盒優化中的自動算法性能預測通常依賴于問題特征,例如探索性景觀分析特征。這些特征通常用作機器學習模型的輸入,并以表格格式表示。然而,這種方法往往忽…

拯救海量數據:PostgreSQL分區表性能優化實戰手冊(附壓測對比)

1 分區表核心原理與生產痛點 物理存儲結構決定性能邊界 PostgreSQL分區表的本質是繼承表路由規則的邏輯封裝。當父表被查詢時,查詢優化器通過CHECK約束快速定位子表,其性能核心取決于: -- 關鍵系統視圖 SELECT relname, relkind, relpages …

【Wi-Fi天氣時鐘】網絡授時

文章目錄 1 網絡授時概述1.1 什么是網絡授時1.2 為什么要使用網絡授時2 API概述2.1 什么是API2.2 如何使用API3 淘寶時間API簡介4 網絡授時流程和AT指令5 網絡授時程序設計5.1 API返回信息解析5.2 RTC初始化5.3 必要的后續操作6 結語1 網絡授時概述 1.1 什么是網絡授時 首先我…

騰訊云IM即時通訊:開啟實時通信新時代

一、引言 在當今數字化浪潮席卷全球的時代,即時通訊已然成為互聯網世界中不可或缺的關鍵元素。無論是個人日常生活中的社交互動,還是企業運營里的高效協作,即時通訊都發揮著舉足輕重的作用,已然滲透到人們生活與工作的每一個角落…

js邏輯:【增量更新機制】

增量更新機制:在數據發生變化時,只對變化的部分進行更新的策略,而不是每次都重新處理全部數據,即:在數據發生變化時,只對變化的部分進行更新的策略,而不是每次都重新處理全部數據 watch: {base…

詳解Redis的LUA腳本、管道 (Pipelining)、事務事務 (Transactions)

1. 管道 (Pipelining) 網絡延遲 (Round-Trip Time - RTT) 瓶頸。 在傳統模式下,客戶端發送一個命令 -> 等待 Redis 服務器處理并返回結果 -> 再發送下一個命令。如果客戶端需要執行大量命令(例如設置或獲取多個鍵),每個命令…

SIP 協議中的定時器

SIP(Session Initiation Protocol) 是一種信令協議,廣泛用于建立、維持和終止多媒體會話(如VoIP通話)。作為基于UDP等不可靠傳輸的協議,SIP 通過多個定時器機制來確保消息的可靠傳輸和狀態機的正常運行。 …

【機器學習深度學習】偏置項(Bias)概念

目錄 前言 一、先說結論:偏置項是“默認起點” 二、類比理解 類比 1:老師給學生的“基礎分” 類比 2:預測房價時的“固定成本” 三、沒有偏置項的模型,會有什么問題? 四、在神經網絡中,偏置項是神經…

使用數組 海選女主角

問題描述 面試那天,剛好來了m * n個MM,站成一個m * n的隊列,副導演Fe(OH)2為每個MM打了分數,分數都是32位有符號整數。 一開始我很納悶:分數怎么還有負的?Fe(OH)2解釋說,根據選拔規則&#xff…

從0開始學習R語言--Day29--社交網絡分析

在探尋數據之間的關系時,由于數據類型的限制,很多時候我們可以從數據的現實角度出發去選擇方法,而不是一昧地從頭嘗試不同方法去分類。假如我們用的是傳染病在市面上的傳播路徑數據,亦或是病毒對于基因的感染模塊,就可…

一款基于 React 的開源酷炫動畫庫

React Bits 是一個開源的交互式 React 組件庫,包含一系列動畫化、交互式且完全可定制的 React 組件,用于構建令人驚艷且難忘的用戶界面,可幫助開發者在 React 應用中輕松實現各種動畫效果。它提供了超過70種動畫組件,分為文本動畫…

深入理解前端理念bundleless

Bundleless 是一種新興的前端開發趨勢,它的核心思想是減少或完全去除傳統的打包步驟,直接利用瀏覽器對現代 JavaScript 特性(尤其是 ES 模塊)的原生支持。這一趨勢背后的推動力包括現代瀏覽器的進步、開發者對更快開發反饋的需求以及更簡單的開發流程。以下是對 bundleless…

馬斯克YC技術核彈全拆解:Neuralink信號編譯器架構·星艦著陸AI代碼·AGI防御協議(附可復現算法核心/開源替代方案/中國技術對標路徑)

一、Neuralink技術棧深度剖析 ? 神經信號編譯架構(基于已公開專利US20220369936) 關鍵算法實現: # 運動意圖解碼核心(簡化版) import numpy as np from sklearn.ensemble import RandomForestClassifierclass Neura…

【RK3568 嵌入式linux QT開發筆記】 二維碼開源庫 libqrencode 交叉靜態編譯和使用

本文參考文章:https://blog.csdn.net/qq_41630102/article/details/108306720 參考文章有些地方描述的有疏漏,導致筆者學習過程中,編譯的.a文件無法在RK3568平臺運行,故寫本文做了修正,以下僅是自我學習的筆記&#xf…

git本地裸倉庫的“激活”:在同一臺 Linux 服務器上創建工作區

大家好!在之前的文章中,我們探討了 Git 裸倉庫(Bare Repository)的概念,它是沒有工作目錄,只包含 .git 目錄內容的特殊倉庫格式,非常適合作為中心化的代碼集散地或備份。我們也了解了 git clone…

如何排查在docker中運行軟件的故障:Docker故障排查可視化指南,三招鎖定問題根源

很多剛接觸Docker的朋友常覺得故障排查很神秘。其實只需關注CPU、內存、磁盤這三大資源指標!Linux終端雖強大但不夠直觀,下面教你用可視化工具輕松監控: 一、宿主機全局監控:FinalShell 掌控全局 連接宿主機 打開FinalShell&…

【論文筆記】【強化微調】T-GRPO:對視頻數據進行強化微調

tulerfeng/Video-R1: Video-R1: Reinforcing Video Reasoning in MLLMs [🔥the first paper to explore R1 for video] 1. 引述 在強化微調中,像 GRPO、DAPO 這樣的方法都是對文本或者圖片進行微調思考,所以這類微調方法不對時序信息做處理&…

【Unity】動畫系統

0 前言 早些時間學動畫系統時的筆記,實際還沒學完,后續計劃會慢慢補全吧。 1 動畫 通常來說動畫都是動畫師來做的,不過Unity也能實現簡單的動畫效果。PS:官方文檔中,將動畫稱之為動畫剪輯。 1.1 創建動畫 首先在Unit…