#Nyaux
1 messages Β· Page 10 of 1
cause funny
for tmpfs, is there a calculation for making sure the offset isnt out of bounds of the file size?
or smthin?
?
π
? offset + read size <= file size?
no i mean
when memcpying the data onto the file
memcpy(file.data + offset, buffer, size)
wait
i can do just
file size - offset
okay
something like this
Me after dealing with fuzzing
for reading something
Instantly seeing an overflow here
well yeah __builtin_add_overflow(offset, read size) 
Lmao
and for writing to a file
if the file doesnt exist
ill allocate it ig?
that makes sense?
i suppose
and if the file is smaller then the buffer, realloc it as well
is this the correct approach to this?
or no?
im guessing no?
??
it is
alr
i think this is correct
anyways thats rdwr done!
very cool π
lets test it!!!
tf?
meow.txth?
bruh
why is it meow.txth???
umm
wtf
uh ih
uh oh
me putting memsets everywhere
yea that fixed it
memsets!
always memset ur memory kids
!!!
CHAT
WE HAVE A RAM FS!!!!
!!!!!!!!
π₯³
okay so
is that everything
can i implment tar parsing and make a initramfs 
Nyaux progress.
im gonna make a tar parser
the device thing you can do after
pass in a tar file
what
what is devfs
/dev
for interacting with devices?
yea
you can load executables in userspace
before
doing that
you can just simulate fd 0 1 2
no need to simulate even, just have them be anonymous files
wha
yeah that'd work too
you just dont expose them by name
okay FIRST THING I NEED
is a initramfs
so heres what im gonna do
pass in a tar file from limine modules, parse that and use it to create a root fs
easy
π
i just gotta figure out how to decode tar
lmao
base-8 number
yes
that sounds like pain
not really
"The only trick is, that file size is not stored in binary, rather in an ASCII octal string. For example 1025 is stored as '000000002001'."
no idea why they did that
bruh
who in their right mind
thought that was a good fucking idea
"yea lets store the size in ascii octal"!!!!
π
What the actual fuck
its really weird and painful to deal with
fun, i never noticed
probably because in zig i can just std.fmt.parseUnsigned(usize, self.file_size[0..11], 8); :^)
but yeah that looks less than optimal lol
they have a function to parse it for you there that you can basically just copy
Yeah but still why did they do that
Why not store it as a textual representation
βone thousand five hundred and twelveβ
remember to put "bytes" right after that for security like on cheques
octal was the fashion of the time
i think at the time bytes weren't 8 bit were they
Okay TODAYS THE DAY
WE WORK ON DECODING A TAR FILE AND POPULATING MY TMPFS WITH FILES!!!
!!!!
im gonna make a random folder called "root"
or smthin
fill it with directories and files and stuff
then im gonna zip that up into a tar file
and give that as a module to limine
π
what should i store in this initramfs 
Yeah
will i compress the directory into .tar ig?
ig
okay
lets put this into limine 
okay got the module
gonna have a function that takes a limine module as input and populates the tmpfs ig
what is name of linked file?
we got our tar header 

