tech-install archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

GSoC 2025 / Igor Svilenkov Bozic (Introduction)



Hi NetBSD tech-install Team,

I’m Igor Svilenkov Bozic, from Belgrade, Serbia. I'm currently seeking to become more involved with operating systems, storage or networking, low-level programming, and projects.  It’s what I’ve always wanted to do and I believe the best way would be to get involved in open source projects of some sort. I’m interested in the “Add UEFI boot options” as part of the Google Summer Of Code 2025. I've used the Guidelines to apply for a project and tried to answer most of the questions listed in the guide:

About your project
What is the goal of the project? (Short overview)

The goal is to implement proper boot entries, making it nicer to see boot menu entries such as “NetBSD 10.0” instead of the generic
“UEFI OS”.

What will be the deliverables of the project? (Code, documentation, ...)
  • Code:
    • Userland utility (likely in C), using existing UEFI kernel interfaces to set the vars for /dev/efi may involve an ioctl calls. More exact implementation details should become clearer after initial exploration
    • Changes to sysinst that make correct placement of the bootloader files in the ESP partition. Possibly changes to install scripts or functionality that installs the bootloader
  • Docs:
    • Updated install docs reflecting the changes
    • If making the above mentioned utility, then some usage guide for it
Is similar software already available elsewhere, e.g. for Linux or any other BSD?

NetBSD already provides the efi(8) utility, a native UEFI var “editor”,  similar to Linux’s efibootmgr. FreeBSD also includes similar capabilities within efivars. OpenBSD has boot, but doesn't provide a dedicated EFI variable editing utility like efivar.

Give an overview of how you intend to reach the project's goal in the form of milestones and a schedule.

MilestoneWeeksDescription
Setup & PrototypeWeeks 1-2Environment setup with qemu, initial EFI boot variable tool prototype.
Userland Utility DevelopmentWeeks 2-5Complete and refine EFI boot management tool.
sysinst IntegrationWeeks 5-6Implement sysinst changes and update related documentation.
Testing & Bug fixingWeeks 6-8Comprehensive testing on multiple hardware/multiboot setups.
Documentation & FinalizationWeeks 10-12Finalize documentation, incorporate feedback, submit final patches.

This schedule is an initial preliminary draft and subject to refinement after initial feedback and deeper exploration

Is the project a port of software, or a rewrite? (remember: No GPL in the NetBSD kernel!)

I see it as likely building upon or extending the existing NetBSD tool (efi(8)), but I’m open to advice from the community on the best approach.

About your project and NetBSD

If your working area is the core NetBSD operating system: have you installed NetBSD and made first experiences with hands-on configuration? Have you rebuilt the kernel and the userland, either in full or in parts? If you plan to work on pkgsrc, have you installed packages from source and binary? Have you created a package on your own?
  • Have you installed NetBSD and made first experiences with hands-on configuration?: Yes
  • Have you rebuilt the kernel and the userland, either in full or in parts?: Yes
  • If you plan to work on pkgsrc, have you installed packages from source and binary: No
  • Have you created a package on your own?: No
None of these would present any problem having worked in the past with many operating systems and their associated build systems, which range from: Slackware 10, Gentoo, Fedora, FreeBSD, pfSense, VyOS, OpenBSD, Manjaro, Ubuntu, Debian, Android, Yocto, KAS,  Cumulus,  Onyx, OpenWRT, and others that I can’t think of now. I’ve also had experience with netbooting.xyz and fai-project.org provisioning headless nodes in a fully automated way in a Datacenter.

Have you found the relevant places that your project is based on in the source code, and read through it?

sys/dev/efi.c
sbin/efi/main.c
usr.sbin/sysinst/


Is knowledge on other topics required for this project, e.g. on hardware, software other than NetBSD, APIs, protocols, etc.? If so, give details and references.

I’d say pretty solid understanding of UEFI, EFI runtime, partitioning schemes. Beyond that, I am experienced and proficient with various virtualization platforms—QEMU, VMware Fusion, Xen, Apple Virtualization Framework, and KVM—which I regularly use for testing, debugging, and validating boot and installation processes in virtualized environments. This experience will significantly benefit the rigorous testing and refinement required for this project.

Beyond that, I’ve worked closely with an ex-Seagate engineer, John Suykerbuyk (https://github.com/suykerbuyk), a BSD advocate and ZFS expert. Though our collaboration wasn’t directly related to this project, he has been a valuable mentor and friend, enhancing my knowledge and appreciation for BSD systems.

To what degree are you familiar with those? (not/some/very, details?)

I’d say very familiar.

If the project involves hardware (e.g. writing drivers, doing a port to new hardware, ...): do you own the hardware or have access to?

I own and have access to multiple x86-based and ARM-based mini-PCs suitable for testing and development.

About you
Can you list some prior projects that you have worked on so far? Include details like programming language, duration, number of people involved, project goal, if you used CVS, SVN or similar, and whatever else we may find thrilling! If you have a CV/resume online, feel free to include a link.
  • Designing the network topologies and choice of proper hardware (eg. cabling, connectors, switches)
  • Install & Maintenance of Debian 12, Ubuntu, FreeBSD, VyOS, pfSense, pfSense Gateway Router serving DHCP, DNS, Firewall, Tailscale
  • GRUB
  • Management of 100Gbps Mellanox switches with custom Debian install utilizing the mlnxsw driver and SwitchDev. RDMA traffic configuration and switch ASIC HW parameters configuration.
  • iPXE netbooting, netboot.xyz menu & custom ipxe scripting logic
  • FAI (Fully Automated Installer) Custom Debian Zero Configuration installer images
  • 12 x Seagate 5U84 racking up & provisioning
  • BMC Out Of Band server management using IPMI and RedFish
I’ve been on many projects throughout my professional life, see the attached CV for further detail. My public GitHub presence has been minimal so far (https://github.com/svilenkov/), but I'm keen to increase my contributions, starting with GSoC 2025. Regardless of GSoC, I'm interested in becoming an active contributor to NetBSD, because of my enthusiasm for networking and systems-level projects.

Do you have any prior experience with programming NetBSD? In what area? If you did send some problem reports (PRs) or patches, please include references.
I don’t yet have specific programming experience with NetBSD, but I’m eager to start contributing and dive deeper into the project

Have you previously discussed your project within NetBSD, either on a mailing list or with some specific developers? If so, please give us either the names/email addresses of those developers or point us towards the discussions on our list (via http://mail-index.NetBSD.org/).

I haven’t, this is my introduction email, following the 1st step in the guide: https://wiki.netbsd.org/projects/application/

Is there anything else you'd like us to know? Did we forget any important details or questions?
At this stage,  providing detailed answers to the following questions would require a deeper dive:
  • How will your project integrate into NetBSD? (Userland tool, kernel subsystem, driver, patch set, pkgsrc, ...)
  • What interfaces in NetBSD will your project use? (Go into details here! What module/file names, functions, data structures etc. are of relevance for your project?)
  • To what degree are you familiar with those interfaces? (not/some/very, details?)
Best,
Igor Svilenkov Bozic,
Belgrade, Serbia

Attachment: Igor Svilenkov Bozic - CV-1.pdf
Description: Adobe PDF document



Home | Main Index | Thread Index | Old Index