[GSoC '22] VirtIO Balloon Performance Improvements - Starter Bug

99 views
Skip to first unread message

Abdelhakeem El-Gamal

unread,
Mar 12, 2022, 12:01:41 AM3/12/22
to Chromium OS Development, kal...@google.com
Hello! I am Abdelhakeem, currently studying for my last semester of Computer and Systems Engineering at Alexandria University in Egypt. I participated in GSoC '19 with Neovim, and this time I wanna delve deeper into systems programming and get my hands dirty with some real OS stuff.

I am currently reading the various documentation that is relevant to this project and trying to figure out how to set up my test environment.

I am aware that working within the chroot environment of Chromium OS is better since I would potentially be contributing and submitting patches. Hence, I checked out the sources as in the Chromium OS Developer Guide and set up my development environment. Now, I don't have a Chromebook,  but I have two options for the test environment:

  1. Build crosvm and ARCVM individually and use crosvm on my host to run the ARCVM system
  2. Build Chromium OS, spin up a virtual machine with cros_vm, and use crosvm from within the VM to run the ARCVM system
I am having problems with both approaches, but I will try to be more specific:
  1. Where is the ARCVM kernel image and other system files in the Chromium OS build tree? I can't seem to find enough documentation on ARCVM (I can build the kernel image at src/third_party/kernel/v5.10-arcvm, but I need relevant rootfs and initrd images to be able to run ARCVM with crosvm)
  2. The second approach would be too slow for development, i.e.: I will have to transfer crosvm and ARCVM to the Chromium OS VM over SSH whenever I want to test any new changes, am I missing something?
Any guidance would be really appreciated, thanks!

Phillip Pearson

unread,
Mar 13, 2022, 12:26:32 AM3/13/22
to Abdelhakeem El-Gamal, Chromium OS Development, kal...@google.com
(1) I'm pretty sure that fully building ARCVM will require access to Googler-only repositories.  This is going to be a bit tricky without access to a Chromebook... I'm unfamiliar with how GSoC works; could you obtain one through your Google contact?  I would imagine that the easiest way to work on code relating to virtio ballooning (crosvm and the relevant guest kernels for ARCVM and Crostini) without access to internal code would be to put a Chromebook into dev mode, disable rootfs verification / remount rw, enable the dev SSH server, then build and deploy new versions of only the things you're changing over the top of what's there already.

(2) That sounds about right; you would of course be able to use rsync etc to speed up the transfer process.  The normal way to work on CrOS components is to compile them on a workstation and transfer them over an SSH connection to the test device (the standard flow is: cros_workon --board=$BOARD start $component; emerge-$BOARD $component && cros flash $device $component).  In your case the test device is a VM, but otherwise everything should be the same.

Cheers,
Phil

--
--
Chromium OS Developers mailing list: chromiu...@chromium.org
View archives, change email options, or unsubscribe:
https://groups.google.com/a/chromium.org/group/chromium-os-dev
---
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-os-d...@chromium.org.

Abdelhakeem El-Gamal

unread,
Mar 13, 2022, 3:11:42 AM3/13/22
to Chromium OS Development, Phillip Pearson, Chromium OS Development, kal...@google.com, Abdelhakeem El-Gamal
Thanks for the clarification. Yes, it is possible for this project (although optional) to get a Chromebook for testing. But I am not officially in yet since the start date for applications is still ahead, so I am hacking around to get more concrete vision of what could be done so that I can include it in my proposal.

Meanwhile, I am using crosvm on my host machine with an upstream Linux guest plus a base Arch Linux rootfs.
Reply all
Reply to author
Forward
0 new messages