Customizing Fedora Jeroen van Meeuwen Fedora Project
This talk is about... ● Customizing Fedora ● Installation Media ● Live Media ● Fedora Compose Tools ● livecd-tools, pungi, revisor ● How These Compose Tools Work
What is Fedora? ● 6,022 Source Packages (~12,000 RPMs) ● Any number of third party packages ● Any number of custom, private packages ● Many unique requirements
What you get... Selected Packages + Default Settings + Thorough Testing
What you want... Your Choice of Packages + Your Settings + ~Trial and Error Testing
Mix Your Own (!) Live Media: livecd-tools, revisor Installation Media: pungi, revisor
A little history on composing RH/Fedora
The Tools ● livecd-tools ● Official tool used to create the Fedora Live media for distribution ● pungi ● Official tool used to create the Fedora Installation media distribution ● revisor ● Community tool used to create Fedora Re-Spins (amongst others)
Live Media ● Perfect for show-cases ● Installation feature ● Stateless, non-destructive ● USB persistence (limited overlay) Tools: ● livecd-tools (CLI) ● revisor (CLI, GUI)
Live Spins ● Fedora Live ● Fedora KDE Live ● Fedora Electronic Lab Live ● Fedora Developer Live ● Fedora Gamer Live ● Fedora Security Live ● Fedora Creative Commons ● Fedora XFCE Live
Creating Live Media ● Configuration based on kickstart ● System Configuration ● Repository configuration (repo) ● Packages (%packages) ● %post, %post --nochroot ● Configure as much as you can ● Compose once ● Use many times
Kickstart Snippets spin-kickstarts: A repository of kickstart files ● Easier configuration retrieval ● No re-inventing the wheel ● Build one upon another: ● base (to make live media work) ● spin (to make a “KDE” or “FEL” spin) ● localization
livecd-tools approach ● Creates a filesystem ● Set size with “part / --size XXXX” ● Resolves dependencies ● Downloads & Installs packages ● Applies kickstart settings ● Runs %post ● Squashes the ext3 flat image filesystem ● Creates bootable ISO with SquashFS file
revisor approach ● takes a kickstart / configuration via GUI ● Resolves dependencies ● Then creates the filesystem ● based on cumulative RPM 'installedsize' + a little extra ● Installs packages, applies kickstart settings, runs %post ● Runs some additional script snippets
livecd-tools / revisor ● command-line ● kickstart config only ● perfect base for revisor ;- ) ● does whatever livecd- tools does ● cli / gui ● additional config files => better control ● localized ● exact package nevra selection
Installation Media ● Installed systems are unique ● yet they all start on the same foot! ● not anymore ;-) ● Customization opportunities: ● installer dialog ● kickstart configuration ● including packages / (remote) repositories ● %pre / %post scripts
Creating Installation Media ● Payload from kickstart %packages manifest or GUI package selection dialog ● Rebuilds the installer images ● fixes bugs, might also introduce new bugs ● might add hardware support (kernel) ● Each deployment use-case required manual actions after the compose ● Revisor integrates use-cases into the compose process
Customization Opportunities ● Include arbitrary files ● Include kickstart / set as default bootloader menu entry ● Choose inclusive or exclusive dependency resolving ● Different types of media (CD, DVD, etc.) ● Tweaking package ordering ● Rebuilding installer images ●...
Inclusive dependency resolving ● foo requires 'web-client' ● bar and baz provide 'web-client' ● bar & baz are both pulled in the transaction ● bar & baz cause their dependencies to be pulled in as well ● prevent with excluding bar or baz in package manifest
Exclusive dependency resolving ● foo requires 'web-client' ● do we already have web-client? if yes => exit search ● what provides web-client? (bar & baz) ● what fits best? (bar? baz?) ● YUM decides ● prevent with including the package you prefer in package manifest
Writing Plugins ● Write your own plugin ● Make use of what Revisor already does ● Hook in at some point ● Example: ● Rebranding is done by a plugin ● Makes sure “fedora-logos” is not used, and selects “foo-logos”
This Presentation & Documentation: Kickstart Templates & Snippets: The Author:
Revisor Features:. inclusive or exclusive dependency resolving. compose any supported OS version from any other supported OS. include arbitrary files on the media / in the tree. plugins you write hook into the compose process. gui interface, cli interface. intelligent media algorithms (same code, different media). translatable / localized. exact kickstart interpretation. exact package nevra selection. single interface to composing live and installation media. source inclusion for live media. yum configuration for better control. integration with cobbler. customizable package ordering. recursive splittree execution until it's just right. edit bootloader menu entries to reflect including a kickstart on the media / in the tree. kickstart abstraction layer to ensure compatibility. everything set in runtime is in fact configurable. reusing prebuilt installer images