Johan Sørensen

Flashing the Nokia 770

I recently bought a Nokia 770 “Internet Tablet” as they call it. No GSM/3G, just WLAN, Bluetooth and USB. And it runs a Debian linux offspring out of the box so it’s very hackable.

And that was kind of the problem for me; I hacked around too much and in a moment of clear stupidity I changed the setuid bit on `sudo` in a freak typing accident of a chmod gone wrong. Oops_.
So I locked myself out of a lot of fun times, including the package manager not working, and without any ssh server installed (yet) and no clear way of making it boot in single-user mode I decided to reflash the whole thing; returning it to its factory settings. Here’s a readers digests of my approach using OSX. It’s based on things found mostly here
usage and here.

Flashing your device

I downloaded the flasher.macosx version if the flasher along with the it2006 OS image/Maemo 2.0 image
h3.First* you may want to backup your settings, bookmarks and whatnots using the builtin backup software. Then we do a complete fresh install by flashing the device with the image:


$ ./flasher-2.0.macosx -F SU-18_2006SE_1.2006.26-8_PR_F5_MR0_ARM.bin -f -R
flasher v0.8.1 (Jun 22 2006)

SW version in image: SU-18_2006SE_1.2006.26-8_PR_MR0
Image '2nd', size 8704 bytes
Image 'secondary', size 87040 bytes
Image 'xloader', size 13824 bytes
Image 'initfs', size 1890304 bytes
Image 'kernel', size 1266560 bytes
Image 'rootfs', size 60030976 bytes
USB device found found at bus 003, device address 002-0421-0105-00-00
Found device SU-18, hardware revision 1802
[..lots of fun stuff..]
100% (58624 of 58624 kB, avg. 814 kB/s)
Finishing flashing... done

And then when the thing boots back up we have to go through those fun initial settings again (language, datetime etc).

Making a smaller initfs

OK, so that was easy, except now our initfs partition is completely full, so we can’t install packages such as “becomeroot” and other fun things, so we have to find a stripped down version if that image. Luckily people smarter than me have already figured that out.
(There’s also a smaller image here but I couldn’t get it to work as expected).

The smaller initfs comes in the form of a binary xdelta diff, but I had some issues with the `xdelta` dependencies, so in the end I had to install fink, just for the sake of getting xdelta in a quick way. So:

First “unpack” the image from the device:


$ mkdir it2006-unpacked $ cd it2006-unpacked $ ../flasher-2.0.macosx -F ../SU-18_2006SE_1.2006.26-8_PR_F5_MR0_ARM.bin -u [...] Image 'initfs', size 1890304 bytes [...] Unpacking initfs image to file 'initfs.jffs2'... [...]

Then we get the smaller initfs image and apply the xdelta


$ curl -O http://fanoush.webpark.cz/maemo/initfs.bootmenu.it2006.tgz $ tar xzf initfs.bootmenu.it2006.tgz

  1. Apply the xdelta
    $ /sw/bin/xdelta patch initfs.bootmenu.xdelta initfs.jffs2 initfs.bootmenu.jffs2
  2. flash it onto the 770:
    $ ../flasher-2.0.macosx —initfs initfs.bootmenu.jffs2 -f -R
    […]
    Sending initfs image (1537 kB)…
    100% (1537 of 1537 kB, avg. 859 kB/s)
    Flashing initfs… done.

And we’re laughing. But we’re going to laugh even more once we install Ruby 1.8.4 from here:


Comments:

  1. bbb Says:


    bollywood

  2. Jacques Marneweck Says:


    Is there any way to prevent ruby from trying to load a whole huge file into memory for the duration of the upload?

    29985 root 1 4 0 479M 478M sbwait 0:02 0.00% ruby