summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal <amlalelmahrouss@icloud.com>2024-12-17 15:28:28 +0100
committerAmlal <amlalelmahrouss@icloud.com>2024-12-17 15:28:28 +0100
commit4d7f00657c62fcdc5765bfa525f28c37a52461af (patch)
treeca5e0fbc0f4911683823d7d635e8df77f370081d
parente55ba3e0711e1e0d66da002f2847f0d6d0e838cd (diff)
BUG: Fixing Filesystem Init.
Signed-off-by: Amlal <amlalelmahrouss@icloud.com>
-rw-r--r--dev/ZBAKit/BootKit/BootKit.h8
-rw-r--r--dev/ZBAKit/src/HEL/AMD64/BootMain.cc10
-rw-r--r--dev/ZKAKit/src/KernelMain.cc64
3 files changed, 17 insertions, 65 deletions
diff --git a/dev/ZBAKit/BootKit/BootKit.h b/dev/ZBAKit/BootKit/BootKit.h
index 7741e713..ea1ebfb8 100644
--- a/dev/ZBAKit/BootKit/BootKit.h
+++ b/dev/ZBAKit/BootKit/BootKit.h
@@ -311,15 +311,15 @@ namespace Boot
return false; /// sanity check
/// convert the sector into something that the disk understands.
- SizeT sectorSz = BootDev::kSectorSize;
+ SizeT sectorSz = sizeof(NFS_ROOT_PARTITION_BLOCK);
/// @note A catalog roughly equal to a sector.
- constexpr auto cMinimumDiskSize = kNeFSMinimumDiskSize; // at minimum.
+ constexpr auto kMinimumDiskSize = kNeFSMinimumDiskSize; // at minimum.
/// @note also look at EPM headers, for free part blocks.
- if (fDiskDev.GetDiskSize() < cMinimumDiskSize)
+ if (fDiskDev.GetDiskSize() < kMinimumDiskSize)
{
EFI::ThrowError(L"Drive-Too-Tiny", L"Can't format a New Filesystem partition here.");
return false;
@@ -328,7 +328,7 @@ namespace Boot
NFS_ROOT_PARTITION_BLOCK partBlock{0};
CopyMem(partBlock.Ident, kNeFSIdent, kNeFSIdentLen - 1);
- CopyMem(partBlock.PartitionName, partName, strlen(partName));
+ CopyMem(partBlock.PartitionName, partName, StrLen(partName));
partBlock.Version = kNeFSVersionInteger;
partBlock.CatalogCount = blobCount;
diff --git a/dev/ZBAKit/src/HEL/AMD64/BootMain.cc b/dev/ZBAKit/src/HEL/AMD64/BootMain.cc
index 90d6df05..26348ac2 100644
--- a/dev/ZBAKit/src/HEL/AMD64/BootMain.cc
+++ b/dev/ZBAKit/src/HEL/AMD64/BootMain.cc
@@ -156,7 +156,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr ImageHandle,
#ifdef ZBA_USE_FB
CGDrawString("ZBA (c) Theater Quality Inc.", 10, 10, RGB(0xFF, 0xFF, 0xFF));
- CGDrawString((cnt_enabled > 1) ? "SMP detected." : "Single processor configuration detected.", 20, 10, RGB(0xFF, 0xFF, 0xFF));
+ CGDrawString((cnt_enabled > 1) ? "Multi processor configuration detected." : "Single processor configuration detected.", 20, 10, RGB(0xFF, 0xFF, 0xFF));
#endif // ZBA_USE_FB
handover_hdr->f_HardwareTables.f_MultiProcessingEnabled = cnt_enabled > 1;
@@ -181,13 +181,7 @@ EFI_EXTERN_C EFI_API Int32 Main(EfiHandlePtr ImageHandle,
root.fKind = kNeFSCatalogKindDir;
- partition_factory.Format("FileSystem (A:)", &root, 1);
-
- rt_reset_hardware();
- }
- else
- {
- CGDrawString("Booting from EPM disk...", 30, 10, RGB(0xFF, 0xFF, 0xFF));
+ partition_factory.Format("FileSystem (A:)\0", &root, 1);
}
#endif // ZKA_AUTO_FORMAT
diff --git a/dev/ZKAKit/src/KernelMain.cc b/dev/ZKAKit/src/KernelMain.cc
index 07821ee7..48555423 100644
--- a/dev/ZKAKit/src/KernelMain.cc
+++ b/dev/ZKAKit/src/KernelMain.cc
@@ -42,35 +42,31 @@ namespace Kernel::Detail
if (fNeFS && fNeFS->GetParser())
{
- constexpr auto kFolderInfo = "META-INF";
+ constexpr auto kFolderInfo = "META-XML";
const auto kFolderCount = 7;
const char* kFolderStr[kFolderCount] = {
"/Boot/", "/System/", "/Support/", "/Applications/",
"/Users/", "/Library/", "/Mount/"};
- for (Kernel::SizeT dirIndx = 0UL; dirIndx < kFolderCount; ++dirIndx)
+ for (Kernel::SizeT dir_index = 0UL; dir_index < kFolderCount; ++dir_index)
{
- auto catalog_folder = fNeFS->GetParser()->GetCatalog(kFolderStr[dirIndx]);
+ auto catalog_folder = fNeFS->GetParser()->GetCatalog(kFolderStr[dir_index]);
if (catalog_folder)
{
- kcout << "newoskrnl: Already exists.\r";
-
- CG::CGDrawStringToWnd(kKernelWnd, "ZkaOS: Catalog already exists...", 10 + (10 * (dirIndx + 1)), 10, RGB(0, 0, 0));
-
delete catalog_folder;
+ catalog_folder = nullptr;
+
continue;
}
- catalog_folder = fNeFS->GetParser()->CreateCatalog(kFolderStr[dirIndx], 0,
+ catalog_folder = fNeFS->GetParser()->CreateCatalog(kFolderStr[dir_index], 0,
kNeFSCatalogKindDir);
NFS_FORK_STRUCT fork_folder{0};
- const Kernel::Char* kSrcFolderName = kFolderInfo;
-
- Kernel::rt_copy_memory((Kernel::VoidPtr)(kSrcFolderName), fork_folder.ForkName,
- Kernel::rt_string_len(kSrcFolderName));
+ Kernel::rt_copy_memory((Kernel::VoidPtr)(kFolderInfo), fork_folder.ForkName,
+ Kernel::rt_string_len(kFolderInfo));
Kernel::rt_copy_memory((Kernel::VoidPtr)(catalog_folder->Name),
fork_folder.CatalogName,
@@ -81,14 +77,14 @@ namespace Kernel::Detail
fork_folder.ResourceKind = Kernel::kNeFSRsrcForkKind;
fork_folder.Kind = Kernel::kNeFSDataForkKind;
- Kernel::KString folder_metadata(kNeFSSectorSz);
+ Kernel::KString folder_metadata(2048);
folder_metadata +=
"<!properties/>\r<p>Kind: folder</p>\r<p>Created by: system</p>\r<p>Edited by: "
"system</p>\r<p>Volume Type: Zeta</p>\r";
folder_metadata += "<p>Path: ";
- folder_metadata += kFolderStr[dirIndx];
+ folder_metadata += kFolderStr[dir_index];
folder_metadata += "</p>\r";
const Kernel::SizeT kMetaDataSz = kNeFSSectorSz;
@@ -99,48 +95,10 @@ namespace Kernel::Detail
catalog_folder, true, (Kernel::VoidPtr)(folder_metadata.CData()),
kMetaDataSz, kFolderInfo);
- CG::CGDrawStringToWnd(kKernelWnd, "ZkaOS: Catalog has been created...", 10 + (10 * (dirIndx + 1)), 10, RGB(0, 0, 0));
-
delete catalog_folder;
+ catalog_folder = nullptr;
}
}
-
- const auto kSysPage = "/System/syspage.sys";
-
- NFS_CATALOG_STRUCT* catalogDisk =
- this->fNeFS->GetParser()->GetCatalog(kSysPage);
-
- const Kernel::Char* kSrcFolderName = "8K_SYS_PAGE_KERNEL";
-
- if (catalogDisk)
- {
- delete catalogDisk;
- }
- else
- {
- catalogDisk =
- (NFS_CATALOG_STRUCT*)this->Leak()->CreateAlias(kSysPage);
-
- NFS_FORK_STRUCT theDiskFork{0};
-
- Kernel::rt_copy_memory((Kernel::VoidPtr)(kSrcFolderName), theDiskFork.ForkName,
- Kernel::rt_string_len(kSrcFolderName));
-
- Kernel::rt_copy_memory((Kernel::VoidPtr)(catalogDisk->Name),
- theDiskFork.CatalogName,
- Kernel::rt_string_len(catalogDisk->Name));
-
- Kernel::Size sz_hdr = kNeFSForkSize;
-
- theDiskFork.DataSize = sz_hdr;
- theDiskFork.ResourceId = kNeFSCatalogKindExecutable | kNeFSCatalogKindPage;
- theDiskFork.ResourceKind = Kernel::kNeFSDataForkKind;
- theDiskFork.Kind = Kernel::kNeFSDataForkKind;
-
- fNeFS->GetParser()->CreateFork(catalogDisk, theDiskFork);
-
- delete catalogDisk;
- }
}
~FilesystemInstaller() = default;