X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=appliance%2Fmake.sh.in;h=cb243b55c6dfcf6bd5fda2f449d8ec55ce9e29e6;hp=637bd07e1b02caaa733b3a94f620cd5129547335;hb=dc8e4b057ecd3984d7c27c8e;hpb=b7f39224e17eecf53ea2671122d4b3176e4d202f;ds=sidebyside diff --git a/appliance/make.sh.in b/appliance/make.sh.in index 637bd07..cb243b5 100755 --- a/appliance/make.sh.in +++ b/appliance/make.sh.in @@ -1,6 +1,6 @@ #!/bin/bash - # @configure_input@ -# Copyright (C) 2009 Red Hat Inc. +# Copyright (C) 2009-2010 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 @@ -16,131 +16,51 @@ # 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 +# Run febootstrap on the package list. +if [ "x@FEBOOTSTRAP_YUM_CONFIG@" != "xno" ]; then + extra="--yum-config @FEBOOTSTRAP_YUM_CONFIG@" fi -if [ ! -f initramfs/etc/fstab ]; then - @FEBOOTSTRAP_RUN@ initramfs -- touch /etc/fstab +echo @FEBOOTSTRAP@ -v -o supermin.d --names $(< packagelist ) $excludes $extra +@FEBOOTSTRAP@ -v -o supermin.d --names $(< packagelist ) $excludes $extra + +# Remove some things that we don't want in the appliance. This is +# copied from the old febootstrap-minimize. However minimization is +# not so important now that we are caching the appliance. +< supermin.d/hostfiles \ +grep -v '^/usr/lib/locale' | +grep -v '^/usr/share/locale' | +grep -v '^/usr/lib/gconv' | +grep -v '^/usr/lib64/gconv' | +grep -v '^/usr/bin/localedef' | +grep -v '^/usr/sbin/build-locale-archive' | +grep -v '^/usr/share/man/' | +grep -v '^/usr/share/doc/' | +grep -v '^/usr/share/info/' | +grep -v '^/usr/share/gnome/help/' | +grep -v '^/usr/share/cracklib/' | +grep -v '^/usr/share/i18n/' > supermin.d/hostfiles-t + +# XXX resolv.conf? The old script had: +# echo nameserver 169.254.2.3 > resolv.conf +if ! grep -q /etc/resolv.conf supermin.d/hostfiles-t; then + echo /etc/resolv.conf >> supermin.d/hostfiles-t 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 +# Include any Augeas lenses from the host. +if grep -q /usr/share/augeas/lenses supermin.d/hostfiles-t; then + echo "/usr/share/augeas/lenses/*.aug" >> supermin.d/hostfiles-t +fi -# Now directly run the update script to copy/update the daemon in the -# initramfs. -cd appliance && bash update.sh +mv supermin.d/hostfiles-t supermin.d/hostfiles