web-dev-qa-db-ja.com

現在の質問:デバイスツリーファイルを取得するために、armファームウェアファイルを逆コンパイルするにはどうすればよいですか?

Android TVボックスでlibreelecをフラッシュしようとしていますが、libreelecトースターに投げ込める画像がありません。 RPiでは、それは非常に単純でした。ここでは、コンパイルする必要があると思いますが、実際には答えがありません。 S802に基づく以前のボックスのイメージがあります(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/

amlinux.ruからのlibreelecビルド例: S812ベースのボックスの場合: https://mega.nz/#F!W0Qk2JIQ!P1iyw7dFFHvubkIUZ-i1lA!3ohmxIaJ


1. S812ベースのボード用のlibreelecビルドからToasterのイメージファイルを作成するにはどうすればよいですか?

可能な解決策:

次のページには、Amlogicボード(S805 S905 S905X S912(SDおよびUSB))用の多くのLinuxビルドが含まれています。

参照してください: http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/606133-linux-images-for-s805-s905-s905x-s912-sd-and- usb


2.では、アムロジックボードのニーズに合った起動可能なSDカードを作成するにはどうすればよいですか(imagetoasterは使用できないと思います)。

可能な解決策:

このページは少し役立ちました。明らかに、新しいビルドには、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を実行しているTVボックスで、準備したカードをボックスのSDスロットに挿入するか、USBカードリーダーを使用します。注:アクティビティLED付きのカードリーダーを使用するのが好きなので、何かが起こっていることがわかります。最初の起動には数分かかる場合があり、LEDの点滅は安心です。

2.)Android /設定/デバイスについて/システム/アップデート。注:App DrawerにUpdate and Backupアプリがある場合があります。 -Update and Backup Appの[UpdateLocale]セクションで、[Select]をクリックし、aml_autoscript.Zipを選択して、[update]をクリックします。注:[データをワイプ]と[メディアをワイプ]をオフ/オフのままにします。明確にするために、これらのオプションは使用しないでください

3.)TVボックスが再起動します。数回再起動します。最終的に、最初のログインプロンプトが表示されます。初期ログイン資格情報。さまざまな画像のログイン情報については、こちらをご覧ください。

新しいパスワードを選択するよう求められますので、選択してください。新しいユーザーとP/Wを作成するように求められます。

ボックスが再起動します。この起動には少し時間がかかりますが、最終的にはデスクトップに移動します。カードの使用可能なスペースが拡張されない場合は、gparted(インストールが必要な場合があります)を使用してExtパーティションを拡張し、カードを埋めます。

手順は実際よりもはるかに複雑に聞こえます。一度実行すれば、おそらくこのガイドは2回目は必要ありません。

参照: http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s905/tronsmart-ac/firmware-roms-tools-at/565449-running-linux- from-sd-card-or-usb-flash-drive-using-balbes150-method-and-files

結果:

ポイント3.3に関して);これまで、初期化された「更新」後の唯一の結果は、再起動のたびにHDMI-Signalの損失に遭遇したため、HDMI-Cableに再接続します。 (Android時代のブルースクリーンだと思います...)。


4.デバイスの実際のファームウェアからいわゆる.dtbファイルを抽出してsdカードに適用する必要があるようです...

誰かが.dtbファイルの概要サイトを知っている場合は、投稿してください。

参照してください: http://www.cnx-software.com/2014/05/12/how-to-extract-a-device-tree-file-from-Android-firmware-files/

結果:

完璧な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$ 
6
Bogotrax

まず、ストックリカバリパーティションを取得します。

PCで、ストックイメージをダウンロードして解凍します。次に、 amlogic unpacker を使用してfirmware.imgファイルを解凍し、ファイルrecovery.PARTITIONを見つけます。

または

Androidデバイス端末、twrpまたはadbなどで、次のように入力します

dd if=/dev/block/recovery of=recovery.PARTITION

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
1
5p0ng3b0b