X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=appliance%2Fmake.sh.in;h=a132ed88872e2bf4a44c3684f4d6bc74d1de089e;hp=32b38194e8af4832877f1338ace09aab438f35a9;hb=a11cb4ac38cf245472d93e8df13c5ac630b883a7;hpb=677b280411cd3596051f288eecb73b5d8ae23caa diff --git a/appliance/make.sh.in b/appliance/make.sh.in index 32b3819..a132ed8 100755 --- a/appliance/make.sh.in +++ b/appliance/make.sh.in @@ -21,158 +21,128 @@ 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 +set -x + +if [ "@DIST@" = "REDHAT" ]; then + 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 of the potential for disaster + # 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 + @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 + 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. -cat > init.new <<'__EOF__' -#!/bin/sh -echo Starting /init script ... -PATH=/sbin:/usr/sbin:$PATH -mount -t tmpfs none /dev -mkdir /dev/pts /dev/shm /dev/mapper -MAKEDEV mem null port zero core full ram tty console fd \ - hda hdb hdc hdd sda sdb sdc sdd loop sd -mknod /dev/ptmx c 5 2; chmod 0666 /dev/ptmx -mknod /dev/random c 1 8; chmod 0666 /dev/random -mknod /dev/urandom c 1 9; chmod 0444 /dev/urandom -mount -t proc /proc /proc -mount -t sysfs /sys /sys -mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts -ln -sf /proc/self/fd/0 /dev/stdin -ln -sf /proc/self/fd/1 /dev/stdout -ln -sf /proc/self/fd/2 /dev/stderr -modprobe virtio_pci -modprobe virtio_net -modprobe dm_mod ||: -/sbin/ifconfig lo 127.0.0.1 -/sbin/ifconfig eth0 10.0.2.10 -/sbin/route add default gw 10.0.2.2 -lvm vgscan --ignorelockingfailure -lvm vgchange -ay --ignorelockingfailure -if grep -sq guestfs_rescue=1 /proc/cmdline; then - bash -i -fi -exec guestfsd -f -__EOF__ + 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 -@FEBOOTSTRAP_INSTALL@ initramfs init.new /init 0755 root.root -rm init.new + ls -lh $koutput -# 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 + # Now directly run the update script to copy/update the daemon in the + # initramfs. + cd appliance && bash update.sh -ls -lh $koutput +elif [ "@DIST@" = "DEBIAN" ]; then + cd @top_builddir@/appliance + debirf make -n debian + mkdir -p @top_builddir@/initramfs + touch @top_builddir@/initramfs/fakeroot.log +fi -# Now directly run the update script to copy/update the daemon in the -# initramfs. -cd appliance && bash update.sh