X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Fcasper;h=4d6c1a5fc1558d45c185e1fd0f50429d07ccbb86;hb=9fda4b0552744a305a699855e2ad3907e8cab164;hp=f57d406cc3f19d86fb778754863fb899e90842e5;hpb=beec4f9fb766be23d575b070e398639d5a4a9c9d;p=live-boot-grml.git diff --git a/scripts/casper b/scripts/casper index f57d406..4d6c1a5 100644 --- a/scripts/casper +++ b/scripts/casper @@ -14,7 +14,7 @@ home_snapshot_label="home-sn" USERNAME="casper" USERFULLNAME="Live session user" HOSTNAME="live" -BUILD_SYSTEM="Debian" +BUILD_SYSTEM="Custom" mkdir -p $mountpoint @@ -87,6 +87,8 @@ parse_cmdline () export KVARIANT=${x#*=} ;; kmodel=*|console-setup/modelcode=*) export KMODEL=${x#*=} ;; + module=*) + export MODULE=${x#module=} ;; preseed/file=*|file=*) export LOCATION="${x#*=}" ;; */*=*) @@ -109,6 +111,10 @@ parse_cmdline () export NETBOOT fi fi + + if [ -z "${MODULE}" ]; then + MODULE=order + fi } is_casper_path() { @@ -167,8 +173,7 @@ is_nice_device() { return 1 } -is_supported_fs () -{ +is_supported_fs () { # FIXME: do something better like the scan of supported filesystems fstype="${1}" case ${fstype} in @@ -398,31 +403,48 @@ setup_unionfs() { # Let's just mount the read-only file systems first rofsstring="" rofslist="" - if [ "${NETBOOT}" == "nfs" ] ; then + if [ "${NETBOOT}" = "nfs" ] ; then roopt="nfsro" # go aroung a bug in nfs-unionfs locking else roopt="ro" fi + # Read image names from ${MODULE}.lst if it exists + if [ -e "${image_directory}/${MODULE}.lst" ]; then + for image in $(cat "${image_directory}/${MODULE}.lst"); do + image_string="${image_string} ${image_directory}/${image}"; + done + else + # If ${MODULE}.lst does not exist, create a list of images + for image_type in "ext2" "squashfs" "dir"; do + for image in "${image_directory}"/*."${image_type}"; do + if [ -e "${image}" ]; then + image_string="${image_string} ${image}"; + fi + done + done + # Now sort the list + image_string=$(echo ${image_string} | sed -e 's/ /\n/g' | sort ) + fi + mkdir -p "${croot}" - for image_type in "ext2" "squashfs" "dir" ; do - for image in "${image_directory}"/*."${image_type}"; do - imagename=$(basename "${image}") - if [ -d "${image}" ]; then - # it is a plain directory: do nothing - rofsstring="${image}=${roopt}:${rofsstring}" - rofslist="${image} ${rofslist}" - elif [ -f "${image}" ]; then - backdev=$(get_backing_device "$image") - fstype=$(get_fstype "${backdev}") - if [ "${fstype}" = "unknown" ]; then - panic "Unknown file system type on ${backdev} (${image})" - fi - mkdir -p "${croot}/${imagename}" - mount -t "${fstype}" -o ro "${backdev}" "${croot}/${imagename}" || panic "Can not mount $backdev ($image) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}" + for image in ${image_string}; do + imagename=$(basename "${image}") + if [ -d "${image}" ]; then + # it is a plain directory: do nothing + rofsstring="${image}=${roopt}:${rofsstring}" + rofslist="${image} ${rofslist}" + elif [ -f "${image}" ]; then + backdev=$(get_backing_device "$image") + fstype=$(get_fstype "${backdev}") + if [ "${fstype}" = "unknown" ]; then + panic "Unknown file system type on ${backdev} (${image})" fi - done + mkdir -p "${croot}/${imagename}" + mount -t "${fstype}" -o ro "${backdev}" "${croot}/${imagename}" || panic "Can not mount $backdev ($image) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}" + fi done + rofsstring=${rofsstring%:} mkdir -p /cow @@ -602,15 +624,15 @@ mountroot() { panic "Unable to find a medium containing a live file system" fi - if [ -n "${TORAM}" ]; then + if [ "${TORAM}" ]; then live_dest="ram" - elif [ -n "${TODISK}" ]; then + elif [ "${TODISK}" ]; then live_dest="${TODISK}" fi - if [ -n "${live_dest}" ]; then - [ "$quiet" != "y" ] && log_begin_msg "Copying live_media to ${live_dest}" + if [ "${live_dest}" ]; then + log_begin_msg "Copying live_media to ${live_dest}" copy_live_to "${livefs_root}" "${live_dest}" - [ "$quiet" != "y" ] && log_end_msg + log_end_msg fi mount_images_in_directory "${livefs_root}" "${rootmnt}"