无法从SD卡烧写BeagleBone Black的eMMC

21

我正在使用BeagleBone Black和安装在其上的Debian。我想在我的开发板上刷入最新的Debian镜像。为此,我从链接BeagleBone Image下载了最新的Debian镜像,并使用WinDisk image writer制作了SD卡。

根据教程,我将SD卡插入BeagleBone Black中,按下启动按钮并接通电源。SD卡映像已经引导成功。根据教程,刷写eMMC大约需要30-40分钟左右,因此我等待了大约2个小时(以确保)。然后我从开发板上取出了SD卡并打开电源。它引导了之前的映像(eMMC没有被SD卡映像刷写)。我正在按照链接Flashing beagleBone Balck eMMC.中的说明来刷写eMMC。

我无法理解我做错了什么以及如何解决这个问题。


如果您展示一下如何进行eMMC刷写,那会非常有帮助。 - Jeyaram
我也遇到了同样的问题..你有没有注意到按下启动键后LED灯的状态?在刷写过程中,所有四个LED灯都需要保持稳定。 - Prashant Chikhalkar
@PrashantChikhalkar 是的,我的四个LED灯都稳定亮了大约2秒钟,然后我松开了启动按钮。 - Saad Rafey
9个回答

31

您是否记得在cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh这一行的开头删除“#”号?这将导致SD卡在插入BBB并启动时自动烧录。以下是具体步骤:
1. 将BBB连接到电源(USB或DC都可以)
2. 按下电源按钮关闭BBB。
3. 插入SD卡。
4. 打开BBB电源。
5. 使用SSH登录(我推荐使用putty),端口为22,IP地址为192.168.7.2
6. 执行:cd .. sudo nano boot/uEnv.txt
7. 找到txt文件底部的#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh这一行。
8. 删除该行开头的“#”符号。
9. 按control+x键,然后输入“y”,最后按“Enter键”保存更改并退出txt文件。
10. 重启BBB,验LED灯会按照以下模式闪烁(根据我的经验大约持续10分钟)。LED模式:1-2-3-4-3-2-1-2-3-4-3-2-1-2-3-4-3-2-1......

希望能对您有所帮助 :)


1
如果你使用的是Linux电脑,你可以直接将SD卡插入其中以编辑uEnv.txt。我一直在想为什么你不这样做,然后想起Windows无法读取ext4文件系统。 - orodbhen
6
我很惊讶自己在这上面浪费了那么多时间——太多的指南只是说插入SD卡然后按按钮。唉。如果你不想把你的SD卡变成地雷,一个选择是不要更改uEnv.txt设置,通过真正的RS232串行连接(通过J1引脚)启动并登录,从SD卡启动,然后直接运行init-eMMC-flasher-v3.sh(或任何版本)命令。这样你就可以观察进度,而不是傻等着看灯闪烁或者不闪烁。 - Steve Friedl

6

一些Beagle Bones不使用此方法(按下引导/用户按钮,插入5V连接器等)进行闪存,这也在各种文档(linux.org)中有所描述。

因此,如果此方法也无法让您闪存eMMC,则可以尝试以下方法:

  1. in /boot/uEnv.txt, the content is: ...

    #cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v2.sh
    

    Uncomment the last line and with the next boot, it should flash the eMMC according to the method described in the documentation (press the boot-button and then plug in the 5V connector)

  2. login to the beaglebone (this is only an example, the real devices are shown in your system and you have to find out the real device-names)

    • find out, where the root device is, for example:

      df /dev/mmcblk1p2   1855016 635552   1123568  37% /
      

      If you have booted from the SD Card, then this (/dev/mmcblk1p2) is the SD- Card partition, which is recognized by the OS.

    • find the eMMC device:

      find /dev/disk/by-path/ -ls
      

      which is showing the connected devices on your system and the paths If there is a device which differs in the name from the device, where your Root (/) is mounted, then this is the eMMC device, we are searching for, for example: /dev/disk/by-path/platform-mmc.5 -> ../../mmcblk0

    • So IF your mounted root device is: /dev/mmcblk1p2 AND your SD Card Device is: /dev/mmcblk0 then, alls you have to do is to "copy" the SD-Card content to the eMMC device:

      dd if=/dev/mmcblk0 of=/dev/mmcblk1
      
简而言之,使用dd命令将SD卡上的内容复制到eMMC中。

