From 42de2111461b10e9a65bafdf5e7530bc76abcb4f Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Tue, 12 Apr 2016 14:22:03 +0100 Subject: [PATCH] Cloud: Base: add arm config, use includes for ppc config --- fedora-cloud-base-arm.ks | 6 + fedora-cloud-base-ppc.ks | 262 +-------------------------------------- fedora-cloud-base.ks | 2 +- 3 files changed, 8 insertions(+), 262 deletions(-) create mode 100644 fedora-cloud-base-arm.ks diff --git a/fedora-cloud-base-arm.ks b/fedora-cloud-base-arm.ks new file mode 100644 index 0000000..03be955 --- /dev/null +++ b/fedora-cloud-base-arm.ks @@ -0,0 +1,6 @@ +%include fedora-cloud-base.ks + +bootloader --timeout=1 --append="no_timer_check console=tty1 console=ttyS0,115200n8" + +part /boot --fstype="ext4" --size=500 +part /boot/efi --fstype="vfat" --size=100 diff --git a/fedora-cloud-base-ppc.ks b/fedora-cloud-base-ppc.ks index 16cf560..62c2c7d 100644 --- a/fedora-cloud-base-ppc.ks +++ b/fedora-cloud-base-ppc.ks @@ -1,265 +1,5 @@ -# This is a basic Fedora 21 spin designed to work in OpenStack and other -# private cloud environments. It's configured with cloud-init so it will -# take advantage of ec2-compatible metadata services for provisioning ssh -# keys. Cloud-init creates a user account named "fedora" with passwordless -# sudo access. The root password is empty and locked by default. -# -# Note that unlike the standard F20 install, this image has /tmp on disk -# rather than in tmpfs, since memory is usually at a premium. -# -# This kickstart file is designed to be used with ImageFactory (in Koji). -# -# To do a local build, you'll need to install ImageFactory. See -# http://worknotes.readthedocs.org/en/latest/cloudimages.html for some notes. -# -# For a TDL file, I store one here: -# https://git.fedorahosted.org/cgit/fedora-atomic.git/tree/fedora-atomic-rawhide.tdl -# (Koji generates one internally...what we really want is Koji to publish it statically) -# -# Once you have imagefactory and imagefactory-plugins installed, run: -# -# curl -O https://git.fedorahosted.org/cgit/fedora-atomic.git/plain/fedora-atomic-rawhide.tdl -# tempfile=$(mktemp --suffix=.ks) -# ksflatten -v F22 -c fedora-cloud-base.ks > ${tempfile} -# imagefactory --debug base_image --file-parameter install_script ${tempfile} fedora-atomic-rawhide.tdl -# - -cmdline -lang en_US.UTF-8 -keyboard us -timezone --utc Etc/UTC - -auth --useshadow --passalgo=sha512 -selinux --enforcing -rootpw --lock --iscrypted locked -user --name=none - -firewall --disabled +%include fedora-cloud-base.ks bootloader --timeout=1 --append="no_timer_check console=tty1 console=ttyS0,115200n8" -network --bootproto=dhcp --device=link --activate --onboot=on -services --enabled=network,sshd,rsyslog,cloud-init,cloud-init-local,cloud-config,cloud-final - -zerombr -clearpart --all part prepboot --fstype="prepboot" --size=4 -part / --size 3000 --fstype ext4 --grow - -%include fedora-repo.ks - -reboot - -# Package list. -# FIXME: instLangs does not work, so there's a hack below -# (see https://bugzilla.redhat.com/show_bug.cgi?id=1051816) -# FIXME: instLangs bug has been fixed but now having instLangs -# with an arg causes no langs to get installed because of BZ1262040 -# which yields the errors in BZ1261249. For now fix by not using -# --instLangs at all -#%packages --instLangs=en -%packages - -kernel-core -@^cloud-server-environment - -# rescue mode generally isn't useful in the cloud context --dracut-config-rescue - -# Some things from @core we can do without in a minimal install --biosdevname -# Need to also add back plymouth in order to mask failure of -# systemd-vconsole-setup.service. BZ#1272684. Comment out for now -#-plymouth --NetworkManager --iprutils -# Now that BZ#1199868 is fixed kbd really gets removed but it breaks -# systemd-vconsole-setup.service on boot. Comment out for now -#-kbd --uboot-tools --syslinux-extlinux --kernel - -%end - - - -%post --erroronfail - -# Create grub.conf for EC2. This used to be done by appliance creator but -# anaconda doesn't do it. And, in case appliance-creator is used, we're -# overriding it here so that both cases get the exact same file. -# Note that the console line is different -- that's because EC2 provides -# different virtual hardware, and this is a convenient way to act differently -echo -n "Creating grub.conf for pvgrub" -rootuuid=$( awk '$2=="/" { print $1 };' /etc/fstab ) -mkdir /boot/grub -echo -e 'default=0\ntimeout=0\n\n' > /boot/grub/grub.conf -for kv in $( ls -1v /boot/vmlinuz* |grep -v rescue |sed s/.*vmlinuz-// ); do - echo "title Fedora ($kv)" >> /boot/grub/grub.conf - echo -e "\troot (hd0,0)" >> /boot/grub/grub.conf - echo -e "\tkernel /boot/vmlinuz-$kv ro root=$rootuuid no_timer_check console=hvc0 LANG=en_US.UTF-8" >> /boot/grub/grub.conf - echo -e "\tinitrd /boot/initramfs-$kv.img" >> /boot/grub/grub.conf - echo -done - - -#link grub.conf to menu.lst for ec2 to work -echo -n "Linking menu.lst to old-style grub.conf for pv-grub" -ln -sf grub.conf /boot/grub/menu.lst -ln -sf /boot/grub/grub.conf /etc/grub.conf - -# older versions of livecd-tools do not follow "rootpw --lock" line above -# https://bugzilla.redhat.com/show_bug.cgi?id=964299 -passwd -l root -# remove the user anaconda forces us to make -userdel -r none - -# Kickstart specifies timeout in seconds; syslinux uses 10ths. -# 0 means wait forever, so instead we'll go with 1. -sed -i 's/^timeout 10/timeout 1/' /boot/extlinux/extlinux.conf - -# 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 . - -# this is installed by default but we don't need it in virt -# Commenting out the following for #1234504 -# rpm works just fine for removing this, no idea why dnf can't cope -echo "Removing linux-firmware package." -rpm -e linux-firmware - -# Remove firewalld; was supposed to be optional in F18+, but is pulled in -# in install/image building. -echo "Removing firewalld." -# FIXME! clean_requirements_on_remove is the default with DNF, but may -# not work when package was installed by Anaconda instead of command line. -# Also -- check if this is still even needed with new anaconda -- disabled -# firewall should _not_ pull in this package. -# yum -C -y remove "firewalld*" --setopt="clean_requirements_on_remove=1" -dnf -C -y erase "firewalld*" - -# Another one needed at install time but not after that, and it pulls -# in some unneeded deps (like, newt and slang) -echo "Removing authconfig." -dnf -C -y erase authconfig - -# instlang hack. (Note! See bug referenced above package list) -find /usr/share/locale -mindepth 1 -maxdepth 1 -type d -not -name en_US -exec rm -rf {} + -localedef --list-archive | grep -v ^en_US | xargs localedef --delete-from-archive -# this will kill a live system (since it's memory mapped) but should be safe offline -mv -f /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl -build-locale-archive -echo '%_install_langs C:en:en_US:en_US.UTF-8' >> /etc/rpm/macros.image-language-conf -awk '(NF==0&&!done){print "override_install_langs='$LANG'";done=1}{print}' \ - < /etc/yum.conf > /etc/yum.conf.new -mv /etc/yum.conf.new /etc/yum.conf - - -echo -n "Getty fixes" -# although we want console output going to the serial console, we don't -# actually have the opportunity to login there. FIX. -# we don't really need to auto-spawn _any_ gettys. -sed -i '/^#NAutoVTs=.*/ a\ -NAutoVTs=0' /etc/systemd/logind.conf - -echo -n "Network fixes" -# initscripts don't like this file to be missing. -# and https://bugzilla.redhat.com/show_bug.cgi?id=1204612 -cat > /etc/sysconfig/network << EOF -NETWORKING=yes -NOZEROCONF=yes -DEVTIMEOUT=10 -EOF - -# For cloud images, 'eth0' _is_ the predictable device name, since -# we don't want to be tied to specific virtual (!) hardware -rm -f /etc/udev/rules.d/70* -ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules - -# simple eth0 config, again not hard-coded to the build hardware -cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF -DEVICE="eth0" -BOOTPROTO="dhcp" -ONBOOT="yes" -TYPE="Ethernet" -PERSISTENT_DHCLIENT="yes" -EOF - -# generic localhost names -cat > /etc/hosts << EOF -127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 -::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 - -EOF -echo . - - -# Because memory is scarce resource in most cloud/virt environments, -# and because this impedes forensics, we are differing from the Fedora -# default of having /tmp on tmpfs. -echo "Disabling tmpfs for /tmp." -systemctl mask tmp.mount - -# make sure firstboot doesn't start -echo "RUN_FIRSTBOOT=NO" > /etc/sysconfig/firstboot - -# Uncomment this if you want to use cloud init but suppress the creation -# of an "ec2-user" account. This will, in the absence of further config, -# cause the ssh key from a metadata source to be put in the root account. -#cat < /etc/cloud/cloud.cfg.d/50_suppress_ec2-user_use_root.cfg -#users: [] -#disable_root: 0 -#EOF - -echo "Removing random-seed so it's not the same in every image." -rm -f /var/lib/random-seed - -echo "Cleaning old dnf repodata." -# FIXME: clear history? -dnf clean all -truncate -c -s 0 /var/log/dnf.log -truncate -c -s 0 /var/log/dnf.rpm.log - -echo "Import RPM GPG key" -releasever=$(rpm -q --qf '%{version}\n' fedora-release) -basearch=$(uname -i) -rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch - -echo "Packages within this cloud image:" -echo "-----------------------------------------------------------------------" -rpm -qa -echo "-----------------------------------------------------------------------" -# Note that running rpm recreates the rpm db files which aren't needed/wanted -rm -f /var/lib/rpm/__db* - - -# This is a temporary workaround for -# -# where sfdisk seems to be messing up the mbr. -# Long-term fix is to address this in anaconda directly and remove this. -# -dd if=/usr/share/syslinux/mbr.bin of=/dev/vda - - -# FIXME: is this still needed? -echo "Fixing SELinux contexts." -touch /var/log/cron -touch /var/log/boot.log -chattr -i /boot/extlinux/ldlinux.sys -/usr/sbin/fixfiles -R -a restore -chattr +i /boot/extlinux/ldlinux.sys - -echo "Zeroing out empty space." -# This forces the filesystem to reclaim space from deleted files -dd bs=1M if=/dev/zero of=/var/tmp/zeros || : -rm -f /var/tmp/zeros -echo "(Don't worry -- that out-of-space error was expected.)" - -# For trac ticket https://fedorahosted.org/cloud/ticket/128 -rm -f /etc/sysconfig/network-scripts/ifcfg-ens3 - -%end - diff --git a/fedora-cloud-base.ks b/fedora-cloud-base.ks index 907c4ac..c53fd8c 100644 --- a/fedora-cloud-base.ks +++ b/fedora-cloud-base.ks @@ -43,7 +43,7 @@ services --enabled=network,sshd,rsyslog,cloud-init,cloud-init-local,cloud-config zerombr clearpart --all -part / --size 3000 --fstype ext4 --grow +part / --fstype ext4 --grow %include fedora-repo.ks