#916 Let Anaconda create arch specific partitions
Closed 2 years ago by pbrobinson. Opened 2 years ago by pboy.
pboy/fedora-kickstarts f37  into  main

@@ -10,7 +10,7 @@ 

  deja-dup-nautilus

  

  # Add extra gnome applications

- gnome-books

+ #gnome-books

Why is it changing things like this?

  gnome-calendar

  gnome-photos

  gnome-pomodoro
@@ -27,6 +27,5 @@ 

  # temporarily removing conflicting application

  -mypaint

  -sparkleshare

- -blender-luxcorerender

  

  %end

file modified
+4 -4
@@ -19,7 +19,7 @@ 

  

  # Equivalent of %include fedora-repo.ks

  # Pull from the ostree repo that was created during the compose

- ostreesetup --nogpg --osname=fedora-iot --remote=fedora-iot --url=https://kojipkgs.fedoraproject.org/compose/iot/repo/ --ref=fedora/rawhide/${basearch}/iot

+ ostreesetup --nogpg --osname=fedora-iot --remote=fedora-iot --url=https://kojipkgs.fedoraproject.org/compose/iot/repo/ --ref=fedora/devel/${basearch}/iot

  

  reboot

  
@@ -45,14 +45,14 @@ 

  

  # Set the origin to the "main ref", distinct from /updates/ which is where bodhi writes.

  # We want consumers of this image to track the two week releases.

- ostree admin set-origin --index 0 fedora-iot https://dl.fedoraproject.org/iot/repo/ "fedora/rawhide/${arch}/iot"

+ ostree admin set-origin --index 0 fedora-iot https://dl.fedoraproject.org/iot/repo/ "fedora/devel/${arch}/iot"

NAK NAK NAK.

  

  # Make sure the ref we're supposedly sitting on (according

  # to the updated origin) exists.

- ostree refs "fedora-iot:fedora/rawhide/${arch}/iot" --create "fedora-iot:fedora/rawhide/${arch}/iot"

+ ostree refs "fedora-iot:fedora/devel/${arch}/iot" --create "fedora-iot:fedora/devel/${arch}/iot"

  

  # Remove the old ref so that the commit eventually gets cleaned up.

- ostree refs "fedora-iot:fedora/rawhide/${arch}/iot" --delete

+ ostree refs "fedora-iot:fedora/devel/${arch}/iot" --delete

  

  # delete/add the remote with new options to enable gpg verification

  # and to point them at the cdn url

@@ -78,7 +78,6 @@ 

  ginga

  python3-astropy

  python3-astroML

- python3-astroML-addons

  python3-astroquery

  python3-astroscrappy

  python3-APLpy

file modified
+1 -1
@@ -25,7 +25,7 @@ 

  FOE

  

  # don't autostart gnome-software session service

- rm -f /etc/xdg/autostart/gnome-software-service.desktop

+ rm -f /etc/xdg/autostart/org.gnome.Software.desktop

  

  # disable the gnome-software shell search provider

  cat >> /usr/share/gnome-shell/search-providers/org.gnome.Software-search-provider.ini << FOE

@@ -48,7 +48,7 @@ 

  

  # Drop the Java plugin and Java

  -icedtea-web

- -java*

+ -*openjdk*

  

  # No printing

  -@printing

file modified
+2 -2
@@ -3,7 +3,7 @@ 

  # Exactly one of the following should be uncommented

  

  # For the master branch the following should be uncommented

- %include fedora-repo-rawhide.ks

+ #%include fedora-repo-rawhide.ks

  

  # For non-master branches the following should be uncommented

- # %include fedora-repo-not-rawhide.ks

+ %include fedora-repo-not-rawhide.ks

@@ -0,0 +1,200 @@ 

+ # fedora-server-vm-full.ks (rel. 1.01)

+ # Kickstart file to build a Fedora Server Edition VM disk image.

+ # The image aims to resemble as close as technically possible the

+ # full features of a Fedora Server Edition in a virtual machine.

+ #

+ # The image uses GPT partition type as of default in Fedora 37

+ #

+ # At first boot it opens a test based basic configuration screen.

+ #

+ # This kickstart file is designed to be used with ImageFactory (in Koji).

+ #

+ # To build the image locally, you need to install ImageFactory and

+ # various additional helpers and configuration files.

+ # See Fedora Server Edition user documentation tutorial.

+ # Changelog

+ # 1.01 modified partitioning to "reqpart --add-boot" to cover architecture

+ #      specific differences

+ 

+ 

+ # Use text mode install

+ text

+ 

+ # Keyboard layouts

+ keyboard 'us'

+ 

+ # System language

+ lang en_US.UTF-8

+ 

+ # System timezone

+ # set time zone to GMT (Etcetera/UTC)

+ timezone Etc/UTC --utc

+ 

+ 

+ # Root password

+ rootpw --iscrypted --lock locked

+ 

+ # SELinux configuration

+ selinux --enforcing

+ 

+ 

+ # System bootloader configuration

+ bootloader --location=mbr --timeout=1 --append="console=tty1 console=ttyS0,115200n8"

+ 

+ # Network information

+ network  --bootproto=dhcp --device=link --activate --onboot=on

+ 

+ # Firewall configuration

+ firewall --enabled --service=mdns

+ 

+ 

+ # System services

+ # message: error enabling initial-setup, initial-setup does not exist

+ services --enabled="sshd,NetworkManager,chronyd,initial-setup"

+ 

+ # Run the Setup Agent on first boot

+ firstboot --reconfig

+ 