Par tarsing
may I shamelessly self-promote? a very simple archive format: https://github.com/ilobilo/ilar
you prepared to send that π
lemme print out the address and see the issue
tar is also a very simple archive format
i think i need to align up the new header address ig?
or something
nope
didnt matter
hdr_ptr + 512 + align_up(filesize, 512)
j
can you send the whole code?
okay
// stolen from osdev wiki :trl:
unsigned int getsize(const char *in)
{
unsigned int size = 0;
unsigned int j;
unsigned int count = 1;
for (j = 11; j > 0; j--, count *= 8)
size += ((in[j - 1] - '0') * count);
return size;
}
void parse_tar_and_populate_tmpfs(struct limine_file *archive)
{
struct tar_header *hdr_ptr = archive->address;
kprintf("first tar header is at address: %p\n", hdr_ptr);
kprintf("Name: %s\n", hdr_ptr->name);
if (strncmp(hdr_ptr->name, "root/", strlen(hdr_ptr->name)) != 0)
{
kprintf("ramfs: invalid initramfs!\n");
kpanic("Fuck you\n", NULL);
}
else
{
kprintf("ramfs: Found Valid initramfs, populating tmpfs...\n");
struct vnode *roo = kmalloc(sizeof(struct vnode));
memset(roo, 0, sizeof(struct vnode));
if (strncmp(hdr_ptr->type, "5", strlen(hdr_ptr->type)) != 0)
{
kprintf("ramfs: this shouldnt be possible but the root directory isnt a directory?\n");
kpanic("tf?\n", NULL);
}
else
{
struct vfs *tmpfs_vfs = kmalloc(sizeof(struct vfs));
memset(tmpfs_vfs, 0, sizeof(struct vfs));
root = tmpfs_vfs;
root->list = roo;
roo->ops = &tmpfsops;
struct tmpfs_dir *root_dir = kmalloc(sizeof(struct tmpfs_dir));
memset(root_dir, 0, sizeof(struct tmpfs_dir));
roo->type = NYAVNODE_DIR;
roo->data = root_dir;
roo->filesystem = &root;
kprintf("Creating Root VNODE, populating...\n");
kprintf("Size of root dir: %d\n", getsize(hdr_ptr->filesize_octal));
hdr_ptr = hdr_ptr + 512 + align_up(getsize(hdr_ptr->filesize_octal), 512);
kprintf("addr of new header: %p\n", hdr_ptr);
kprintf("name of new thing %s\n", hdr_ptr->name);
}
}
}
tar header
struct tar_header
{
char name[100];
char mode[8];
char uid[8];
char gid[8];
char filesize_octal[12];
char unix_time_format[12];
char chksum[8];
char type[1];
char name_linked_file[100];
char ustar[6];
char ver_ustar[2];
char owner_name[32];
char group_name[32];
char device_major[8];
char device_minor[8];
char filenameprefix[155];
};
fuck u u stupid tar header

cast hdr_ptr to uint8_t* or void* before adding
k
bruh
it fixed it
bruh

why tf did that fix it i dont know !
oh wait i know
right
question, with the tar file
the order of tar headers will always be the same as the directory layout
right?
like
first tar header might be a directory called root
second will be a directory in root called kitty
then third header will be a file in kitty called meow.txt
wait
im confused now
ok im fixing this
i think it worked?
im GUESSING its in order
most likely
i hope
π€
otherwise my code will break lol
fuck
so heres the thing
how i've implmenteed my segment thing
sucks ass
im so fucked

can i ask how some of yall implement the parsing of paths so i can steal take inspiration 
fuckin hell

ah i see, so you take your absolute path and replace every '/' with \0
a null terminator
then easily you just loop over the total path length, get the vnode, then add the length of the cur string to i in this loop
ah i get u
this is a much better way of parsing paths
thank you mathew!
Np :3
im gonna make two helper functions that can create a directory or file from an absolute path
good idea?
I use one function for that
vfs_create
which calls VOP_CREATE
vfs_create takes a path relative to a vnode and VOP_CREATE takes a vnode and a name
I have a single function for creating directores and files and everything else
except symlinks
because they can be special
due to my implmentation tho i will make just make this for absolute paths only for the time being
(cause i dont have things like working directories setup cause im not in userspace rn)
actually wait
let me modify my vfs_lookup
just have it take a vnode and do the lookup relative to it
if you need to do absolute just pass vfsroot
will save you work later
i can see in ur function ur not breaking down the path into components
oh wait thats for ur thing
right
ummm
okay so how i've currently implmented my vfs_lookup is
it assumes the path is absolute
which shouldnt be right
okay time to make some changes
@elder shoal im a little confused by this statement in ur code
what is this doing exactly
my brain went π₯
oh right
@elder shoal if we gave path /home/test.txt to create and vfs_create uses vfs_lookup and vfs_lookup gets us the /home directory we can just easily create the file ig?
but what about if /home doenst exist
what do we do
???
oh error out, okay
im guessing int type describes if its a directory we are creating or a file right?
yeah
alr
thanks mathew for ur help, i hope this works
π€
if this works then its FUCKING NYAUX USERLAND TIME π±

