Commit cff75e0b authored by Daniel Thompson's avatar Daniel Thompson Committed by Linus Torvalds

initramfs: provide a way to ignore image provided by bootloader

Many "embedded" architectures provide CMDLINE_FORCE to allow the kernel
to override the command line provided by an inflexible bootloader.
However there is currrently no way for the kernel to override the
initramfs image provided by the bootloader meaning there are still ways
for bootloaders to make things difficult for us.

Fix this by introducing INITRAMFS_FORCE which can prevent the kernel
from loading the bootloader supplied image.

We use CMDLINE_FORCE (and its friend CMDLINE_EXTEND) to imply that the
system has an inflexible bootloader.  This allow us to avoid presenting
this config option to users of systems where inflexible bootloaders
aren't usually a problem.

Link: http://lkml.kernel.org/r/20170217121940.30126-1-daniel.thompson@linaro.orgSigned-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent da5e108b
...@@ -613,7 +613,7 @@ static int __init populate_rootfs(void) ...@@ -613,7 +613,7 @@ static int __init populate_rootfs(void)
if (err) if (err)
panic("%s", err); /* Failed to decompress INTERNAL initramfs */ panic("%s", err); /* Failed to decompress INTERNAL initramfs */
/* If available load the bootloader supplied initrd */ /* If available load the bootloader supplied initrd */
if (initrd_start) { if (initrd_start && !IS_ENABLED(CONFIG_INITRAMFS_FORCE)) {
#ifdef CONFIG_BLK_DEV_RAM #ifdef CONFIG_BLK_DEV_RAM
int fd; int fd;
printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n"); printk(KERN_INFO "Trying to unpack rootfs image as initramfs...\n");
......
...@@ -21,6 +21,16 @@ config INITRAMFS_SOURCE ...@@ -21,6 +21,16 @@ config INITRAMFS_SOURCE
If you are not sure, leave it blank. If you are not sure, leave it blank.
config INITRAMFS_FORCE
bool "Ignore the initramfs passed by the bootloader"
depends on CMDLINE_EXTEND || CMDLINE_FORCE
help
This option causes the kernel to ignore the initramfs image
(or initrd image) passed to it by the bootloader. This is
analogous to CMDLINE_FORCE, which is found on some architectures,
and is useful if you cannot or don't want to change the image
your bootloader passes to the kernel.
config INITRAMFS_ROOT_UID config INITRAMFS_ROOT_UID
int "User ID to map to 0 (user root)" int "User ID to map to 0 (user root)"
depends on INITRAMFS_SOURCE!="" depends on INITRAMFS_SOURCE!=""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment