operation-hack/README.md

2.7 KiB

Operation: Hack

As you are walking by a table in #cafe, you overhear the two owners talking about a plan.

"Okay, so we would break in to the museum and then steal loot over the course of, say, two months, before we check in and see if we need more time, so nobody suspects anything,", says Orpheus, before downing her cup of coffee brewed by Heidi.

"Sounds good to me. Wouldn't we need a team though?" Heidi responds.

"Hm, true," Orpheus says before looking around and, seeing you, pulling you over, before saying, "Well, you saw and heard us planning, do you want to join us?"

You think about it, and nod your head.

Operation: Hack is a proposed hackclub YSWS where you get loot for writing an OS's1 kernel (starting from scratch) for reaching certain milestones, which you can exchange for real-world prizes! The ideas for milestones(all optional and loot may be adjusted for different types of kernels) are listed below(in no particular order):

  • Successful first boot before halting the CPU: 50 loot
  • Output a debug message to a serial port: 50 loot
  • Output a debug message to the screen: 75 loot
  • Bootloader:
    • Parse bootloader-provided info: 100 loot
    • Write a bootloader that loads the kernel from static disk sectors: 200 loot
    • Write a bootloader that loads the kernel from a filesystem: 4000 loot
  • Memory allocation(none combine, i.e. you will not get 400 loot for making a fast memory allocator):
    • Write a functional memory allocator: 150 loot
    • Write a functional, space-efficient(uses <64 bytes per allocation or page) memory allocator: 250 loot
    • Write a functional, fast(<1000 CPU cycles per allocation) memory allocator: 250 loot
    • Write a functional, fast and space-efficient memory allocator: 400 loot
  • Architecture-specific setup:
    • x86_32: Initalize paging: 300 loot
    • x86_32: Initalize the GDT: 300 loot
    • x86_32: Initalize the MMU: 300 loot
    • x86_32: Initalize interrupts: 200 loot
  • Setup syscalls: 300 loot
  • Drivers/kernel modules:
    • Implement a functional driver/module framework: 300 loot
    • Implement a basic driver(i.e. an LED or something): 250 loot
    • Implement a serial port driver: 400 loot
    • Implement a screen driver: 500 loot
    • Implement a keyboard driver: 500 loot
    • Implement a disk driver: 600 loot
    • Implement DMA for a driver: 400 loot
  • Filesystems:
    • Implement a filesystem abstraction: 300 loot
    • Implement a ramfs driver: 400 loot
    • Implement a FAT12 driver: 400 loot
    • Implement a FAT32 driver: 500 loot
    • Implement a journalling(ext2, ext3, ext4) driver: 600 loot

  1. Operating System! If you don't know what one is, this probably isn't the YSWS for you! ↩︎