Testing Red Hat Enterprise Linux 7 and CentOS 7 (preview)
Last week, 'Red Hat'_ released the final version of Red Hat Enterprise Linux version 7. A few days later the CentOS project made a first preview version of CentOS 7 available. Since many of our customers are running on RHEL 6 and/or CentOS 6, now was a good time to look into the newly release 7.0 version.
Both the CentOS-7 and RHEL-7 installations completed without any problems, something that was still giving more then enough issues during the beta and release-candidate stages of RHEL-7. We tested the ‘default’ graphical install, the text-based install and kickstart installs in both graphical and text-modes. Currently we’re fine-tuning our kickstart configuration for the 7 releases, so installs can be fully automated and fast. Kickstart Configuration
At this time, our kickstart looks somewhat like this (censored to protect sensitive data):
#version=RHEL7 # System authorization information auth --enableshadow --passalgo=sha512 # Use network installation url --url="http://buildlogs.centos.org/centos/7/os/x86_64-20140614/" # Use text mode install text # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp --device=eth0 --ipv6=auto --activate network --hostname=centos7previewkickstarttest # Root password rootpw some-password # Do not configure the X Window System skipx # System timezone timezone Europe/Amsterdam --isUtc #user --groups=wheel --name=useraccount --password=some-password --gecos="User" # Skip EULA eula --agreed # Disable firewall firewall --disabled # Don't run the Setup Agent on first boot firstboot --disabled # Selinux (ENFORCING|permissive|disabled) selinux --enforcing # Reboot the machine when the installation is finished, eject CD reboot --eject # Enable SSH services services --enabled sshd # Include auto-generated disk-config %include /tmp/include.me %packages # Core and base are default, just specify them anyway to make this clear # Then unselect the 'default' marked packages from core and base, which we don't need %packages @core @base # default from core -aic94xx-firmware -alsa-firmware -bfa-firmware -dracut-config-rescue -ivtv-firmware -iwl1000-firmware -iwl100-firmware -iwl105-firmware -iwl135-firmware -iwl2000-firmware -iwl2030-firmware -iwl3160-firmware -iwl3945-firmware -iwl4965-firmware -iwl5000-firmware -iwl5150-firmware -iwl6000-firmware -iwl6000g2a-firmware -iwl6000g2b-firmware -iwl6050-firmware -iwl7260-firmware -kernel-tools -libertas-sd8686-firmware -libertas-sd8787-firmware -libertas-usb8388-firmware -microcode_ctl -NetworkManager -NetworkManager-tui -ql2100-firmware -ql2200-firmware -ql23xx-firmware postfix linux-firmware # default from base -abrt-addon-ccpp -abrt-addon-python -abrt-cli -abrt-console-notification bash-completion -blktrace bridge-utils bzip2 chrony -cryptsetup -dmraid -dosfstools ethtool -fprintd-pam -gnupg2 -hunspell-en -hunspell -kpatch -ledmon -libaio -libreport-plugin-mailx -libstoragemgmt lvm2 man-pages-overrides man-pages mdadm mlocate mtr nano ntpdate -pinfo -plymouth pm-utils -rdate -rfkill rng-tools rsync -scl-utils -setuptool smartmontools -sos -sssd-client strace sysstat -systemtap-runtime tcpdump -tcsh -teamd time unzip usbutils vim-enhanced virt-what wget which -words xfsdump xz -yum-langpacks -yum-plugin-security yum-utils zip acpid redhat-lsb-core %end %pre #!/bin/bash # Check physical and virtio disks for disk in /sys/block/sd* /sys/block/vd* do dsk=$(basename $disk) if [[ `cat $disk/ro` -eq 1 ]]; then echo "Skipping disk $dsk: READONLY" continue; fi if [[ `cat $disk/removable` -eq 1 ]]; then echo "Skipping disk $dsk: REMOVABLE" continue; fi if [[ `cat $disk/size` -lt 20971520 ]]; then echo "Skipping disk $dsk: Smaller then 10G" continue; else echo "Using disk $dsk" chosen=$dsk; break; fi done incfile=/tmp/include.me > $incfile if [[ -n $chosen ]]; then echo "zerombr" >> $incfile echo "bootloader --location=mbr --driveorder=$chosen --append=\"nomodeset console=tty0 console=ttyS0,115200n8\"" >> $incfile echo "ignoredisk --only-use=$chosen" >> $incfile echo "clearpart --all --initlabel --drives=$chosen" >> $incfile echo "part /boot --fstype=ext3 --asprimary --size=256" >> $incfile echo "part pv.$chosen --grow --size=15000" >> $incfile echo "volgroup vg00 --pesize=32768 pv.$chosen" >> $incfile echo "logvol / --fstype=xfs --name=root --vgname=vg00 --size=4096" >> $incfile echo "logvol swap --name=swap --vgname=vg00 --size=256" >> $incfile else echo "" > $incfile fi %end # PostInstall stuff %post --log=/root/anaconda-postinstall.log #!/bin/sh cd / echo "GRUB_TERMINAL=\"serial console\"" >> /etc/default/grub echo "GRUB_TERMINAL_OUTPUT=\"serial console\"" >> /etc/default/grub echo "GRUB_SERIAL_COMMAND=\"serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1\"" >> /etc/default/grub echo "#!/bin/sh" > /usr/local/sbin/update-grub echo "grub2-mkconfig -o /boot/grub2/grub.cfg" >> /usr/local/sbin/update-grub chmod +x /usr/local/sbin/update-grub /usr/local/sbin/update-grub echo "[base-c7-preview]" > /etc/yum.repos.d/c7-preview.repo echo "name=CentOS-7-Preview" >> /etc/yum.repos.d/c7-preview.repo echo "baseurl=http://buildlogs.centos.org/centos/7/os/x86_64-20140614/" >> /etc/yum.repos.d/c7-preview.repo echo "enabled=1" >> /etc/yum.repos.d/c7-preview.repo echo "gpgcheck=0" >> /etc/yum.repos.d/c7-preview.repo %end
This kickstart configuration will try to install a minimal CentOS 7 (preview) system, on the first available disk that is non-removable and bigger then 10GB. It will use LVM and create a 4GB root filesystem, leaving the remaining diskspace free for later use.
It will also configure grub to react on serial input and the vga console, and also configure the kernel and getty’s to work on both serial and vga consoles. It will configure the centos7-preview repository, so installing extra software should be easy. The current install is optimized for virtual machines, and doesn’t install anything related to sound, wifi, network-manager etc.
The entire install will end up being about 840MB, and includes all requirements for running ansible playbooks, so ansible can be used to further configure the system after initial installation. Most notable changes
The major changes that you will run into, if you are used to CentOS/RHEL 5 and 6 are:
Systemd is now used as init system, with all required changes that come with it
BTRFS and XFS are supported, and the system can use either as a root filesystem (xfs was available in centos/redhat 6, but not usable as root or boot filesystem)
On installs with X and a desktop, you will now get a Gnome 3 Classic based desktop. Luckily a tweak-tool is available and installed by default, which will allow you to tune the desktop somewhat.