91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

riscv64上運行完整Linux的流程

嵌入式IoT ? 來源:嵌入式IoT ? 作者:嵌入式IoT ? 2021-05-23 15:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

搭建qemu RISC-V運行Linux環(huán)境

1.本文概述

2.工具介紹

2.1 riscv-gnu-toolchain

2.2 spike

2.3 RISC-V Porxy Kernel

2.4 編譯工具

3.編譯Linux Kernel

4.編譯busybox

5.制作根文件系統(tǒng)

6.編譯安裝qemu

7.啟動基本Linux程序

8.運行發(fā)行版本OS(fedora&ubuntu)

8.1 下載安裝fedora鏡像

8.2 下載安裝ubuntu鏡像

9.總結(jié)

1.本文概述目前雖然RISC-V的硬件開發(fā)板能夠運行Linux的十分難得,從探索RISCV的生態(tài)的角度上來看,使用模擬器也是一種非常好的方式。使用QEMU能夠很好的模擬RISCV的硬件資源,后期有實際的開發(fā)板后將其軟件生態(tài)移植上去也并不復(fù)雜。

本文將演示QEMU上建立RISCV的環(huán)境,以及如何交叉編譯Linux,通過文章的描述,可以掌握RISC-V上的Linux的編譯開發(fā)流程,文章也展示了在riscv64架構(gòu)上運行fedora和ubuntu兩個Linux發(fā)行版本的過程。

2.工具介紹在進行環(huán)境搭建之前,首先先來介紹一些目前開源的比較熱門的RISCV工具項目。

2.1 riscv-gnu-toolchain

RISCV的GNU工具鏈,是編譯RISC-V程序的交叉編譯工具鏈。

https://github.com/riscv/riscv-gnu-toolchain

主要有兩個版本:

riscv64--unknown--elf-gcc是使用newlib,主要用于靜態(tài)編譯的獨立的程序或者單機嵌入式程序,RTOS等等。

riscv64-unknown--linux--gnu--gcc使用的glibc,可以編譯動態(tài)鏈接程序,例如大型操作系統(tǒng)如Linux等等。

如果編譯選項加上-nostartfiles -nostdlib -nostdinc,兩個編譯版本一致

2.2 spike

spike是一個開源的RISC-V的指令模擬器,實現(xiàn)了一個和多個RISC-V harts的功能,提供了豐富的系統(tǒng)仿真,其名稱來自于Golden Spike,是第一條橫貫美國大陸的鐵路。

https://github.com/riscv/riscv-isa-sim

在RISC-V架構(gòu)指令集擴展層面有著非常好的實現(xiàn)。

2.3 RISC-V Porxy Kernel

RISC-V Proxy Kernel and Boot Loader,簡稱RISCV-PK,是一個輕量級的應(yīng)用程序的可執(zhí)行環(huán)境,可以加載靜態(tài)的RISCV ELF的可執(zhí)行文件。主要兩個功能,代理和引導(dǎo)啟動,可以作為引導(dǎo)啟動RISC-V的Linux的環(huán)境。

https://github.com/riscv/riscv-pk

2.4 編譯工具

如果要一次性部署這些工具,可以通過下面的倉庫進行操作

https://github.com/riscv/riscv-tools

在此之前,首先安裝必要的程序,本次使用的環(huán)境為Ubuntu20.04。

sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-compiler pkg-config libexpat-dev libncurses5-dev libncursesw5-dev

當安裝好必要的程序后,可以clone倉庫。

git clone https://github.com/riscv/riscv-tools.git

git submodule update --init --recursive

export RISCV=~/riscv

。/build.sh

可能會遇到如下的錯誤:

2e2fad54-b4c7-11eb-bf61-12bb97331649.png

要解決這個問題,首先需要安裝下載riscv64的交叉編譯工具鏈。

git clone https://github.com/riscv/riscv-gnu-toolchain

。/configure --prefix=$RISCV

其中配置項目--enable-multilib表示編譯32bit和64bit的gcc,支持,這里不選擇,只編譯32bit的交叉編譯工具鏈。

經(jīng)過測試最高版本的gcc交叉編譯工具鏈,編譯riscv-tools會出現(xiàn)異常,所以替換成低一點的版本。

riscv-gnu-toolchain/riscv-gcc

git checkout riscv-gcc-8.2.0

緊接著開始編譯

make -j $(nproc)

表示編譯baremate版本的嵌入式交叉編譯環(huán)境。

make -j $(nproc) linux

編譯Linux版本的交叉編譯環(huán)境。

編譯完成后,可以看到編譯好的程序。

ls ~/riscv/bin

然后,返回去編譯riscv-tools。

最后導(dǎo)出環(huán)境變量

