Creo que esto funcionará:
En /init.rc
añadir
service ethernet /eth0.sh
y crear /eth0.sh
#!/system/bin/sh
netcfg eth0 up 192.168.0.2
Todavía tengo problemas para encajar el ramdisk pero debería funcionar.
Ver http://elinux.org/Android_Networking
No pude cambiar el ramdisk así que hice una simple aplicación que ejecuta el comando netcfg después del arranque y después de que el dispositivo USB está conectado.
Estos son los puntos clave para ello:
<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();
}
}