how do i know when i should stop parsing the tar
cause currently
this while loop still goes on and starts reading some headers that dont make sense
how to know when i've parsed every header?
is there a way to checK?
the tar file ends?
cpio has a !!!TRAILER!!! entry at the end but iirc tar doesn't have any special terminator
i did hdr_ptr < archive_address + archive_size
but its still reading some weird ass null tar entry
searching for path \0
okay found a way to stop it by having a check in my vfs create function
The end of an archive is marked by at least two consecutive zero-filled records.
according to wikipedia
oh
so i need to do hdr_ptr < (archive->address + archive->size) - 1024
yea fixed
I POPULATED MY FUCKING TMPFS
OMG
I HAVE AN INITRAMFS!!!!
WOWIE!!!
lets read the contents of some of the text files
some weird stuff going on
but it still finds the directory so
idc!
oh yea i just needed to um
memset some structures
easy
π
lemme try reading da file
it worked but um
what is that
tf
what im doing
is this something to do with the end of file thing ?
oh wait i think its because i have a newline in the file
yea
no? there should be
its a txt file
i just wrote some text in a text editor
and saved it
what is that
seriously
tf
hexdump the file
-C
there is no null terminator at the end of file
why???
why do you need it
idk
add it at the end of buffer
nah its okay, im happy that it printed and my initramfs system works
that means....
userland?
RIGHT FUCKING NOW???
OK CHAT LETS GO?
guys is it time for me to go to userspace..
the promised land
mints tutorial says i have mostly everything i need
i think its time. to go to userland π±
you can usespace without a lot of that shit tbh
and some would disagree with mint's approach
okay but anyways we have pretty much everything we need in place, so
sooooo
yea π
time to learn how to get to userland and stuff
and load elfs and yeayea!
and mlibc idk how to set that up
but yea yea
and sys calls
yea
lemme just configure my make file to turn this folder called sys root into a initramfs for booting
OKAY DONE
SET THAT UP
π
pushed changes onto gituhb
i somewhat disagree with "mint's approach" too
the approach suggested by mint
but yeah fair
it was not originally written by me
so it's hardly my approach
i just modified it a bit in places that i thought were bad
ummm what is this
i dont have mlibc
what do i do
???
me so confusion lol
and what is mtools in the limine host recipes
@wicked loom ?
somethings happening
bruh
ok needed to modify my kernel recipe
now its um compiling gcc
TF???
i have auto reconf installed????
on my system
wtf
jinx is failing here
i have autoreconf tho???
does anyone know whats going on

container meme i would guess
wtf do i do
im not using a container does jinx use a container
yes
no idea
hmmm

BRO
ITS RIGHT THERE
BRO
issue is autoconf-archive
i thnk
will fix and reconfigure everything
pro tip
diff -ur path/to/vinix nyaux
make sure the only differences between the 2 are things that you are doing properly
if stuff seems to be borked you can just make distclean and start over, for now
alr
will i copy the entire recipes folder too ?
not just the host recpies
copy what you need
which i assume rn is going to be possibly all that is needed for bash
so check what bash depends on and the dependencies of the dependencies and so on
and copy that over
(and any associated patches)
bruh, if you copy everything it's gonna build Xorg and a lot of stuff like GTK
sure
you can start like that i guess
but you'll have to build the kernel with a host compiler aka add imagedeps="gcc" for example
to the kernel recipe
your acting like theres a better way to do this, tell me if there is π
yes aka build the cross compiler (the host-recipes/gcc thing) and use that to build the kernel; but that depends on mlibc
you'll want to stub out mlibc sooner or later anyways
stub out = add support for your OS and make sysdep stubs until you have proper sysdeps
you can do that via patching
try to build mlibc, it will fail because no support for your OS (obviously)
after that happens, you can edit the mlibc that will exist in sources/mlibc-workdir/... and add support for your OS
then you run ./jinx regenerate mlibc and it regenerates the patch and then run ./jinx rebuild mlibc-headers mlibc to rebuild mlibc
all clear?
yep
i will just stub out everything since i dont even have the syscall and sysexit instructions setup yet π literally just stub out every function lol
yeah that is fine
alr
it's just to have it build, it doesn't care if you stub out everything or not
alr
also you can probably ask @elder shoal @thorn bramble and @green elbow for help with jinx and porting mlibc
in case i am not around or not good enough at explaining
alr
okay compiling jinx lets work on stubbing out mlibc!!!!
my favourite past time activity
pong
jinx needs to bootstrap an arch linux container and then it builds doxygen because upstream is stupid but pretend it's a black box lol
it pretty much is to me

