Frage zu android smartphones?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
da android so ähnlich wie linux sein soll

Ja, die Aussage müssen wir erst einmal klären. Da kursiert im Netz teils ziemlich paradoxe Aussagen ;).

Also, jedes Betriebssystem hat einen sogenannten Kernel:

https://de.wikipedia.org/wiki/Kernel_(Betriebssystem)

Kurz zusammengefasst:

  • Unterste Schicht des Betriebssystemes
  • Kommuniziert mit der Hardware
  • Verwaltet Prozesse und Speicher
  • Bietet für "normale" Programme eine Schnittstelle (API), mit der Anwendungen erst irgendwelche interessanten Sachen machen können

Was ist nun mit Android:

Android hat einen Kernel, der nennt sich Linux.

Und ja, dieser Kernel ist genau die gleiche unterste Schicht, die du auch von jedem "Linux"-Betriebssystem kennst.

Ansonsten sind die Gemeinsamkeiten zwischen Android und einer Linux-Distribution aber sehr bescheiden.

Egal ob du dir jetzt die Anwendungen (Apps) oder den Display-Server oder das Init-System anschaust - alles komplet anders.

Wichtig: Android ist nicht für "Nerds" designed.

Aber: Die Rettung

Letzendlich hast du immer noch den Linux-Kernel ganz unten am Betriebssystem. Und auf dieser Basis lässt sich ziemlich viel machen.

Die Sandbox

Ja, die Android-Sandbox, die stört natürlich in unserem Fall. Du musst dir als erstes root-Rechte beschaffen => Rooten.

Ist nicht sonderlich schwer - gibt genügend Anleitungen im Netz. Am besten Bootloader entsperren, TWRP flashen (=> $Suchmachine).

Hinweis: Von Huawei-Geräten würde ich die Finger lassen; die erlauben das nämlich nicht mehr.

Möglichkeiten:

gibts da eine shell ? und wenn ja welche ?

Was auch immer du für eine shell willst.

kann man software firewalls nutzen bzw die netten tools die z.b. viele linux systeme mitbringen (wie iptables, forwarding etc..ggf auch sowas wie wireshark?)

Yep, üblicherweise installiert man sich Busybox - und hat damit die ganzen Unix-Befehle:

https://en.wikipedia.org/wiki/BusyBox#Commands

iptables funktioniert super. Da gibts sogar grafische Oberfläche (App) - nennt sich AFWall

kann man datenbanken wie mongodb/mysql installieren konfigurieren und nutzen?

Yep.

Wenn du nicht mehr in Android weiterkommst, gibts da den uralten chroot-Trick:

https://en.wikipedia.org/wiki/Chroot

chroot ist was witziges. Chroot kannst du das Betriebssystem wechseln - solang gleicher Kernel. Das sieht dann wie eine VM aus - nur ohne Performanceverlust.

Da Android ja den Linux-Kernel hat, kannst du dir (wenn gerootet) auf dein Android ein Debian oder Ubuntu oder Fedora oder openSUSE oder Arch oder jede andere Linux-Distribution installieren - und bekommst wahlweise Terminal oder nutzt VNC.

Gibt da sogar Apps, die das automatisieren. "linuxdeploy" oder so heißt die, die ich mal verwendet habe.

Und ja, hast ein Debian, kannst alles machen, was du mit Debian machen kannst. Ganz normal den mysql oder monogdb aufsetzen, wie du es gewohnt bist. Wireshark grundsätzlich auch (müsste man aber ausprobieren, ob das dann auch alle Pakete mitschneiden kann).

Vorausgesetzt du hast Bock, das mit einem ~5 Zoll Bildschirm zu machen.

Nur um das auch mal gesagt zu haben - letztendlich ists halt ein Smartphone ;).

Fazit:

Android ist für den Endnutzer ausgelegt. Ist einfach so.

Bist du aber kein Normalnutzer, kannst du dir durchaus root-Rechte besorgen und damit alles machen, was du dir so vorstellst.

