Creo que he machacado la tabla de particiones =:-(



  • Hola a todos.


    Estaba yo trasteando con mi PC linux y un disco USB externo y cargando mi aquaris 5 en un puerto USB del PC cuando me parece que en vez de manipular la tabla de particiones del disco USB he alterado la del teléfono móvil (es que ha habido un reinicio y en /dev/sdb, que es donde estaba el disco USB, se ha colocado el móvil)

    -- 8< -- fdisk -l /dev/sdb 

    Disk /dev/sdb: 12.2 GB, 12238454784 bytes
    64 heads, 32 sectors/track, 11671 cylinders, total 23903232 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00000000

       Device Boot      Start         End      Blocks   Id  System

    -- >8 -- 

    Este era el estado original visto por fdisk de linux

    No me he fijado que era un disco de 12GB, ¡el Aquaris! y he creado una partición nueva:

    -- 8< --

    Command (m for help): n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    Partition number (1-4, default 1): 
    Using default value 1
    First sector (2048-23903231, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-23903231, default 23903231): 
    Using default value 23903231

    Command (m for help): w
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 22: Invalid argument.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.

    -- >8 --

    El teléfono funciona, al enchufarlo a un puerto USB del PC en /var/log/syslog aparece:

    -- 8< -- 

    Nov 23 16:08:26 mihost kernel: [ 1440.152047] usb 2-5: new high-speed USB device number 4 using ehci_hcd
    Nov 23 16:08:26 mihost kernel: [ 1440.285665] usb 2-5: New USB device found, idVendor=0bb4, idProduct=0001
    Nov 23 16:08:26 mihost kernel: [ 1440.285673] usb 2-5: New USB device strings: Mfr=2, Product=3, SerialNumber=4
    Nov 23 16:08:26 mihost kernel: [ 1440.285679] usb 2-5: Product: BQ AQUARIS
    Nov 23 16:08:26 mihost kernel: [ 1440.285683] usb 2-5: Manufacturer: bq
    Nov 23 16:08:26 mihost kernel: [ 1440.285686] usb 2-5: SerialNumber: 4LOFU4IB6LLRGIAI
    Nov 23 16:08:26 mihost kernel: [ 1440.286604] scsi8 : usb-storage 2-5:1.0
    Nov 23 16:08:26 mihost mtp-probe: checking bus 2, device 4: "/sys/devices/pci0000:00/0000:00:13.2/usb2/2-5"
    Nov 23 16:08:26 mihost mtp-probe: bus: 2, device: 4 was not an MTP device
    Nov 23 16:08:27 mihost kernel: [ 1441.284921] scsi 8:0:0:0: Direct-Access     Linux    BQ AQUARIS       0000 PQ: 0 ANSI: 2
    Nov 23 16:08:27 mihost kernel: [ 1441.285397] scsi 8:0:0:1: Direct-Access     Linux    BQ AQUARIS       0000 PQ: 0 ANSI: 2
    Nov 23 16:08:27 mihost kernel: [ 1441.286558] sd 8:0:0:0: Attached scsi generic sg2 type 0
    Nov 23 16:08:27 mihost kernel: [ 1441.286917] sd 8:0:0:1: Attached scsi generic sg3 type 0
    Nov 23 16:08:27 mihost kernel: [ 1441.294253] sd 8:0:0:0: [sdb] Attached SCSI removable disk
    Nov 23 16:08:27 mihost kernel: [ 1441.294873] sd 8:0:0:1: [sdc] Attached SCSI removable disk

    -- >8 --

    Pero al intentar activar el almacenamiento masivo en el /var/log/syslog de linux aparece:

    -- 8< --


    Nov 23 16:48:44 mihost kernel: [ 3858.005374] sd 9:0:0:0: [sdb] 23903232 512-byte logical blocks: (12.2 GB/11.3 GiB)
    Nov 23 16:48:44 mihost kernel: [ 3858.006361] sd 9:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    Nov 23 16:48:44 mihost kernel: [ 3858.009624]  sdb: sdb1
    Nov 23 16:48:44 mihost kernel: [ 3858.271682] FAT-fs (sdb1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
    Nov 23 16:48:44 mihost kernel: [ 3858.272084] FAT-fs (sdb1): bogus number of reserved sectors
    Nov 23 16:48:44 mihost kernel: [ 3858.272094] FAT-fs (sdb1): Can't find a valid FAT filesystem

    -- >8 --

    Y la partición del teléfono no se monta automáticamente como antes en un subdirectorio de /media.



    - ¿me he cargado el teléfono?
    - ¿se puede restaurar la tabla de particiones original desde linux con fdisk? 
      - si no, ¿se puede restaurar de otra manera?
    - si el teléfono se apaga, ¿en el siguiente reinicio será incapaz de arrancar? ¿he de tener encendido el teléfono por siempre jamás?





  • MVP

    Tendrás que hacer un Hard Reset y reinstalar Android. Me parece que se puede hacer en GNU/Linux usando VirtualBox + Windows virtualizado.


  • MVP

    Me parece muy raro que sin necesidad de una shell adb con acceso root hayas podido modificar las particiones. Nunca lo he conectado a un linux pero no se... intenta instalar un shell el el teléfono y revisa la tabla de particiones desde allí.



  • Actualizo la info... 


    Estaba con mi Aquaris 5 conectado con el cable USB a mi PC Linux en modo transferencia de archivos.

    En este modo linux ve el móvil como un disco USB externo, como un dispositivo de bloques más, como /dev/sdb ó /dev/sdc.


    El contenido que ve linux es lo que desde el 'Administrador de archivos' del móvil está dentro del 'Almacenamiento del teléfono': carpetas Alarms, Android, Books, etc.

    Entrando con 'adb shell' ese contenido corresponde con '/storage/sdcar0'.

    No entiendo muy bien como lo que en el sistema de ficheros android es un directorio en linux se ve como un disco; debe ser trabajo del "driver" USB. Entonces, lo que que desde linux he hecho, definir una partición, ¿cómo se habrá traducido a nivel del sistema de ficheros de android?

    Como sólo he alterado (tal vez metadatos) el directorio '/storage/sdcard0', probablemente el teléfono pueda reiniciar bien.

    Lo que habría perdido es la capacidad de dar acceso al almacenamiento del teléfono como si fuera un disco externo USB.




  • desde la shell adb, mount muestra:

    -- 8< --

    /dev/block/vold/179:8 /storage/sdcard0 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

    -- >8 --

    Es decir, /storage/sdcard0 es el punto de montaje en el sistema de ficheros del dispositivo '/dev/block/vold/179:8';  a fin de cuentas sí es un dispositivo de bloque y yo le habré cambiado la tabla de particiones.

    No tengo el teléfono rooteado, ¿alguien con shell root puede informar de la salida de
    fdisk -l /dev/block/vold/179:8 ?

    Esa sería la información a restaurar.




  • Hasta donde yo sé, corregidme si me equivoco, el móvil está dividido en dos particiones, la de sistema (almacenamiento interno) y las de las aplicaciones (almacenamiento del teléfono). Esta última es la que te has cargado, pero funciona "como" una tarjeta SD que se monta en storage/sdcard0. Como no has tocado la del sistema, el teléfono seguirá funcionando aunque lo reinicies. Seguro que hay aplicaciones que han grabado datos en la partición que has perdido, por lo que el funcionamiento no será estable. Si le haces un hard reset se restauran las dos particiones y el recovery, por lo que seguro que se te soluciona así. Antes de todas formas puedes probar dos cosas. La primera, sin apagar el teléfono, ve a Ajustes -> Almacenamiento -> Borrar almacenamiento del teléfono. Lo mismo formatea y se soluciona, creando las carpetas que lleva por defecto. La segunda, arranca el teléfono en Recovery (tecla encendido + subir volumen hasta que salga el android) y dale al wipe data. No creo que sea preocupante, lo único seguro es que has perdido todo lo que no tuvieses copia de seguridad.


  • MVP

    ¿Puedes acceder a los contenidos de la partición desde el teléfono?



  • El teléfono, que no he apagado desde el incidente, funciona como siempre, en particular, puedo ver y usar el contenido del almacenamiento del teléfono.

    Entiendo que es porque el sistema operativo tiene cargada en memoria la información de la partición '/dev/block/vold/179:8'; si lo reinicio leerá la nueva información que yo grabé y adiós acceso, me temo.


    En linux parte de esa info está en /sys/block/sdb/sdb?/start y /sys/block/sdb/sdb?/size, parece que con eso se puede reconstruir la tabla de particiones de un dispositivo, pero en android en /sys/block no encuentro el dispositivo 'vold/179:8'