ok autoreconf is working
things are happenin
it looking for the source recpie for binutils but vinix didnt have a binutil source recpie?
???
you need the binutils recipe from recipes/
wheres the source recipe for binutils in vinix
ok works now π watching this compile so fun yet so long
because it checks for the source in recipes/<whatever> for host-recipes/<whatever>, and if that is missing, it checks source-recipes/<whatever>
oh okayy
okay our first error
!!!
is with binutils
of courseee
wdym conflicts with
huh???
what does that mean
right
just copy the patches dir for binutils over, then run rm -rf sources/binutils* and ./jinx host-rebuild binutils
alr
yep
classic
i can't remember if it was vinix or lyre patches and mlibc sysdep folder i initially stole for keyronex

okay here we go
mblibc trollage time
this is with binutils
i think something to do with the patch?
patch looks fine
this isnt with mlibc but with binutils huh?
im so confused lol
did you copy and adjust the patches for autoconf and everything else that needs patches?
well wait
okay patches folder looks like this now
will add gcc-host patch too
ill just replace everything vinix with nyaux
still complaining
same issue
ill try rebuilding binutils by deleting the source folder
why still the same issue
π

i have the autoconf patch, binutils patch, gcc-host patch, and the mlibc patch from vinix and replaced all instances of "vinix" with "nyaux"
i tried removing the sources directory for both autoconf and bintuils
still nothing
you need to repatch autoconf with rm -rf sources/autoconf* and then ./jinx host-rebuild autoconf
after that, rm -rf sources/binutils* and ./jinx host-rebuild binutils
what recipes and host-recipes do you have now?
define "same issue"?
Invalid configuration 'x86_64-pc-nyaux-mlibc': Kernel 'nyaux' not known to work with OS 'mlibc'
did you s/vinix/nyaux/ in the autoconf patch?
yep
(for all cases?)
yep
send the autoconf patch
lol ```
- x86_64:[Vv]inix::|i?86:[Vv]inix::)
+GUESS="$UNAME_MACHINE-pc-nyaux-mlibc"
+;; - :[Vv]inix::*)
+GUESS="$UNAME_MACHINE-unknown-nyaux-mlibc"
yeah
Vvinix
fix that to [Nn]yaux

for all 3 times
make sure you deleted the source for both of them first
yep
aight
configure: error: /bin/sh /base_dir/sources/binutils/config.sub x86_64-pc-nyaux-mlibc failed
BRO COME ON
π
what does your recipes/binutils look like?
that ain't what i asked for lol
waiting
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
did you copy and edit the libtool patch? what does your host-recipes/libtool look like?
welcome to userland porting
π
when you blink you'll be a thousand lines deep in a makefile wondering what you're doing with your life and why you're trying to port that package
still did not work, edited the libtool patch. replaced all instances of vinix with nyaux
solution: just write your own userland
did you check all the casing? what does your host-recipes/libtool look like?
my patches folder has the following patches
autoconf
binutils
gcc-host
libtool
mlibc
one second
name=libtool
from_source=libtool
revision=1
hostdeps="autoconf automake"
imagedeps="help2man gcc"
build() {
cp -rp "${source_dir}"/. ./
./configure \
--prefix="${prefix}"
make -j${parallelism}
}
package() {
DESTDIR="${dest_dir}" make install
cp -pv /usr/local/share/autoconf/build-aux/config.sub "${dest_dir}${prefix}"/share/libtool/build-aux/
cp -pv /usr/local/share/autoconf/build-aux/config.guess "${dest_dir}${prefix}"/share/libtool/build-aux/
strip_command=strip \
post_package_strip
}
ok so, remove the libtool source, rebuild it, then remove the binutils source and rebuild binutils
kk
because binutils pulls the gnuconfig from libtool for some reason
Even better solution: implement Linux subsystem for nyaux and just cp precompiled binaries
god no
Lmao
trust me i triedβ’οΈ
π
checking target system type... Invalid configuration 'x86_64-pc-nyaux-mlibc': Kernel 'nyaux' not known to work with OS 'mlibc'.
configure: error: /bin/sh /base_dir/sources/binutils/config.sub x86_64-pc-nyaux-mlibc failed
does binutils hate me or smthin
did this, didnt solve of course!!! man i love userland porting!!!!
π
Are you porting gcc?
no
wha
im not porting gcc
gcc is in my host recipes sure
but
im not porting it
to the actual os
Cant u just start userland by making some assembly app
bruh
bruh
I get what you're doing
Im just saying you dont need it right now
You can even do it in C
i need patience as mintsuki said, im sure the problem is somewhere
im gonna run dist-clean and recompile everything
if that doesnt solve it, clearly a problem with the patches or config or smthin
setting this up for me rn will make everything SO much easier in the future for me
i just gotta figure this out lol
Sure sure have at it lol
lmao
this is how my makefile looks like @wicked loom
same thing from vinix but i removed everything but base-file and kernel when doing distro-base
ok running dist-clean solved it
now its compiling mlibc
scawry
π±
probs gonna scream at me about no nyaux os support but yk
well its compiling the host gcc toolchain first
lol
this is gonna take a bit
what does this mean
guess i need a recipe called "core-libs"
now it wants something called cshim?
ok
?
bruh
wdym git program not found???
tf
bro

so close yet so far
no
first off it's inside the container, not on your host machine
but second
you need cshim, cxxshim, and frigg
need to download that on my host machine?
forget about the git thing, git is unnecessary if you have the dependencies
no
forget your host machine
okay
your host machine is never touched by jinx
look at recipes/{cshim,cxxshim,frigg} in vinix
i put the recpies cshim, cxxshim and frigg into my recipes folder
already tho
rm -rf sources/something?
no
oh then what
your mlibc failed to build because it did not find the dependencies
which means you removed the dependencies from the deps="whatever" line
do not do that, ever
under any circumstance
unless you know what you're doing
if you removed the deps, readd them, then rebuild mlibc
if you don't have the dependencies listed, mlibc won't magically find them
builds are isolated
then how did it not find them
idfk π
that is in my source-recpies yes
and host-recipes
just like use a shell script or something
do you have build-support/cross_file.txt
yep
did you edit it to contain nyaux ?
oh shit i did not
yeah there you go
it's not too hard
ok
you can use this as a template https://github.com/managarm/mlibc/commit/4db030ce1123c5d72ab88014911a22a651bddc21
well you don't need most of it
what do i need?
mainly the crt-src/* files, the sysdeps/nyaux/meson.build (of course, adapted to remove the files you don't need), all the symlinks in sysdeps/nyaux/include/abi-bits/*, then sysdeps/nyaux/generic/generic.cpp, stubbing out pretty much every sysdep, sysdeps/nyaux/generic/entry.cpp, you will need to add your OS to /meson.build like vinix, and that's it
do i worry about what the crt-src files are for or do i just
steal them from vinix or smthin
okay
symlinks?
yeah for now you can just copy them
abi
it's kinda clunky, i tried to rework this aspect of mlibc in the past but it got rejected
basically some headers have structures that need to match what the kernel expects
and they are in /abis/*/
okay
then each port can symlink to whatever abi it needs
okay well i will make the generic.cpp file
alright
you should probs try running a hello world in assembly first
i don't necessarily agree lol
well first getting CPL=3 would be a good idea
so are all the sys functions the ones i need to stub?
it doesn't matter, you can port a userland already without a working kernel
also considering mlibc you have the rtdl to deal with
yes
rtld*
yes
wha
it's rtld
runtime dynamic linker
go check :)
get rekt
don't worry about it
alr
wait
just stub the sysdeps
me
it was rtdl
how do i stub functions
i changed it because every other libc calls it rtld and it's generally known as rtld
how to use this macro
when I came back and saw it changed I thought I was going insane till I checked lmao
yeah I spent so much time trying to get it working lol
int sys_whatever() STUB_ONLY
mandela effect
ummm
yes but until you have it you can stub that too i guess
it will always be rtdl in my heart
you'll need it though of course
oka
runtime ld (as in gnu ld)
and also the libc constants are prefixed with RTLD_
okay any function that calls a syscall i stub
some of the functions you can skip and mlibc will just return ENOSYS on it's own
yeah but the problem is that i don't remember which you can and cannot
im skipping the ones that dont directly make a syscall
that's fine
easiest is just checking if they're marked weak in the header
but ig that's still effort
i did at some point strip down all the sysdeps that weren't needed for it building, but god knows if i will ever be able to find that list
the bare minimum is what rtld sysdeps declare i think
how much fuckin sys functions do i have to stub π
since like all of those are not weak
nice
ok took entry.cpp from vinix ig?
its making a bunch of syscalls here
what do i do
i guess i dont change that @wicked loom
i cant rlly stub that out
one sec
alr
you can remove everything between lines 35 to 114, and remove the sys_sigentry() call inside __mlibc_entry()
keep the rest
okay
oh and also remove the #include "syscall.h" line
done
okay
i tried doing ./jinx regenerate mlibc
and then tried rebuilding mlibc and stuff
but it didnt work
still didnt see the sysdeps
didn't work how
also remember it's ./jinx rebuild mlibc-headers mlibc
you can remove that and stub it out
alternatively you'll need to copy over the ioctls headers as well
aka sysdeps/vinix/include/asm/{ioctl.h,ioctls.h}
IT COMPILED
i removed the include for that
which worked
do i need to readd the include?
you must've also stubbed it out i assume?
ye
will i add these ?
like what i mean is that you must have stubbed out the functions that were using those macros above?
yea i did
if so, don't bother readding those for now
okay
it's not necessary
yeah
ok is compiling
i have the nasm recipe in my recpies/???
why cant it use nasm
bruh
- you cannot use the internet from recipes by default, you can enable that by adding
allow_network="yes"to the recipe - recipes/* is shit that runs on your OS, not on the host, for things to run on the host there is host-recipes
- there is no need to put nasm in host-recipes since you can just use that arch repos one by adding
imagedeps="nasm"
imagedeps="nasm" to where?
kernel?
yes
kk
likewise with allow_network="yes"
okay
now
its trying to use my old toolcahin for some reason
oh wait
my kernel make file
right
you wanna use the x86_64-pc-nyaux-mlibc-* toolchain
alr
something like?
yeah, either that or you can just set that to cc as default and just pass CC=... LD=... to make in the recipe instead
i prefer the latter solution
where in the kernel recipe do i put that?
make CC=... LD=...
okay
where you call make
uh huh
i never have these flags tho?
what
likeeee
what
that isnt in my makefile
where is it getting that
ok ok,
calm down
you need to add LDFLAGS="" as well to the make call, i can tell you why but i'd just distract you for now
i'll tell you later
you can copy it from vinix/kernel/GNUmakefile
at the bottom
everything from .PHONY: install to the end
no
oh
it likely means you do not set the variable KERNEL to nyaux in your kernel makefile
check what the install recipe does
okay that solved it
π
well that was something
!!!
don't forget to commit your changes before you accidentally run make distclean or otherwise trash it all
i cant addr2line the executable fuck me
you can
but you need to use the one in builds/kernel/bin/nyaux, because the other one is stripped
maybe that address is just invalid?
try adding CFLAGS="" alongside LDFLAGS="" in your recipes/kernel, then rebuild the kernel
(basically your kernel makefile doesn't force -g and the default CFLAGS are overridden by the jinx config ones, so you build without -g unless you pass no CFLAGS)
ok try unset CFLAGS; unset LDFLAGS; make instead
(all on the same line, as written)
did you do ./jinx rebuild kernel?
?
does it work?
yea, problem is with how jinx gives me the tar file
or well
how i parse it
to an extent
like
mentally drop the /build_dir/builds/kernel part lol
the rest is just your path inside the kernel dir
i know
there is a way to automatically change that
but eh
one thing at a time
this is probably confusing enough as is
either way, how does tar create the initramfs file
like
is the first tar header named sys_root or smthin?
cause thats a problem if thats the case
no
the contents of the tar initramfs are the contents of sysroot/
so your bash would be /usr/bin/bash inside the initramfs
just like a normal *nix system
oh wait
page fault here
meaning
i know why
lol
oh and
tar header isnt of expected type
uhoh!
spaggati ohs
mind you there are symlinks and friends
looks like this ig
if you have the tree command installed, you can run tree -a sysroot
the blue files with an arrow are symlinks
or i should say cyan
what do you see
can you show
tree -a sysroot | grep '\->'
yeah those are symlinks
yeah
it should be
yea hopefully
lol my kernel page faults on bios
like i care
!!!!
anyways we now have jinx!!!!
and mlibc ig??
yea technically!!!!
all i needa do is setup syscalls now
jump to usermode
easy
π
oh and write an elf parser
yea
hopefully
i will learn in due time
i just know now that i gotta setup some structure called a tss?
or smthin
just following what the sdm says
yeah
now i must make some kind of kernel stack instead of using limines cause seems like the tss is used for when an interrupt happens and cpl changes what stack to switch to (for long mode)
also mint i just wanna say thank you for all the help, helping me setup jinx and mlibc and such !!!
im rlly thankful!!
@wicked loom thank u so much!

