树莓派4b通过外接ssd硬盘启动系统失败,症状:

屏幕卡在黑屏或提示

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

先说如何设置硬盘启动,后面是解决问题的方法。

想用几台树莓派做一些微服务和集群的测试,但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)没法正常启动,硬盘灯一秒钟闪烁一次,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=304255

树莓派4b通过外接ssd硬盘启动系统失败的排查和解决的更多相关文章

  1. SSD硬盘安装系统后要做的事

    1***cmd>fsutil behavior query DisableDeleteNotify 0如果返回值是0,则代表TRIM处于开启状态:反之如果返回值是1,则代表TRIM处于关闭状态2 ...

  2. linux系统故障分析与排查

    在处理Linux系统出现的各种故障时,故障的症状是最先发现的,而导致这以故障的原因才是最终排除故障的关键.熟悉Linux系统的日志管理,了解常见故障的分析与解决办法,将有助于管理员快速定位故障点.“对 ...

  3. WinCE启动失败的原因与解决办法分析

    本文通过一个真实的嵌入式项目进行说明.文中的嵌入式系统用的是ARM处理器+WinCE平台,项目的目的是要把WinCE平台从旧版本移植到WinCE6.0平台上.但结果是这个WinCE系统在启动的时候经常 ...

  4. 换SSD硬盘,重装系统,一阵子忙乱

    许久没重装过系统了,低声下气地问老板要了一块SSD硬盘,不马上安装上手痒得难受,但年底这个时候重装系统绝对忙乱,差点耽误了一份申请表和一份培训记录表.   SSD安装:先从网上找相关贴子,最主要的一个 ...

  5. [Mac] Mac book pro互换SSD硬盘、生产启动U菜、TimeMachine恢复 小记

    Mac book pro 硬盘故障.互换SSD硬盘.启动U磁盘生产 小记 2012新年买Mbp了.尽管各种功能都能用,但常常频繁的出现鼠标风火轮,已经下好的电影在本地播放时都会隔个几分钟卡一下. 拿到 ...

  6. WinPE无法识别NVMe SSD硬盘,如何重装系统

    (源自网络出处不详) 抽风,diy一台新机器,下载的win10系统安装时出现如题所示的问题,开始以为是主板的问题设置u盘启动也不行,后来在某个群里有人说是系统版本问题,无奈重新做了启动优盘(用的17年 ...

  7. 树莓派4B安装Raspbian系统及配置

    2019/11/11, 树莓派4B, Raspbian Buster 摘要:给树莓派4B安装系统及基础配置 树莓派实验室参考文档 准备工具 树莓派4B硬件 SD卡格式化工具 SD Formatter ...

  8. Raspberry Pi:树莓派开发板配置USB启动系统

    准备材料 树莓派4B U盘 TF卡 树莓派基础镜像2020-08-20稳定版(这个系统是必须的并拷录在TF卡) Kali树莓派系统(这个是我想要学习的系统,大家可以准备自己的系统,拷录在U盘的) SD ...

  9. 请详细描述(以硬盘启动)Linux系统从打开主机电源到进入登录界面整个过程的流程。

    1. 开机进行BIOS(BIOS(Basic Input / Output System)自检测系统外围硬件设备如CPU.内存.IO.显卡.鼠标键盘等.根据BIOS中设置的系统启动顺序搜索用于启动系统 ...

随机推荐

  1. 牛客编程巅峰赛S1第11场 - 黄金&钻石 C.牛牛找子集 (二分)

    题意:有一\(n\)个数,从中找数构成相同的子集,要求子集元素个数为\(k\),求构成子集个数最多的情况,输出子集(字典序最小). 题解:我们可以对子集的个数二分答案,首先用桶记录每个元素的个数,然后 ...

  2. Linux-用户/用户组身份提权

    sudo 身份提权(更安全) su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全. 为了改进这个问题,从而产生了su ...

  3. Socket 编程简介

    Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. 本章节我们为大家接收 Perl ...

  4. axios增加自定义headers,页面上出现,服务端收不到

    问题 axios增加自定义headers,页面上出现,服务端收不到 原因 vue-cli起的服务是用node-http-proxy中间件处理的 默认是只有几个常用的header,自定义header是直 ...

  5. HDU 4649 Professor Tian(概率DP)题解

    题意:一个表达式,n + 1个数,n个操作,每个操作Oi和数Ai+1对应,给出每个操作Oi和数Ai+1消失的概率,给出最后表达式值得期望.只有| , ^,&三个位操作 思路:显然位操作只对当前 ...

  6. μC/OS-III---I笔记1---概述

    在裸板上跑一些程序对于一些电子设计是足够的,所谓裸板上的程序就是传统的前后台系统,而我的理解它应该是一种"过程类"的程序,一个大循环(作为后台)做一些处理,中断程序(作为前台)来处 ...

  7. vue template

    vue template <template> <div class="custom-class"> ... </div> </templ ...

  8. Principle for iOS App Animation Design

    Principle for iOS App Animation Design Animate Your Ideas, Design Better Apps https://principleforma ...

  9. Android vs iOS vs Web

    Android vs iOS vs Web UI view Android ViewGroup ImageView TextView iOS UIView ImageView TextView Web ...

  10. image auto downloader

    image auto downloader icons killer / js crawler http only + same-origin OK "use strict"; / ...