Camera

Camera (front & back) drivers are available from this git: [1]. The code is not in the mainline kernel, because it uses a camera firmware, which can be avoided by changing the driver.

U-Boot

Instead of booting the kernel directly from NOLO (which restricts you to using ONE kernel), U-Boot can be used as second bootloader.
The Boot Process will end up like this: NOLO -> U-Boot -> Kernel. The Maemo kernel is appended to U-Boot, since U-Boot will be at
the location where the Maemo kernel is located normally.

Charging

Charging is currently done with a shell script, which and "i2c-dev" kernel module.
There are plans to move this into the kernel, so that charging happens automatically
once you plug your N900 into a USB port. You can find discussions and some code
here. Recently (3.3-rc1) the kernel got a
new Charge Manager Framework (Announcement),
which will help with this task. You can find its documentation under:
Documentation/power/charger-manager.txt

Modem

The modem is connected via a bus called SSI, which is an old version of HSI.
In linux multiple things are involved to get it working: