Build LineageOS, Extract proprietary blobs - Sackgasse

Elverado

Lieutenant
Registriert
Jan. 2018
Beiträge
649
Hallo,
Ich probiere mich aktuell darin, einen Build für LineageOS 15.1 zu erstellen (Galaxy S4 Mini wird offiziell nicht mehr unterstützt).
Dabei halte ich mich weitestgehend an folgenden Guilde (BuildGuide - Link). Ich bin jetzt nach einiger Zeit (repo sync hatte Probleme gemacht, die ich aber nach langer Zeit beheben konnte) bei dem Punkt "Prepare the specific device code" angekommen. der "source /build/envsetuo.sh"-Befehl lief auch reibungslos.
Dann aber bei dem folgenden Befehl "breakfast serranoltexx" bekomme ich an einem bestimmten Punkt die Fehlermeldung ""vendor/samsung/serrano-common/serrano-common-vendor.mk" does not exist" ausgeworfen (genauer Code s. unten, Spoiler1).
Das hat mir jetzt noch nicht viel Kopfzerbrechen bereitet, da im Guide erwähnt wurde, dass das passieren kann, aber kein Problem darstellen muss, da es vorerst genügt, wenn ein Teil der Daten schon übertragen wurde. Man solle dann einfach mit "Extract proprietary blobs" (ich nenns im Folgenden der Einfachheit halber "Firmware) fortfahren.
Das habe ich dann auch gemacht bis ich dann beim Punkt "./extract-files.sh" im Ordner "~/android/lineage/device/samsung/serranoltexx" die Fehlermeldung "adb: error: remote object '/system/vendor/bin/btnvtool' does not exist" erhalten habe.
(Vorher war es noch eine "permission denied"-Meldung, die ich dadurch behoben habe, dass ich den .../vendor - Ordner entsperrt hab (weshalb auch immer der gesperrt war)).
An diesem Punkt komme ich dann aber wirklich nicht mehr weiter. Das S4 Mini hab ich angeschlossen gehabt, alle Berechtigungen sind eingestellt (USB Zugriff per ADB etc.) und "adb devices" gab auch den gewünschten Output.
Offensichtlich wird hier eine Datei im "system/vendor/bin"-Ordner gefordert, die nicht da ist. Aber auch ein wiederholtes Ausführen vom "breakfast"-Befehl gibt nur denselben Output wie vorher und es ändert sich dann auch bei wiederholter Ausführung vom .sh-Skript nichts.
Ich weiß, dass es wohl die Möglichkeit gibt aus einem bestehenden Build (.zip) die "Firmware" zu extrahieren (statt direkt vom Smartphone). Aber immer wenn ich den entsprechenden Ordner des entpackten Builds mitgebe, sucht er doch wieder auf dem Smartphone, und wenn ich es abstecke, kommt eben ein "adb: error: failed to get feature set: no devices/emulators found" Fehler.

Daher hier einmal die Frage, ob jemand weiter weiß, ich bin nämlich vorerst mit meinem Latein am Ende.
Grüße,
Elverado

#kopierte Terminal-Ausgabe (Ubuntu 18.04 Mate)
user@System:~/android/lineage$ breakfast serranoltexx
including vendor/lineage/vendorsetup.sh
build/core/product_config.mk:243: *** _nic.PRODUCTS.[[device/samsung/serranoltexx/lineage.mk]]: "vendor/samsung/serrano-common/serrano-common-vendor.mk" does not exist. Schluss.
Device serranoltexx not found. Attempting to retrieve device repository from LineageOS Github (http://github.com/LineageOS).
Found repository: android_device_samsung_serranoltexx
Default revision: lineage-15.1
Checking branch info
Checking if device/samsung/serranoltexx is fetched from android_device_samsung_serranoltexx
LineageOS/android_device_samsung_serranoltexx already fetched to device/samsung/serranoltexx
Syncing repository to retrieve project.
Fetching project LineageOS/android_device_samsung_serranoltexx
Fetching projects: 100% (1/1), done.

Repository synced!
Looking for dependencies in device/samsung/serranoltexx
Looking for dependencies in device/samsung/serrano-common
Looking for dependencies in device/samsung/qcom-common
Looking for dependencies in hardware/samsung
Looking for dependencies in packages/resources/devicesettings
packages/resources/devicesettings has no additional dependencies.
Looking for dependencies in packages/resources/devicesettings
packages/resources/devicesettings has no additional dependencies.
Looking for dependencies in device/samsung/msm8930-common
device/samsung/msm8930-common has no additional dependencies.
Looking for dependencies in kernel/samsung/msm8930-common
kernel/samsung/msm8930-common has no additional dependencies.
Looking for dependencies in packages/apps/FlipFlap
packages/apps/FlipFlap has no additional dependencies.
Done
build/core/product_config.mk:243: *** _nic.PRODUCTS.[[device/samsung/serranoltexx/lineage.mk]]: "vendor/samsung/serrano-common/serrano-common-vendor.mk" does not exist. Schluss.
build/core/product_config.mk:243: *** _nic.PRODUCTS.[[device/samsung/serranoltexx/lineage.mk]]: "vendor/samsung/serrano-common/serrano-common-vendor.mk" does not exist. Schluss.

** Don't have a product spec for: 'lineage_serranoltexx'
** Do you have the right repo manifest?

PS: falls weitere Informationen benötigt werden, einfach Bescheid geben.
(Aktuelles LineageOS: 14.1 auf Galaxy S4 mini (Custom-ROM von XDA-developers), Laptop OS: Ubuntu 18.04 Mate)
 
Elverado schrieb:
adb: error: remote object '/system/vendor/bin/btnvtool
Google liefert einen reddit Thread, der quick tips enthält und auf ein Github Repo verweist - das auch serrano-common-vendor.mk enthält

Elverado schrieb:
ch weiß, dass es wohl die Möglichkeit gibt aus einem bestehenden Build (.zip) die "Firmware" zu extrahieren (statt direkt vom Smartphone). Aber immer wenn ich den entsprechenden Ordner des entpackten Builds mitgebe, sucht er doch wieder auf dem Smartphone ...
Nach LineageOS wiki ? Die "Firmware" wird vlt. je nach Version in verschiedenen Verzeichnissen gesucht.

Elverado schrieb:
Ich probiere mich aktuell darin, einen Build für LineageOS 15.1 zu erstellen
Vielleicht müssen die Skripte für 15.1 oder 16.0 angepasst werden - die nicht gefundenen Dateien sind vlt. einfach in anderen Pfaden. Das Build-Guide gilt lt. eigener Aussage eben nur für 14.1. - hast du zB den Git Branch angepasst ?
Testbuilds für 16.0 gibt es für das serranoltexx/i9195
Funktioniert denn ein Testbuild für die "alte" 14.1 überhaupt ? Vielleicht hast du eine allgemeine Einstellung übersehen, die nicht Gerät-spezifisch ist - dh dein Buildsystem funktioniert nicht wie es sollte.
 
  • Gefällt mir
Reaktionen: cm87
Danke schonmal für die Antwort :). Werde ich mich heute Abend damit näher auseinandersetzen, bin gerade noch beschäftigt (Arbeit)
 
@lokon Der Reddit-Link hat geholfen. Vielen Dank. Habe jetzt vom TheMuppets-Repository die notwendige Firmware herbekommen. Musste dafür nur eine .xml Datei etwas bearbeiten. Ob das mit den Skripten hinhaut, werde ich jetzt sehen, er ist gerade am builden.
Zu der Variante mit dem extrahieren: habe ich woanders, aber auf diversen Seiten gelesen. K.A. wieviel da dran ist/wie machbar das ist.
 
@Elverado Ich versuche mich gerade am Build der 14.1 aber stecke noch bei "breakfast serranoltexx" fest.

Aufgrund des Forumbeitrags konnte ich mir die "binary blobs" von TheMuppets holen und habe die entsprechenden Dateien kopiert in

Code:
~/android/lineage/device/samsung/serrano-common/
~/android/lineage/device/samsung/serranoltexx/

also z.B.

Code:
~/android/lineage/device/samsung/serranoltexx/proprietary/bin/
~/android/lineage/device/samsung/serranoltexx/proprietary/lib/
~/android/lineage/device/samsung/serranoltexx/proprietary/vendor/
~/android/lineage/device/samsung/serranoltexx/proprietary/Android.mk
~/android/lineage/device/samsung/serranoltexx/proprietary/...

Beim "breakfast"-Befehl erhalte ich aber verschiedene Fehlermeldungen.

Code:
vendor/samsung/serrano-common/serrano-common-vendor.mk does not exist
[...]
Don't have a product spec for: lineage_serranoltexx
Do you have the right repo manifest?

Das Verzeichnis und die Datei in der Fehlermeldung existiert wirklich nicht aber ich gehe davon aus, dass mein Fehler schon vorher passiert ist. Vielleicht sind die Binär-Blobs ("Firmware") ja im falschen Verzeichnis oder es muss wirklich noch eine Anpassung in einer MK-Datei vorgenommen werden.

Wie hast du das gelöst?
 
Zurück
Oben