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:
- Interface to distribute files through EULA acceptance and MAC validation
- 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.
- Download each package X into directory nokia-closed/ with patching script P listed in L