if [ -n "${DNSDOMAIN}" ]
then
echo "domain ${DNSDOMAIN}" > /etc/resolv.conf
- echo "search ${DNSDOMAIN}" > /etc/resolv.conf
+ echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
fi
for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
do
- echo "nameserver $i" >> /etc/resolv.conf
+ if [ -n "$i" ] && [ "$i" != 0.0.0.0 ]
+ then
+ echo "nameserver $i" >> /etc/resolv.conf
+ fi
done
fi
# Look for ${snap_label}.* in block devices
snap_label="${1}"
black_listed_devices="${2}"
+ white_listed_devices="${3}"
if [ "${PERSISTENT}" != "nofiles" ]
then
# search for image files
- snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}")
+ snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}" "${white_listed_devices}")
fi
if [ -z "${snapdata}" ]
then
- snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}")
+ snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}" "${white_listed_devices}")
fi
echo "${snapdata}"
}
fi
# search for label and files (this could be hugely optimized)
- cowprobe=$(find_cow_device "${root_persistence}")
+ cowprobe=$(find_cow_device "${root_persistence}" "${blacklistdev}" "${whitelistdev}")
if [ -b "${cowprobe}" ]
then
# Blacklist /cow device, to avoid inconsistent setups for overlapping snapshots
export PERSISTENCE_IS_ON
fi
# homecow just mount something on /home, this should be generalized some way
- homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}")
+ homecow=$(find_cow_device "${home_persistence}" "${blacklistdev}" "${whitelistdev}")
if [ -b "${homecow}" ]
then
PERSISTENCE_IS_ON="1"
export PERSISTENCE_IS_ON
fi
- root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}")
+ root_snapdata=$(find_snap "${root_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
# This second type should be removed when snapshot will get smarter,
# hence when "/etc/live-snapshot*list" will be supported also by
# ext2|ext3|ext4|jffs2 snapshot types.
- home_snapdata=$(find_snap "${home_snapshot_label}" "${blacklistdev}")
+ home_snapdata=$(find_snap "${home_snapshot_label}" "${blacklistdev}" "${whitelistdev}")
if [ -b "${cowprobe}" ]
then
unionmountopts="${unionmountopts} ${unionrw}=RW:${unionro}=RO"
( sysctl -w fs.file-max=391524 ; ulimit -HSn 16384
unionfs-fuse ${unionmountopts} "${unionmountpoint}" ) && \
- ( mkdir -p /dev/.initramfs/varrun
- pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true )
+ ( mkdir -p /run/sendsigs.omit.d
+ pidof unionfs-fuse >> /run/sendsigs.omit.d/unionfs-fuse || true )
;;
unionmount)
loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '')
devname="${loopdevname}"
else
- echo "Warning: unable to mount $ISO_DEVICE." >>/live.log
+ echo "Warning: unable to mount $ISO_DEVICE." >>/live-boot.log
+ fi
fi
fi
umount $mountpoint
fi
fi
+
+ IFS=","
+ for device in ${devname}
+ do
+ case "$device" in
+ *mapper*)
+ # Adding lvm support
+ if [ -x /scripts/local-top/lvm2 ]
+ then
+ ROOT="$device" resume="" /scripts/local-top/lvm2
+ fi
+ ;;
+
+ /dev/md*)
+ # Adding raid support
+ if [ -x /scripts/local-top/mdadm ]
+ then
+ cp /conf/conf.d/md /conf/conf.d/md.orig
+ echo "MD_DEVS=$device " >> /conf/conf.d/md
+ /scripts/local-top/mdadm
+ mv /conf/conf.d/md.orig /conf/conf.d/md
+ fi
+ ;;
+ esac
+ done
+ unset IFS
+
+ [ -n "$device" ] && devname="$device"
+
[ -e "$devname" ] || continue
if [ -n "${LIVE_MEDIA_OFFSET}" ]
# first look at the one specified in the command line
case "${LIVE_MEDIA}" in
removable-usb)
- for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)")
+ for sysblock in $(removable_usb_dev "sys")
do
- if [ "$(cat ${sysblock}/removable)" = "1" ]
- then
- if readlink ${sysblock} | grep -q usb
+ for dev in $(subdevices "${sysblock}")
+ do
+ if check_dev "${dev}"
then
- for dev in $(subdevices "${sysblock}")
- do
- if check_dev "${dev}"
- then
- return 0
- fi
- done
+ return 0
fi
- fi
+ done
done
return 1
;;
removable)
- for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)")
+ for sysblock in $(removable_dev "sys")
do
- if [ "$(cat ${sysblock}/removable)" = "1" ]
- then
- for dev in $(subdevices "${sysblock}")
- do
- if check_dev "${dev}"
- then
- return 0
- fi
- done
- fi
+ for dev in $(subdevices "${sysblock}")
+ do
+ if check_dev "${dev}"
+ then
+ return 0
+ fi
+ done
done
return 1
;;
# or do the scan of block devices
# prefer removable devices over non-removable devices, so scan them first
- for sysblock in $(echo /sys/block/* | tr ' ' '\n' | egrep -v "/(loop|ram|dm-|fd)")
- do
- if [ "$(cat ${sysblock}/removable)" = "1" ]
- then
- removable_devices_to_scan="$removable_devices_to_scan $sysblock"
- else
- nonremovable_devices_to_scan="$nonremovable_devices_to_scan $sysblock"
- fi
- done
- devices_to_scan="$removable_devices_to_scan $nonremovable_devices_to_scan"
+ devices_to_scan="$(removable_dev 'sys') $(non_removable_dev 'sys')"
for sysblock in $devices_to_scan
do
log_end_msg
fi
+ if [ -f /etc/resolv.conf ] && [ ! -s ${rootmnt}/etc/resolv.conf ]
+ then
+ log_begin_msg "Copying /etc/resolv.conf to ${rootmnt}/etc/resolv.conf"
+ cp -v /etc/resolv.conf ${rootmnt}/etc/resolv.conf
+ log_end_msg
+ fi
+
maybe_break live-bottom
log_begin_msg "Running /scripts/live-bottom\n"