From ace2d2178315d4b4ff1d969feed562a53d7a66c1 Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Sun, 15 Mar 2026 15:53:29 +0100 Subject: mount root filesystem --- kernel/filesystem/src/vfs.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'kernel/filesystem/src/vfs.cpp') diff --git a/kernel/filesystem/src/vfs.cpp b/kernel/filesystem/src/vfs.cpp index 27f1db9..3f2576f 100644 --- a/kernel/filesystem/src/vfs.cpp +++ b/kernel/filesystem/src/vfs.cpp @@ -2,6 +2,10 @@ #include "kapi/system.hpp" +#include "devices/storage/storage_management.hpp" +#include "filesystem/ext2/ext2_filesystem.hpp" +#include "filesystem/mount.hpp" + #include namespace filesystem @@ -9,7 +13,11 @@ namespace filesystem namespace { constinit auto static active_vfs = std::optional{}; - } + + // TODO BA-FS26 @Felix better solution? while dynamic memory not available? + // TODO BA-FS26 remove when dynamic memory available; + constinit auto static root_fs = std::optional{}; + } // namespace auto vfs::init() -> void { @@ -19,6 +27,24 @@ namespace filesystem } active_vfs.emplace(vfs{}); + + auto storage_mgmt = devices::storage::storage_management::get(); + if (auto boot_device = storage_mgmt.determine_boot_device()) + { + root_fs.emplace(ext2::ext2_filesystem{}); + if (root_fs->mount(boot_device) != 0) + { + kapi::system::panic("[FILESYSTEM] Failed to mount root filesystem."); + } + + active_vfs->m_root_mount = mount{"/", &*root_fs}; + + // TODO BA-FS26 mount all the other devices to "/dev/ramxy" + } + else + { + // TODO BA-FS26 ?? what when no boot_device == no modules loaded?? + } } auto vfs::get() -> vfs & -- cgit v1.2.3