Run semu inside web browser via WebAssembly translation
@ChinYikMing ya está trabajando en esto.
Desde el 20/1/2024.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
WebAssembly is capable to port rv32emu to browser. Then, I would like to test the WebAssembly translation of the semu codebase to see if kernels (like Linux or xv6) can be booted in a browser in order to facilitate the further integration of semu to rv32emu.
I would like to start with the smaller codebase and boot xv6 first. A few technical points are as follows:
- It is necessary to simulate a new shell that is operating in a web frontend (Xterm.js is a good solution), after which the command is forwarded to the kernel's running shell. Some of the scope issues with the variables generated by Emscripten are confusing to me, so that I have implemented a hardcoded
lscommand to confirm the kernel is booted successfully. The demo below shows Emscripten's capability to boot a kernel. - The
shshell's dollar sign ($) of xv6 does not flush after exec, possibly some source kernel code needs to be changed.
Demo: xv6
You shall see output of ls command like below:
$ . 1 1 1024
.. 1 1 1024
README 2 2 2059
cat 2 3 25016
echo 2 4 23800
forktest 2 5 13688
grep 2 6 28568
init 2 7 24896
kill 2 8 23752
ln 2 9 23704
ls 2 10 27320
mkdir 2 11 23856
rm 2 12 23840
sh 2 13 43824
stressfs 2 14 24864
usertests 2 15 159064
grind 2 16 39424
wc 2 17 26208
zombie 2 18 23224
console 3 19 0
Next, command bridging from web frontend shell(Xterm.js) to real shell will be solved, and then boot the Linux kernel.
- Lenguaje dominante
- C
- Estrellas
- 313
- Forks
- 75
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de sysprog21/semu
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
-
Implement VirtIO PCI transport layerQuizá libre de nuevo @shengwen-tw la tomó hace 499 días y no hay ningún pull request abierto. Abierto
-
Implement VirtIO sound deviceQuizá libre de nuevo @Cuda-Chen la tomó hace 797 días y no hay ningún pull request abierto. Abierto
-
Support PMEMAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
Todos los issues de sysprog21/semu
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
zephyrproject-rtos/zephyr#123881 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
eclipse-zenoh/zenoh-pico#1354 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
ly05010419/MacNativeGames#1252 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 2 días