diff options
Diffstat (limited to 'test/TEST-14-IMSM/create-root.sh')
-rwxr-xr-x | test/TEST-14-IMSM/create-root.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/TEST-14-IMSM/create-root.sh b/test/TEST-14-IMSM/create-root.sh new file mode 100755 index 0000000..97d29d9 --- /dev/null +++ b/test/TEST-14-IMSM/create-root.sh @@ -0,0 +1,78 @@ +#!/bin/sh + +trap 'poweroff -f' EXIT + +# don't let udev and this script step on eachother's toes +for x in 61-dmraid-imsm.rules 64-md-raid.rules 65-md-incremental-imsm.rules 65-md-incremental.rules 64-lvm.rules 70-mdadm.rules 99-mount-rules; do + rm -f -- "/etc/udev/rules.d/$x" +done +rm -f -- /etc/lvm/lvm.conf + +udevadm control --reload +udevadm settle + +# dmraid does not want symlinks in --disk "..." +echo y | dmraid -f isw -C Test0 --type 1 --disk "$(realpath /dev/disk/by-id/ata-disk_disk1) $(realpath /dev/disk/by-id/ata-disk_disk2)" +udevadm settle + +SETS=$(dmraid -c -s) +# scan and activate all DM RAIDS +for s in $SETS; do + dmraid -ay -i -p --rm_partitions "$s" + [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s" +done + +udevadm settle +sleep 1 +udevadm settle + +sfdisk -g /dev/mapper/isw*Test0 +sfdisk --no-reread /dev/mapper/isw*Test0 << EOF +,4M +,28M +,28M +,28M +EOF + +set -x + +udevadm settle +dmraid -a n +udevadm settle + +SETS=$(dmraid -c -s -i) +# scan and activate all DM RAIDS +for s in $SETS; do + dmraid -ay -i -p --rm_partitions "$s" + [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s" +done + +udevadm settle + +mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 \ + /dev/mapper/isw*p*[234] +# wait for the array to finish initializing, otherwise this sometimes fails +# randomly. +mdadm -W /dev/md0 +set -e +lvm pvcreate -ff -y /dev/md0 +lvm vgcreate dracut /dev/md0 +lvm lvcreate -l 100%FREE -n root dracut +lvm vgchange -ay +mkfs.ext4 -L root /dev/dracut/root +mkdir -p /sysroot +mount -t ext4 /dev/dracut/root /sysroot +cp -a -t /sysroot /source/* +umount /sysroot +lvm lvchange -a n /dev/dracut/root +udevadm settle +mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid +. /tmp/mduuid +echo "MD_UUID=$MD_UUID" +{ + echo "dracut-root-block-created" + echo MD_UUID="$MD_UUID" +} | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker +mdadm --wait-clean /dev/md0 +sync +poweroff -f |