DMC's Upstream Open Source Contributions
This is a list of contributions I have made to other open source projects that have been merged upstream. For the timebeing, this consists entirely of contributions to Fedora's LiveCD-Tools package, and Anaconda. LiveCD-Tools includes livecd-creator which is used to compose the official Fedora LiveCDs, as well as allow anyone to produce their own customized versions. Anaconda is the OS Installer (LiveOS and traditional) for Fedora and RedHat.
The contributions are listed more or less in reverse chronological order of upstream merging.
- Rakarrack: Global Wet/Dry
-
At the turn of the decade, I was honored to join the Rakarrack development team. Rakarrack is an open source live audio-fx processor. Like a virtual (and free!) pedal-board for a guitar player. My first major contribution was the addition of the Global Wet/Dry (FX%) slider you see in the upper left. I implemented that as part of my Guitar-ZyX::MCP project, which provides a wireless remote control for rak, or as I like to call it - a TouchScreenWhammyPad. This feature involved implementing a simple DSP, to mix in realtime a couple streams of JackAudio signal/samples, and the correlating FLTK/fluid gui slider.
- Fedora LiveCD-Tools: Filesystem Layout
-
This was actually 4 small patches out of a series of 7 that were applied. The motivation was to provide a well organized and intuitive directory structure for the Fedora-8 LiveCD cdrom filesystem. The benefits are primarily for a forward looking vision of how LiveCDs will be used as a platform delivering other bundled content such as as music files, video files, documentation, etc...
-
remove needless /sysroot directory
-
fedora-livecd-list@redhat.com post --- livecd-tools git commit
-
move livecd filesystem image under /LiveOS, for consistency with LiveUSB
-
fedora-livecd-list@redhat.com post --- livecd-tools git commit
-
move embedded fs image under /LiveOS for consistency
-
fedora-livecd-list@redhat.com post --- livecd-tools git commit
-
rename os.img to ext3fs.img for consistency
- fedora-livecd-list@redhat.com post --- livecd-tools git commit
-
remove needless /sysroot directory
- Fedora LiveCD-Tools: hide mksquashfs progress based on tty output
-
The mksquashfs progress bar is nice in an interactive terminal when you are possibly watching it. But it really screws up logfiles if you've redirected the output of livecd-creator to one. This patch disables the progress bar by detecting whether or not the output is going to a tty.
fedora-livecd-list@redhat.com post --- livecd-tools git commit - Fedora LiveCD-Tools: squash osmin
-
Jeremy Katz didn't like the complexity of my original implementation of this feature, which avoids wasting about 1.2 megabytes of RAM usage on LiveCDs that take advantage of the prior turboLiveInst/genMinInstDelta LiveCD Installer enhancement. After thinking about it a bit, I was able to devise this more elegant method which was accepted upstream.
fedora-livecd-list@redhat.com post --- livecd-tools git commit - Fedora LiveCD-Tools: load loop driver before udevsettle
-
fedora-livecd-list@redhat.com post --- livecd-tools git commit
- Fedora LiveCD-Tools: dynamically allocate loop devices
-
Perhaps the ugliest aspect of Fedora LiveCD tools relative immaturity was the use of 3 hardcoded loop devices (/dev/loop119, /dev/loop120, /dev/loop121) in its initramfs bootstrapping code. I cleaned this up to use dynamically allocated devices, and even added some new udev rules to provide nice reference links (/dev/live-base, /dev/live-overlay).
fedora-livecd-list@redhat.com post --- livecd-tools git commit - Anaconda and Fedora LiveCD-Tools: Turbo Live Inst / genMinInstDelta
-
This was actually a huge patch, which I broke into a series of 7 patches to make it easier to review. This patch speeds up LiveCD installation to hard disk, by precalculating a devicemapper delta image, which efficiently removes unneeded disk writes from the installation process. The benefits are on the order of 20% for LiveCD based installs, and 30% for LiveUSB based installs.
- main git-commit
- related git commits here, here, here, and here.
- cvs commits: anaconda changelog (2 entrys from: 2007-09-17)
- main fedora-livecd-list@redhat.com post
- other posts here, here, here, here, here, and here.
- earlier post with performance statistics (250s <--> 299s typo)
- first post
- monster thread: beginning of the problem discovery and solution design
- Fedora LiveCD-Tools and mkinitrd(now dracut): LiveUSB Persistence
-
The ability to turn a LiveCD into a LiveUSB is a benefit in many respects. One big one is that the read-write media can be used to store changes made to the 'live' filesystem which can persist across reboots, and even across transporting the LiveUSB to a new system. This is done by storing the Copy-On-Write(COW) data on the usb stick itself instead of ram where it is lost upon reboot. This was also implemented around the same time by Ubuntu with unionfs instead of devicemapper. Unfortunately, unless my recent idea for devicemapper snapshots intelligently responding to filesystem layer discard requests is implemented, this method will remain fairly innefficient, suffering from disk full situations earlier than one would hope.
fedora-livecd-list@redhat.com post --- livecd-tools git commit mkinitrd git commit related mkinitrd commit - Fedora LiveCD-Tools: bugfix related to losetup truncating its output
-
fedora-livecd-list@redhat.com post --- livecd-tools git commit
- Anaconda: bugfix: look at rootpath for kernels
- Anaconda: bugfix: support non-SELinux installation correctly
-
anaconda-devel-list@redhat.com post --- anaconda changelog (entry: 2007-09-17)
- Anaconda: bugfix: correctly require LiveCD installs to have root volume formatting selected
-
bug discovery on fedora-devel-list@redhat.com
anaconda changelog (entry: 2007-08-01) - Fedora LiveCD-Tools: cleanupDeleted
-
This patch efficiently removes unused blocks from the LiveOSs ext3 filesystem utilizing a binary search for minimal filesystem size in conjunction with resize2fs. The result is that the 700MB Fedora-7 LiveCD can be condensed to 664MB with no negative side effects. Thus the Fedora-8 LiveCD will be able to squeeze in 4% more software than it otherwise would have. When you consider that much of the 700MB is taken up by system infrastructure, that 4% becomes even more valuable as every last bit of it is some new functionality that the users will be provided with. Patrice Guay actually immediately noticed with a CentOS based LiveCD, a savings of 115MB!!! (731MB->615MB).
fedora-livecd-list@redhat.com post --- livecd-tools git commit - Anaconda: bugfix: for LiveOS installs, don't redundantly format the root filesystem
-
While working on Fedora LiveCDs, I noticed the installation process taking a lot of time 'formatting' the root filesystem. At some point the thought struck me - what is it actually doing? Because I knew that the already speedy way that anaconda performed LiveCD installations involved copying block for block an existing - already formatted - filesystem image onto the new root device. As such, no explicit formatting phase should actually be happening. As a result, I took a dive into the anaconda code, and made my first significant contribution to the open source community. Removing this pointless phase of work sped up Fedora LiveCD installs by about 30% on my typical modern laptop with a 30G installation disk volume. If I had been installing to the entire 120G system disk, the speedup would have actually been something closer to 100% (halving the installation time).
anaconda-devel-list@redhat.com post --- anaconda changelog (entry aka JaneDogalt: 2007-07-16)
DMC's Profile
/