Inspiration

When I was implementing a device driver for Linux, I ran into an interesting bug where it was reporting that a file did not exist when it clearly did. Once I figured out the bug, I realized the power in intentionally using bugs like these.

What it does

Its a puzzle built entirely in the Linux file system. You will have to think outside the box.

How we built it

I would recommend trying it out before reading any more as it may spoil the mystery. It was built using the FUSE userspace file system system. This allowed me to make files do more than just store data. For example, the simple act of reading a file can cause things to change.

Challenges we ran into

Unfortunetly with FUSE, syscall are not 1-1 with the rust code. Some ideas were just impossible to implement with these problems. For example, I wanted to make it so that if you call flush on a file it would do something, but even though flush was a file system operation I had to implement, code calling flush did not always call the rust version.

What's next for Linux Challenge

I would like to implement even more wacky ideas including unsafe features, but that may require me to go back to my original plan of implementing parts of the functionality with a Kernel module. Also I would like to provide a VM version so you don't have to install and don't have to worry about installing a Kernel module to play it.

Built With

Share this project:

Updates