From c0713183fddc6683121e10d9d3b488599da3a5b4 Mon Sep 17 00:00:00 2001
From: Martin Pietsch <martin.pietsch@tu-dresden.de>
Date: Wed, 13 Nov 2019 14:00:47 +0100
Subject: [PATCH] added function createTargetDirectoryLayout

---
 files/diskspreparation.sh | 56 +++++++++++++++++++++++++++++++++------
 1 file changed, 48 insertions(+), 8 deletions(-)

diff --git a/files/diskspreparation.sh b/files/diskspreparation.sh
index 512e89a..c96e9c9 100755
--- a/files/diskspreparation.sh
+++ b/files/diskspreparation.sh
@@ -266,7 +266,8 @@ formatDiskPartitions() {
 # generateFSTab - generate fstab file
 # parameter:
 #  $1 - path of fstab file
-#  $2 - mount path prefix (optional)
+#  $2 - mount with UUID
+#  $3 - mount path prefix (optional)
 # return:
 #  none
 generateFSTab() {
@@ -279,10 +280,11 @@ generateFSTab() {
   local opts
   local dmp
   local pass
+  local dev
 
-  if [ $# -eq 2 ];
+  if [ $# -eq 3 ];
   then
-    mntpntpfx="$2"
+    mntpntpfx="$3"
   fi
 
   echo -e "#device           mount point           filesystem         options       dump    pass\n" >$1
@@ -306,12 +308,18 @@ generateFSTab() {
 
       if [ -n "${fs}" -a -n "${mntpnt}" -a -n "${uuid}" ];
       then
+         case ${2} in
+          "uuid") dev="UUID=${uuid}" ;;
+          *)
+            dev="/dev/${disk}${idx}"
+           ;;
+         esac
          echo "#/dev/${disk}${idx}" >>$1
-         if [ ${mntpnt} != "none" ];
+         if [ "${mntpnt}" != "none" ];
          then 
-           echo -e "UUID=${uuid}     ${mntpntpfx}${mntpnt}    ${fs}    ${opts}    ${dmp}    ${pass}\n" >>$1
+           echo -e "${dev}     ${mntpntpfx}${mntpnt}    ${fs}    ${opts}    ${dmp}    ${pass}\n" >>$1
          else
-           echo -e "UUID=${uuid}     ${mntpnt}    ${fs}    ${opts}    ${dmp}    ${pass}\n" >>$1
+           echo -e "${dev}     ${mntpnt}    ${fs}    ${opts}    ${dmp}    ${pass}\n" >>$1
          fi
       fi
       idx=$((${idx} + 1))
@@ -319,6 +327,37 @@ generateFSTab() {
   done
 }
 
+# createTargetDirectoryLayout - create directory layout for target installation
+# parameter:
+#  $1 - path to target directory
+# return:
+#  none 
+createTargetDirectoryLayout(){
+  local idx
+  local mntpnt
+  local fs
+
+  for disk in ${DISK_DEVICES[@]}
+  do
+    idx=1
+    for part in $(eval "for p in \${DISK_$(echo ${disk} | tr [a-z] [A-Z])_PARTITIONS[@]}; do echo \$p; done ")
+    do
+      fs=$(blkid -s TYPE -o value /dev/${disk}${idx})
+      mntpnt=$(echo ${part} | cut -f 3 -d ";") 
+      if [ "${fs}" = "swap" -o "${fs}" = "linux-swap" ];
+      then
+        mntpnt="none"
+      fi
+
+      if [ "${mntpnt}" != "none" ];
+      then
+        mkdir -p $1/${mntpnt}
+      fi
+      idx=$((${idx} + 1))
+    done
+  done
+}
+
 for disk in ${DISK_DEVICES[@]}
 do
   declare -a diskdata=()
@@ -348,5 +387,6 @@ do
   formatDiskPartitions ${disk}
 done
 
-generateFSTab "/tmp/fstab.local"
-generateFSTab "/tmp/fstab.target" "/target"
+generateFSTab "/tmp/fstab.local" "uuid"
+generateFSTab "/tmp/fstab.target" "dev" "/target"
+createTargetDirectoryLayout "/target"
-- 
GitLab