¿Configurar automáticamente la configuración de red ifcfg-eth0?

Después de conectar un adaptador de red USB al teléfono, puedo configurarlo usando ifconfig:

ifconfig eth0 up 192.168.1.2

El problema es que eth0 no está disponible hasta que se conecta el dispositivo USB. ¿Cómo se puede almacenar la configuración de red o aplicarla tan pronto como se monte?

¿O hay alguna forma de establecer la configuración en el proceso de compilación del kernel?

Sé que esto normalmente se define en ifcfg-eth0que se puede encontrar en /etc/sysconfig/network-scripts/o /etc/network/interfacespero parece que Android no tiene esto. Como usamos netcfg en Android, busqué el manual de perfiles de netcfg pero /etc/network.d/${profile_name}tampoco existe.

Respuestas (1)

Creo que esto funcionará:

Además /init.rc_

service ethernet /eth0.sh

y crear/eth0.sh

#!/system/bin/sh

netcfg eth0 up 192.168.0.2

Todavía tengo problemas para encadenar el ramdisk, pero eso debería funcionar.

Consulte http://elinux.org/Android_Networking


No pude cambiar el ramdisk, así que hice una aplicación simple que ejecuta el comando netcfg después del arranque y después de conectar el dispositivo USB.

Estos son los puntos clave para esto:

<manifest ...
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-feature android:name="android.hardware.usb.host" />
  <uses-permission android:name="android.permission.USB_PERMISSION" />
  <application ... >
    <receiver
        android:name=".MyBroadcastReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
        </intent-filter>
    </receiver>
...

y la función sudo en el receptor:

public static void sudo(String...strings) {
    try{
        Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

        for (String s : strings) {
            outputStream.writeBytes(s+"\n");
            outputStream.flush();
        }

        outputStream.writeBytes("exit\n");
        outputStream.flush();
        try {
            su.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        outputStream.close();
    }catch(IOException e){
        e.printStackTrace();
    }
}