Hello again,
Today I would like to present you SystemC - something that became a bit bigger than I wanted it to be. Now it's basically like an OS, a base for an OS with really cool features like services similar to SystemD ones, file permissions, PoC user support (users are saved nowhere, sudo does no authentication), sandboxing support (I want you to try to break out of it) and many more things.
Currently half of the programs are very nig rigged, just like part of the inside code (for example support for SIGKILL was very hacky).
List of programs:
Spoiler
init - initializes SystemCsystemctl - managing services
systemc-nspawn - sandboxing
ls - listing files improved
chmod - change file permissions
chown - change file owners
kill - send signals to threads
ps - show threads
sudo - should be su, switches users
texec - useful for services
whoami - prints the current user id
This was sort of a side project when not feeling doing all the game hacking or game dev stuff I'm used to doing now.
How to install? Well, for now I will not create the installer because of so many files (7, I know), but you can grab all of these from github.
Link: https://github.com/G...oftware/systemc
Install (should work): pastebin run W5ZkVYSi GreenByteSoftware systemc
So some FAQ:
Spoiler
What's next? IDK, I am doing a lot of game hacking lately, specifically, csgo. So, this is a small side project.What are services? Services are programs which run in the background. For example you can run something like a network command centre as a service.
How to define services? You can define them inside etc/systemc/system/ directory naming the file as somename.service. Inside, type in [Service] and in the next line ExecStart=, right after = without a space type the command you want to be executed. If you want to run the service on start, add [Unit] and in the next line type Wants=graphical.target. You will need to enable the service later. There is more, but much is not implemented yet. You can look how it looks like in actual SystemD here: https://access.redha...Unit_Files.html
How to start services? You need to use an utility called systemctl located ad bin directory. You are better of to add that directory to shell path in your startup (shell.setPath(shell.getPath().."sc_root_path/bin")). Systemctl start, stop, enable, disable do pretty much what they should do. Enable and disable toggle if the service gets started on boot.
Targets? Targets are basically the target state of the system. Currently there is only one target - graphical.target. When you run init, it defaults to this target (you can pass the target you want to run SystemC as an argument to init). The services which "want" the target and which are enabled at the same time get a directory inside the target making SystemC notice it on the next reboot and run it.
SystemC-Nspawn. What is this? It basically is the Chroot script I posted earlier but integrated with SystemC a bit.
What are the options? Basically run the command without arguments, it should show the usage. Unless you know what you are doing, you should not type the argument to not copy the ROM folder. Without SystemC, the containers should work just fine, as long as you do not use -b option.
Has SystemD come too far? Why? Will it include the full office suite?
Yes to all.
Things to do:
Spoiler
Ability to delay between things to make you look coolTimers
Other SystemC units
Fix one quirk in SystemC library's run function
SystemC Office, of course
And for the last, I made this up. Linux users might understand this.
Spoiler
What you guys are referring to as Linux, is in fact, SystemD/Linux, or as I've recently taken to calling it, SystemD plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning SystemD system made useful by the SystemD bloat, bloat utilities and bloat system components comprising a full OS as defined by US.Many computer users run a modified version of the SystemD system every day, realizing it very well. Through a peculiar turn of events, the version of SystemD which is widely used today is often called "Linux", and many of its users are not aware that it is basically the SystemD system, developed by the SystemD Project.
There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine's resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the SystemD awesomeness system: the whole system is basically SystemD with Linux added, or SystemD/Linux. All the so-called "Linux" distributions are really distributions of SystemD/Linux.
- Lennart Poettering 2019
Credits:
Spoiler
Lymia - for writing the original chroot scriptDan200 - for making the bios.lua and CraftOS
Bryan Lunduke - for somehow inspiring me to make this