ich hab mich noch immer nicht für ein spezielles telefon entschieden.. vil sowas wie das neue blackberry kay2 .. obwohl das fürs terminal wirklich doof ist da man es nicht wirklich für die breite benutzen kann ^^ (wenn du ein leistungsstarkes telefoon kennst kannst du mir das ja noch mitteilen =)

wenn ich mich dann entschieden habe werde ich das ausprobieren und gucken was ich damit basteln kann 0)

Ein wirklich sehr ausführlich, struckturierte und gut beschriebene antwort. sowas ist wirklich rar - danke =)

0

Shell kann man z. B. mit Termux bekommen. Es gibt dann auch eine Paketverwaltung, mit der man sich weitere Pakete nachziehen kann. Auf einem früheren Gerät hatte ich sogar mal einen C++-Compiler drauf...

Allerdings darfst Du nicht erwarten, dass Du deswegen vollumfänglich arbeiten könntest wie auf einem Standard-Linux. Hauptproblem ist, dass Du auf einem nicht-gerooteten Gerät letztlich in der Sandbox bleibst, die genau dieser einen App zur Verfügung steht. Zwar hast Du die Möglichkeit, von dort aus (nach Erteilung entsprechender Freigabe) auf Deine SD-Karte (bzw. den internen Anwenderspeicher) zuzugreifen. Man kann sich also durchaus beispielsweise Batches bauen, die im Datenbestand auf der SD-Karte etwas absuchen oder automatisiert reorganisieren. An die Daten anderer Apps kommst Du aber regelmäßig nicht dran. Und irgendwelche GUI-nahen Anwendungen sind auch tabu, weil Du aus der Terminalumgebung nicht in Richtung Bedienoberfläche "ausbrechen" kannst.

also wenn wireshark oder so im terminal läuft ist das kein problem .. aber wenn ich in der sandbox bleibe, bleibt mir dann auch der zugriff auf die netzwerkschnittstellen verwehrt ? wollte einen kleinen server basteln zum daten schieben von A nach B .. quasi wie ein hotspot NAS ^^

von anderen apps will ich ja eigentlich nichts .. nur sowas wie datenbanken wären wirklich praktisch ^^ wäre das auch tabu ?

0
@kaVonChemie153

Du kannst aus so einer Terminalsitzung heraus durchaus Daemon-Prozesse hochstarten, die aufs Netzwerk zugreifen können. Listener inklusive. Einen FTP-Server hochzustarten ist also durchaus möglich, wenn man ihn dann auf einen Port oberhalb 1024 legt. Denn an die privilegierten Ports lässt einen die Android-Basis nicht dran.

Einen DB-Server auf diese Weise in den Hintergrund zu legen, halte ich allerdings für ein riskantes Unterfangen. Hintergrundprozesse fliegen raus, sobald die übergeordnete App (z. B. eben besagtes Termux) beendet wird. Man kann zwar ein Wake Lock setzen. Aber wenn Android in Speicher- oder CPU-Knappheit gerät, fliegen Prozesse dann doch gern mal raus. Egal wie viel man in den App-Einstellungen rumkonfiguriert.

Bedeutet im Falle eines DB-Servers: wenn's den zur Unzeit rauskegelt, dann hast Du eben Datengrütze. Auf sowas würde ich mich lieber nicht verlassen.

Sowas wie Wireshark wird ansonsten übrigens vermutlich auch nicht gehen. Zwar lässt Android Userland-Prozesse bzw. Apps durchaus bis zu einem gewissen Grad an die Netzwerk-Layer dran (ICMP bekommt man beispielsweise ohne Privilegien gesendet und empfangen). Ich bezweifle aber, dass volles Packet Sniffing möglich wäre. Überhaupt würdest Du damit bei Anbindung via WLAN nicht glücklich. Da siehst Du ja eh anderen Traffic im selben Netz nicht, weil er funktechnisch gar nicht bei Dir ankommt (bzw. die beteiligten WLAN-Controllerchips Dir die Pakete nicht rausrouten).

