forked from koniifer/ableos
frowny
This commit is contained in:
parent
a9350952b7
commit
4dd3699e0e
68
MANIFESTO.md
68
MANIFESTO.md
|
@ -1,68 +0,0 @@
|
|||
# The Design of AbleOS
|
||||
## The unix philosophy and why it shouldn't exist
|
||||
small is only beautiful if its complete.
|
||||
grep for example supports the `-r` flag which should instead be `grep`+`find`
|
||||
Everything is not a stream of bytes.
|
||||
|
||||
programs can do multiple things well
|
||||
`cat`, `head` and `tail` could all be one program with a flag
|
||||
`which head` `which tail` `which cat` should all return the same binary with different flags
|
||||
```
|
||||
which head == /bin/cat range=0-10
|
||||
|
||||
which tail == /bin/cat reverse_index=true range=0-10
|
||||
|
||||
which cat == /bin/cat
|
||||
```
|
||||
|
||||
build a prototype quickly only applies if you are being pressured. do thing quickly then refine
|
||||
'choose portability over effeciency' this is a flawed idealogy choose modularity over pure portability
|
||||
'store data in flat text files' this leads to a psuedostandardization on KVPair configuration languages that all sit in a flat text file. Instead pick a configuration format that gets loaded into a tree structure
|
||||
|
||||
## File Systems
|
||||
### The amount of files inside of a folder
|
||||
32765. Why you might ask?
|
||||
### Dot files
|
||||
`dotfiles` were a mistake given to us by bad programmers mocking better programmers. [link](https://web.archive.org/web/20230413171520/http://xahlee.info/UnixResource_dir/writ/unix_origin_of_dot_filename.html)
|
||||
|
||||
### File name case sensitivity
|
||||
Case sensitivity seems like a great idea! But in practice leads to the following filetree
|
||||
```
|
||||
/kernel
|
||||
/Kernel
|
||||
/kErnEl
|
||||
/KeRnEl
|
||||
```
|
||||
which is a nightmare and you should be erradicated if you think this is a positive
|
||||
provide a display name for files that allows case and save the file as caseless
|
||||
|
||||
### File name character limits
|
||||
unix is a plauge upon this earth. name a file `:(){ :|:& };:` and try listing it. You have lost access to your terminal.
|
||||
if you defined a sane method of listing files and allowing programs to provide the OS a standard method of providing argument suggestions and being aware you would never run into this issue
|
||||
|
||||
## CLI vs GUI
|
||||
Graphics are not your enemy unix lovers. You mustn't be stuck in 1981. Times have changed! You can have a graphical shell enviroment. SGI Irix was aware of this in 1988, not perfect of course but 7 years after dos is an impressive leap.
|
||||
FFMPEG??? Why no gui? Give me a good git ui
|
||||
|
||||
|
||||
### Emails plain text
|
||||
Unix believes in plain text emails. Quotes are `>`
|
||||
|
||||
### Unix Wizards and Instability
|
||||
[Do not meddle in the affairs of Unix, for it is subtle and quick to anger.]
|
||||
|
||||
### Unix why are your mouse a file?
|
||||
This list is incomplete
|
||||
`/dev/input/event1` The PS2 Mouse
|
||||
`/dev/input/event3` The USB Mouse
|
||||
`/dev/input/psaux` The PS2 Mouse
|
||||
`/dev/input/psmouse` The PS2 Mouse
|
||||
`/dev/input/mice` The Not(?) PS2 Mouse I think?
|
||||
`/dev/input/mouse0` The not Not(?) ps2 mouse? First usb mouse I think?
|
||||
`/dev/input/usbhid` USB mice (should be autodetected)
|
||||
`/dev/input/sermouse` Most serial mice
|
||||
`/dev/input/logibm` Bus mouse connected to Logitech adapter card
|
||||
`/dev/input/inport` Bus mouse connected to ATI or Microsoft InPort card
|
||||
`/dev/input/by-id/usb-<usbid here>` A usb mouse via its id
|
||||
|
||||
I propose a unified system for input via a Device Tree of sorts
|
|
@ -1,3 +1,4 @@
|
|||
```
|
||||
TODO
|
||||
- Integrate HBVM
|
||||
HBVM also needs full spec compliance
|
||||
|
@ -23,10 +24,17 @@ TODO
|
|||
- VFS
|
||||
- Disk driver
|
||||
- A ton more
|
||||
```
|
||||
|
||||
# Community
|
||||
[Discord](https://discord.gg/JrKVukDtgs)
|
||||
|
||||
|
||||
|
||||
# Compiling
|
||||
Firstly, I would like to apologize. I am not capable of supporting building on any random machine with any random operating system.
|
||||
|
||||
AbleOS very likely builds with `nix-shell` on your operating system.
|
||||
|
||||
1. `git submodule update --init`
|
||||
1. `cargo repbuild`
|
||||
|
|
|
@ -1 +1,4 @@
|
|||
//!
|
||||
//!
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn _kernel_start() -> ! {}
|
||||
|
|
25
kernel/targets/aarch64-virt-ableos.json
Normal file
25
kernel/targets/aarch64-virt-ableos.json
Normal file
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"arch": "aarch64",
|
||||
"data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
|
||||
"disable-redzone": true,
|
||||
"env": "",
|
||||
"executables": true,
|
||||
"features": "+strict-align,+neon,+fp-armv8",
|
||||
"linker": "rust-lld",
|
||||
"linker-flavor": "ld.lld",
|
||||
"linker-is-gnu": true,
|
||||
"pre-link-args": {
|
||||
"ld.lld": [
|
||||
"-Taarch64-qemu.ld"
|
||||
]
|
||||
},
|
||||
"llvm-target": "aarch64-unknown-none",
|
||||
"max-atomic-width": 128,
|
||||
"os": "none",
|
||||
"panic-strategy": "abort",
|
||||
"relocation-model": "static",
|
||||
"target-c-int-width": "32",
|
||||
"target-endian": "little",
|
||||
"target-pointer-width": "64",
|
||||
"vendor": ""
|
||||
}
|
51
meta.md
51
meta.md
|
@ -1,51 +0,0 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ARI AbleOS Remote Install
|
||||
|
||||
Server
|
||||
/boot/server_kernel_x86_64.bin
|
||||
/boot/kernel_x86_64.bin
|
||||
/boot/kernel_aarch64.bin
|
||||
|
||||
/home/projects/askl.askl - aksldfhlkasjdhflkajshdflkj
|
||||
|
||||
|
||||
ARI_SERVER.wasm
|
||||
NAS 10.1.10.10
|
||||
|
||||
ARI 10.1.10.10
|
||||
/boot/limine.cfg
|
||||
/boot/kernel_x86_64.bin
|
||||
/boot/kernel.toml
|
||||
/home/projects/askl.askl
|
||||
aksldfhlkasjdhflkajshdflkj
|
||||
|
||||
|
||||
ARI 10.1.10.10
|
||||
/boot/limine.cfg
|
||||
/boot/kernel_aarch64.bin
|
||||
/boot/kernel.toml
|
||||
|
||||
|
||||
|
||||
/system/
|
||||
/shared/
|
||||
/home/programs/
|
||||
project_name/
|
||||
project_name.wasm
|
||||
project_name.toml
|
||||
|
||||
|
||||
|
||||
|
||||
/system/pkgman.toml
|
||||
|
||||
//////
|
||||
[repositories]
|
||||
PUR = "https://git.ablecorp.us/ableos/pur"
|
||||
|
|
@ -35,6 +35,9 @@ fn main() -> Result<(), Error> {
|
|||
if arg == "rv64" || arg == "riscv64" || arg == "riscv64-virt" {
|
||||
target = Target::Riscv64Virt;
|
||||
}
|
||||
if arg == "aarch" || arg == "arm64" {
|
||||
target = Target::Aarch64;
|
||||
}
|
||||
}
|
||||
|
||||
build(release, target).change_context(Error::Build)
|
||||
|
@ -49,6 +52,9 @@ fn main() -> Result<(), Error> {
|
|||
if arg == "rv64" || arg == "riscv64" || arg == "riscv64-virt" {
|
||||
target = Target::Riscv64Virt;
|
||||
}
|
||||
if arg == "arm64" || arg == "aarch64" {
|
||||
target = Target::Aarch64;
|
||||
}
|
||||
}
|
||||
|
||||
build(release, target)?;
|
||||
|
@ -138,6 +144,9 @@ fn build(release: bool, target: Target) -> Result<(), Error> {
|
|||
if target == Target::Riscv64Virt {
|
||||
com.args(["--target", "targets/riscv64-virt-ableos.json"]);
|
||||
}
|
||||
if target == Target::Aarch64 {
|
||||
com.args(["--target", "targets/aarch64-virt-ableos.json"]);
|
||||
}
|
||||
|
||||
match com.status() {
|
||||
Ok(s) if s.code() != Some(0) => bail!(Error::Build),
|
||||
|
@ -168,6 +177,7 @@ fn run(release: bool, target: Target) -> Result<(), Error> {
|
|||
let mut com = match target {
|
||||
Target::X86_64 => Command::new("qemu-system-x86_64"),
|
||||
Target::Riscv64Virt => Command::new("qemu-system-riscv64"),
|
||||
Target::Aarch64 => Command::new("qemu-system-aarch64"),
|
||||
};
|
||||
|
||||
if target == Target::X86_64 {
|
||||
|
@ -212,6 +222,13 @@ fn run(release: bool, target: Target) -> Result<(), Error> {
|
|||
]);
|
||||
}
|
||||
|
||||
if target == Target::Aarch64 {
|
||||
com.args([
|
||||
"-M", "virt", "-m", //
|
||||
"128M", "-serial", "stdio",
|
||||
]);
|
||||
}
|
||||
|
||||
match com
|
||||
.status()
|
||||
.into_report()
|
||||
|
@ -306,6 +323,7 @@ impl Context for OvmfFetchError {}
|
|||
enum Target {
|
||||
X86_64,
|
||||
Riscv64Virt,
|
||||
Aarch64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Display)]
|
||||
|
|
Loading…
Reference in a new issue