summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xbuildkernel.sh35
-rwxr-xr-xmkramfs.sh11
-rw-r--r--progs/shel/shel.c7
-rw-r--r--progs/testterm/testterm.c20
-rwxr-xr-xqemu.sh1
-rw-r--r--sbin/fdmaker/fdmaker.c12
6 files changed, 71 insertions, 15 deletions
diff --git a/buildkernel.sh b/buildkernel.sh
index 70211d3..e690b6b 100755
--- a/buildkernel.sh
+++ b/buildkernel.sh
@@ -1,25 +1,36 @@
 rm -r init/*
 # cp /usr/bin/zsh build
-# cp /usr/bin/nano build
+# cp /usr/bin/vi build
+# cp /usr/lib/iwd/iwd sbuild
+# cp /usr/bin/iwctl build
+cp /usr/bin/dhcpcd build
+cp /usr/bin/ping build
+cp /usr/bin/nano build
+# cp /usr/bin/cat build
 rm lib/*
 rm lib64/*
-# cp /usr/lib/libreadline.so.8 lib
+cp /usr/lib/libreadline.so.8 lib
 # cp /usr/lib/libcap.so.2 lib
-# cp /usr/lib/libc.so.6 lib
-# cp /usr/lib/libncursesw.so.6 lib
-# cp /usr/lib64/ld-linux-x86-64.so.2 lib64
+cp /usr/lib/libc.so.6 lib
+# cp /usr/lib/libell.so.0 lib
+# cp /usr/lib/libgcc_s.so.1 lib
+cp /usr/lib/libcrypto.so.3 lib
+cp /usr/lib/libncursesw.so.6 lib
+cp /usr/lib/libcap.so.2 lib
+cp /usr/lib/libidn2.so.0 lib
+cp /usr/lib/libunistring.so.5 lib
+cp /usr/lib64/ld-linux-x86-64.so.2 lib64
 # cp /usr/lib/libm.so.6 lib
 # cp /usr/lib/libc.so.6 lib
-# cp /usr/lib/libmagic.so.1 lib
-# cp /usr/lib/libzstd.so.1 lib
-# cp /usr/lib/liblzma.so.5 lib
-# cp /usr/lib/libbz2.so.1.0 lib
-# cp /usr/lib/libz.so.1 lib
+cp /usr/lib/libmagic.so.1 lib
+cp /usr/lib/libzstd.so.1 lib
+cp /usr/lib/liblzma.so.5 lib
+cp /usr/lib/libbz2.so.1.0 lib
+cp /usr/lib/libz.so.1 lib
 ./mkramfs.sh
 INITPATH=$PWD/init.cpio
 cd init
 find . | cpio -o -H newc > ../init.cpio
 cd ../kernel
-make isoimage FDARGS="initrd=/init.cpio" FDINITRD=$INITPATH -j 6
-qemu-system-x86_64 -cdrom ./arch/x86/boot/image.iso #-s -S
+make isoimage FDARGS="initrd=/init.cpio root=/dev/sr0 rootfstype=iso9660 ro" FDINITRD=$INITPATH -j 6
 cd ..
\ No newline at end of file
diff --git a/mkramfs.sh b/mkramfs.sh
index ebc8b5e..b3039b0 100755
--- a/mkramfs.sh
+++ b/mkramfs.sh
@@ -7,10 +7,19 @@ mkdir init/lib64
 mkdir init/usr
 mkdir init/var
 mkdir init/var/tmp
+mkdir init/var/lib
+mkdir init/run
+mkdir init/run/dhcpcd
+touch init/run/dhcpcd/pid
 mkdir init/etc
 mkdir init/etc/smolsh
+touch init/etc/smolsh/smolsh.termcap
 echo 'xterm-kitty|KovIdTTY:5i:NP:am:cc:hs:km:mi:ms:xn:Co#256:co#80:it#8:li#24:pa#32767:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%1=:%c=\E[6;2~:%e=\E[5;2~:%i=\E[1;2C:&8=:&9=\E[1;2E:*4=\E[3;2~:*7=\E[1;2F:@1=\EOE:@7=\EOF:AB=\E[48;5;%dm:AF=\E[38;5;%dm:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:F2=\E[24~:F3=\E[1;2P:F4=\E[1;2Q:F5=\E[13;2~:F6=\E[1;2S:F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:FB=\E[20;2~:FC=\E[21;2~:FD=\E[23;2~:FE=\E[24;2~:FF=\E[1;5P:FG=\E[1;5Q:FH=\E[13;5~:FI=\E[1;5S:FJ=\E[15;5~:FK=\E[17;5~:FL=\E[18;5~:FM=\E[19;5~:FN=\E[20;5~:FO=\E[21;5~:FP=\E[23;5~:FQ=\E[24;5~:FR=\E[1;6P:FS=\E[1;6Q:FT=\E[13;6~:FU=\E[1;6S:FV=\E[15;6~:FW=\E[17;6~:FX=\E[18;6~:FY=\E[19;6~:FZ=\E[20;6~:Fa=\E[21;6~:Fb=\E[23;6~:Fc=\E[24;6~:Fd=\E[1;3P:Fe=\E[1;3Q:Ff=\E[13;3~:Fg=\E[1;3S:Fh=\E[15;3~:Fi=\E[17;3~:Fj=\E[18;3~:Fk=\E[19;3~:Fl=\E[20;3~:Fm=\E[21;3~:Fn=\E[23;3~:Fo=\E[24;3~:Fp=\E[1;4P:Fq=\E[1;4Q:Fr=\E[13;4~:IC=\E[%d@:..Ic=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\:K1=:K3=:K4=:K5=:Km=\E[M:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ZH=\E[3m:ZR=\E[23m:ac=++,,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=\n:ds=\E]2;\E\\:ec=\E[%dX:ei=\E[4l:fs=^G:ho=\E[H:im=\E[4h:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kB=\E[Z:kD=\E[3~:kF=\E[1;2B:kI=\E[2~:kN=\E[6~:kP=\E[5~:kR=\E[1;2A:kb=\177:kd=\EOB:ke=\E[?1l:kh=\EOH:kl=\EOD:kr=\EOC:ks=\E[?1h:ku=\EOA:le=^H:md=\E[1m:me=\E[0m:mh=\E[2m:mr=\E[7m:nd=\E[C:oc=\E]104\007:op=\E[39;49m:r1=\E]\E\\\Ec:rc=\E8:..rp=%p1%c\E[%p2%{1}%-%db:..sa=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m:sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[?1049l:ti=\E[?1049h:ts=\E]2;:u6=\E[%i%d;%dR:u7=\E[6n:..u8=\E[?%[;0123456789]c:u9=\E[c:ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?12h\E[?25h:vi=\E[?25l:vs=\E[?12;25h:%' \
- > init/etc/smosh/smolsh.termcap
+ > init/etc/smolsh/smolsh.termcap
+mkdir -p init/usr/share/terminfo/x
+cat /usr/share/terminfo/x/xterm-256color > init/usr/share/terminfo/x/xterm-256color
+echo "root:x:0:0::/root:/bin/shel" > init/etc/passwd
+cat /etc/dhcpcd.conf > init/etc/dhcpcd.conf
 
 cp build/* init/bin
 cp sbuild/* init/sbin
diff --git a/progs/shel/shel.c b/progs/shel/shel.c
index f4292b6..323a06d 100644
--- a/progs/shel/shel.c
+++ b/progs/shel/shel.c
@@ -86,6 +86,9 @@ int main() {
     setenv("PATH", "/bin", 0);
     setenv("TERM", "xterm-256color", 1);
     setenv("TERMINFO", "/etc/smolsh", 1);
+    setenv("HOME", "/root", 1);
+
+    strcpy(path, getenv("HOME"));
 
     while (!false) {
         memset(input, 0, sizeof(input));
@@ -162,7 +165,9 @@ int main() {
                     }
                 }
                 if (found) {
-                    execve(newPath, argv, 0);
+                    extern char** environ;
+                    setenv("CWD", path, 1);
+                    execve(newPath, argv, environ);
                 }
             }
         } else {
diff --git a/progs/testterm/testterm.c b/progs/testterm/testterm.c
new file mode 100644
index 0000000..5a79633
--- /dev/null
+++ b/progs/testterm/testterm.c
@@ -0,0 +1,20 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int main() {
+    char *term = getenv("TERM");
+    if (term) {
+        printf("TERM=%s\n", term);
+    } else {
+        printf("TERM is not set.\n");
+        return 1;
+    }
+
+    if (system("tput colors") == 0) {
+        printf("Colors are supported\n");
+    } else {
+        printf("Colors are NOT supported\n");
+    }
+
+    return 0;
+}
diff --git a/qemu.sh b/qemu.sh
new file mode 100755
index 0000000..8166d18
--- /dev/null
+++ b/qemu.sh
@@ -0,0 +1 @@
+qemu-system-x86_64 -cdrom ./kernel/arch/x86/boot/image.iso
\ No newline at end of file
diff --git a/sbin/fdmaker/fdmaker.c b/sbin/fdmaker/fdmaker.c
index 7591147..95ef98c 100644
--- a/sbin/fdmaker/fdmaker.c
+++ b/sbin/fdmaker/fdmaker.c
@@ -6,6 +6,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/sysmacros.h>
+#include <string.h>
 
 int main() {
     // make process be sigma (why did i think of this)
@@ -27,6 +28,15 @@ int main() {
         write(2, "ioctl TIOCSCTTY", 16);
         exit(1);
     }
+    char path[128] = {0};
+    int len = write(fd, "\nEnter path to shell (nothing for /bin/shel): ", 47);
+    path[len - 1] = '\0';
+    read(0, path, sizeof(path));
+    if (len == 47) {
+        strcpy(path, "/bin/shel");
+    }
+    // write(1, path, strlen(path));
     write(fd, "\e[2J\e[0;0Hwelcome to nyaOS - a distro made by an idiot with no C experience that still somehow works\n\n", 103);
-    execve("/bin/shel", 0, 0);
+    
+    execve(path, 0, 0);
 }
\ No newline at end of file