<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

最全教程來啦!在RISC-V星光板上創建Debian系統鏡像

StarFive ? 2022-04-22 13:43 ? 次閱讀

首先你需要一款專為Linux開發者打造的

全球第一代


RISC-V星光開發板

芯片原廠技術支持!

高性價比!

極易上手!

數量有限!

1071b972-bce8-11ec-82f6-dac502259ad0.png

往下看,干貨滿滿~


如何在StarFive 星光板上創建Debian系統鏡像?

轉自Linux開發者Houge的博客,原文鏈接

https://litterhougelangley.life/blog/2022/03/03/



準備工作:


耐心

一杯咖啡

一塊板子和一條串口調試線,至少16G的任何品牌SD card

能熟練操作的一個Linux發行版(推薦Archlinux或者Ubuntu)

大致了解如何利用qemu和binfmt創建RISC-V模擬運行環境

大致了解如何創建塊設備

大致了解如何創建一個RISC-V交叉編譯環境

大致了解如何使用簡單的systemd-nspawn容器或者chroot

大致了解StarFive VisionFive的啟動流程

覺得以上準備好煩,就是想白嫖的朋友只有等我的視頻連載吧~


第一部分:編譯、打包內核,創建deb源


創建一個StarFive VisionFive的RISC-V內核尤為重要,截止本文完稿,主線內核5.16還沒有對StarFive VisionFive的dts和deconfig提供支持,預計5.17能進入主線了,所以目前我們需要使用5.17的發布候選版本,就是RC版本進行編譯和構建。完整流程如下:

#Debian或者Ubuntu

#Debian安裝依賴:
apt install libncurses-dev libssl-dev bc flex bison gcc-riscv64-linux-gnu build-essential ccache cpio fakeroot flex git kmod libelf-dev libncurses5-dev libssl-dev lz4 qtbase5-dev rsync schedtool wget zstd pahole dwarves -y

#Ubuntu安裝依賴:
apt install libncurses-dev libssl-dev bc flex bison gcc-riscv64-linux-gnu build-essential ccache cpio fakeroot flex git kmod libelf-dev libncurses5-dev libssl-dev lz4 qtbase5-dev rsync schedtool wget zstd dwarves -y

#下載源碼:
#可以從這個地址下載內核,但是不要從releases下載。大家最好下載最新的commits,在這里#我提供一個下載地址:https://github.com/starfive-tech/linux
mkdir -p linux-build
#創建編譯目錄

cd linux-build
#進入目錄

wget https://github.com/starfive-tech/linux/archive/54fad564dc7a117704e99248c3984f907e1867d5.tar.gz
#下載特定commits的內核源碼,大家根據你當天最新commits下載。

tar -xpvf 54fad564dc7a117704e99248c3984f907e1867d5.tar.gz
#解壓源碼

mv linux-54fad564dc7a117704e99248c3984f907e1867d5 linux-5.17.0-rc5
#給解壓出來的源碼目錄改一個簡單的名字

cd linux-5.17.0-rc5
#進入該目錄

cp arch/riscv/configs/starfive_jh7100_fedora_defconfig .config
#復制內核配置文件到內核源碼根目錄下,并取名為.config

make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- menuconfig
#利用交叉編譯工具鏈具體再配置內核

make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- -jX bindeb-pkg LOCALVERSION=-starfive-xxx
#-jX 有多少線程都可以利用上,最后那里是去個你喜歡的名字
#等待編譯完成。完成后會在上一層目錄生成4個deb文件,類似下圖:

1090a7ba-bce8-11ec-82f6-dac502259ad0.jpg

這4個deb文件中,其實我們只需要3個就足夠了,一個是linux-headers,一個是linux-image。我們現在知道這三個文件放在你的家目錄的linux-build目錄下。下面我們看看如何用Arch構建:

Archlinux或者其他發行版,可以用類似的方法。