1
我尝试了第二种情况,但它没有起作用。我尝试了第一种情况 - 它开始无限地按顺序闪烁LED灯。 - maximus
@maximus 我的问题是,当我从SD卡启动时,我永远无法访问或看到mmcblk1。我使用BBG,它可以从SD卡启动。之后,我通过putty从SSH连接BBG。然后我执行find /dev/disk/by-path/ -ls但我看不到mmcblk1!我只能看到mmcblk0,它被挂载到根目录(SD卡本身)。你有什么想法可以解决这个问题吗? - Fer
@Fer,/var/log/messages 中是否出现了 mmcblk1?如果没有,它就没有连接到您的系统。 - Coliban
@Coliban 抱歉,我检查了错误的文件。在编辑之前请忽略我的评论。我将在几分钟内发布文件内容。 - Fer
@Coliban 我现在检查文件。mmcblk1看起来像这样:mmcblk1: mmc1:0001 P1XXXX 3.60 GiB mmcblk1boot0: mmc1:0001 P1XXXX partition 1 2.00 MiB mmcblk1boot1: mmc1:0001 P1XXXX partition 2 2.00 MiB mmcblk1: p1 p2 mmcblk1boot1: 未知分区表 mmcblk1boot0: 未知分区表 - Fer
显示剩余5条评论

5

大家好,

没有一个答案对我有用。但是可以实现

这是我的解决方案:

工具

资源

步骤

  1. 获取最新版本的Debian发行版,目前是9.1

    • 下载
    • 使用7Zip解压缩到:bone-debian-9.1-lxqt-armhf-2017-07-30-4gb.img
  2. 将其写入SD卡

  3. 调整SD卡上的一些设置

    • 这可能是最难以理解和未记录的部分。我花了很多时间才弄明白,但无论如何。
    • 插入SD卡。
    • 连接HDMI电缆到显示器。
    • 按住BBB rev C上除了电源重置之外唯一的另一个按钮S2
    • 插入电源。
    • 按下电源按钮。
    • 等待Debian Stretch启动。
    • 进入终端

      • 如果您不确定如何进行此操作,请留言,我将记录它。我假设大多数人都知道如何操作。
      • 基本上是打开SSH连接或插入USB键盘。
    • sudo nano /boot/uEnv.txt

    • 取消注释(即删除#)最后一行:

      #cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

    • 保存文件

      在nano中,按Ctrl+X然后y

  4. 刷写BBB

    • 关闭BBB的电源
    • 从BBB上拔掉所有东西。我的意思是所有东西,USB,HDMI,电源,USB电缆。 所有东西
    • 插入新写好的SD卡。
    • 按住BBB rev C上除了电源重置之外唯一的另一个按钮S2
    • 插入电源。确保您有一个5V / 2A的电源,否则它可能会关闭!我使用了三星Galaxy电源适配器,它很高兴提供这两个:)。

预期效果

  • 蓝色灯会闪烁一段时间。
  • 然后它们将进行非常明显的上下循环,类似于进度条。
  • 等待所有灯都稳定并保持亮着的状态。这意味着闪存已完成。
  • 之后,您应该能够:
    • 通过按住电源按钮10秒钟关闭Beagle Bone。
    • 取出SD卡
    • 插入HDMI监视器/蓝牙键盘
    • 唱功!按下电源按钮,新的Debian Stretch v9.1应该在约1分钟内启动。

安装后

  • 如果您想使用SD卡启动以获得更多内存,您将被迫重新刷写设备,这很不方便。为了规避此问题:
  • 没有SD卡的情况下启动BBB
  • 挂载SD卡 sudo mount /dev/mmcblk0p1 /mnt
  • sudo nano /mnt/boot/uEnv.txt
  • /boot/uEnv.txt的最后一行附加一个注释,使其读取如下内容:

    #cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

  • 保存并关闭文件。
  • sudo umount /mnt

注意:如果这些步骤中的任何一个对您不起作用,请留言,我将尽力帮助您。

这对我来说是非常令人沮丧的过程,所以我会尽力帮助大家。


2
我们遇到了同样的问题。使用全新的BBB rev C,并尝试使用有效图像解压(它已成功在其他BBBs上工作),结果LED在几秒钟后停滞不前。有趣的是,如果你将串行调试电缆插入板子上并在另一端使用终端尝试刷新,它会出现错误dd: writing /dev/mmcblk1 failed - no space。因此,可能某些板子的eMMC分区使得镜像无法适合于工厂预装的2GB存储,但如果工厂格式更大,则可以正常工作。
解决方案:运行fdisk -l查找eMMC分区的大小。删除不必要的分区,直到只剩下一个大分区。从SD卡中刷新。完成?

