dracut.sh: harden host_modalias reading

Some weird PPC driver make their modulias unreadable

$ cat /sys/devices/vio/4000/modalias
cat: /sys/devices/vio/4000/modalias: No such device
ifup: do not dhcp on network interface of secondary stack

Configure cmdline to:
 ip=br0:dhcp bridge=br0:bond0 bond=bond0:eth0

By default ifup bond0 will run dhcp on bond0, which is wrong. bond0
isn't the top interface. we should really run dhcp on br0.

So if we ifup an network interface on secondary stack, we should not
dhcp. Fix this issue with this patch.
dracut.sh: also search uevent's for MODALIAS
dracut.sh: we don't need to read the modalias files

udev does only parse the uevent MODALIAS line, so whatever is in the
modalias files would not trigger any module load.
Add option to turn on/off prelinking

--prelink, --noprelink

do_prelink=[yes|no]
add /etc/system-fips for dracut-fips subpackage
dracut: Generlize microcode early cpio usage

ACPI early table override also may need to place files into an early cpio.
Reflect this in variable and file names.
This change is renaming only and does not introduce any real change.

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Thomas Renninger <trenn@suse.de>
dracut: Do not create early_cpio if no suitable microcode exist in hostonly case

Intel microcodes only exist for very specific family/model/stepping CPUs.
If no microcode gets added, there is no need to create an empty
(only directories) cpio later that gets glued to the initrd.

This also fixes:

*** Constructing GenuineIntel.bin ****
cat: /lib/firmware/intel-ucode/06-3c-03: No such file or directory

in hostonly mode if there is no suitable microcode for the CPU.

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Thomas Renninger <trenn@suse.de>
dracut: Implement ACPI table overriding

An example config file for this feature could be:

/etc/dracut.conf.d/03-acpi-override.conf

with this content:
acpi_override="yes"
acpi_table_dir="/etc/dracut.conf.d/acpi_tables"

Then all files ending with *.aml will be put into the early cpio
(kernel/firmware/acpi) and will be used to replace the BIOS provided tables
if the kernel supports this feature.

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Thomas Renninger <trenn@suse.de>
dracut.conf.5.asc: Add ACPI table override and uncompressed cpio doc

Signed-off-by: Thomas Renninger <trenn@suse.de>
dracut-bash-completion.sh: add --prelink --noprelink
dracut.sh: bail out early, if destination dir is not writeable
dracut-logger.sh: do not log to syslog/kmsg/journal for UID != 0

Don't clutter the system log with user actions.

Also check, if systemd-cat works, before using it.
lvm/mdraid: Fix LVM on MD activation

The 69-dm-lvm-metad.rules set some udev env. variables that makes it
possible to detect the right time to activate LVM on MD. The MD is very
similar to DM during activation - it's usable only after proper device
activation - the CHANGE event. We need to make a difference between a
CHANGE event that comes from this activation and CHANGE event that is
the outcome of the WATCH udev rule (otherwise we'd end up with LVM
activation done on each CHANGE event - which is wrong).

So we need the udev databse to be persistent during pivot to root fs
even for MD devices.
bcache: removed, it's in the upstream bcache-tools package
dracut-functions.sh:inst_rules() do not install rules in CWD
dracut.spec: conflict with old bcache-tools
mdraid/module-setup.sh: install configs from /etc/mdadm.conf.d

/etc/mdadm.conf.d directory is supported since mdadm-3.3
mdraid/module-setup.sh: fixes for mdadm-3.2.6+

mdadm-3.2.6+:
Incremental assembly rule contains "--offroot" arg. Update
regexp to catch this variant.

mdadm-3.3+:
Rules was splitted into two files: 63-md-raid-arrays.rules
and 64-md-raid-assembly.rules. Install them both and edit
the latter.
mkinitrd-dracut.sh: Introduce -i -k parameters

In SUSE, one can pass a list of kernel files via -k parameter.
For each an initrd is generated as passed via -i parameters.

Make the dracut mkinitrd wrapper compatible to those.
For now only one kernel file and initrd target can be specified.
This will get enhanced with a follow-up patch.

Signed-off-by: Thomas Renninger <trenn@suse.de>