export PATH=/home/bigmagic/riscv/bin:$PATH

3.編譯Linux Kernel在編譯Linux Kernel之前,需要安裝相關(guān)的工具。

sudo apt install libncurses5-dev libncursesw5-dev

下載編譯Linux Kernel

git clone https://github.com/torvalds/linux.git

cd linux

git checkout v5.10

make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig

make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc)

編譯完成后,最后生成的Kernel文件在linux/arch/riscv/boot/Image。

4.編譯busybox可以用busybox制作生成根文件系統(tǒng),同時也提供了Linux下運行的一些基本程序與控制臺。

git clone https://git.busybox.net/busybox

cd busybox

git checkout 1_32_1

CROSS_COMPILE=riscv64-unknown-linux-gnu- make defconfig

CROSS_COMPILE=riscv64-unknown-linux-gnu- make menuconfig

需要選擇靜態(tài)link。

選擇靜態(tài)link

然后開始編譯

CROSS_COMPILE=riscv64-unknown-linux-gnu- make -j $(nproc)

5.制作根文件系統(tǒng)下面來制作一個空的磁盤,格式為ext2的文件系統(tǒng)。

dd if=/dev/zero of=root.bin bs=1M count=64

mkfs.ext2 -F root.bin

這樣就制作了一個空的,名稱為root.bin文件格式為ext2的文件系統(tǒng)。

接著只需要將busybox的程序加載進去即可。

mkdir mnt

sudo mount -o loop root.bin mnt

cd mnt

sudo mkdir -p bin etc dev lib proc sbin tmp usr usr/bin usr/lib usr/sbin

sudo cp ~/busybox/busybox bin

sudo ln -s 。./bin/busybox sbin/init

sudo ln -s 。./bin/busybox bin/sh

cd 。.

sudo umount mnt

制作好的根文件系統(tǒng)目錄結(jié)構(gòu)如下:

2ef66354-b4c7-11eb-bf61-12bb97331649.png

如果要創(chuàng)建更加功能完善的Linux的根文件系統(tǒng),這里可以采用buildroot或者Yocto來進行創(chuàng)建。

6.編譯安裝qemu可以直接安裝

sudo apt install qemu-system-misc

或者自己編譯

編譯之前需要安裝如下的庫:

sudo apt-get install -y git build-essential pkg-config zlib1g-dev libglib2.0-0 libglib2.0-dev libsdl1.2-dev libpixman-1-dev libfdt-dev autoconf automake libtool librbd-dev libaio-dev flex bison make

因為要運行qemu

git clone git@github.com:qemu/qemu.git

cd qemu

git checkout v6.0.0

mkdir build

cd build

。./configure --prefix=/home/bigmagic/riscv/qemu --target-list=riscv32-

softmmu,riscv64-softmmu --enable-debug-tcg --enable-debug --enable-debug-info && make -j8 && make install

其中--prefix=后面的路徑是需要填寫自己的路徑。

最后添加環(huán)境變量到自己的路徑。

export PATH=/home/bigmagic/riscv/qemu/bin/:$PATH

7.啟動基本Linux程序事先準備好編譯完成的root.bin程序以及Linux的Image

qemu-system-riscv64 -nographic -machine virt -kernel linux/arch/riscv/boot/Image -append “root=/dev/vda rw console=ttyS0” -drive file=rootfs/root.bin,format=raw,id=hd0 -device virtio-blk-device,drive=hd0

此時可以看到Linux正常的啟動。

第一階段是OpenSBI,后面一個階段才是

Linux啟動后,無法正常輸入命令,需要輸入

/bin/busybox --install -s

可以看到RISCV64 的 Linux正常的運行起來了。

8.運行發(fā)行版本OS(fedora&ubuntu)根據(jù)之前的描述,如果在buildroot中選擇了qemu_riscv64_virt_defconfig,那么最后生成的可執(zhí)行腳本如下

qemu-system-riscv64 -nographic -machine virt -kernel output/images/Image

-append “root=/dev/vda rw console=ttyS0”

-drive file=output/images/rootfs.ext2,format=raw,id=hd0

-device virtio-blk-device,drive=hd0

上述的腳本可以作為基本的參考。如果要運行fedora,那么可以按照下面的流程進行。

首先安裝virt-builder,可以快速構(gòu)建虛擬機環(huán)境。

sudo apt install libguestfs-tools

接下來可以添加fedora的倉庫。

mkdir -p ~/.config/virt-builder/repos.d/

cat 《《EOF 》 ~/.config/virt-builder/repos.d/fedora-riscv.conf

[fedora-riscv]

uri=https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/index

EOF

通過列出riscv64支持的發(fā)行版鏡像

8.1 下載安裝fedora鏡像

