Mer/Proposals/Community Firmware

This is a proposal how community firmware images as mentioned in Task:Community_firmware_image_distribution could be done in practice

Permissions needed from Nokia to maemo.org:

  • Permission to distribute the resulting firmware image of merged Nokia-closed software and Mer software, through maemo.org, behind validation of MAC address (for N8x0(W) users) and EULA specified by Nokia
  • Permission to download from the Diablo update repositories, binary packages (.deb files), which are Nokia-closed software. Current initial list we would like to use:
    • hald-addon-bme - for retrieving battery information
    • (more to come)
  • Permission to optionally patch scripts/package information (not binaries) in the Nokia-closed packages in order to fit them into Mer, by fixing incompatibility problems.

Need to check if this is needed:

  • Permission to develop patches (recipes) which may contain snippets of Nokia-closed scripts/package information as to be able to perform the patching operation correctly.
  • Permission to store these patches publically.

Requirements on maemo.org:

  • QEMU-ARM instance modelled on http://people.debian.org/~aurel32/qemu/armel/
  • This virtual machine will through a script, with following input:
    • A tar.gz with a Mer rootfs
    • A list of packages L (with exact URL to Diablo update repositories), along with an URL to optional patch to be run with 'bash'
  • Do the following:
    • Download each package X into directory nokia-closed/ with patching script P listed in L
      • mkdir -p package-X/DEBIAN
      • dpkg-deb -x package-X-deb-file package-X
      • dpkg-deb -e package-X-deb-file package-X/DEBIAN
      • cd package-X
      • execute patch script P if exists
      • cd ..
      • dpkg-deb --build nokia-closed-patched/package-X-deb-file package-X
    • tar pzxf the tar.gz into mer-rootfs
    • in mer-rootfs, temporarily move /usr/sbin/invoke-rc.d to /usr/sbin/invoke-rc.d.REAL and /sbin/start-stop-daemon to /sbin/start-stop-daemon.REAL, and ln -s /bin/true /usr/sbin/invoke-rc.d /sbin/start-stop-daemon
    • export LC_ALL=C
    • copy nokia-closed-patched/ into mer-rootfs/nokia-closed-patched
    • for each package X
      • chroot nokia-closed-patched dpkg -i /nokia-closed-patched/package-X-deb-file
    • remove mer-rootfs/nokia-closed-patched directory
    • remove mer-rootfs/usr/sbin/invoke-rc.d , mer-rootfs/sbin/start-stop-daemon
    • mv /sbin/start-stop-daemon.REAL /sbin/start-stop-daemon
    • mv /usr/sbin/invoke-rc.d.REAL /usr/sbin/invoke-rc.d
    • tar.gz up mer-rootfs (without mer-rootfs prefix), and make accessible behind a EULA from maemo.org to worthy MAC addresses.