下面談到一些小的技巧,關于文件系統的:

1. 假設你使用btrfs文件系統,在/mnt/目錄下可以創建一個子卷,在子卷下編譯,后續還能打個快照,做做備份;

2. 假設你使用zfs文件系統,建議使用zvol塊設備,格式化成ext4文件系統,掛載到/mnt/xxx/目錄下,構建和打包。原因也同樣是方便備份和做克隆,抑或是快速部署。備份的理由是因為我前前后后用過三個版本的Debian Sid/unstable的gcc交叉編譯工具鏈構建,第一次成功,過了一周編譯失敗了,因為gcc更新后引入了一個bug,需要打補丁,這個時候如果我有上一個版本的備份就直接rollback去構建和打包,就不影響后面的操作了。所以,養成備份和克隆的習慣很重要。下面我們假設你在Archlinux或者其他的發行版上已經在/mnt/xxx/目錄下有子卷或者塊設備了,直接開始~

#以下操作默認在root權限進行

pacman-Syay#安裝我喜歡的yay
pacman-Sparu#安裝你們喜歡的paru
#以上操作二選一

yay -S debootstrap debian-archive-keyring ubuntu-keyring
#安裝Debian系統一些重要工具,debootstrap可以將各種架構的base system安裝到指定目錄,后面的keyring目的是提供密鑰,用于驗證deb包是否被篡改。

debootstrap unstable /mnt/xxx https://mirror.sjtu.edu.cn/debian/
#從上海交大Debian鏡像源下載最新的debian sid base system并且安裝到/mnt/xxx目錄
debootstrap impish /mnt/xxx https://mirror.sjtu.edu.cn/ubuntu/
#從上海交大ubuntu鏡像源下載最新的ubuntu 21.10 base system并且安裝到/mnt/xxx目錄

systemd-nspawn -D /mnt/xxx/ -M kernel --bind-ro=/etc/resolv.conf
#利用systemd-nspawn創建名為kernel的debian/ubuntu x86_64 base system容器

#后續的操作可以參考上面Debian和Ubuntu的操作。完成之后,你需要記住打包好的deb包所在的位置,你可能需要使用root權限去將這些deb復制到你方便操作的目錄下等待下一步操作。

完成內核編譯打包,不要高興太早。

注意在內核源碼目錄下把StarFive VisionFive的dtb文件復制出來到你記得的目錄。這個dtb所在的目錄是<內核源碼>/arch/riscv/boot/dts/starfive/下。大家一定記住。

下面繼續,針對安裝內核deb有兩種操作方法,我更推薦第二種。第一種簡單,但是不清真,就是后續將編譯打包好的riscv內核復制到將來的系統中,直接安裝,命令是:dpkg -i xxx.deb;第二種方法,我更愿意叫它是Debian/Ubuntu安裝軟件的“原教旨主義”,就是通過架設我們的私有的RISC-V deb源,這樣的好處是,可以讓你身邊有需求的朋友,完全按照Debian/Ubuntu系的傳統,安裝你做好的內核,并且能夠維護這個內核版本,以方便他們后續更新使用。我們來談架設Deb源。

選擇合適的服務器:

如果是公司內部,可以選擇在NAS上創建一個Ubuntu的虛擬機,然后將網絡映射到你們公司局域網中,讓所有人都能正常訪問;

如果是像我這種,我選擇XX云,建立一個Ubuntu的VPS作為deb源服務器。好的,現在假設VPS或者你的虛擬機已經創建好了。開始在VPS上操作吧。

apt install reprepro --yes
#安裝reprepro,deb發布器

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
hwclock --systohc
apt install ntpdate
ntpdate -s time.nist.gov
#以上操作的目的是將VPS或者虛擬機的時間同步到標準北京時間,防止時間不匹配,無法安裝和更新軟件

gpg --gen-key
#生成你的密鑰,后續deb包都會用這個私鑰簽名,其他機器需要下載你的公鑰,用于驗證

