我正在尝试在 Android 电视盒上刷新 libreelec,但没有可以放入 libreelec 烤面包机的图像。在 RPi 上,这非常简单,在这里我想我必须编译一些东西,我真的没有答案。有一个基于 S802 的先前 Box 的图像(只找到了 lakka 版本(?)),但即使有 S812 的 libreelec,我也不知道谁将它从 zip/tar 中“编译”为实际的USB-SD-creator 的图像。也许它比看起来更容易,请给我提示!
起始问题:有人知道如何在基于 S812 的板上刷新/编译 Libreelec 吗?
当前问题:如何反编译arm固件文件,以获得设备树文件,这显然是在我的主板上安装不同操作系统所需要的?
看:
烤面包机:https://libreelec.tv/2016/08/usb-sd-creator/
lakka/libreelec 为上一个框构建 (.img):http://le.builds.lakka.tv/S802.M8.arm/
libreelec 从 amlinux.ru 构建,例如用于基于 S812 的盒子: https://mega.nz/#F!W0Qk2JIQ!P1iyw7dFFHvubkIUZ-i1lA!3ohmxIaJ
1. 如何从基于 S812 的主板的 libreelec 构建中创建烤面包机的映像文件?
可能的解决方案:
以下页面包含许多针对 Amlogic 板(S805 S905 S905X S912(SD 和 USB))的 Linux 版本:
2.那么我怎样才能写一个可启动的sd卡,它适合amlogic板的需要(我想我不能使用imagetoaster)?
可能的解决方案:
这个页面有点帮助,显然我只需要通过 SD 卡上的 dd 复制提取的图像(.xz -> .img),因为较新的版本包含所有必要的文件,用于启用多重启动以并行使用 android 和 linux (我稍后会解释)。
我发布这两个内容是因为我知道很多人不熟悉出色的 xz 压缩格式。下载适合您需要的映像,然后从类 Unix 系统中以 root 身份运行,将其转储到用于启动 CuBox-i 的 MicroSD 卡。假设您的 MicroSD 卡显示为 /dev/sdd:
# dd if=cubox-i.img of=/dev/sdd
看:https://people.debian.org/~gwolf/
3.我最终按照以下说明在电视盒上刷新linux:
1.) 在运行 Android 的电视盒上,将准备好的卡插入电视盒的 SD 插槽或使用 USB 读卡器。注意:我喜欢使用带有活动 LED 的读卡器,这样我就可以看到正在发生的事情。首次启动可能需要几分钟时间,闪烁的 LED 让人放心。
2.) 在 Android/设置/关于设备/系统/更新。注意:您的应用程序抽屉中可能有更新和备份应用程序。 - 在更新和备份应用程序的 UpdateLocale 部分下,单击选择,选择 aml_autoscript.zip,然后单击更新。注意:不要选中“擦除数据”和“擦除媒体”。需要明确的是,不要使用这些选项
3.) 电视盒将重新启动,会重新启动几次。最终您将看到初始登录提示。初始登录凭据,请参阅此处了解不同图像的登录信息。
系统将要求您选择一个新密码,请这样做。系统会要求您创建一个新用户和 P/W,请执行此操作。
盒子将重新启动,启动会有点慢,但最终应该会带您进入桌面。如果卡的可用空间没有扩展,请使用gparted(可能需要安装)扩展Ext分区来填充卡。
这些步骤听起来比实际要复杂得多。执行一次后,您第二次可能就不再需要本指南了。
结果:
关于第 3.3 点。);到目前为止,初始化“更新”后的唯一结果似乎是,每次重新启动后,我都会遇到 HDMI 信号丢失的情况,因此我重新连接 HDMI 电缆...现在我得到了我见过的最好的蓝屏(我猜是android时代的蓝屏……)。
4. 看来我必须从我的设备的实际固件中提取所谓的 .dtb 文件才能将其应用到 SD 卡...
如果有人知道 .dtb 文件的概述站点,请发帖。
结果:
完美的linux错误
致命错误:Blob 的幻数不正确
user@user-x:~/Downloads$ unrar x -r ./M8N-M8S_Amlogic_11152015.rar
unrar 0.0.1 Copyright (C) 2004 Ben Asselstine, Jeroen Dekkers
Extracting from /home/user/Downloads/M8N-M8S_Amlogic_11152015.rar
Extracting n200C-ota-20151103.zip OK
Extracting recovery.img OK
Extracting u-boot.bin OK
Extracting aml_autoscript OK
Extracting factory_update_param.aml OK
Extracting readme.txt OK
All OK
user@user-x:~/Downloads$ split_bootimg.pl recovery.img
Page size: 2048 (0x00000800)
Kernel size: 6065155 (0x005c8c03)
Ramdisk size: 2057152 (0x001f63c0)
Second size: 180224 (0x0002c000)
Board name:
Command line:
Writing recovery.img-kernel ... complete.
Writing recovery.img-ramdisk.gz ... complete.
Writing recovery.img-second.gz ... complete.
user@user-x:~/Downloads$ dtc -I dtb recovery.img-second.gz -O dts -o meson8_tm8.dtd
FATAL ERROR: Blob has incorrect magic number
user@user-x:~/Downloads$ dtc -I dtb recovery.img-second.gz -O dts -o bla.dtd
FATAL ERROR: Blob has incorrect magic number
user@user-x:~/Downloads$
答案1
首先获取库存恢复分区。
在 PC 上,下载并解压缩库存图像。然后解压firmware.img文件Amlogic 解包器并找到该文件recovery.PARTITION
或者
在 Android 设备终端、twrp 或 adb 等上,输入
dd if=/dev/block/recovery of=recovery.PARTITION
现在转移恢复.分区文件到 termux 主文件夹或 linux 主文件夹。 DTB 文件嵌入在该文件中,因此现在只需将其提取即可。假设你已经安装了git、python、perl 和 wget 等到 termux。
#Install binwalk
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
python setup.py install
cd ..; rm -Rf binwalk
#Get split_bootimg.pl script
wget https://gist.githubusercontent.com/jberkel/1087743/raw/45046f87176dfacdc22af4290f89a0d2e0df1dbb/split_bootimg.pl
chmod +x split_bootimg.pl
#Split recovery.PARTITION
./split_bootimg.pl recovery.PARTITION
#Unpack recovery.PARTITION-second.gz
gunzip recovery.PARTITION-second.gz
#Get offset of embedded DTB in recovery.PARTITION-second by searching for bytes D00DFEED
DTBOFFSET=$(binwalk -R "\xD0\x0D\xFE\xED" recovery.PARTITION-second | awk 'NR > 3 { print $1}' | head -n 1)
#Get length of DTB in recovery.PARTITION-second this is next 4 bytes after D00DFEED
DTBLEN=$((16#$(dd if=recovery.PARTITION-second bs=1 skip=$(($DTBOFFSET + 4)) count=4 status=none | od -tx1 | head -n 1 | cut -d ' ' -f 2- | sed 's/ //g' )))
#Now extract and create dtb file
dd if=recovery.PARTITION-second of=mybox.dtb bs=1 skip=$DTBOFFSET count=$DTBLEN