Run semu inside web browser via WebAssembly translation
@ChinYikMing ci sta già lavorando.
Dal 20/1/2024.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
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.
- Lingua principale
- C
- Stelle
- 313
- Fork
- 75
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sysprog21/semu
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Implement VirtIO PCI transport layerForse di nuovo libera @shengwen-tw l’ha presa 498 giorni fa e non c’è nessuna pull request aperta. Aperta
-
Implement VirtIO sound deviceForse di nuovo libera @Cuda-Chen l’ha presa 797 giorni fa e non c’è nessuna pull request aperta. Aperta
-
Support PMEMAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
Tutte le issue di sysprog21/semu
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
zephyrproject-rtos/zephyr#123881 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
ly05010419/MacNativeGames#1252 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 2 giorni
-
Component - Build
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Description of the bugApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
HarbourMasters/Lighthouse#655 ·
I maintainer di solito rispondono entro 1 giorno