[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: Re: Help Please - nanddump goes on forever
From: Tanguy Pruvot <tanguy.pruvot () gmail ! com>
Date: 2013-03-16 15:06:08
Message-ID: 1521738400.20130316160608 () gmail ! com
[Download RAW message or body]
I see "cnt" is not of the same type as "meminfo_writesize" and is one of
the fixed warnings in cyanogenmod fork... maybe that could help to
find the problem...
diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c
index 5908ac7..5dc1373 100644
--- a/miscutils/nandwrite.c
+++ b/miscutils/nandwrite.c
@@ -199,7 +199,7 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
*/
break;
}
- if (cnt < meminfo_writesize) {
+ if (cnt < (ssize_t) meminfo_writesize) {
if (IS_NANDDUMP)
bb_error_msg_and_die("short read");
if (!(opts & OPT_p))
@@ -218,7 +218,7 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
}
mtdoffset += meminfo_writesize;
- if (cnt < meminfo_writesize)
+ if (cnt < (ssize_t) meminfo_writesize)
break;
}
> Hi Steven,
> On Thu, Mar 14, 2013 at 07:55:30PM -0700, Steven Hickel wrote:
>> Hi, I'm new to this list and to such lists in general, so I apologize
>> if I break decorum in some way. I have a specific situation I'm hoping
>> someone can shed some light on. I'm making a nanddump of the userdata
>> partition on a nexus one with the below commands using two Cygwin
>> terminals. But, when I do this, the nanddump seems to go on forever. I
>> ended up stopping it at over 8 GB written. I believe the entire
>> internal storage is only something like 512 MB. The form of the below
>> commands seemed to work for creating nanddumps of the other phone
>> partitions. But, it's the userdata partition I'm really looking to get
>> so as to potentially recover some important deleted files. Also, note
>> that I have removed the external sd card so that there's no
>> possibility I'm copying from that.
>>
>> Cygwin Terminal 1
>> ---------------------------
>> adb forward tcp:5555 tcp:5555
>> adb shell
>> su
>> # nanddump [options] /dev/mtd/mtd5 | nc -l -p 5555
>> -------------------------------
>>
>>
>> Cygwin terminal 2
>> -----------------------------
>>
>> nc 127.0.0.1 5555 > /nexus/mtd5_userdata.img
>> ------------------------------
>>
>> This approach is similar to this, but with nanddump instead of dd:
>> http://forum.xda-developers.com/showthread.php?t=1994705
>>
>> In case it's of use, the proc/mtd file shows the following
>>
>> mtd0: 000e0000 00020000 "misc"
>> mtd1: 00400000 00020000 "recovery"
>> mtd2: 00380000 00020000 "boot"
>> mtd3: 09100000 00020000 "system"
>> mtd4: 05f00000 00020000 "cache"
>> mtd5: 0c440000 00020000 "userdata"
>>
>> Also, the df command in adb shell, brings up the following:
>>
>> Filesystem Size Used Free Blksize
>> /dev 192M 32K 192M 4096
>> /mnt/asec 192M 0K 192M 4096
>> /mnt/obb 192M 0K 192M 4096
>> /system 145M 131M 13M 4096
>> /data 196M 80M 116M 4096
>> /cache 95M 1M 93M 4096
>>
>> I hope someone can help, so I can get this image and be able to start
>> using the phone again. Thank you.
> Have you tried running nanddump alone, something like
> nanddump /dev/mtd/mtd5 > /dev/null
> Also, having the output of strace on nanddump run might give us a clue.
> If you can rebuild busybox for your platform please try doing so with the
> patch below applied, and post its output.
> diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c
> index e3f9b56..0d69e4e 100644
> --- a/miscutils/nandwrite.c
> +++ b/miscutils/nandwrite.c
> @@ -138,6 +138,8 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
> if (length < meminfo.size - mtdoffset)
> end_addr = mtdoffset + length;
> }
> + fprintf(stderr, "%s: size: %x end_addr: %x\n", __func__, meminfo.size,
> + end_addr);
>
> /* Pull it into a CPU register (hopefully) - smaller code that way */
> meminfo_writesize = meminfo.writesize;
> @@ -176,6 +178,7 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv)
> int input_fd = IS_NANDWRITE ? STDIN_FILENO : fd;
> int output_fd = IS_NANDWRITE ? fd : STDOUT_FILENO;
>
> + fprintf(stderr, "%s: mtdoffset %x\n", __func__, mtdoffset);
> blockstart = mtdoffset & ~(meminfo.erasesize - 1);
> if (blockstart == mtdoffset) {
> /* starting a new eraseblock */
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic