this Question ist older, but I found a some how working solution I could not find for this context in any other answers to this problem.
I expirienced an similar behavior when booting up Kubuntu 16.10 on an iMac (late 2009) since a few weeks:
The system is running but the backlight is switched off some how at that moment when the framebuffer driver is activated.
It started after using the external displayport or an kubuntu-update I can not tell which. The nomodeset/...modeset=0 thing somehow works but then the radeon driver isn't loaded anymore and things that benifit a lot from hardware accelleration like googelmaps are not usable or only usable with pain.
At the moment I only have a solution for X:
ssh username@yourImacIP -XC (-XC means: compressed with X-forwarding) to the iMac and run:
xrandr -d :0 --output eDP --crtc 1 --brightness 0.8
This how ever only works if I start the normal X-Displaymanager/Desktop-environment (in my case KDE) on the iMac. So i have to assume that the correct useraccount is allready selected and I only have to type in the password blindly. Of course xrandr must be installed.
If I run the same command again - the screen turns black and if again the screens turns on again. So the logic of the command as I understand it (changing the brightness to a value between 0 and 1) is not working correct.
If anyone has a solution for the framebuffer-bootup not turning off the monitor-backlight I would appreciate it.
After the upgrade to kubuntu 17.10 the radeon driver didn't work at all in this setup.
But (current) happy end: with the latest updates (around middle of November) of the current Version of Kubuntu (17.10) the described procedures above seems not necessary anymore!
The Display comes up without any hassle and I can use the console again. Thank the almighty kubuntu or radeon-driver developers!
Still not working is my external display port :( The hardware seems to be gone...
If you still need the procedure above - attaching the line
xrandr -d :0 --output eDP --crtc 1 --brightness 0.7
to your local (in your user directory) *.xinit, .xinitrc or .xsessionrc* (whatever works) eases your live. You only have to authenticate blindly. A remote ssh is not necessary anymore.