下載fedora鏡像,所有的鏡像可以在下列的網(wǎng)站中找到

https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/

此時構(gòu)建一個20200108版本的鏡像。

wget https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/Fedora-Developer-Rawhide-20200108.n.0-sda.raw.xz

下載完成后,解壓文件

unxz -k Fedora-Developer-Rawhide-20200108.n.0-sda.raw.xz

接著下載啟動文件

wget https://dl.fedoraproject.org/pub/alt/risc-v/repo/virt-builder-images/images/Fedora-Developer-Rawhide-20200108.n.0-fw_payload-uboot-qemu-virt-smode.elf

執(zhí)行的腳本如下

export VER=20200108.n.0

qemu-system-riscv64 -machine virt

-nographic

-smp 4

-m 8G

-bios Fedora-Developer-Rawhide-${VER}-fw_payload-uboot-qemu-virt-smode.elf

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

-device virtio-rng-device,rng=rng0

-device virtio-blk-device,drive=hd0

-drive file=Fedora-Developer-Rawhide-${VER}-sda.raw,format=raw,id=hd0

-device virtio-net-device,netdev=usernet

-netdev user,id=usernet,hostfwd=tcp:22

正常情況下,啟動信息如下:

2fc2183c-b4c7-11eb-bf61-12bb97331649.png

下面也列出了用戶名

login: riscv

password: fedora_rocks!

進入環(huán)境后可以正常使用鏡像。

使用python。

這樣就可以在RISCV的架構(gòu)上開發(fā)應(yīng)用程序了。

8.2 下載安裝ubuntu鏡像

安裝需要的工具

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

到ubuntu官網(wǎng)上看到可以下載的鏡像

http://ubuntutym2.u-toyama.ac.jp/ubuntu-dvd/20.04/release/

下載地址如下:

wget http://ubuntutym2.u-toyama.ac.jp/ubuntu-dvd/20.04/release/ubuntu-20.04.2-preinstalled-server-riscv64.img.xz

然后解壓

xz -dk ubuntu-20.04.2-preinstalled-server-riscv64.img.xz

最后可以運行ubuntu的腳本

qemu-system-riscv64

-machine virt -nographic -m 2048 -smp 4

-bios /usr/lib/riscv64-linux-gnu/opensbi/generic/fw_jump.elf

-kernel /usr/lib/u-boot/qemu-riscv64_smode/uboot.elf

-device virtio-net-device,netdev=eth0 -netdev user,id=eth0

-drive file=ubuntu-20.04.2-preinstalled-server-riscv64.img,format=raw,if=virtio

執(zhí)行的現(xiàn)象如下:

2ff7a86c-b4c7-11eb-bf61-12bb97331649.png

登錄用戶名,密碼

username:ubuntu

password:ubuntu

然后修改新的密碼,最后可以正常進入ubuntu。

307974aa-b4c7-11eb-bf61-12bb97331649.png

9.總結(jié)本文從頭介紹了一個riscv64上運行完整Linux的流程,也完成fedora&ubuntu兩個發(fā)行版本的RISC-V環(huán)境搭建。

越來越多的RISCV的發(fā)新版本的適配,也充分展示了RISCV架構(gòu)生態(tài)的繁榮。

目前越來越多的發(fā)新版OS開始慢慢適配RISCV,但是由于硬件資源和開發(fā)板的稀缺,導(dǎo)致很多軟件生態(tài)不能實際的構(gòu)建,此時可以通過qemu來進行實驗。

開發(fā)板的出現(xiàn)只是遲早的,目前D1開發(fā)板對標樹莓派,想必出來后也可以運行Linux的發(fā)行版,后期可以將其適配到各種Linux的發(fā)行版本上,在其進行軟件生態(tài)建設(shè)也是一個不錯的平臺。

原文標題:搭建qemu RISC-V運行Linux環(huán)境

文章出處:【微信公眾號:嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219032
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    485

    瀏覽量

    86605

原文標題:搭建qemu RISC-V運行Linux環(huán)境

