樹莓派4b通過外接硬盤啟動的方法和問題解決


想用幾台樹莓派做一些微服務和集群的測試,但sd卡作為系統盤一直是樹莓派的詬病和性能瓶頸,sd卡壽命短,傳輸速率慢,查了下資料,發現只要更新2020-09-03或更高版本的Bootloader,Raspberry Pi OS 2020-08-20或更高版本的系統,就可以原生支持從網絡或硬盤啟動。

如果你的系統早於2020-08-20安裝,需要手動更新系統到最新。

sudo apt update
sudo apt full-upgrade

編輯/etc/default/rpi-eeprom-update,更改為stable模式

sudo vim /etc/default/rpi-eeprom-update

FIRMWARE_RELEASE_STATUS="stable"

更新BOOTLOADER

sudo rpi-eeprom-update -a

截止到2021-03-04,最新的BOOTLOADER為

BCM2711 detected
Dedicated VL805 EEPROM detected
Checking for updates in /lib/firmware/raspberrypi/bootloader/stable
Use raspi-config to select either the default-production release or latest update.
BOOTLOADER: up-to-date
CURRENT: 2021年 02月 16日 星期二 13:23:36 UTC (1613481816)
LATEST: 2021年 02月 16日 星期二 13:23:36 UTC (1613481816)
RELEASE: stable
VL805: up-to-date
CURRENT: 000138a1
LATEST: 000138a1

重啟

sudo reboot

有文章說需要運行sudo raspi-config,設置第六項(Advanced Options)里的Boot Order,選擇Usb Boot,但不是必須設置,只要不塞SD卡,系統會自動從USB啟動。

以上完成后,可以將原sd卡的系統和文件全部遷移到SSD上,可以用系統自帶的SD Card Copier

還可以使用命令

df -h  #查看存儲設備的名稱
#/dev/mmcblk0為sd卡  /dev/mmcblk0為ssd
sudo dd if=/dev/mmcblk0 of=/dev/sda bs=4M  

也可以使用讀卡器直接克隆到ssd,自行發揮

然后拔掉sd卡,插上ssd,順利的話,系統可以正常啟動,從此告別sd卡。

但我的設備(奧睿科透明2.5硬盤盒+Samsung SSD)沒法正常啟動,屏幕卡在黑屏或提示:

mmc1:Controller never released inhibit bit(s)....

硬盤燈一秒鍾閃爍一次,ssd硬盤不停讀盤,換了一個有源硬盤盒可以順利啟動,以為是電壓不足的原因,買了帶供電的usb hub嘗試后失敗,換了帶輔助供電的usb3.0硬盤線,但線材沒做防倒流設計,直接給樹莓派usb口反相供電,繞過了電壓過載保護,容易燒壞主板,此方案也失敗,查了資料說樹莓派usb端口可以提供1.2A的電流,我的ssd功耗才0.9A,沒道理供電不足,買了根micro hdmi線材接到顯示器並沒有出現電壓不足的閃電標志,電源燈也沒閃爍,排除了供電問題。

官方論壇里查到系統在啟動時會延遲USB端口供電,默認為1秒,有人通過修改配置USB_MSD_PWR_OFF_TIME=0可以解決無法啟動的問題

# BOOTLOADER在2021-01-11之前的版本可以嘗試
sudo -E rpi-eeprom-config --edit

但在2021-01-11以后的BOOTLOADER版本中,這個問題已經不存在了。

那就是硬盤盒的問題了,果然官方文檔上有描述:

This is especially important with USB SATA adapters which may be supported by the bootloader in mass storage mode but fail if Linux selects USB Attached SCSI - UAS mode.
See this forum thread about UAS and how to add usb-storage.quirks to workaround this issue.

大概意思是,如果硬盤盒廠商沒有完全實現UAS協議或者系統內支持UAS設備列表里沒有廠商發布的產品ID號,SSD訪問速度就會變得奇慢或者無法訪問。

需要手動修改/boot/cmdline.txt文件,添加設備信息

# 首先查看驅動器型號
lsusb

Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

sudo vim /boot/cmdline.txt

在文件的最前面添加usb-storage.quirks=152d:0578:u 152d:0578為你通過lsusb命令實際查詢設備id號

usb-storage.quirks=152d:0578:u console=serial0,115200 console=tty1 root=PARTUUID=dc77c2e2-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

重啟后可以從SSD正常啟動了,可以放心折騰了。

進行速度對比測試

# sd卡啟動
pi@raspberrypi:~ $ dd if=/dev/zero of=test bs=1M count=1000
記錄了1000+0 的讀入
記錄了1000+0 的寫出

1048576000 bytes (1.0 GB, 1000 MiB) copied, 39.5912 s, 26.5 MB/s

#ssd啟動
pi@raspberrypi:~ $ dd if=/dev/zero of=test bs=1M count=1000
記錄了1000+0 的讀入
記錄了1000+0 的寫出
1048576000 bytes (1.0 GB, 1000 MiB) copied, 5.63597 s, 186 MB/s

提升效果還是很明顯的

起初以為樹莓派ssd啟動和windows進PE系統一樣簡單,草率google了下就以為是電源問題,買了兩次供電設備都沒效果,又嘗試解決延遲usb供電的問題,原來那些文章都已經過時了,官方的文檔和最新的論壇帖子才是正道,因此走了很多彎路,可能因為太冷門,對於硬盤無法啟動樹莓派的內容,國內幾乎搜不到合適的文章,所以在這分享一下,看到的朋友不要在這浪費時間了。

總結:

如果電源燈間歇性閃爍,外接屏幕有閃電符號顯示,啟動的設備標注功耗超過1A,或使用普通硬盤或3.5英寸的硬盤,就需要使用外接硬盤供電。

官方電源說明
https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/README.md

排除電源問題后系統還卡在啟動畫面或者系統檢測時間很久,那可能是硬盤設備問題,可以使用上面的解決方案。

參考:
https://www.tomshardware.com/how-to/boot-raspberry-pi-4-usb
https://www.raspberrypi.org/forums/viewtopic.php?t=303260
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md
https://github.com/raspberrypi/firmware/issues/1515
https://www.raspberrypi.org/forums/viewtopic.php?t=245931
https://www.raspberrypi.org/forums/viewtopic.php?t=245348
https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=304255

個人博客:https://fraee.com/2021/03/04/rpi-boot-from-ssd.html#more


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM