Ringkasan:
getprop net.hostname
(Nama Host Sistem Android, kemungkinan tipe nama android_24412414)
echo $HOSTNAME
(shell / terminal / nama host env, kemungkinan ro.product.device dari build.prop)
cat /proc/sys/kernel/hostname
(Nama Host Sistem Linux, kemungkinan localhost )
head /etc/hosts
(Nama Host Sistem Linux, kemungkinan localhost )
hostname
(Perintah tidak selalu diinstal, jika diinstal melalui kotak sibuk, akan membaca / proc / sys / kernel / hostname )
Tergantung pada versi Android yang Anda miliki.
Android 4.0 dan Di Atas
Versi yang lebih baru akan menggunakan build.prop
entri yang benar . Yaitu, Android membaca build.prop
seperti proses boot normal. Setelah Layanan Konektivitas berjalan, ia memeriksa untuk melihat apakah net.hostname diatur dalam Pengaturan, lalu jika kosong, maka ia menggunakan "android_" + (permanen) ID Android. Jadi itu semua yang perlu Anda lakukan.
Tambahkan net.hostname=HOSTNAMEHERE
ke /system/build.prop
(Root mungkin diperlukan). Biarkan baris kosong di akhir file.
Kitkat's ConnectivityService.java, perhatikan pernyataan IF isEmpty :
// 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 dan Di Bawah
Versi yang lebih lama, Gingerbread, Froyo, dll, cukup clobber saja. Tidak masalah untuk memeriksa. Ini akan mengatur net.hostname ke android_24412414 ... apa pun yang terjadi. Jadi, Anda harus mengubahnya setelah Layanan Konektivitas selesai memuat. Untungnya, itu hanya menjalankan startup sekali, tidak pada setiap koneksi baru. Jadi kita hanya perlu menjalankan setprop net.hostname HOSTNAMEHERE
setelah itu agar tetap. Sayangnya, ini berjalan cukup terlambat dalam proses boot, jadi Anda perlu sesuatu yang akan membuat perubahan pada boot_complete. Kemungkinan besar Aplikasi yang berjalan dengan sendirinya.
KonektivitasService.java 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);
Tapi kemudian ada masalah lain.
Pengaturan net.hostname, tidak disalin ke seluruh sistem! Jika Anda menggunakan aplikasi konsol / terminal, Anda mungkin tidak mendapatkan nama host yang sama. Ponsel saya, Samsung Sidekick 4G (berbasis semi-Galaxy S) memiliki init.rc yang berjalan hostname localhost
, jadi semua perintah di bawahnya tidak akan melihat nama host build.prop Anda atau nama host android_id! Jadi Anda perlu mengaturnya juga.
hostname HOSTNAMEHERE
atau echo HOSTNAMEHERE > /proc/sys/kernel/hostname
Catatan: Bergantung pada bagaimana Anda melakukannya, Anda harus menjalankan perintah di atas sebagai root agar dapat berfungsi. Init.rc biasanya pada partisi sistem hanya baca, jadi akses root diperlukan untuk mengeditnya.
Perintah dhcpcd, yang dijalankan untuk mendapatkan alamat dhcp, tidak akan memperbarui ke nama host yang disediakan oleh server (Itu bisa diperbaiki dengan menambahkan dhcpcd-run-hooks dan dhcpcd.conf yang tepat), dan itu tidak akan memberikan nama host ke server dhcp jika $(hostname)
(Perintah hostname) kosong atau localhost, dan itu tidak menggunakan net.hostname secara internal. libnetutils digunakan untuk memanggil dhcpcd dengan -h "net.hostname", tetapi jika karena alasan tertentu ia memutuskan untuk tidak menelepon dengan -h, DHCPCD AKAN MASIH MENGIRIM SISTEM HOSTNAME melalui gethostname (), asalkan tidak "(tidak ada) "," localhost ", atau kosong. Pada Stock Froyo pula. Samsung mengacaukan anjing pada beberapa perangkat seperti milik saya. Tidak ada nama host yang dilewati, waktu jaringan yang dipaksakan, dll.
Solusi Saya untuk Roti Jahe dan di bawah Samsung, Edit konfigurasi DHCP Client Daemon:
Hal terakhir yang dapat Anda lakukan adalah mengedit /etc/dhcpcd/dhcpcd.conf. Jika Anda menambahkan hostname YOURHOSTNAME
ke file, itu akan menggunakannya, kecuali nama host diberikan pada commandline. Ini tidak akan memperbaiki masalah android_234etc, tetapi akan terjadi jika nama host adalah localhost (Masalah saya, karena Samsung mengacaukan libnetutils dan localhost di init.rc). Anda akan membutuhkan Root, tetapi ini bekerja lintas reboot. Ini tidak akan berfungsi jika dhcpcd dipanggil dengan opsi -h Hostname.