factory: add script to load drm driver from plymouth-start
Add script to load drm driver from plymouth-start service. The kernel
snap is mounted when plymouth is about to start, so we can leverage
that. We search for the boot framebuffer and load only this driver as
we do not want to delay the boot by a full run of
"udevadm trigger --type=devices --action=add", that would force
loading of all applicable kernel modules.
For this, we search the boot_vga file. This file only applies to PCI
GPUs, so in other cases we would need the drm driver to be included in
the initramfs.
ubuntu-core-initramfs: run cpio with subprocess.run()
It has been found that in the x86 case (that prepends an early
initramfs with microcode files), the created initramfs was in some
cases not correct, and the kernel was unable to load it. Looking at
python dcoumentation about subprocess.check_call() [1], it says
"Code needing to capture stdout or stderr should use run() instead"
And it turns out that capturing output from run() fixes the problem,
although it is unclear what is the problem.