10ac091a-bce8-11ec-82f6-dac502259ad0.png

上圖就是生成的密鑰,用gpg --list-keys可以顯示出來。注意那一長串字符:706CE3DD…,記下最后8位:33372332,它們有重要作用,別問我怎么知道的,哈哈哈哈~

apt install apache2 -y
#安裝一個你會操作的web服務器,我比較習慣apache

下面去web服務器目錄下創建目錄:

mkdir -p /var/www/html/ubuntu-impish
cd /var/www/html/ubuntu-impish
mkdir -p conf db dists pool
touch conf/distributions
#distributions描述性文件
touch conf/options
#options描述倉庫的一些選項
#注意ubuntu-impish這個是名字,大家喜歡什么名字可以隨便一點,根據你們的需要自由處理。

下面來配置distributions:

Origin: ubuntu
Suite: impish
Label: ubuntu
Codename: impish
Architectures: riscv64
Components: main
Description: Apt repository for StarFive VisionFive V1
SignWith:33372332

上面的內容我來解釋一下:

Origin如果你是Debian,就寫Debian,如果是Ubuntu,就寫Ubuntu

Suite寫成你的發行版的代號

Label類似Origin

Codename就是發行版代號

Components這個是組件,因為我們只是滿足小范圍的朋友使用,main就夠了,如果是嚴格的維護,最好詳細分類

描述部分大家自由發揮

SignWith這里是簽名,還記得你的那8位密鑰嗎?


下面導出我們的公鑰到源目錄:

gpg --export --armor 33372332 > /var/www/html/ubuntu-impish/gpg-public.key
#再次強調那個8位密鑰

10bb21fc-bce8-11ec-82f6-dac502259ad0.jpg

上圖就是創建后的大致樣子。

下面就可以來發布或者撤銷你創建好的內核deb包了:

