Bug 1145130

Summary: initial-setup is not started with "incorrect" anaconda kickstart
Product: [Fedora] Fedora Reporter: Fabian Deutsch <fdeutsch>
Component: initial-setupAssignee: Martin Kolman <mkolman>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 22CC: mkolman, vpodzime
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-05-24 09:57:24 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Fabian Deutsch 2014-09-22 12:38:40 UTC
Description of problem:
I'm using an F21 kernel/initrd+squashfs (to get a new anaconda), but I'm installing from a F19 tree.
Initial-setup fails to come up at first boot, because the anaconda-kickstart (which is put down after installation by anaconda) is to new for initial setup, and contains directives unknown to initial-setup.

Version-Release number of selected component (if applicable):
F19
F21

How reproducible:
always

Steps to Reproduce:
1. Use F21 boot media to install F19, enable initial-setup in ks
2. Reboot
3.

Actual results:
Host boots directly into login prompt, initial-setup does not come up

Expected results:
Host boots directly into initial-setup

Additional info:
The problem is that the kikckstart which are unknown to initial-setup from F19.

Maybe initial-setup can be more relaxed on parsing the kcikstart.





    ##############################################################################
    ### file 1 of 2: err
    ##############################################################################
    The following problem occurred on line 274 of the kickstart file:
     
    no such option: --disable
     
    ##############################################################################
    ### file 2 of 2: anaconda-ks.cfg
    ##############################################################################
    #version=DEVEL
    # System authorization information
    auth --useshadow --enablemd5
    repo --name="fedora" --baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/19/Fedora/x86_64/os/
    repo --name="updates" --baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/19/x86_64/
    # Shutdown after installation
    shutdown
    # Use network installation
    url --url="http://download.fedoraproject.org/pub/fedora/linux/releases/19/Everything/x86_64/os/"
    cmdline
    # Firewall configuration
    firewall --disabled
    # Run the Setup Agent on first boot
    firstboot --enable
    ignoredisk --only-use=sda,zram0,zram1,zram2,zram3
    # Keyboard layouts
    # old format: keyboard us
    # new format:
    keyboard --vckeymap=us --xlayouts='us'
    # System language
    lang en_US.UTF-8
     
    # Network information
    network  --bootproto=dhcp --activate
    network  --hostname=localhost.localdomain
    # Root password
    rootpw --iscrypted --lock locked
    # SELinux configuration
    selinux --enforcing
    # System services
    services --enabled="network,sshd,initial-setup-text,rsyslog,cloud-init,cloud-init-local,cloud-config,cloud-final"
    # Do not configure the X Window System
    skipx
    # System timezone
    timezone Etc/UTC --isUtc
    user --groups=wheel --name=admin --password=none
    user --name=none
    # System bootloader configuration
    bootloader --location=mbr --timeout=1 --boot-drive=sda
    # Clear the Master Boot Record
    zerombr
    # Partition clearing information
    clearpart --all
    # Disk partitioning information
    part / --fstype="ext4" --size=5000
     
    %post --erroronfail
    #
    echo "Preparing initial-setup"
    #
    yum install -y initial-setup plymouth
    touch /etc/reconfigSys
    systemctl enable initial-setup-text.service
    systemctl disable initial-setup-graphical.service
     
    # Default tty is ttyS0, to display initial-setup on tty0 we need to set this explicitly
    sed -i \
      -e "/^StandardOutput/ a TTYPath=/dev/console" \
      -e "/^Description/ a Before=cloud-init-local.service cloud-init.service" \
      /usr/lib/systemd/system/initial-setup-text.service
    %end
     
    %post --erroronfail
    #
    echo "Pre-Installing oVirt stuff"
    #
    yum install -y http://resources.ovirt.org/pub/yum-repo/ovirt-release35.rpm
    yum install -y ovirt-engine ovirt-guest-agent
     
    #
    echo "Creating a partial answer file"
    #
    cat > /root/ovirt-engine-answers <<__EOF__
    [environment:default]
    OVESETUP_CORE/engineStop=none:None
    OVESETUP_DIALOG/confirmSettings=bool:True
    OVESETUP_DB/database=str:engine
    OVESETUP_DB/fixDbViolations=none:None
    OVESETUP_DB/secured=bool:False
    OVESETUP_DB/securedHostValidation=bool:False
    OVESETUP_DB/host=str:localhost
    OVESETUP_DB/user=str:engine
    OVESETUP_DB/port=int:5432
    OVESETUP_SYSTEM/nfsConfigEnabled=bool:False
    OVESETUP_CONFIG/applicationMode=str:virt
    OVESETUP_CONFIG/firewallManager=str:firewalld
    OVESETUP_CONFIG/websocketProxyConfig=none:True
    OVESETUP_CONFIG/storageType=str:nfs
    OVESETUP_PROVISIONING/postgresProvisioningEnabled=bool:True
    OVESETUP_APACHE/configureRootRedirection=bool:True
    OVESETUP_APACHE/configureSsl=bool:True
    OSETUP_RPMDISTRO/requireRollback=none:None
    OSETUP_RPMDISTRO/enableUpgrade=none:None
    __EOF__
    %end
     
    %post --erroronfail
    #
    echo "Enabling sudo for wheels"
    #
    sed -i "/%wheel.*NOPASSWD/ s/^#//" /etc/sudoers
    passwd --delete root
    passwd --expire root
    %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)" >> /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 .
     
    # If you want to remove rsyslog and just use journald, remove this!
    echo -n "Disabling persistent journal"
    rmdir /var/log/journal/
    echo .
     
    # this is installed by default but we don't need it in virt
    echo "Removing linux-firmware package."
    #yum -C -y remove linux-firmware
     
    # Remove firewalld; was supposed to be optional in F18+, but is required to
    # be present for install/image building.
    echo "Removing firewalld."
    #yum -C -y remove firewalld --setopt="clean_requirements_on_remove=1"
     
    # Another one needed at install time but not after that, and it pulls
    # in some unneeded deps (like, newt and slang)
    echo "Removing authconfig."
    #yum -C -y remove authconfig --setopt="clean_requirements_on_remove=1"
     
    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.
    cat > /etc/sysconfig/network << EOF
    NETWORKING=yes
    NOZEROCONF=yes
    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-name-slot.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 <<EOF > /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 yum repodata."
    yum history new
    yum clean all
    truncate -c -s 0 /var/log/yum.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-19-x86_64
     
    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*
     
     
    echo "Fixing SELinux contexts."
    touch /var/log/cron
    touch /var/log/boot.log
    mkdir -p /var/cache/yum
    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.)"
     
    %end
     
    %packages --ignoremissing
    @core
    cloud-init
    cloud-utils-growpart
    dracut-config-generic
    dracut-modules-growroot
    firewalld
    grubby
    heat-cfntools
    initial-setup
    kernel-core
    rsync
    syslinux-extlinux
    tar
     
    %end
     
    %addon com_redhat_kdump --disable --reserve-mb='128'
     
    %end

