Kernel Version: 6.1.115-126.197
Architecture: x86_64
Linux version: Amazon Linux 2023.6.20241111
cwd: /home/ec2-user/Grant/KernelModule
sudo yum groupinstall "Development Tools" -y
sudo yum install cmake -y
mkdir just_wasm
mkdir just_kernel
mkdir combined_wasm_kernelIn just_wasm create main.c and hello_wasm.c In just_kernel create hello_module.c and Makefile
make
make -C just_kernelTo load the kerel module into the kernel
sudo insmod just_kernel/hello_module.koCheck kernel logs to see printk message was logges
sudo dmesg | tailRemove module v
sudo rmmod hello_module
sudo dmesg | tailgit clone https://github.com/wasm3/wasm3.gitTo compile C code into WebAssembly. Install Emscripten Emscripten's official installation guide:
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
export paths to ~/.bashrc :
export PATH=$PATH:$HOME/Grant/KernelModule/wabt/build
source /home/ec2-user/Grant/KernelModule/emsdk/emsdk_env.shCompile hello_wasm.c
emcc just_wasm/hello_wasm.c \
-s STANDALONE_WASM=1 \
-s ERROR_ON_UNDEFINED_SYMBOLS=0 \
--no-entry \
-o just_wasm/hello_wasm.wasmBuild wasm executable If you haven't already cloned wasm3, do it first
cd wasm3
mkdir build
cd build
cmake ..
make
cd ../..Compile main.c
gcc just_wasm/main.c -I./wasm3/source ./wasm3/build/source/libm3.a -lm -o just_wasm/wasm3_runnerrun wasm3
./just_wasm/wasm3_runnerConvert WASM binary to C header file add definitions ...
xxd -i just_wasm/hello_wasm.wasm > combined_wasm_kernel/include/wasm_binary.hCreate kernel_wasm3.c and Makefile see directory combined_wasm_kernel