1. 程式人生 > >樹莓派4b通過外接ssd硬碟啟動系統失敗的排查和解決

樹莓派4b通過外接ssd硬碟啟動系統失敗的排查和解決

樹莓派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