樹莓派4b通過外接ssd硬碟啟動系統失敗的排查和解決
阿新 • • 發佈:2021-03-04
樹莓派4b通過外接ssd硬碟啟動系統失敗,症狀:
螢幕卡在黑屏或提示
mmc1:Controller never released inhibit bit(s)....
![](https://img2020.cnblogs.com/blog/1568005/202103/1568005-20210304182044980-1941545435.png)
**先說如何設定硬碟啟動,後面是解決問題的方法。**
想用幾臺樹莓派做一些微服務和叢集的測試,但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
![](https://img2020.cnblogs.com/blog/1568005/202103/1568005-20210304174242354-352804246.png)
還可以使用命令
```
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)沒法正常啟動,硬碟燈一秒鐘閃爍一次,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正常啟動了,可以放心折騰了。
起初以為樹莓派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