日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qemu 规范路径_基于qemu-riscv64模拟器运行debian

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qemu 规范路径_基于qemu-riscv64模拟器运行debian 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Debian Port已經可以提供risc-v體系結構的軟件包集合[https://wiki.debian.org/RISC-V]。

以下記錄基于qemu模擬risc-v平臺環境并運行debian的過程。

宿主機環境

宿主機ubuntu18.04.1 LTS(x86_64),安裝自帶gcc編譯器和riscv64交叉編譯器。

apt install gcc-riscv64-linux-gnu gcc binutils

qemu

從官網下載并編譯riscv64模擬器

git clone https://git.qemu.org/git/qemu.git --depth 1

./configure --target-list=riscv64-softmmu

make

編譯后生成模擬器riscv64-softmmu/qemu-system-riscv64。

qemu包含一個稱為virt的虛擬平臺,通過參數-machine virt(或-M virt)指定使用該類型board以模擬riscv64平臺。

注:不必執行make install安裝,后面直接在qemu源碼根目錄下運行,以便于跟蹤調試qemu代碼。

risc-v opensbi

開源項目opensbi實現符合RISC-V SBI規范的固件firmware,以該firmware(64位)作為引導的第一級。

git clone https://github.com/riscv/opensbi.git --depth 1

make PLATFORM=generic CROSS_COMPILE=riscv64-linux-gnu- PLATFORM_RISCV_XLEN=64

用opensbi自帶的測試payload驗證qemu和opensbi有效性。

在qemu源碼根目錄下執行測試腳本:

./riscv64-softmmu/qemu-system-riscv64 -M virt -m 256M -nographic \

-kernel /root/gitQemu/opensbi/build/platform/generic/firmware/fw_jump.elf \

-device loader,file=/root/gitQemu/opensbi/build/platform/generic/firmware/payloads/test.bin,addr=0x80200000

結果顯示OpenSBI的啟動畫面,最后一行是測試payload(test.bin)的顯示信息”Test payload running”。

u-boot

編譯u-boot,作為引導的第二級。

注意:為了讓u-boot運行在supervisor mode,選擇配置qemu-riscv64_smode_defconfig

git clone https://gitlab.denx.de/u-boot/u-boot.git --depth 1

make qemu-riscv64_smode_defconfig CROSS_COMPILE=riscv64-linux-gnu-

make CROSS_COMPILE=riscv64-linux-gnu-

生成u-boot.bin。現在再次執行如下測試,驗證u-boot是否可以被正常啟動。

./riscv64-softmmu/qemu-system-riscv64 -machine virt -m 256M -nographic \

-kernel /root/gitQemu/opensbi/build/platform/generic/firmware/fw_jump.elf \

-device loader,file=/root/gitQemu/u-boot/u-boot.bin,addr=0x80200000 &

相對于OpenSBI自帶的測試,只是更改了-device loader,file=指定的路徑。

執行成功將會顯示u-boot的啟動信息,同時由于沒有指定根文件系統,最后會報告找不到啟動設備或網絡。

debian

從[https://people.debian.org/~gio/dqib/]找到Images for riscv64-virt,下載debian預編譯的鏡像。

解開壓縮包,包括三個文件image.qcow2,initrd和kernel:

其中image.qcow2是完整的debian根文件系統鏡像,initrd和kernel是鏡像中臨時啟動盤和內核的拷貝。

通過guestmount掛載該鏡像并查看其內容。需要安裝libguestfs-tools。

apt install libguestfs-tools

通過guestmount掛載該鏡像到/mnt目錄,可以查看或修改根文件系統內容,然后用guestunmount解除掛載。

guestmount -a image.qcow2 -m /dev/sda1 /mnt/

ls /mnt

guestunmount /mnt

導出FDT

下步啟動內核時需要FDT,從qemu導出。

執行如下腳本:

./riscv64-softmmu/qemu-system-riscv64 -nographic -machine virt,dumpdtb=qemu-virt.dtb -m 1G \

-kernel /root/gitQemu/opensbi/build/platform/generic/firmware/fw_jump.elf \

-device loader,file=/root/gitQemu/u-boot/u-boot.bin,addr=0x80200000 \

-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0 \

-append "console=ttyS0 rw root=/dev/vda1" \

-device virtio-blk-device,drive=hd0 -drive file=/root/gitQemu/images/image.qcow2,format=qcow2,id=hd0 \

-device virtio-net-device,netdev=brnet0,mac=00:16:3e:09:3d:58 -netdev tap,id=brnet0,vhost=on,vnet_hdr=on &

其中起作用的是-machine virt,dumpdtb=qemu-virt.dtb

這樣就可以得到qemu自定義的board類型virt的二進制fdt文件qemu-virt.dtb。

構造FIT Image

用u-boot的命令行工具mkimage構造FIT Image并替換debian鏡像中的原內核文件vmlinux。

1. 編輯kernel_fdt.its

從u-boot/doc/uImage.FIT/kernel_fdt.its拷貝一份進行修改。

修改內容包括kernel的路徑、壓縮格式加載地址和入口地址,以及dtb的路徑。

修改后內容:

/*

* Simple U-Boot uImage source file containing a single kernel and FDT blob

*/

/dts-v1/;

/ {

description = "Simple image with single Linux kernel and FDT blob";

#address-cells = ;

images {

kernel {

description = "Linux kernel";

data = /incbin/("./kernel");

type = "kernel";

arch = "riscv";

os = "linux";

compression = "none";

load = ;

entry = ;

hash-1 {

algo = "crc32";

};

hash-2 {

algo = "sha1";

};

};

fdt-1 {

description = "Flattened Device Tree blob";

data = /incbin/("./qemu-virt.dtb");

type = "flat_dt";

arch = "riscv";

compression = "none";

hash-1 {

algo = "crc32";

};

hash-2 {

algo = "sha1";

};

};

};

configurations {

default = "conf-1";

conf-1 {

description = "Boot Linux kernel with FDT blob";

kernel = "kernel";

fdt = "fdt-1";

};

};

};

注意:文件中”./kernel”是從前述debian壓縮包中解壓得到的kernel文件路徑,”./qemu-virt.dtb”是上一步得到的FDT。另外,load和entry也是關鍵,分別指定了內核加載地址和執行入口地址,這里都是0x81a00000。

執行如下腳本制作FIT Image并替換鏡像中的vmlinux:

guestmount -a image.qcow2 -m /dev/sda1 /mnt/

# make sure that the vmlinux and qemu-virt.dtb are all in local directory

../u-boot/tools/mkimage -f ./kernel_fdt.its ./vmlinux-5.5.0-1-riscv64

# override old vmlinux-5.5.0-1-riscv64 in 'image.qcow2'

cp ./vmlinux-5.5.0-1-riscv64 /mnt/boot/vmlinux-5.5.0-1-riscv64

guestunmount /mnt

正式啟動debian linux

執行如下腳本,啟動qemu模擬riscv64平臺,運行debian:

./riscv64-softmmu/qemu-system-riscv64 -nographic -machine virt -m 1G \

-kernel /root/gitQemu/opensbi/build/platform/generic/firmware/fw_jump.elf \

-device loader,file=/root/gitQemu/u-boot/u-boot.bin,addr=0x80200000 \

-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-device,rng=rng0 \

-append "console=ttyS0 rw root=/dev/vda1" \

-device virtio-blk-device,drive=hd0 -drive file=/root/gitQemu/images/image.qcow2,format=qcow2,id=hd0 \

-device virtio-net-device,netdev=net0,mac=52:54:00:12:34:58 -netdev user,id=net0

與上次執行命令行的區別僅僅是”-machine virt”后面沒有指定dumpdtb。

Debian啟動之后,用root登錄,口令為root。

由于網絡類型為user mode,ICMP被禁止,所以無法用ping命令。

直接執行apt測試網絡:

apt update

注意:默認的sources.list使用域名deb.debian.org,如果不通,可以更換為鏡像ftp.de.debian.org或ftp.kr.debian.org。

總結

以上是生活随笔為你收集整理的qemu 规范路径_基于qemu-riscv64模拟器运行debian的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人亚洲欧美 | 巨茎大战刘亦菲 | 男人的天堂在线观看av | 黄色.com| 欧美成人小视频 | 黄黄的网站 | 美女裸体跪姿扒开屁股无内裤 | 日韩伦乱 | 自拍偷拍视频在线观看 | 亚洲一区电影 | 女同av网站 | 成人小视频在线看 | 深夜视频在线看 | 午夜日韩电影 | av最新资源 | 欧美国产一区二区三区 | 美女张开腿让人桶 | 香蕉网站在线观看 | 亚洲天堂av在线免费观看 | 精品无码久久久久久久久久 | 少妇精品高潮欲妇又嫩中文字幕 | 久久婷婷五月综合 | 毛片毛片毛片 | 人妻一区二区在线 | 国产l精品国产亚洲区久久 午夜青青草 | 日韩视频一| 欧美三日本三级少妇三 | 国产成人免费在线视频 | 精品国产人妻一区二区三区 | 性欧美日本 | 久久精品噜噜噜成人88aⅴ | 亚洲中文无码av在线 | 99久久成人 | 国产在线麻豆 | 色天天综合 | 一级肉体全黄毛片 | 亚洲福利视频网 | 黄片毛片av | 日韩有码中文字幕在线 | 999免费视频 | 开心激情播播网 | 悟空影视大全免费高清观看在线 | 四虎在线播放 | 能看av的网站 | 国产不卡免费视频 | 成人黄色网址在线观看 | 九九视频免费在线观看 | 久久伊人av| 国产三级在线免费观看 | 国内精品一区二区三区 | 黄视频在线免费看 | 欧美日韩h| 尤物视频在线播放 | 黄色天堂av | 青草福利视频 | 黄色一级在线观看 | 五月天婷婷激情视频 | 亚洲精品电影在线观看 | 一区二区三区欧美视频 | 国产老妇视频 | 久久久免费网站 | 日韩欧美超碰 | 久久久精品毛片 | 国产亚洲精品久久久久动 | 国产夫妻在线观看 | 18禁一区二区三区 | 色综合亚洲 | 免费视频中文字幕 | av中出在线 | 天天操免费视频 | 青青草在线观看视频 | 国产精品一级无码 | 国产盗摄av | 亚洲综合婷婷 | 致命弯道8在线观看免费高清完整 | 日韩亚州 | 人人妻人人澡人人爽欧美一区双 | av国产一区二区 | 国产馆在线观看 | 久久影音先锋 | 欧美成人一级片 | 香港三日本三级少妇66 | 制服丝袜先锋影音 | 欧美一区二区三区在线观看视频 | 免费看黄色片子 | 国产影视一区二区三区 | 夜夜操天天操 | 午夜日韩在线观看 | 波多野结衣a级片 | 欧美高清一区 | 中文字幕免费在线视频 | 亚洲三级中文字幕 | 高清一区二区视频 | 91精品视频一区二区三区 | 国产黄色录相 | 中文精品久久 | 欧美 国产 综合 | 欧美日本在线看 | 欧美一区二区三区免费观看 |