+ # Partition Information. Use GPT by default (since Fedora 37)

+ # Resemble the Partitioning used for Fedora Server Install media

+ clearpart --all --initlabel --disklabel=gpt

+ ##part biosboot  --size=1    --fstype=biosboot

+ ##part /boot     --size=1000  --fstype=xfs --label=boot

+ reqpart --add-boot

+ part pv.007     --size=4000  --grow

+ volgroup  sysvg  pv.007

+ logvol / --vgname=sysvg --size=4000 --grow --maxsize=16000 --fstype=xfs --name=root --label=sysroot

+ 

+ 

+ # Include URLs for network installation dynamically, dependent from Fedora release

+ # and imagefactory runtime environment

+ %include fedora-repo.ks

+ 

+ # Shutdown after installation

+ shutdown

+ 

+ 

+ 

+ ##### begin package list #############################################

+ %packages --inst-langs=en

+ 

+ @server-product

+ @core

+ @headless-management

+ @standard

+ @networkmanager-submodules

+ ##@container-management

+ @domain-client

+ @guest-agents

+ 

+ # All arm-tools packages install on aarch64/armhfp only

+ # TODO: on a x86_64 devel environment are @arm-tools not available

+ # and cause a build error.

+ # @arm-tools

+ 

+ # Standard Fedora Package Groups

+ ## dracut-config-generic  ## included in =core=

+ glibc-all-langpacks

+ initial-setup

+ kernel-core

+ -dracut-config-rescue

+ -generic-release*

+ -initial-setup-gui

+ -kernel

+ -linux-firmware

+ -plymouth

+ # pulled in by @standard

+ -smartmontools

+ -smartmontools-selinux

+ 

+ %end

+ ##### end package list ###############################################

+ 

+ 

+ ##### begin kickstart post script ####################################

+ %post --erroronfail  --log=/root/anaconda-post-1.log

+ 

+ # Find the architecture we are on

+ arch=$(uname -m)

+ 

+ # Import RPM GPG key, during installation saved in /etc/pki

+ echo "Import RPM GPG key"

+ releasever=$(rpm --eval '%{fedora}')

+ basearch=$(uname -i)

+ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch

+ 

+ # See the systemd-random-seed.service man page that says:

+ #   " It is recommended to remove the random seed from OS images intended

+ #     for replication on multiple systems"

+ # The newly installed instance should make it's own

+ echo "Removing random-seed so it's not the same in every image."

+ rm -f /var/lib/systemd/random-seed

+ 

+ # When we build the image a networking config file gets left behind.

+ # Let's clean it up.

+ echo "Cleanup leftover networking configuration"

+ rm -f /etc/NetworkManager/system-connections/*.nmconnection

+ 

+ # Truncate the /etc/resolv.conf left over from NetworkManager during the

+ # kickstart because the DNS server is environment specific.

+ truncate -s 0 /etc/resolv.conf

+ 

+ echo "Cleaning repodata to save space."

+ dnf clean all

+ 

+ # linux-firmware is installed by default and is quite large. As of mid 2020:

+ #   Total download size: 97 M

+ #   Installed size: 268 M

+ # Not needed in virtual environment.

+ echo "Removing linux-firmware package."

+ rpm -e linux-firmware

+ 

+ # Will ever anybody see this?

+ echo "Packages within this disk image"

+ rpm -qa --qf '%{size}\t%{name}-%{version}-%{release}.%{arch}\n' |sort -rn

+ 

+ # Note that running rpm recreates the rpm db files which aren't needed or wanted

+ rm -f /var/lib/rpm/__db*

+ 

+ 

+ # Do we need a serial terminal with a VM?

+ if [[ $arch == "aarch64" ]] || [[ $arch == "armv7l" ]]; then

+  # Anaconda adds console=tty0 to the grub boot line on all images. this is problematic

+  # when you are using fedora via serial console as you do not get any output post grub

+  # linux does a good job of knowing what consoles need to be enabled.

+  # https://bugzilla.redhat.com/show_bug.cgi?id=2022757

+  sed -i -e 's|console=tty0||g' /boot/loader/entries/*conf

+ fi

+ 

+ 

+ # Remove machine-id on pre generated images

+ rm -f /etc/machine-id

+ touch /etc/machine-id

+ 

+ %end

+ ##### end kickstart post script #####################################

+ 

+ 

+ ##### begin custom post script (after base) #########################

+ %post

+ 

+ echo "Zeroing out empty space."

+ # Create zeros file with nodatacow and no compression

+ touch /var/tmp/zeros

+ chattr +C /var/tmp/zeros

+ # This forces the filesystem to reclaim space from deleted files

+ dd bs=1M if=/dev/zero of=/var/tmp/zeros || :

+ echo "(Don't worry -- that out-of-space error was expected.)"

+ # Force sync to disk

+ sync /

+ rm -f /var/tmp/zeros

+ sync /

+ 

+ # setup systemd to boot to the right runlevel

+ echo -n "Setting default runlevel to multiuser text mode"

+ rm -f /etc/systemd/system/default.target

+ ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

+ echo .

+ 

+ %end

+ ##### end custom post script ########################################

Fedora Server VM built for x86_64 but failed for aarch64 and ppc64. According to the error message, arch specific partitions were missed (efi and PReP).

Replaced 'part biosboot' and 'part /boot' by 'reqpart --boot' to let Anaconda create the required partitions in front of ROOT.

Why is it changing things like this?

Please rebase and submit a new PR

Pull-Request has been closed by pbrobinson

2 years ago