Comment 1 Fedora End Of Life 2015-01-09 21:31:27 UTC
This message is a notice that Fedora 19 is now at end of life. Fedora 
has stopped maintaining and issuing updates for Fedora 19. It is 
Fedora's policy to close all bug reports from releases that are no 
longer maintained. Approximately 4 (four) weeks from now this bug will
be closed as EOL if it remains open with a Fedora 'version' of '19'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version.

Thank you for reporting this issue and we are sorry that we were not 
able to fix it before Fedora 19 is end of life. If you would still like 
to see this bug fixed and are able to reproduce it against a later version 
of Fedora, you are encouraged  change the 'version' to a later Fedora 
version prior this bug is closed as described in the policy above.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events. Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

Comment 2 Vratislav Podzimek 2015-01-12 08:54:01 UTC
I believe this is still an issue even with rawhide initial-setup. Martin, can you please have a look at this? We may need some kickstart parsing that ignores errors to be added to pykickstart and then use it in the Initial Setup to get all the info that can be get from the anaconda-ks.cfg file ignoring errors on some lines.

Comment 3 Jaroslav Reznik 2015-03-03 16:18:55 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 22 development cycle.
Changing version to '22'.

More information and reason for this action is here:
https://fedoraproject.org/wiki/Fedora_Program_Management/HouseKeeping/Fedora22

Comment 4 Fabian Deutsch 2015-03-19 10:14:29 UTC
Hey, this is still an issue for me.

I tried rolling out a Centos 7 image using the Fedora 21 and 22 installer.

It would be nice if initial-setup would at least spit out a message.

Comment 5 Fabian Deutsch 2015-03-19 10:18:20 UTC
It is basically fixed in master, a small improvement:

https://github.com/fabiand/initial-setup/commit/088b15053276ba6ba5050ce6025748023276effe

Comment 6 Mike McCune 2016-03-28 23:07:19 UTC
This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions