Skip to content

Generate a custom ISO to install a tailored Fedora from USB

Notifications You must be signed in to change notification settings

agagniere/CustomInstaller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Custom Fedora Installer

This set of scripts allows one to generate an ISO image with a custom set of RPMs and an automated installation script.

The generated ISO can then be restored to a USB key and perform a tailored installation of Fedora, without having to disable Secure Boot.

As a downloader

If you just want to download Fedora official ISOs, this makefile can be of use:

  • it will place the official ISO in your download folder
  • verify the ISO's integrity using the official checksum
  • verify the checksum was signed by Fedora
# To download the Workstation ISO for x86_64:
make download

# You can choose the edition and architecture:
FedoraEdition=Server Architecture=aarch64 make download

# You can even choose the installation method for the server edition:
FedoraEdition=Server Architecture=ppc64le make download FedoraMethod=dvd

# And you can choose between wget and curl
Downloader=curl make download

Downloadable status as of Fedora 40 :

Workstation Server
x86_64
aarch64
ppc64le
s390x

Generating an ISO

For conveniance, you can place all values you want to customize in a local file values.sh:

# Latest Fedora release
FedoraVersion=40-1.14

# Workstation | Server
FedoraEdition=Workstation

# x86_64 | aarch64 | ppc64le | s390x
Architecture=x86_64

# wget | curl (defaults to the first available)
# Downloader=wget

# Used to create the initial user of the OS
UserName=mname
Password=`read -s -p 'Password: ' password && openssl passwd -6 -salt SomeRandomSalt $password`
RootPassword=`read -s -p 'Root Password: ' password && openssl passwd -6 -salt SomeRandomSalt $password`

# Used to sign the bootloader (except WorldRegion that is used with City to specify the timezone)
FullName="My NAME"
EmailAddress=my.name@example.com
WorldRegion=America
CountryCode=US
City=New_York

# Used during installation and on the target system
KeyboardLayouts="us,'cz (qwerty)'"
Languages=en_US
# Languages="--addsupport=en_GB en_US.utf8"
NtpPool=3.fedora.pool.ntp.org

# It is possible to override the timezone (if the City you want mentionned in the certificate is not in https://vpodzime.fedorapeople.org/timezones_list.txt)
# TimeZone=America/Toronto

Then source the file before calling make:

( set -a && source ./values.sh && make iso )

Adding a custom entry

You want an ISO that install a specific set of packages, with a tailored partitioning scheme ? You don't have to write a GRUB configuration file !

Just create a .cfg file with a name starting with entry_ in the kickstart folder, like kickstart/entry_myinstaller.cfg:

# Entry name : "Install things my way" <- Set the name of your entry as it will appear in the GRUB menu

# Include other kickstart files with this special syntax:
%shard common
# It will include kickstart/common.cfg

# And use any official kickstart command:

%packages
	@Headless-Management
	@Container-Management --optional
%end

skipx

selinux --enforcing

clearpart --all --drives=sda
partition /boot/efi           --ondisk=sda 1024
partition /     --fstype=ext4 --ondisk=sda --grow
partition /home --fstype=ext4 --ondisk=sdb --noformat --usepart=LABEL=MY_HOME

If you want this entry to be the default in GRUB, add DefaultEntry=myinstaller to values.sh.

About

Generate a custom ISO to install a tailored Fedora from USB

Topics

Resources

Stars

Watchers

Forks