文章出處:【微信號:Embeded_IoT,微信公眾號:嵌入式IoT】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何在 VF2 玩 Minecraft 的分步指南

    /libraries/org/lwjgl/lwjgl/3.3.1/cp ~/lwjgl3-riscv-existing/bin/libs/native/linux/riscv64/org/lwjgl
    發(fā)表于 02-27 07:45

    debian-202308 映像不支持 firmware-realtek 包 riscv64嗎?

    我發(fā)現(xiàn)在 riscv64 架構(gòu)的 debian-202308 映像中缺少為帶有 Realtek 芯片的 USB 集線器以太網(wǎng)端口提供驅(qū)動程序的 firmware-realtek 包。我發(fā)現(xiàn)
    發(fā)表于 02-26 10:49

    【CIE全國RISC-V創(chuàng)新應(yīng)用大賽】+MUSE Pi Pro RiscV UEFI固件開發(fā)

    /edk2-non-osi 1.4 RiscV64工具鏈的前綴定義 為RiscV64工具鏈指定前綴變量,參考如下命令: #define RISCV64 prefix export
    發(fā)表于 11-13 00:20

    全志D1開發(fā)板(哪吒 RISCV64)開箱評測

    riscv的生態(tài)建設(shè)遠遠沒有arm強大,但是也在開源思想的引領(lǐng)下,開始逐步走向大眾的視野。 這塊哪吒 RISCV64的板子,從主要的核的特性上來看,與目前市面上可見的riscv開發(fā)板相比,特性主要有以下幾點
    發(fā)表于 10-31 07:50

    riscv實現(xiàn)自定義指令并用qemu運行

    利用qemu模擬硬件平臺,實現(xiàn)特定指令解析,同時寫裸機代碼來測試該指令的運行情況。當然,如果實現(xiàn)的很好,是需要修改riscv的gcc的,讓自己的擴展指令加入。這里不做修改,后面會詳細描述細節(jié)。 自定義
    發(fā)表于 10-31 07:37

    d1哪吒開發(fā)板的啟動流程分析

    /toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-PLATFORM_RISCV
    發(fā)表于 10-29 06:44

    Linux ubuntu使用riscv-formal工具驗證蜂鳥E203 SoC的正確性

    內(nèi)容:在Linux ubuntu使用riscv-formal工具驗證蜂鳥E203 SoC的正確性 步驟: 1、下載和安裝riscv-formal工具: bash復(fù)制代碼 git cl
    發(fā)表于 10-24 07:52

    Linux環(huán)境中使用riscv-torture的方法

    ,包括模擬器Spike。您可以按照官方文檔(https://github.com/riscv/riscv-gnu-toolchain)的指示來安裝。 2、下載和編譯riscv-tor
    發(fā)表于 10-24 06:32

    riscv virt64編譯后 ls無法運行怎么解決?

    用倉庫里的默認配置編譯qemu-virt64-riscv 生成后運行,顯示 [E/DBG] virtio-blk0 mount failed ls看不到文件夾 msh />ls No such directory
    發(fā)表于 09-22 06:38

    企業(yè)級Linux磁盤維護的完整流程

    在企業(yè)級Linux環(huán)境中,磁盤故障是導(dǎo)致系統(tǒng)宕機和數(shù)據(jù)丟失的主要原因之一。據(jù)統(tǒng)計,超過70%的企業(yè)級服務(wù)器故障與存儲系統(tǒng)相關(guān)。作為運維工程師,掌握完整的磁盤維護流程不僅能預(yù)防故障,更能在關(guān)鍵時刻拯救整個業(yè)務(wù)系統(tǒng)。
    的頭像 發(fā)表于 07-23 16:59 ?893次閱讀

    【Milk-V Duo S 開發(fā)板免費體驗】2 - 安裝編譯環(huán)境并測試Hello world!

    ARM64 2. RISCV64 Which would you like: 我使用的是 RISCV 系統(tǒng),則選擇 2。 這個腳本會克隆GitHub - milkv-duo/host-tools,不過只有
    發(fā)表于 07-07 21:18

    【VisionFive 2單板計算機試用體驗】RISC-V架構(gòu)卡片計算機初體驗

    前言 說實話,板子收到一周了才發(fā)布第一篇試用報告有點過分,主要是之前沒接觸過RISCV64的板子,原先在ARM板積累的經(jīng)驗貌似在這邊不太行得通,再加上貌似國內(nèi)大廠和高校的源對于RISCV架構(gòu)的支持
    發(fā)表于 07-06 23:28

    【M-K1HSE開發(fā)板免費體驗】超高性能與顏值RISCV64位8核視美泰M-K1HSE開發(fā)板

    【超高性能與顏值RISCV64位8核視美泰M-K1HSE開發(fā)板】 https://www.bilibili.com/video/BV1dQKZzsERi/?share_source
    發(fā)表于 06-26 23:14

    【Banana Pi BPI-RV2開發(fā)板試用體驗】開發(fā)環(huán)境搭建

    我們使用static編譯 riscv64-linux-gnu-gcc -static HelloWorld.c -o HelloWorld 此時就可以正常運行
    發(fā)表于 06-25 16:07

    請問Openvino是否支持 Risc-V (riscv64) 架構(gòu)?

    在spacemit k1型板(bpi-f3)編譯OpenVINO?,但失敗。 使用 riscv64 構(gòu)建OpenVINO?并崩潰。
    發(fā)表于 06-24 07:26