Exemplo n.º 1
0
        /// <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);
                }
            }
        }
Exemplo n.º 2
0
        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));
                }
            }
        }