#!/bin/bash - # @configure_input@ # Copyright (C) 2009 Red Hat Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # This is called from the Makefile to build the initramfs. unset CDPATH set -e cd @top_builddir@ # Decide on names for the final output. These have to match Makefile.am. output=appliance/initramfs.@REPO@.@host_cpu@.img koutput=appliance/vmlinuz.@REPO@.@host_cpu@ rm -f $output rm -f $koutput # Create the basic initramfs. exec 5= 11, it pulls in all of Perl from somewhere. Nuke from orbit. @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /usr/lib/perl5 /usr/lib64/perl5 # Anaconda? JPEG images? @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /usr/lib/anaconda-runtime # Don't need any firmware. @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /lib/firmware # Don't need any keyboard maps. @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /lib/kbd # Remove anything in home directory. Because this is potentially # liable to monstrous fuck-ups, we don't put a slash before 'home'. (cd initramfs && echo home/*) | xargs @FEBOOTSTRAP_RUN@ initramfs -- rm -rf # Remove /var/lib/yum stuff. @FEBOOTSTRAP_RUN@ initramfs -- rm -rf /var/lib/yum # Remove some unreadable binaries which are incompatible with # the supermin appliance. Since these binaries can't be read # from the host filesystem, they generate warnings like: # cpio: ./usr/bin/chfn: Cannot open: Permission denied # These binaries are not needed for operation of the appliance. @FEBOOTSTRAP_RUN@ initramfs -- rm -f \ /usr/bin/chfn \ /usr/bin/chsh \ /usr/libexec/pt_chown \ /usr/sbin/groupdel \ /usr/sbin/groupadd \ /usr/sbin/useradd \ /usr/sbin/tzdata-update \ /usr/sbin/userdel \ /usr/sbin/usermod \ /usr/sbin/groupmod \ /usr/sbin/groupmems \ /sbin/unix_update \ $(cd initramfs && echo usr/sbin/glibc_post_upgrade.*) # Kernel modules take up nearly half of the image. Only include ones # which are on the whitelist. exec 5 hosts.new <<'__EOF__' 127.0.0.1 guestfs localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 __EOF__ @FEBOOTSTRAP_INSTALL@ initramfs hosts.new /etc/hosts 0644 root.root rm hosts.new fi if [ ! -f initramfs/etc/fstab ]; then @FEBOOTSTRAP_RUN@ initramfs -- touch /etc/fstab fi echo nameserver 10.0.2.3 > resolv.conf.new @FEBOOTSTRAP_INSTALL@ initramfs resolv.conf.new /etc/resolv.conf 0644 root.root rm resolv.conf.new # Create the init script. @FEBOOTSTRAP_INSTALL@ initramfs appliance/init /init 0755 root.root # Just in case the kernel isn't looking for /init, make /sbin/init # be our script, not the real init. #@FEBOOTSTRAP_RUN@ initramfs -- ln -f /init /sbin/init ls -lh $koutput # Now directly run the update script to copy/update the daemon in the # initramfs. cd appliance && bash update.sh