summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/init.c')
-rw-r--r--mdk-stage1/init.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/mdk-stage1/init.c b/mdk-stage1/init.c
index b5fb6115b..7cec1076b 100644
--- a/mdk-stage1/init.c
+++ b/mdk-stage1/init.c
@@ -517,6 +517,20 @@ int main(int argc, char **argv)
if (create_initial_fs_symlinks(STAGE2_LOCATION "/usr/share/symlinks") != 0)
fatal_error("Fatal error finishing initialization (could not create symlinks).");
+ /* kernel modules and firmware is needed by stage2, so move them to the root */
+ if (rename("/usr/lib/modules", "/modules"))
+ fatal_error("Cannot rename modules folder");
+
+ if (rename("/usr/lib/firmware", "/firmware"))
+ fatal_error("Cannot rename firmware folder");
+
+ /* Add some symlinks so stage1 is still valid on it's own - not strictly needed */
+ if (symlink("/modules", "/usr/lib/modules"))
+ fatal_error("Cannot symlink modules folder");
+
+ if (symlink("/firmware", "/usr/lib/firmware"))
+ fatal_error("Cannot symlink firmware folder");
+
if (mount(STAGE2_LOCATION "/usr", "/usr", "none", MS_BIND|MS_RDONLY, NULL))
fatal_error("Unable to bind mount /usr filesystem from rescue or installer stage2");