Ejemplo n.º 1
0
        public static void DoTheChrootBash(Pogo pogo)
        {
            Mono.Unix.Native.Syscall.chroot(pogo.Box.Merged.Full);

            var bash = new Bash()
                       .Command($"bash")
                       .Directory("/root")
                       .Interactive()
                       .Run();
        }
Ejemplo n.º 2
0
        static int Main(string[] args)
        {
            // https://github.com/landley/mkroot
            // https://wiki.musl-libc.org/projects-using-musl.html
            // http://www.dragora.org/repo.fsl/doc/trunk/www/index.md
            // toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc

            Pogo = new Pogo();

            foreach (var arg in args)
            {
                if (arg == ChrootIntro)
                {
                    Bash.DoTheChrootBash(Pogo);
                    return(127);
                }
            }

            Terminal.Write("reading recipes ... ");
            var morphs = Morphs.Morphs.Populate(
                Pogo,
                IsLinux
                    ? "/root/McMorph/McMorph.Morph/Repository"
                    : ((PathName)Environment.CurrentDirectory) / "McMorph.Morph/Repository");

            Terminal.ClearLine();

            morphs.Download(false);
            morphs.Extract(false);

            Pogo.Box.Mount(true);

#if false
            //Console.Write("any key ...");
            //Console.ReadKey(true);
            //Console.WriteLine();
#endif
            return(0);
        }