2012-08-29 19:43:39 +02:00
|
|
|
#!/bin/bash
|
|
|
|
#%stage: block
|
|
|
|
#
|
2012-08-31 18:14:04 +02:00
|
|
|
|
2012-09-28 14:27:59 +02:00
|
|
|
# copy daemon manually because it is located in RPM_BUILD_ROOT
|
|
|
|
mkdir -vp $tmp_mnt/usr/sbin
|
|
|
|
cp_bin $(type -p guestfsd) $tmp_mnt/usr/sbin
|
2014-01-20 17:32:24 +01:00
|
|
|
# required for mount.nfs inside the appliance
|
|
|
|
for i in /etc/netconfig /etc/protocols /etc/rpc /etc/services
|
|
|
|
do
|
|
|
|
cp $i $tmp_mnt$i
|
|
|
|
done
|
2012-09-28 14:27:59 +02:00
|
|
|
|
2014-01-23 17:54:07 +01:00
|
|
|
# Disable ipv6 because host names resolve to ipv4 and ipv6
|
|
|
|
# Resolver may prefer ipv6 and qemu usernet does only ipv4
|
|
|
|
echo install ipv6 /bin/true >> $tmp_mnt/etc/modprobe.conf.local
|
|
|
|
|
2012-09-03 17:32:29 +02:00
|
|
|
# many guestfish commands need a mount point
|
|
|
|
# in guestfsd the mount point defaults to /sysroot
|
|
|
|
mkdir -vp $tmp_mnt/sysroot
|
|
|
|
|
2012-09-12 11:04:13 +02:00
|
|
|
# guestfsd tries to bind mount this directory
|
|
|
|
mkdir -vp $tmp_mnt/selinux
|
|
|
|
|
2012-08-31 18:14:04 +02:00
|
|
|
for f in /etc/magic /usr/share/misc/magic*
|
|
|
|
do
|
|
|
|
if test -e $f
|
|
|
|
then
|
2012-09-07 17:03:24 +02:00
|
|
|
cp -av --parents $f $tmp_mnt/
|
2012-08-31 18:14:04 +02:00
|
|
|
fi
|
|
|
|
done
|
2012-09-19 17:53:43 +02:00
|
|
|
for d in /usr/share/*augeas*
|
|
|
|
do
|
|
|
|
if test -e $d
|
|
|
|
then
|
|
|
|
cp -av --parents $d $tmp_mnt/
|
|
|
|
fi
|
|
|
|
done
|
2012-08-31 18:14:04 +02:00
|
|
|
|
2012-09-07 17:03:24 +02:00
|
|
|
for t in \
|
|
|
|
screen \
|
|
|
|
vt100 \
|
|
|
|
vt102 \
|
|
|
|
linux
|
|
|
|
do
|
|
|
|
ti="`echo /usr/share/terminfo/*/${t}`"
|
|
|
|
for f in $ti
|
|
|
|
do
|
|
|
|
if test -f "${f}"
|
|
|
|
then
|
|
|
|
cp -av --parents $f $tmp_mnt
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
done
|
2012-09-12 11:53:15 +02:00
|
|
|
|
2013-08-29 21:37:04 +02:00
|
|
|
# copy needed rules
|
|
|
|
for rule in \
|
|
|
|
95-dm-notify.rules \
|
|
|
|
; do
|
|
|
|
if [ -f /lib/udev/rules.d/$rule ]; then
|
|
|
|
cp /lib/udev/rules.d/$rule $tmp_mnt/lib/udev/rules.d
|
|
|
|
elif [ -f /etc/udev/rules.d/$rule ]; then
|
|
|
|
cp /etc/udev/rules.d/$rule $tmp_mnt/etc/udev/rules.d
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2013-08-22 10:10:28 +02:00
|
|
|
# Need to create the modprobe.conf file to force read-write mode
|
|
|
|
if modinfo -k $kernel_version ext4 | grep -E '^parm:[[:blank:]]+rw:'
|
|
|
|
then
|
|
|
|
mkdir -vp "${tmp_mnt}/etc/modprobe.d"
|
|
|
|
echo "options ext4 rw=1" >> "${tmp_mnt}/etc/modprobe.d/ext4-kmp-rw.conf"
|
|
|
|
fi
|
|
|
|
|
2012-09-12 11:53:15 +02:00
|
|
|
# Bug 674684 - mount-rootfs-and-do-chroot.sh
|
|
|
|
cat > $tmp_mnt/bin/mount-rootfs-and-do-chroot.sh <<'__EOF__'
|
|
|
|
#!/bin/bash
|
|
|
|
# Usage: $0 /dev/sda5
|
|
|
|
rootfs=$1
|
|
|
|
mnt=/sysroot
|
|
|
|
mounts=
|
|
|
|
|
|
|
|
if test -b "${rootfs}"
|
|
|
|
then
|
|
|
|
|
|
|
|
mkdir -v -p "${mnt}"
|
|
|
|
|
|
|
|
if mount -v "${rootfs}" "${mnt}"
|
|
|
|
then
|
|
|
|
|
2013-08-22 09:48:54 +02:00
|
|
|
for i in dev dev/pts proc sys selinux
|
2012-09-12 11:53:15 +02:00
|
|
|
do
|
2012-09-24 11:02:45 +02:00
|
|
|
if test -d /${i} && test -d "${mnt}/${i}" && test "`stat -c %D /`" != "`stat -c %D ${i}`"
|
2012-09-12 11:53:15 +02:00
|
|
|
then
|
|
|
|
mount -v --bind /${i} "${mnt}/${i}"
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
chroot "${mnt}" su -
|
|
|
|
|
|
|
|
while read b m rest
|
|
|
|
do
|
|
|
|
case "${m}" in
|
|
|
|
${mnt}*)
|
|
|
|
mounts="${m} ${mounts}"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done <<-EOF
|
|
|
|
`
|
|
|
|
cat < /proc/mounts
|
|
|
|
`
|
|
|
|
EOF
|
|
|
|
|
|
|
|
for i in ${mounts}
|
|
|
|
do
|
|
|
|
umount -v "${i}"
|
|
|
|
done
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
fi
|
|
|
|
__EOF__
|
|
|
|
|