[Mageia-dev] Changes for dkms, dracut, drakx, drivers, initscripts, kms, mkinitrd, module-init-tools, udev
anssi.hannula at iki.fi
Sat Apr 16 20:19:41 CEST 2011
I've now completed the implementation of the points from my earlier "KMS
+ plymouth + DKMS + harddrake + speedboot + XFdrake + initrd stuff" RFC
at http://lists.mandriva.com/cooker/2011-01/msg00107.php. The only
notable difference is that instead of regenerating initrds a new
"nokmsboot" boot option flag is used instead.
I'll do some final cleanups and testing before I start committing this
work; this message is mostly a heads-up in case someone spots something
that's not ok.
The changes per package follow, feel free to comment:
- use display_driver_helper for loading display modules - no functional
change, just needed due to the other changes
- fix find commandline to find gzip compressed KMS kernel modules
- Added display_driver_helper script.
- Add/Remove "nokmsboot" boot option depending on selected driver.
display_driver_helper is used to detect if that is the case.
- Ask for reboot instead of X restart in the usual case, as this is
commonly required nowadays. Some checks could be added to allow
only to restart X when that is enough, but those are for later.
- Adapt splash handling for plymouth (i.e. hide splash when querying
- Call drakx-kbd-mouse-x11 to add/remove nokmsboot boot option if
needed. Detection is done using display_driver_helper and by
checking for /dev/.late_kms which is created by display_driver_helper
when it is called from udev and the kms driver wasn't yet loaded by
- If a reboot is needed due to a driver switch (i.e. boot was done
without nokmsboot but it is needed for the current driver), ask for
it (user is given 30 sec to abort). display_driver_helper is used to
- On driver switch, load the new driver by calling udevadm.
- If X.org is already running when a driver change is initiated,
defer change to next boot and disable speedboot for the next boot
(note: irrelevant with systemd).
- Generalize the harddrake_confirm code a bit.
- When configuring bootloader after X is already configured (like One),
use display_driver_helper to determine if "nokmsboot" should be used.
Initscripts (rc.sysinit / speedboot, not relevant with systemd):
- In very early boot, call display_driver_helper to check if there is a
pending dkms build (that may cause a wrong older binary dkms driver
to be loaded by X server) or a conflicting driver loaded by initrd
(which may cause graphical corruption / freeze when starting server)
and disable speedboot in those cases.
- Load display drivers before X when in speedboot.
- In speedboot mode, reopen file descriptors after X should've started.
This ensures that harddrake_service (and other sysinit output) is
shown to the user if the X startup failed. (plymouth grabs the output,
and when it shuts down the output is lost until descriptors are
- Allow putting nouveau/radeon in initrd (currently only i915 is
- Do not load display drivers if booted with nokmsboot.
- Remove now unneeded patch affecting blacklist behaviour.
- Remove now unwanted blacklist entries for DKMS and KMS drivers.
- Remove modprobe.preload.d, udev now loads the drivers selectively
using display_driver_helper. This also fixes a wrong version of a
driver being loaded when during early boot there is an old binary
dkms driver present and a newer source dkms driver is not yet built.
Proprietary NVIDIA drivers:
- Replace "alias" entry with "install" entry, to allow removal of a
patch in module-init-tools.
- Use display_driver_helper to load display drivers. It checks the
drivers it knows so that the X.org configuration is appropriate for
the driver before loading it. I.e. if "vesa" is enabled, no display
drivers are loaded, and if "fglrx" is enabled "radeon" is not loaded,
and vice versa, etc. Also, no wrong version dkms binary driver is
loaded if the correct dkms source driver is going to be built later
during this boot.
- When in initrd, instead of using display_driver_helper, instead check
for the nokmsboot boot parameter, and load drivers if that is not set
(note: initrds do not contain proprietary drivers).
More information about the Mageia-dev