reprepro -b /var/www/html/ubuntu-impish -C main includedeb impish/<你之前編譯并打包好的deb目錄>/*.deb
#這是發布你的deb包,這時候會彈出一個TUI,你在里面輸入密碼(gpg創建密鑰對時輸入的密碼)

reprepro -b /var/www/html/ubuntu-impish -C main remove impish 
#從倉庫移除或者撤銷deb包

如果一切順利,你的私有deb倉庫就創建好了。好好維護吧~

第一部分小節:

? 內核編譯打包推薦交叉編譯,速度快;

? 記得dtb要復制出來,方便最后處理;

? 構建出來的deb包強烈推薦使用傳統的架設源服務器管理

第二部分:創建塊設備、分區,創建RISC-V的Debian base system


現在無論任何一個發行版,安裝zfs的樹外內核模塊都非常方便了,下面以我自己的習慣來創建塊設備。如果各位不會使用zfs文件系統,也沒關系,利用losetup創建.img文件,作為塊設備也是一樣的。雖然zfs更加“科學”,笑死笑死~

#以下內容均在root權限下操作:
zfs create -V 10G root/Container/starfive-lxde
#在root/Container/池下,創建一個名字叫做starfive-lxde塊設備,大小是10G(10G對于Debian/Ubuntu都夠了,但是對于Gentoo是不夠的,Gentoo需要120G)

cfdisk -z /dev/zvol/root/Container/starfive-lxde
#對該塊設備進行分區,分區的樣子類似下圖:

10cf726a-bce8-11ec-82f6-dac502259ad0.jpg

格式化上面的三個分區:

注意第一個分區是空分區;

第二個分區,格式化成vfat,不用取label名字;

第三個分區,格式化成ext4,label取名字叫做:_/boot;

第四個分區,格式化成ext4,label取名字叫做:_/;

在/mnt目錄下創建一個目錄,我這里就叫做:Starfive,即/mnt/Starfive

開始一系列操作來掛載塊設備到目錄到/mnt/Starfive;

mount -t ext4 /dev/zvol/root/Container/starfive-lxde-part4 /mnt/Starfive
mkdir -p /mnt/Starfive/boot
mount -t ext4 /dev/zvol/root/Container/starfive-lxde-part3 /mnt/Starfive/boot
mkdir -p /mnt/Starfive/boot/efi
mount-tvfat/dev/zvol/root/Container/starfive-lxde-part2/mnt/Starfive/boot/efi

掛載完成后,可以運行lsblk查看下,結構類似下圖:

10dd8882-bce8-11ec-82f6-dac502259ad0.jpg

利用debootstrap安裝RISC-V的Debian base system到/mnt/Starfive下:

debootstrap –arch=riscv64 –keyring /usr/share/keyrings/Debian-ports-archive-keyring.gpg –include=Debian-ports-archive-keyring unstable /mnt/Starfive https://deb.debian.org/Debian-ports/

解釋一下:

–arch=riscv64這里強調了架構,是riscv64的;

–keyring這里需要大家去單獨下載一個deb包,我已經不記得debian和ubuntu的源里是否包含,不包含可以下載這個包,下載后解壓deb提取debian-ports-archive-keyring.gpg這個文件放到我上面這個目錄下;

–include在base system保重,添加特定的包,debian-ports-archive-keyring包是密鑰包,添加一下避免后續萬一缺少密鑰什么麻煩

目前RISC-V架構并不在穩定版本Debian的支持中,比方說現在的Debian穩定版是Debian 11,它是不支持RISC-V的,所以我們只能用不穩定版本Sid/Unstable,如果你在某些網站看到RISC-V是穩定分支,那是宣傳,并不是真實情況。

/mnt/Starfive是目錄,現在已經掛載好塊設備了

https://deb.debian.org/debian-ports/是下載deb包的地址(這是官方源,建議不要用鏡像,偶爾因為同步問題,會出現文件校驗不匹配)

根據各位的網速,完成base system的部署。

第二部分小節:

用你們習慣的方法創建塊設備;

習慣去備份,避免重復勞動,節約時間;

掌握debootstrap的命令,可以看看help的輸出,多嘗試總不會有錯。

第三部分:完善基礎系統,準備/boot目錄必要文件,為開發板最后啟動做準備Debian/Ubuntu創建RISC-V模擬環境

#以下內容均在root權限下完成

apt install qemu-user-static binfmt-support -y
#安裝qemubinfmt創建模擬環境

Archlinux或者其它發行版創建RISC-V模擬環境

大家參考這段Archlinuxwiki就可以了,我就不班門弄斧了。

隨后我們就可以直接用systemd-nspawn進入容器開始后續的操作。

#以下內容均在root權限下完成

systemd-nspawn -D /mnt/Starfive -M starfive --bind-ro=/etc/resolv.conf
#啟動名字為starfive,根目錄在/mnt/Starfive的Debian RISC-V容器。

apt update; apt dist-upgrade -y
#更新系統

apt install curl gnupg2 gnupg vim nano initramfs-tools -y
#安裝必要的工具,編輯器,為后續生成initramfs鏡像做準備。
curl -s http://<內核私有源的地址>/xxx/gpg-public.key | apt-key add -
#添加內核私有源的公鑰到apt-key中,我記得ubuntu和debian這里略有不同,大家根據不同發行版再搜索下方法。

deb http://<內核私有源的地址>/xxx unstable main
#添加私有源的地址到/etc/apt/sources.list中
apt update; apt install <你私有源中內核的名字,切記linux-headers linux-image都安裝>
#刷源,安裝私有源內核

這個時候你的/boot目錄下應該是這樣的:

10eea860-bce8-11ec-82f6-dac502259ad0.png

大家可以從這里下載最早創建的Fedora鏡像中的啟動必要的文件,你可能會問,為什么Debian/Ubuntu下不能根據自己的發行版創建?其實原因是開發板的uboot讀取的配置文件和目前.efi文件所決定的,我們按部就班就可以了。

下面我們就需要將Fedora原始鏡像中文件復制到Debian/Ubuntu的/boot目錄下,做適當修改就可以了。

將boot文件夾(從上面下載的壓縮包解壓出來以后,你會看到)復制到Debian/Ubuntuboot目錄下。

那么目前Debian/Ubuntu的/boot目錄下就還有一個boot文件夾,里面有一個叫做uEnv.txt的文件,大家可以用常用的編輯器打開,將Fedora修改成Debian。類似下面兩張圖所示:

111b66fc-bce8-11ec-82f6-dac502259ad0.png

111b66fc-bce8-11ec-82f6-dac502259ad0.png

11475b22-bce8-11ec-82f6-dac502259ad0.png

完成后我們來復制EFI文件夾(壓縮包里可以見到),將這個EFI文件夾完整復制到Debian/Ubuntu的/boot/efi/目錄下,你可將EFI文件夾里的fedora刪掉,當然保留也可以,作為一個備份。

將編譯內核那個部分生成的dtb復制到你的Debian/Ubuntu的/boot/目錄下。

將壓縮包中的extlinux目錄還有grub.cfg也復制到Debian/Ubuntu的/boot目錄下,用編輯器對extlinux里面的配置文件和grub.cfg進行修改,修改的內容包括kernel對應的vmlinuz文件名,fdt對應的dtb文件,initd對應的initramfs鏡像,UUID值,你可以重新打開一個終端sudo lsblk查看根目錄的UUID,復制后、粘貼過去。最后樣子大概是這樣的:

115813d6-bce8-11ec-82f6-dac502259ad0.png

11874d86-bce8-11ec-82f6-dac502259ad0.png

119bdf58-bce8-11ec-82f6-dac502259ad0.png

最后別忘了ls-l看看/boot目錄,再tree檢查一下(沒有tree就apt安裝一下)。

感覺大功告成了,別忘了最后的收尾:

passwd root
#為root創建一個密碼

sync
#同步文件系統,寫入緩存

exit
#退出容器

umount /dev/zvol/root/Container/starfive-lxde-*
#卸載掛載的塊設備

dd if=/dev/zvol/root/Container/starfive-lxde of=/dev/<你的sdcard> status=progress bs=1M
#將做好的塊設備燒到你的sdcard上,這里注意確定你的塊設備,別寫錯了

第三部分小結:

根據你做的鏡像發行版不同,Debian和Ubuntu導入你內核私有源的公鑰會略有不同,根據遇到的情況查閱Google

按部就班,多檢查細節

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

    關注

    6

    文章

    431

    瀏覽量

    83239
收藏 人收藏

    評論

    相關推薦

    【昉·星光 2 高性能RISC-V單板計算機體驗】為 Ubuntu 安裝 Docker 及常用軟件

    【昉·星光 2 高性能RISC-V單板計算機體驗】為 Ubuntu 安裝 Docker 及常用軟件 目的 為了更好的利用星光2,決定使用容器來管理。 換源 使訪問更快。 # 備份 cp /etc
    發表于 02-21 17:54

    【昉·星光 2 高性能RISC-V單板計算機體驗】VisionFive2開箱+安裝Ubuntu

    【昉·星光 2 高性能RISC-V單板計算機體驗】VisionFive2開箱+安裝Ubuntu 前言 很感謝賽昉科技及iCeasy提供的樣片,讓我第一次接觸高性能的RISC-V的開發板。 開箱 包裝
    發表于 02-21 17:49

    【昉·星光 2 高性能RISC-V單板計算機試用體驗】開箱及裝載Debian系統

    上周收到了昉·星光 2高性能RISC-V單板計算機開發板,在此非常感謝賽昉科技提供的試用機會。開發板處理器集成賽昉科技昉·驚鴻-7110與Imagination GPU。其中賽昉科技昉·驚鴻
    發表于 01-24 00:32

    VisionFive 2 生態進展雙周報(9.1-9.15)

    Linux發行版優化洞悉——以昉·星光 2 Debian為例 RISC-V平臺管理接口(RPMI)介紹 點擊查看更多詳細信息 賽昉科技于8月發布最新版本Debian
    發表于 09-19 09:13

    昉·星光 2(VisionFive 2)Debian 202308最新鏡像發布!

    | RVspace 202308鏡像下載地址 :https://debian.starfivetech.com/ 新增功能 支持的SBC:昉·星光 2 v1.2A和
    發表于 09-08 14:44

    RISC-V + OpenCV 計算機視覺】用 VisionFive 2 昉·星光 2 進行物體識別

    廣泛應用于視頻監控、自動駕駛等領域。 基于Debain操作系統和OpenCV框架,賽昉科技VisionFive 2(昉·星光 2)RISC-V單板計算機上實現了采用GPU加速的目標檢
    發表于 09-08 11:42

    【昉·星光 2 高性能RISC-V單板計算機體驗】原創3 控制螺旋槳電路的升力大小

    控制螺旋槳電路的升力大小,昉·星光 2 高性能RISC-V單板計算機反應敏捷,控制到位,值得上手! GPIO接口也非常多,非常全。如下圖: 謝謝!
    發表于 08-31 16:45

    【昉·星光 2 高性能RISC-V單板計算機體驗】2更換Debian操作系統

    接上兩篇:【昉·星光 2 高性能RISC-V單板計算機體驗】1初識賽昉科技StarFive - RISC-V技術論壇 - 電子技術論壇- 廣受歡迎的專業電子論壇! https
    發表于 08-31 00:03

    【昉·星光 2 高性能RISC-V單板計算機體驗】一:VisionFive2板子調試環境搭建

    DSI顯示接口。其規格如圖3所示。 圖3 VisionFive2星光板的規格 2. 系統燒錄 這里將采用將系統燒錄到SD卡并啟動的方式。首先在百度網盤網址(https://pan.baidu.com
    發表于 08-30 22:10

    RISC-V快速發展的處理器生態系統中找到立足點

    生態系統存在很大的問題——開發人員的支持是可憐的。正在開發芯片架構的RISC-V International更多地談論硬件,軟件優先級遙遙領先。 Initial Support S
    發表于 08-11 18:20

    【昉·星光 2 高性能RISC-V單板計算機體驗】使用之一:星光 2開箱之硬件分析

    昉·星光 2 是全球首款集成了GPU的高性能RISC-V單板計算機。與昉·星光1 相比( JH7100 SoC 芯片采用雙核64位高性能RISC-V CPU,自帶2MB的二級緩存,
    發表于 07-28 15:02

    RISC-V新進展!deepin 成功適配VisionFive 2

    的設計、完整的工具鏈、易于移植Unix系統,以及大量的開源實現和流片案例。 近期,deepin官方RISC-V SIG組成功VisionFive 2開發板適配deepin操作
    發表于 07-10 09:23

    Debian RISC-V 64 位支持何時會到來呢?

    目前 Debian 項目宣布,未來的 Debian 13 “Trixie” 中,將帶來 RISC-V 64 位支持。 Debian 13
    發表于 06-21 08:52

    Debian 13“Trixie”Linux 發行版有望將帶來 RISC-V 64 位支持

    轉自https://m.ithome.com/html/699116.htm 目前 Debian 項目宣布,未來的 Debian 13 “Trixie” 中,將帶來 RISC-V 6
    發表于 06-21 08:49

    openEuler RISC-V 成功適配 LicheePi 4A 開發板

    近期,RISC-V SIG LicheePi 4A 開發板上成功實現了歐拉操作系統的適配。目前,最新版本的 openEuler RISC-V 23.03
    發表于 05-04 22:22
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>