81 lines
2.4 KiB
Diff
81 lines
2.4 KiB
Diff
From 92e3310d2db157deacb86ef5db8c8c8d38251312 Mon Sep 17 00:00:00 2001
|
|
From: Alexey Min <alexey.min@gmail.com>
|
|
Date: Wed, 11 Sep 2019 21:51:40 +0300
|
|
Subject: [PATCH 3/6] Add config option to fix bootloader cmdline args
|
|
|
|
Android bootloader passes some arguments in kernel command
|
|
line, that make booting custom OSes harder:
|
|
|
|
* skip_initramfs
|
|
* root=PARTUUID=...
|
|
* init=/init
|
|
|
|
Those parameters override default boot partition to hardcoded,
|
|
set init binary to /init, disable booting from initramfs.
|
|
|
|
If enabled, those parameters will be erased from bootloader's
|
|
command line, and custom OS can boot the way it likes.
|
|
|
|
Signed-off-by: Alexey Min <alexey.min@gmail.com>
|
|
---
|
|
arch/arm64/Kconfig | 17 +++++++++++++++++
|
|
drivers/of/fdt.c | 14 ++++++++++++++
|
|
2 files changed, 31 insertions(+)
|
|
|
|
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
|
|
index 2829edba6aa5..bd9f05f83c7e 100644
|
|
--- a/arch/arm64/Kconfig
|
|
+++ b/arch/arm64/Kconfig
|
|
@@ -1125,6 +1125,23 @@ config CMDLINE_FORCE
|
|
command-line options your boot loader passes to the kernel.
|
|
endchoice
|
|
|
|
+config CMDLINE_DROP_DANGEROUS_ANDROID_OPTIONS
|
|
+ bool "Drop certain dangerous options from cmdline"
|
|
+ default n
|
|
+ help
|
|
+ Android bootloader passes some arguments in kernel command
|
|
+ line, that make booting custom OSes harder:
|
|
+
|
|
+ * skip_initramfs
|
|
+ * root=PARTUUID=...
|
|
+ * init=/init
|
|
+
|
|
+ Those parameters override default boot partition to hardcoded,
|
|
+ set init binary to /init, disable booting from initramfs.
|
|
+
|
|
+ If enabled, those parameters will be erased from bootloader's
|
|
+ command line, and custom OS can boot the way it likes.
|
|
+
|
|
config EFI_STUB
|
|
bool
|
|
|
|
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
|
|
index ca175710c4c8..fd8257589648 100644
|
|
--- a/drivers/of/fdt.c
|
|
+++ b/drivers/of/fdt.c
|
|
@@ -1012,6 +1012,20 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,
|
|
|
|
pr_debug("Command line is: %s\n", (char*)data);
|
|
|
|
+#ifdef CONFIG_CMDLINE_DROP_DANGEROUS_ANDROID_OPTIONS
|
|
+ pr_err("Replacing dangerous cmdline options...");
|
|
+ cmdline = strstr((const char *)data, "skip_initramfs");
|
|
+ if (cmdline)
|
|
+ *cmdline = '_';
|
|
+ cmdline = strstr((const char *)data, "root=");
|
|
+ if (cmdline)
|
|
+ *cmdline = '_';
|
|
+ cmdline = strstr((const char *)data, "init=");
|
|
+ if (cmdline)
|
|
+ *cmdline = '_';
|
|
+ pr_err("Command line now is: %s\n", (char*)data);
|
|
+#endif
|
|
+
|
|
/* break now */
|
|
return 1;
|
|
}
|
|
--
|
|
2.24.1
|
|
|