- Assembly 62.9%
- Shell 35.5%
- Makefile 1.6%
| jmp0 | remove deadnames from files | |
| Limine @7a9013f305 | remove deadnames from files | |
| scripts | remove deadnames from files | |
| src | remove deadnames from files | |
| .gitignore | update gitignore to maintain concurrency | |
| .gitmodules | add gitmodules | |
| COPYING | Init new repo | |
| README.org | update to v00.01.00 | |
XBin
XBin is the name of the file format and user space that lies in src/
xbin.S is a file generated by scripts/mklib.sh, which requires a file named xbin.lst to build
As you might see by peering at the .gitignore, these files are ignored.
Tell me more
XBin was written, by me, by hand, to be the smallest I could see it being.
This project does not need a linker whatsoever, unless utilizing Boks/Linux to build. However, a version of NASM is required, alongside many GNU utilities likely shipped with your machine.
And the scripts/?
Indeed, this project ships with a fair many scripts. Only build.sh takes arguments
The arguments are like this:
scripts/build.sh x_sudo x_uid x_gid [BOKS]
First, we must go over the way in which sudo works.
Our loader, xbin.s, utilizes a fixed offset by which to search for the executable name sudo.
For normal use, where you would type bin/sudo, an offset of 04 would be used. This number must always be in hex.
./bin/sudo would be 06
Next, x_uid and x_gid. These are but two more fields, stored in the ELF header, for the purposes of privilege
de-escalation. These two should be set to, in decimal (base-10) the UID and GID by which the loader should move down
to.
Finally, the BOKS. Should the string be literally "BOKS", two binaries will be disabled from xhelp.
Boks
*Boks*/Linux is the name of the Linux distro that is made when BusyBox ash and the XBin collection are used together
scripts/mkboks.sh may be used to generate boks.img
Licensing
Should you be curious about licensing information, scripts/mkboks.sh has ability to create files.
It is worth noting that, while I do not hold rights or stake in the development of BusyBox or Linux, I am well within my rights to distribute code distributing source material (in the case of BusyBox) or the system calls (in the case of Linux's system call exception)
On the contrary, I do hold full licensing powers over the files located in src/ and scripts/
Under the powers provided and bestowed upon me by RMS, GNU, the FSF and my keyboard,
I provide my code under the GNU General Public License version 3, or later should a one become available.
Versions!
00
00
01
While I have been developing this for quite a while, this is the first real release. However, I don't feel as though it is truly fit for a full release.
I do have a pager (more) in the works, however it is not currently in working order.
02
I am dropping the more implementation in assembly in lieu of a potential shell-based replacement.
03
I am happy to announce an implementation of more in pure ash!
04
I added head, tail, and added multi-file support to readlink
05
I optimized register use, as well as fixing an issue where xhelp showed the wrong help for kill
06
I added swapon and swapoff because it is useful in Linux
07
I added a tasteful highlight to more, and I added jmp0, which is a kernel module I created to do one thing...
It executes any code pointed to in rbx in Ring 0. Why you'd ever want that I haven't a clue. But it's here and you can have it.
01
00
It sure has been a while since I pushed a commit... so I added a "few" things. I also updated xlib, because xbin was getting rather big. Anyway, I don't know what this project is anymore... hah.