arch-create-system: function update
- resolve prefix in all functions - check for mountpoint in 'create_fs_streucture' - fix printf() missing quote Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
@@ -119,20 +119,20 @@ create_btrfs () {
|
||||
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${BLUE}Would prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$LABEL"
|
||||
"${PREFIX}-${LABEL}"
|
||||
else
|
||||
printf "${BLUE}Prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$LABEL"
|
||||
"${PREFIX}-${LABEL}"
|
||||
fi
|
||||
|
||||
if [ -h /dev/disk/by-partlabel/$LABEL ]; then
|
||||
if [ -h /dev/disk/by-partlabel/${PREFIX}-${LABEL} ]; then
|
||||
|
||||
# create filesystem
|
||||
cmd="mkfs -t btrfs --force \
|
||||
--label $PREFIX-$LABEL \
|
||||
--data single \
|
||||
--metadata single \
|
||||
/dev/disk/by-partlabel/$LABEL"
|
||||
--label $PREFIX-$LABEL \
|
||||
--data single \
|
||||
--metadata single \
|
||||
/dev/disk/by-partlabel/${PREFIX}-${LABEL}"
|
||||
cmd=`echo $cmd | tr -s \"[:blank:]\"`
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${MAGENTA}Would run: ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
@@ -143,15 +143,6 @@ create_btrfs () {
|
||||
eval "$cmd"
|
||||
fi
|
||||
|
||||
if [ ! -d $MOUNT_POINT ]; then
|
||||
cmd="mkdir -p $MOUNT_POINT"
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${MAGENTA}Would run ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$cmd"
|
||||
else
|
||||
eval "$cmd"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -203,7 +194,7 @@ create_disk () {
|
||||
sgdisk --new=$PARTITION $TARGET
|
||||
|
||||
# assign label
|
||||
sgdisk --change-name=$PARTITION:${LABEL} $TARGET
|
||||
sgdisk --change-name=$PARTITION:${PREFIX}-${LABEL} $TARGET
|
||||
|
||||
# adapt partition-type
|
||||
sgdisk --typecode=$PARTITION:8300 $TARGET
|
||||
@@ -244,12 +235,17 @@ create_fs_structure () {
|
||||
printf "${MAGENTA}Would mount target root at ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$SUBVOL"
|
||||
else
|
||||
if [ ! -d $MOUNT_POINT ]; then
|
||||
printf "${BLUE} - create target mount point${NO_COLOR}\n"
|
||||
cmd="mkdir -p $MOUNT_POINT"
|
||||
eval "$cmd"
|
||||
fi
|
||||
printf "${BLUE} - mount target root${NO_COLOR}\n"
|
||||
mount_target /dev/disk/by-partlabel/${PREFIX}-${LABEL} $MOUNT_POINT btrfs $SUBVOL
|
||||
if [ $? -gt 0 ]; then
|
||||
die "Can't mount root filesystem ${PREFIX}-${LABEL}"
|
||||
else
|
||||
df $MOUNT_POINT
|
||||
findmount -t btrfs
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -361,17 +357,17 @@ create_fat () {
|
||||
local cmd
|
||||
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${BLUE}Would prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "$LABEL"
|
||||
printf "${BLUE}Would prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "${PREFIX}-${LABEL}"
|
||||
else
|
||||
printf "${BLUE}Prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "$LABEL"
|
||||
printf "${BLUE}Prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "${PREFIX}-${LABEL}"
|
||||
fi
|
||||
|
||||
if [ -h /dev/disk/by-partlabel/$LABEL ]; then
|
||||
if [ -h /dev/disk/by-partlabel/${PREFIX}-${LABEL} ]; then
|
||||
# create filesystem
|
||||
cmd="mkfs -t fat \
|
||||
-F 32 \
|
||||
-n $LABEL \
|
||||
/dev/disk/by-partlabel/$LABEL"
|
||||
/dev/disk/by-partlabel/${PREFIX}-${LABEL}"
|
||||
cmd="echo $cmd | tr -s \"[:blank:]\""
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${MAGENTA}Would run ${GREEN}'%s'${NO_COLOR}\n" "$cmd"
|
||||
@@ -389,16 +385,16 @@ create_vfat () {
|
||||
local cmd
|
||||
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${BLUE}Would prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "$LABEL"
|
||||
printf "${BLUE}Would prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "${PREFIX}-${LABEL}"
|
||||
else
|
||||
printf "${BLUE}Prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "$LABEL"
|
||||
printf "${BLUE}Prepare filesystem ${GREEN}'%s'${NO_COLOR}\n" "${PREFIX}-${LABEL}"
|
||||
fi
|
||||
|
||||
if [ -h /dev/disk/by-partlabel/$LABEL ]; then
|
||||
if [ -h /dev/disk/by-partlabel/${PREFIX}-${LABEL} ]; then
|
||||
# create filesystem
|
||||
cmd="mkfs -t vfat \
|
||||
-n $PREFIX-$LABEL \
|
||||
/dev/disk/by-partlabel/$LABEL"
|
||||
/dev/disk/by-partlabel/${PREFIX}-${LABEL}"
|
||||
cmd="echo $cmd | tr -s \"[:blank:]\""
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${MAGENTA}Would run ${GREEN}'%s'${NO_COLOR}\n" "$cmd"
|
||||
@@ -420,39 +416,6 @@ error () {
|
||||
printf "\n==> ERROR: %s\n" "$@"
|
||||
} >&2
|
||||
|
||||
get_config_name () {
|
||||
local config_json=${configfile:-$config_json}
|
||||
local config_file=${1}
|
||||
|
||||
local cmd
|
||||
|
||||
if [ $verbose -ge 1 ]; then
|
||||
printf "${BLUE}get_config_name ...${NO_COLOR}\n"
|
||||
fi
|
||||
|
||||
if [ ! -r ${config_json} ] ; then
|
||||
if [ $verbose -ge 1 ]; then
|
||||
printf "${RED}Error:${MAGENTA} config file ${GREEN}'%s'${MAGENTA} can\'t be opend!${NO_COLOR}\n" \
|
||||
"config_json"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
|
||||
cmd="jq -r --monochrome-output --ascii-output ' .ConfigEnvironment[] \
|
||||
| select( .ConfigName == \"${config_file}\" ) \
|
||||
| .ConfigName ' \
|
||||
${config_json}"
|
||||
|
||||
|
||||
config_name=$(eval $cmd)
|
||||
#config_name=$(echo $config_name | sed -e 's/\n//g')
|
||||
|
||||
if [ $verbose -ge 2 ]; then
|
||||
printf "${MAGENTA}Config environment id: ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$config_name"
|
||||
fi
|
||||
}
|
||||
|
||||
get_config_names () {
|
||||
local config_json=${config_file:-$config_json}
|
||||
local cmd
|
||||
@@ -476,6 +439,70 @@ get_config_names () {
|
||||
config_names=$(echo $config_names | sed -e 's/\n//g')
|
||||
}
|
||||
|
||||
get_config_values () {
|
||||
local config_json=${configfile:-$config_json}
|
||||
local config_file=${1}
|
||||
|
||||
local cmd
|
||||
|
||||
if [ $verbose -ge 1 ]; then
|
||||
printf "${BLUE}get_config_values ...${NO_COLOR}\n"
|
||||
fi
|
||||
|
||||
if [ ! -r ${config_json} ] ; then
|
||||
if [ $verbose -ge 1 ]; then
|
||||
printf "${RED}Error:${MAGENTA} config file ${GREEN}'%s'${MAGENTA} can\'t be opend!${NO_COLOR}\n" \
|
||||
"config_json"
|
||||
fi
|
||||
return 1
|
||||
fi
|
||||
|
||||
cmd="jq -r --monochrome-output --ascii-output ' \
|
||||
.ConfigEnvironment[] \
|
||||
| select( .ConfigName == \"${config_file}\" ) \
|
||||
| .ConfigName ' \
|
||||
${config_json}"
|
||||
|
||||
config_name=$(eval $cmd)
|
||||
#config_name=$(echo $config_name | sed -e 's/\n//g')
|
||||
|
||||
if [ $verbose -ge 2 ]; then
|
||||
printf "${MAGENTA}Config environment name: ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$config_name"
|
||||
fi
|
||||
|
||||
cmd="jq -r --monochrome-output --ascii-output ' \
|
||||
.ConfigEnvironment[] \
|
||||
| select( .ConfigName == \"${config_file}\" ) \
|
||||
| .ConfigName, ._comment, .ConfigType, .ConfigEnv' \
|
||||
${config_json}"
|
||||
values=$(eval $cmd)
|
||||
values=$(echo $values | sed -e 's/[\n]//g')
|
||||
|
||||
cmd="jq -r --monochrome-output --ascii-output ' \
|
||||
.ConfigEnvironment[] \
|
||||
| select( .ConfigName == \"${config_file}\" ) \
|
||||
| .Disk | flatten | length' \
|
||||
${config_json}"
|
||||
disks=$(eval $cmd)
|
||||
|
||||
cmd="jq -r --monochrome-output --ascii-output ' \
|
||||
.ConfigEnvironment[] \
|
||||
| select( .ConfigName == \"${config_file}\" ) \
|
||||
| to_entries ' \
|
||||
$config_json"
|
||||
entries=$(eval $cmd)
|
||||
|
||||
if [ $verbose -ge 2 ]; then
|
||||
printf "${MAGENTA}Parsed from: ${GREEN}'%s'${MAGENTA}\n" \
|
||||
"$config"
|
||||
printf "${BLUE} '%s': ${GREEN}'%s'${NO_COLOR}%s\n" \
|
||||
"$values"
|
||||
printf "${BLUE} Entries: ${GREEN}'%s'${NO_COLOR}%s\n" \
|
||||
"$entries"
|
||||
fi
|
||||
}
|
||||
|
||||
get_config_disk_names () {
|
||||
local config_json=${config_file:-$config_json}
|
||||
|
||||
@@ -521,7 +548,12 @@ mount_target_filesystems () {
|
||||
|
||||
printf "${BLUE}mount_target_filesystems${NO_COLOR}\n"
|
||||
|
||||
mount_target /dev/disk/by-partlabel/$disk_label_root $MOUNT_POINT/ btrfs root
|
||||
mount_target /dev/disk/by-partlabel/${label_prefix}-${disk_label_root} $MOUNT_POINT/ btrfs root
|
||||
if [ $? -gt 0 ]; then
|
||||
die "Cant mount root filesystem $disk_label_root"
|
||||
else
|
||||
findmount -t btrfs
|
||||
fi
|
||||
|
||||
for subdir in boot data home swap var/log var/cache var/lib/machines; do
|
||||
if [ ! -d $MOUNT_POINT/$subdir ]; then
|
||||
@@ -529,11 +561,11 @@ mount_target_filesystems () {
|
||||
fi
|
||||
done
|
||||
|
||||
mount_target /dev/disk/by-partlabel/$disk_label_uefi $MOUNT_POINT/boot fat
|
||||
mount_target /dev/disk/by-partlabel/$disk_label_data $MOUNT_POINT/data btrfs data
|
||||
mount_target /dev/disk/by-partlabel/$disk_label_root $MOUNT_POINT/var/cache btrfs var/cache
|
||||
mount_target /dev/disk/by-partlabel/$disk_label_machines $MOUNT_POINT/var/lib/machines btrfs var/lib/machines
|
||||
mount_target /dev/disk/by-partlabel/$disk_label_root $MOUNT_POINT/var/log btrfs var/log
|
||||
mount_target /dev/disk/by-partlabel/${label_prefix}-${disk_label_uefi} $MOUNT_POINT/boot fat
|
||||
mount_target /dev/disk/by-partlabel/${label_prefix}-${disk_label_data} $MOUNT_POINT/data btrfs data
|
||||
mount_target /dev/disk/by-partlabel/${label_prefix}-${disk_label_root} $MOUNT_POINT/var/cache btrfs var/cache
|
||||
mount_target /dev/disk/by-partlabel/${label_prefix}-${disk_label_machines} $MOUNT_POINT/var/lib/machines btrfs var/lib/machines
|
||||
mount_target /dev/disk/by-partlabel/${label_prefix}-${disk_label_root} $MOUNT_POINT/var/log btrfs var/log
|
||||
}
|
||||
|
||||
install_target () {
|
||||
@@ -643,51 +675,45 @@ mount_target () {
|
||||
local cmd
|
||||
|
||||
if [ ! -h $DEV_NAME ]; then
|
||||
printf "${RED}Error: ${NO_COLOR}Can't access given device ${GREEN}'%s'{NO_COLOR}\n" \
|
||||
printf "${RED}Error: ${NO_COLOR}Can't access given device ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$DEV_NAME"
|
||||
return 1
|
||||
fi
|
||||
|
||||
case $FS_TYPE in
|
||||
"btrfs")
|
||||
if [ -h $DEV_NAME ]; then
|
||||
cmd="mount -t $FS_TYPE \
|
||||
-o subvol=$FS_SUBVOL \
|
||||
$DEV_NAME \
|
||||
$MOUNT_POINT"
|
||||
printf "${BLUE}mounting subvol ${GREEN}'%s' ${BLUE}of ${GREEN}'%s' ${BLUE}at ${GREEN}'%s${NO_COLOR}\n" \
|
||||
"$FS_SUBVOL" "$DEV_NAME" "$MOUNT_POINT"
|
||||
fi
|
||||
cmd="mount -t $FS_TYPE \
|
||||
-o subvol=$FS_SUBVOL \
|
||||
$DEV_NAME \
|
||||
$MOUNT_POINT"
|
||||
printf "${BLUE}mounting subvol ${GREEN}'%s' ${BLUE}of ${GREEN}'%s' ${BLUE}at ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$FS_SUBVOL" "$DEV_NAME" "$MOUNT_POINT"
|
||||
;;
|
||||
"fat")
|
||||
if [ -h $DEV_NAME ]; then
|
||||
# we are mounting a vfat for gain long filenames
|
||||
cmd="mount -t vfat \
|
||||
$DEV_NAME \
|
||||
$MOUNT_POINT"
|
||||
printf "${BLUE}mounting ${GREEN}'%s' ${BLUE}at ${GREEN}'%s${NO_COLOR}\n" \
|
||||
"$DEV_NAME" "$MOUNT_POINT"
|
||||
fi
|
||||
# we are mounting a vfat for gain long filenames
|
||||
cmd="mount -t vfat \
|
||||
$DEV_NAME \
|
||||
$MOUNT_POINT"
|
||||
printf "${BLUE}mounting ${GREEN}'%s' ${BLUE}at ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$DEV_NAME" "$MOUNT_POINT"
|
||||
;;
|
||||
"vfat")
|
||||
if [ -h $DEV_NAME ]; then
|
||||
cmd="mount -t $FS_TYPE \
|
||||
$DEV_NAME \
|
||||
$MOUNT_POINT"
|
||||
printf "${BLUE}mounting ${GREEN}'%s' ${BLUE}at ${GREEN}'%s${NO_COLOR}\n" \
|
||||
"$DEV_NAME" "$MOUNT_POINT"
|
||||
fi
|
||||
cmd="mount -t $FS_TYPE \
|
||||
$DEV_NAME \
|
||||
$MOUNT_POINT"
|
||||
printf "${BLUE}mounting ${GREEN}'%s' ${BLUE}at ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$DEV_NAME" "$MOUNT_POINT"
|
||||
;;
|
||||
esac
|
||||
|
||||
cmd="echo $cmd | tr -s \"[:blank:]\""
|
||||
cmd="echo $cmd | tr -s "[:blank:]""
|
||||
if [ $dryrun -eq 1 ]; then
|
||||
printf "${MAGENTA}Would mount ${GREEN}'%s'${MAGENTA} of ${GREEN}'%s'${MAGENTA} at ${GREEN}'%s'${NO_COLOR}\n" \
|
||||
"$FS_SUBVOL" "$DEV_NAME" "$MOUNT_POINT"
|
||||
else
|
||||
eval "$cmd"
|
||||
if [ $? -gt 0 ]; then
|
||||
die "Can't mount filesystem $DEV_NAME"
|
||||
die "Cant mount filesystem $DEV_NAME"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
@@ -755,12 +781,15 @@ parse_params () {
|
||||
test $count -ge 1 && config_name="$1"
|
||||
set -- $params
|
||||
shift $count
|
||||
cmd=get-config-name
|
||||
;;
|
||||
--get-config-names)
|
||||
shift 1
|
||||
cmd=get-config-names
|
||||
;;
|
||||
--get-config-values)
|
||||
shift 1
|
||||
cmd=get-config-values
|
||||
;;
|
||||
--get-config-disk-names)
|
||||
shift 1
|
||||
config_params=${*}
|
||||
@@ -1091,7 +1120,7 @@ prepare_target_disks () {
|
||||
create_disk ${disk_dev_machines} $disk_label_machines $label_prefix
|
||||
fi
|
||||
if [ ${#disk_dev_data} -gt 1 ]; then
|
||||
create_disk ${disk_dev_data} $disk_label_data $label_prefix
|
||||
create_disk ${disk_dev_data} $disk_label_data $label_prefix
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -1110,10 +1139,9 @@ prepare_target_filesystems () {
|
||||
fi
|
||||
|
||||
create_fs_structure $disk_label_root $label_prefix $mount_point /
|
||||
if [ $? -gt 1 ]; then
|
||||
if [ $? -gt 0 ]; then
|
||||
die "Can't create filesystem structure on" "$mount_point"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
show_config () {
|
||||
@@ -1184,10 +1212,14 @@ parse_params $@
|
||||
# commandline options handled with priority
|
||||
parse_config_file
|
||||
|
||||
if [ ${config_name} != "NONE" ]; then
|
||||
get_config_values $config_name
|
||||
fi
|
||||
|
||||
case $cmd in
|
||||
get-config-name)
|
||||
get-config-values)
|
||||
#get_config_name 'HyperV-SingleDisk'
|
||||
get_config_name $config_name
|
||||
get_config_values $config_name
|
||||
if test $? -gt 0; then
|
||||
exit 1
|
||||
#else
|
||||
@@ -1216,8 +1248,12 @@ case $cmd in
|
||||
|
||||
prepare_target_disks
|
||||
prepare_target_filesystems
|
||||
if [ $? -gt 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mount_target_filesystems $disk_label_root $mount_point
|
||||
exit 0
|
||||
install_target_packages $mount_point
|
||||
|
||||
install_target $mount_point
|
||||
|
||||
Reference in New Issue
Block a user