1
你曾尝试过不按住启动按钮就启动吗?这是我特殊的BBB的解决方案。在我看来,并非所有的BBB都以同样的方式处理启动按钮。如果我按住特殊的BBB上的启动按钮,什么也不会发生!因此,我尝试在启动时不按下按钮,与您提供的链接Flashing beagleBone Balck eMMC相反,它能够正常工作。
否则,只有选择文件名中包含“..flasher...”的映像才会进行闪存。如果您错误地选择了示例中的“http://debian.beagleboard.org/images/bone-debian-7.8-lxde-4gb-armhf-2015-03-01-4gb.img.xz”,那么它将不会闪存。

1
假设您已准备好带有BBB的emmc刷卡器映像的SD卡,请按照以下步骤操作,
使用仅一个5V 2A电源插头插入DC插孔执行此过程。或者,您可以使用USB适配器供电。 断开以太网电缆并删除任何屏蔽和USB外围设备
通过物理断开USB /电源电缆关闭BBB。
将micro-SD卡插入BBB的micro-SD卡槽中。
在顶部右侧(靠近SD卡插槽)按住启动按钮(S2),同时按住此按钮,插入USB /电源线以连接电源。 保持按住按钮,直到LED开始闪烁。蓝色板载LED应该按顺序点亮,然后继续闪烁5至25分钟(取决于所使用的发行版和SD卡的速度)。
最新的分发以Cylon / Knightrider模式闪烁。
等待LED灯停止闪烁并且4个LED灯全部点亮(最新的镜像会自动关闭开发板)。这个过程可能需要5-25分钟,具体时间取决于使用的镜像。
如果刷写过程失败,例如没有LED灯闪烁,或者持续运行超过45分钟,则断开电源并尝试按下S2按钮重新启动BBB。
拔出micro-SD卡。这很重要,因为您可能会意外地再次刷写eMMC。
最后,按下电源按钮(S3)以启动开发板,您应该已经安装了最新的镜像。

1
我已经尝试过了,但是没有得到预期的结果。 - Saad Rafey
我已经成功地按照答案中指定的步骤刷写了我的BBB emmc,请确保您没有遗漏任何步骤。 - Prashant Chikhalkar

1
尝试按照官方逐步说明所述进行操作,但连接直流电源(不是USB)并使用HDMI电缆连接显示器以查看发生了什么。我也遇到了同样的错误,但是在插入直流电源后,它开始工作。
如果不起作用,您可以尝试:
  1. 选择具有足够内存的SD卡,以便能够容纳至少两个OS img文件。
  2. 准备SD卡OS(使用dd linux命令将img复制到SD卡中)。
  3. 使用fdisk创建新分区并格式化它。
  4. 将img(操作系统映像)文件复制到新创建的分区中。
  5. 从SD卡启动。
  6. 最后,使用从新创建分区(可能需要挂载)获取的映像文件和dd命令,在beaglebone分区上重复图像写入。

1

对于仍然存在问题的用户,您也可以尝试更新刷写脚本。

cd /opt/scripts/
git pull
shutdown -r now

这将会更新很多东西,我不知道它会更新哪些内容,但有时候在Wheezy 7.10上,即使我执行了apt-get update命令,我现在也会从Jessie中获取内容,并且安装正确。我认为我的EMMC上的闪存脚本可能出了问题,这可能已经修复了它们。
这可能还会用一个默认版本覆盖你的/boot/uEnv.txt文件,因此请确保返回并编辑/boot/uEnv.txt,取消注释行#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh,以便您的闪存程序可以从SD卡运行。
我一直在尝试更新我的BB Black和Greens,到目前为止,其中4个似乎都需要进行这一步骤,所有这些都来自Wheezy 7.10或Jessie 8.
运行它并让它更新后,关闭电源,插入SD卡,按住按钮,再通电……看看会发生什么。

0
只是对于那些跟我一样非常晚才开始的成千上万个教程的一个备注。
打算使用基于 Debian 11 的极简变体(debian 11 based minimal variant)进行 BBG,有一个微小但非常重要的区别: 在 /boot/uEnv.txt 中,现在有一个通用的 eMMC 刷写程序在第57行: cmdline=init=/usr/sbin/init-beagle-flasher 通过去掉 # 来激活该程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接