/// <summary> /// Initialise the filesystem service /// </summary> /// <returns></returns> public static bool Init() { if (Kernel.IsLive == true) { Active = false; return(false); } vFS = new CosmosVFS(); Cosmos.System.FileSystem.VFS.VFSManager.RegisterVFS(vFS); if (CheckVolumes() == false) { Console.WriteLine("Running Medli in Live User mode."); Console.WriteLine("FS operations are disabled!"); Kernel.IsLive = true; Active = false; return(false); } else { if ((File.Exists(Paths.System + @"live.user")) || Kernel.IsLive == true) { Console.WriteLine("OS in recovery mode! Live User mode enabled..."); Kernel.IsLive = true; Paths.CurrentDirectory = "LIVE"; Active = false; return(false); } else { /* * int i = 0; * for (i = 0; i < Paths.OSDirectories.Length; i++) * { * if (!Directory.Exists(Paths.OSDirectories[i])) * { * AreaInfo.SystemDevInfo.WriteDevicePrefix("FS", "Creating directory " + Paths.OSDirectories[i] + "..."); * System.FS.Makedir(Paths.OSDirectories[i], true); * } * }*/ Paths.CreateDirectories(); ServiceLogger = new LoggingService(Paths.SystemLogs + @"\fs.log"); ServiceLogger.Record("FS Service logger initialized."); #warning WIP Restore Functionality //var mydrive = new DiskManager(driveID); //ServiceLogger.Record("Filesystem service running on " + mydrive.Name); ServiceLogger.Record("Filesystem service running on " + vFS.GetFileSystemLabel(driveID)); Kernel.IsLive = false; Level3.ReadHostname(); Directory.SetCurrentDirectory(Paths.Root); Paths.CurrentDirectory = Paths.Root; Active = true; return(true); } } }
protected override void BeforeRun() { canvas = new BasicBufferScreen(new VGACanvas(new Mode(320, 200, ColorDepth.ColorDepth8)), Color.Blue); Sys.MouseManager.ScreenHeight = 320; Sys.MouseManager.ScreenWidth = 200; // canvas.Render(); if (ContainsVolumes()) { FileSystemEnabled = true; } Sys.MouseManager.ScreenHeight = 200; Sys.MouseManager.ScreenWidth = 320; Sys.FileSystem.VFS.VFSManager.RegisterVFS(vFS); //PCScreenFont fontz = new PCScreenFont(Convert.FromBase64String(font)); //VGAScreen.SetFont(fontz.CreateVGAFont(), fontz.CharHeight); StartScreen(); PS2Controller ps2 = new PS2Controller(); if (ContainsVolumes()) { m_log.InfoFormat("FILE SYSTEM", "Detected Partitions: " + vFS.GetVolumes().Count); int count = vFS.GetVolumes().Count; for (int i = 0; i < count; i++) { string drive = i.ToString() + ":\\"; string label = vFS.GetFileSystemLabel(drive); int UsedSpace = (int)vFS.GetTotalSize(drive) - (int)vFS.GetTotalFreeSpace(drive); long intBytes = UsedSpace; m_log.InfoFormat("FILE SYSTEM", "Detected Partition Label for Partition: " + drive + " is " + label); m_log.InfoFormat("FILE SYSTEM", @"Total Size for Partition " + drive + " is " + FormatBytes(vFS.GetTotalSize(drive)) + " Free: " + FormatBytes(vFS.GetTotalFreeSpace(drive)) + " Used: " + FormatBytes((long)intBytes)); //Console.WriteLine("Quajak Request: " + Path.GetPathRoot(drive)); } } }