Zusammenfassung:
getprop net.hostname
(Android-System-Hostname, wahrscheinlich android_24412414 Typname)
echo $HOSTNAME
(shell / terminal / env hostname, wahrscheinlich ro.product.device von build.prop)
cat /proc/sys/kernel/hostname
(Linux System Hostname, wahrscheinlich localhost )
head /etc/hosts
(Linux System Hostname, wahrscheinlich localhost )
hostname
(Kommando nicht immer installiert, wenn über Busy Box installiert, lautet / proc / sys / kernel / hostname )
Hängt davon ab, welche Android-Version Sie haben.
Android 4.0 und höher
Neuere Versionen verwenden den richtigen build.prop
Eintrag. Das heißt, Android liest den build.prop
Vorgang wie gewohnt. Sobald der Konnektivitätsdienst ausgeführt wird, wird überprüft, ob net.hostname in den Einstellungen festgelegt ist. Wenn leer, wird die Android-ID "android_" + (permanent) verwendet. Das ist alles, was Sie tun müssen.
Hinzufügen net.hostname=HOSTNAMEHERE
zu /system/build.prop
(Root wird möglicherweise benötigt). Lassen Sie am Ende der Datei eine leere Zeile.
Beachten Sie in Kitkats ConnectivityService.java die IF isEmpty-Anweisung :
// setup our unique device name
if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
String id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
if (id != null && id.length() > 0) {
String name = new String("android-").concat(id);
SystemProperties.set("net.hostname", name);
Android 2.3 und niedriger
Ältere Versionen, Gingerbread, Froyo usw., machen einfach Spaß. Es stört nicht zu überprüfen. Es wird net.hostname auf android_24412414 gesetzt ... egal was passiert. Sie müssen es also ändern, nachdem der Connectivity Service vollständig geladen wurde. Zum Glück wird der Start nur einmal ausgeführt, nicht bei jeder neuen Verbindung. Also müssen wir einfach nachlaufen setprop net.hostname HOSTNAMEHERE
, damit es bleibt. Leider läuft es ziemlich spät im Bootprozess, so dass Sie etwas brauchen, das die Änderungen an boot_complete vornimmt. Höchstwahrscheinlich eine App, die von selbst läuft.
ConnectivityService.java von Froyo :
// setup our unique device name
String id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
if (id != null && id.length() > 0) {
String name = new String("android_").concat(id);
SystemProperties.set("net.hostname", name);
Aber dann gibt es noch ein anderes Problem.
Die Einstellung net.hostname wird nicht auf das gesamte System kopiert! Wenn Sie eine Konsolen- / Terminalanwendung verwenden, erhalten Sie möglicherweise nicht denselben Hostnamen. Mein Handy, ein Samsung Sidekick 4G (Semi-Galaxy S-basiert), hat eine init.rc, die ausgeführt wird hostname localhost
, sodass unter allen Befehlen weder Ihr build.prop-Hostname noch der Hostname von android_id angezeigt werden! Also musst du das auch einstellen.
hostname HOSTNAMEHERE
oder echo HOSTNAMEHERE > /proc/sys/kernel/hostname
Hinweis: Je nachdem, wie Sie es tun, müssen Sie den obigen Befehl als root ausführen, damit es funktioniert. Init.rc befindet sich normalerweise auf der schreibgeschützten Systempartition, sodass zum Bearbeiten Root-Zugriff erforderlich ist.
Der Befehl dhcpcd, der ausgeführt wird, um eine DHCP-Adresse abzurufen, wird nicht auf einen vom Server bereitgestellten Hostnamen aktualisiert (Dies kann durch Hinzufügen der richtigen dhcpcd-run-hooks und dhcpcd.conf behoben werden), und es wird kein Hostname bereitgestellt an den DHCP-Server senden, wenn $(hostname)
(der Befehl hostname) leer oder localhost ist und intern nicht net.hostname verwendet wird. libnetutils wird zum Aufrufen von dhcpcd mit -h "net.hostname" verwendet. Wenn jedoch aus irgendeinem Grund entschieden wird, nicht mit -h aufzurufen, sendet DHCPCD den SYSTEM-HOSTNAME weiterhin über gethostname (), sofern er nicht "(none)" ist. "," localhost "oder leer. Auf jeden Fall auf Lager Froyo. Samsung hat das Hündchen bei einigen Geräten wie meinem versaut. Es werden keine Hostnamen durchgelassen, keine Netzwerkzeit erzwungen usw.
Meine Lösung für Gingerbread und darunter: Bearbeiten Sie die DHCP-Client-Daemon-Konfiguration:
Als letztes können Sie die Datei /etc/dhcpcd/dhcpcd.conf bearbeiten. Wenn Sie hostname YOURHOSTNAME
der Datei hinzufügen , wird diese verwendet, sofern in der Befehlszeile kein Hostname angegeben ist. Dies wird das android_234etc-Problem nicht beheben, aber wenn der Hostname localhost ist (Mein Problem, da Samsung libnetutils und localhost in init.rc geschraubt hat). Sie benötigen Root, dies funktioniert jedoch über Neustarts hinweg. Dies funktioniert nicht, wenn dhcpcd mit der Option -h Hostname aufgerufen wird.