本文來源電子發燒友社區,作者:HonestQiao, 帖子地址:https://bbs.elecfans.com/jishu_2288624_1_1.html
在賽昉的RVSPACE社區上,提供了很多當前已經適配的操作系統:
我比較喜歡的是Debian系統,比純粹穩定,所以這次下載Debian系統進行安裝。當然,我也進行過包括包括boot、kernel、系統在內的從頭構建。不過對于新上手的玩家,建議先下載已經做好的鏡像,基本玩上了,再考慮從頭構建。
在上一篇文章昉·星光RISC-V單板機上手之Debian系統燒錄 訪問 點燈,我已經分享過如何燒錄Debian鏡像到SD卡上。
目前這個Debian鏡像安裝后,內核是5.17.0-rc4版本的。
而賽昉官方,在starfive-tech/linux (github.com)提供了最新的內核代碼,我們可以自己編譯安裝。
要編譯內核,我們可以在一臺Debian/Ubuntu服務器上進行,在虛擬機或者Docker中,也完全可以進行,需要的環境普普通通即可,沒有特殊需要。
有一點要注意,不要在咱們的星光派單板計算機上進行內核的編譯。當前的星光派單板計算機受限于主頻和內核數的原因,編譯內核會非常耗時。
我在一臺普通的老舊電腦上跑的Ubuntu服務器上編譯,用時20分鐘。
以下是整個編譯操作過程:
一、編譯內核
注意:以下操作,在一臺Debian/Ubuntu服務器上進行
# 登錄到一臺debian/ubuntu服務器上操作
ssh ubuntu@ubuntu-server
# 下載最新內核代碼:如果下載速度不理想,可以提前下載了壓縮包拷貝上來
wget https://github.com/starfive-tech/linux/archive/refs/heads/visionfive.tar.gz
tar xzvf visionfive.tar.gz
cd linux-visionfive
# 或者
git clone https://github.com/starfive-tech/linux.git
cd linux
# 安裝編譯工具鏈
sudo apt install libncurses-dev libssl-dev bc flex bison make gcc gcc-riscv64-linux-gnu screen
# 編譯:此處使用screen,防止中途中斷
screen -S make-kernel
make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- olddefconfig
time nice make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- -j$(nproc) bindeb-pkg LOCALVERSION=-starfive > make.log 2>make.err
# ctrl a 同時按,然后松開,再馬上按 d,即可將上述編譯轉入后臺運行
# 查看編譯進度
tail -f make.*
# 顯示如下部分的時候,表示編譯完成
> dpkg-deb: 正在 '../linux-headers-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb' 中構建軟件包 'linux-headers-5.19.0-rc3-starfive'。
> INSTALL debian/linux-libc-dev/usr/include
> dpkg-deb: 正在 '../linux-libc-dev_5.19.0-rc3-starfive-1_riscv64.deb' 中構建軟件包 'linux-libc-dev'。
> dpkg-deb: 正在 '../linux-image-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb' 中構建軟件包 'linux-image-5.19.0-rc3-starfive'。
> dpkg-buildpackage: info: binary-only upload (no source included)
# 查看編譯生成的內核包
ls -lh ../linux-*.deb
-rw-r--r-- 1 honestqiao honestqiao 7.7M 6月 22 19:03 ../linux-headers-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb
-rw-r--r-- 1 honestqiao honestqiao 67M 6月 22 19:03 ../linux-image-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb
-rw-r--r-- 1 honestqiao honestqiao 1.2M 6月 22 19:03 ../linux-libc-dev_5.19.0-rc3-starfive-1_riscv64.deb
# 提供臨時web服務
python3 -m http.server -d ../
> Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...
二、在賽昉星光派單板計算機上安裝新內核
# 登錄到賽昉星光派單板計算機上
ssh user@賽昉單板計算機ip
# 下載生成的內核包:通過編譯服務器提供的臨時web服務下載,下載的具體文件名,請根據編譯生成的實際deb文件名修改
wget http://ubuntu-server:8888/linux-headers-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb
wget http://ubuntu-server:8888/linux-image-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb
wget http://ubuntu-server:8888/linux-libc-dev_5.19.0-rc3-starfive-1_riscv64.deb
# 安裝內核包
sudo apt install ./linux-*.deb
> 正在讀取軟件包列表... 完成
> 正在分析軟件包的依賴關系樹... 完成
> 正在讀取狀態信息... 完成
> 注意,選中 'linux-headers-5.19.0-rc3-starfive' 而非 './linux-headers-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb'
> 注意,選中 'linux-image-5.19.0-rc3-starfive' 而非 './linux-image-5.19.0-rc3-starfive_5.19.0-rc3-starfive-1_riscv64.deb'
> 注意,選中 'linux-libc-dev' 而非 './linux-libc-dev_5.19.0-rc3-starfive-1_riscv64.deb'
> 升級了 0 個軟件包,新安裝了 3個軟件包,重新安裝了 0 個軟件包,要卸載 0 個軟件包,有 4 個軟件包未被升級。
# 查看安裝后的文件:ls -lh /boot/*5.19*
> -rw-r--r-- 1 root root 218K 6月 22 17:39 /boot/config-5.19.0-rc3-starfive
> -rw-r--r-- 1 root root 22M 6月 22 19:43 /boot/initrd.img-5.19.0-rc3-starfive
> -rw-r--r-- 1 root root 0 6月 22 20:50 /boot/initrd.img-5.19.0-rc3-starfive.new
> -rw-r--r-- 1 root root 5.1M 6月 22 17:39 /boot/System.map-5.19.0-rc3-starfive
> -rw-r--r-- 1 root root 9.1M 6月 22 17:39 /boot/vmlinuz-5.19.0-rc3-starfive
> ...
> update-initramfs: Generating /boot/initrd.img-5.19.0-rc3-starfive
# 記住好上面的具體版本,下面配置的時候,務必要配置準確
三、配置使用新內核
# 配置內核啟動
# 查看現有配置
cat /boot/grub.cfg | grep -E 'menuentry' -A 4
# 將上述顯示的menuentry配置內容進行復制并修改,然后添加到內核配置中。【具體版本號,請根據實際版本的修改,我當前的最新版本為5.19.0-rc3-starfive_5.19】
# /boot/grub.cfg最終內容如下:
set default=1
set timeout_style=menu
set timeout=3
set debug="linux,loader,mm"
set term="vt100"
menuentry 'Debian vmlinux-5.17.0-riscv starfive' {
linux /vmlinuz-5.17.0-rc4-starfive-rc4 rw root=UUID=3e6da6ef-00b2-4d25-b826-7645050f678d rhgb console=tty0 console=ttyS0,115200 earlycon=sbi rootwait stmmaceth=chain_mode:1 selinux=0 LANG=en_US.UTF-8
devicetree /jh7100-starfive-visionfive-v1.dtb
initrd /initrd.img-5.17.0-rc4-starfive-rc4
}
menuentry 'Debian vmlinux-5.19.0-rc3-starfive' {
linux /vmlinuz-5.19.0-rc3-starfive rw root=UUID=3e6da6ef-00b2-4d25-b826-7645050f678d rhgb console=tty0 console=ttyS0,115200 earlycon=sbi rootwait stmmaceth=chain_mode:1 selinux=0 LANG=en_US.UTF-8
devicetree /jh7100-starfive-visionfive-v1.dtb
initrd /initrd.img-5.19.0-rc3-starfive
}
# 查看當前版本,然后重啟生效
uname -r
> 5.17.0-rc4-starfive-rc4
unamr -a
> Linux Debian-StarFive 5.17.0-rc4-starfive-rc4 #1 SMP PREEMPT Wed Feb 16 00:47:02 CST 2022 riscv64 GNU/Linux
# 重啟
sudo reboot
# 重啟后,重新登錄
# 查看新的內核版本
uname -r
> 5.19.0-rc3-starfive
uname -a
Linux Debian-StarFive 5.19.0-rc3-starfive #1 SMP Wed Jun 22 17:39:59 CST 2022 riscv64 GNU/Linux
# 更新系統
sudo apt update
sudo apt upgrade
sudo apt autoremove
四、問題排除
因為 /boot/grub.cfg 為系統啟動GRUB配置文件,如果修改不正確,可能會無法正常啟動。
如果確實無法啟動,則可以按照官方資料,用串口線連接登錄到串口終端,查看具體情況:
等顯示GRUB 菜單界面的時候:
可以按上下鍵,選擇進入老的5.17的內核;也可以選擇新的內核,然后按e進入編輯,按照界面提示編輯即可,編輯后按ctrl x使用該配置啟動。
我曾經使用apt安裝了5.18內核,但是修改配置的時候,把linuz寫成了linux,導致無法啟動,就用上面的辦法簡單處理就能進入了。
-
RISC-V
+關注
關注
45文章
2292瀏覽量
46211 -
賽昉科技
+關注
關注
3文章
154瀏覽量
14305
發布評論請先 登錄
相關推薦
評論