0
  • es gibt terminal/shell apps die du dir frei runterladen kannst und dann ähnlich wie auf linux tippen kannst. allerdings gibts nicht alle befehle. die basisbefehle müssten aber vorhanden sein.
  • zumindest nen mariadb-server gibts.
  • kann ich nicht sagen - hatte ich nicht probiert.

wollte mir quasi einen "data share point" einrichten - kennst bestimmt das problem 2 rechner , kein usbstick oder lankabel .. da würde ich gern halt eeinen kleinen server aufsetzen wo man von a nach b bequem files schieben kann .. so muss man dann auf den anderen endgeräten (die vil nicht mir gehören) extra software insallieren

0

Braucht man außer der Toolchain noch mehr Fremdquellen zum builden eines ARM64 Linux 4.4 Android Kernels ?

ich bin so vorgegangen:

Vorbereitung:

$ mkdir ~/git
$ cd ~/git
$ export ARCH=arm64
$ export SUBARCH=arm64
$ export CROSS_COMPILE=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-
$ git clone <https:>//github.com/MrFlyingToasterman/android_kernel_oneplus_msm8998

Beziehen von Drittrepos und einbinden in die Kernel Source:

$ git clone <https:>//android.git.linaro.org/git-ro/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9-linaro.git prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9

Kernel Cross Compile build:

$ make oneplus5_defconfig
$ make --keep-going -i

Der eigentliche Fehler besteht darin dass er keine Regel für vmlinux findet..Hier mal der Stacktrace:

 CC      lib/argv_split.o
  CC      lib/bug.o
  CC      lib/cmdline.o
  CC      lib/cpumask.o
  CC      lib/ctype.o
  CC      lib/dec_and_lock.o
  CC      lib/decompress.o
  CC      lib/decompress_bunzip2.o
  CC      lib/decompress_inflate.o
  CC      lib/decompress_unlz4.o
  CC      lib/decompress_unlzma.o
  CC      lib/decompress_unlzo.o
  CC      lib/decompress_unxz.o
  CC      lib/dump_stack.o
  CC      lib/earlycpio.o
  CC      lib/extable.o
  CC      lib/fdt.o
  CC      lib/fdt_empty_tree.o
  CC      lib/fdt_ro.o
  CC      lib/fdt_rw.o
  CC      lib/fdt_strerror.o
  CC      lib/fdt_sw.o
  CC      lib/fdt_wip.o
  CC      lib/flex_proportions.o
  CC      lib/idr.o
  CC      lib/int_sqrt.o
  CC      lib/ioremap.o
  CC      lib/irq_regs.o
  CC      lib/is_single_threaded.o
  CC      lib/klist.o
  CC      lib/kobject.o
  CC      lib/kobject_uevent.o
  CC      lib/md5.o
  CC      lib/nmi_backtrace.o
  CC      lib/plist.o
  CC      lib/proportions.o
  CC      lib/radix-tree.o
  CC      lib/ratelimit.o
  CC      lib/rbtree.o
  CC      lib/seq_buf.o
  CC      lib/sha1.o
  CC      lib/show_mem.o
  CC      lib/string.o
  CC      lib/timerqueue.o
  CC      lib/vsprintf.o
  AR      lib/lib.a
  LINK    vmlinux
  LD      vmlinux.o
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find arch/arm64/mm/built-in.o: Datei oder Verzeichnis nicht gefunden
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find ipc/built-in.o: Datei oder Verzeichnis nicht gefunden
prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-linaro-4.9/bin/aarch64-linux-android-ld: cannot find drivers/built-in.o: Datei oder Verzeichnis nicht gefunden
make: [Makefile:946: vmlinux] Fehler 1 (ignoriert)
make[1]: *** Keine Regel vorhanden, um das Ziel „vmlinux“, 
  benötigt von „arch/arm64/boot/Image“, zu erstellen. 

Noch ein paar Informationen über mein Betriebssystem:

OS: Arch Linux
Kernel: x86_64 Linux 4.11.9-1-ARCH
CPU: Intel Core i5-2520M @ 4x 3.2GHz [25.0°C]
GPU: intel
RAM: 2286MiB / 7867MiB
...zur Frage

Was möchtest Du wissen?