Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 3.35 KB

README.md

File metadata and controls

47 lines (35 loc) · 3.35 KB

eurosys-kfuse-artifact

The repo is the artifact for the paper "Verified Programs Can Party: Optimizing Kernel Extensions via Post-Verification In-Kernel Merging" in EuroSys 2022.

How to run?

  • Step 0: Please read the FAQ section first.
  • Step 1: Download vm and fs from Box or Google Drive (20GB for each file system images).
    • See F.A.Q. Q1 describes that how to download the artifact from Google Drive on your workstation.
  • Step 2: Follow the instructions in the directory experiment_docs/instructions/ to run experiments E1 to E5.
  • Step 3: Check the results with the expected results in experiment_docs/expected_result.

Demo Video

demo_video.mp4

F.A.Q.

Q1: How to download the artifact from Google Drive on my workstation?

  • gdrive
  • Usage
    # Step1: Download the Linux binary of gdrive.
    # Step2: Follow the instructions in the repo to provide your verification code.
    # Step3: Download from CLI
    
    # Ex1: The address to download e1fs is as follows. https://drive.google.com/file/d/1x6O2TmfnezbdSDhy6zTOOd3fjTC3TY3C/view?usp=sharing
    ./gdrive download 1x6O2TmfnezbdSDhy6zTOOd3fjTC3TY3C

Q2: Can I install ubuntu on a VM on a Mac to run KFuse?

  • No, please use a native Ubuntu machine that supports KVM.

Q3: In the E1 file, where we find instructions to execute the experiment, it says something about ssh'ing a VM. What VM?

  • In E1, we will use the script bench_merger.sh to launch the VM. For E2, E3, E4, and E5, we use the script launch_vm.sh to launch VMs.

Q4: We noticed that in your instructions, you recommend downloading the root.ext4 and placing it in the fs folder. However, the launch_vm.sh tries to access root.ext4 from the root of the project and not from the fs folder. Should we move root.ext4 from fs to the root of the project?

  • Yes. In E1, bench_merger.sh will copy e1fs to project root. For E2, E3, E4, E5, the instructions (see examples) indicate that we need to copy rootfs to project root.

Q5: We noticed that in launch_vm.sh there is an attempt to execute ./init.sh script. However, we did not find such script anywhere in your Github repo.

  • The command will be executed inside the VM, so it will not in the GitHub repo. The init.sh is in VM (e1fs and rootfs).

Q6: If you want to setup SSH config as mentioned in E1, you can refer to the following instructions.

  • Step 1: Launch VM with e1fs.ext4 sudo ./scripts/qemu_kernel.sh vm/nokfuse-noretpoline-vm e1fs.ext4 /init.sh
  • Step 2: Copy your local public key to /root/.ssh/authorized_keys (in VM)
  • Step 3: Close the VM, and run bench_merger.sh (follow E1 instruction)

Q7: For E3, I could only execute the experiment for $nfilter's value 0 and 20.

  • Check out our video to perform E3. Make sure to restart your VM when running the next iteration. You can use (Ctrl + A) + X to terminate the VM.