]> git.ipfire.org Git - thirdparty/dracut.git/blob - test/TEST-14-IMSM/create-root.sh
4698845196273134a03ff3360dcdfd015607ece1
[thirdparty/dracut.git] / test / TEST-14-IMSM / create-root.sh
1 #!/bin/sh
2
3 trap 'poweroff -f' EXIT
4
5 # don't let udev and this script step on eachother's toes
6 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
7 rm -f -- "/etc/udev/rules.d/$x"
8 done
9 rm -f -- /etc/lvm/lvm.conf
10
11 udevadm control --reload
12 udevadm settle
13
14 # dmraid does not want symlinks in --disk "..."
15 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)"
16 udevadm settle
17
18 SETS=$(dmraid -c -s)
19 # scan and activate all DM RAIDS
20 for s in $SETS; do
21 dmraid -ay -i -p --rm_partitions "$s"
22 [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s"
23 done
24
25 udevadm settle
26 sleep 1
27 udevadm settle
28
29 sfdisk -g /dev/mapper/isw*Test0
30 sfdisk --no-reread /dev/mapper/isw*Test0 << EOF
31 ,4M
32 ,28M
33 ,28M
34 ,28M
35 EOF
36
37 set -x
38
39 udevadm settle
40 dmraid -a n
41 udevadm settle
42
43 SETS=$(dmraid -c -s -i)
44 # scan and activate all DM RAIDS
45 for s in $SETS; do
46 dmraid -ay -i -p --rm_partitions "$s"
47 [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s"
48 done
49
50 udevadm settle
51
52 mdadm --create /dev/md0 --run --auto=yes --level=5 --raid-devices=3 \
53 /dev/mapper/isw*p*[234]
54 # wait for the array to finish initailizing, otherwise this sometimes fails
55 # randomly.
56 mdadm -W /dev/md0
57 set -e
58 lvm pvcreate -ff -y /dev/md0
59 lvm vgcreate dracut /dev/md0
60 lvm lvcreate -l 100%FREE -n root dracut
61 lvm vgchange -ay
62 mkfs.ext4 -L root /dev/dracut/root
63 mkdir -p /sysroot
64 mount -t ext4 /dev/dracut/root /sysroot
65 cp -a -t /sysroot /source/*
66 umount /sysroot
67 lvm lvchange -a n /dev/dracut/root
68 udevadm settle
69 mdadm --detail --export /dev/md0 | grep -F MD_UUID > /tmp/mduuid
70 . /tmp/mduuid
71 echo "MD_UUID=$MD_UUID"
72 {
73 echo "dracut-root-block-created"
74 echo MD_UUID="$MD_UUID"
75 } | dd oflag=direct,dsync of=/dev/disk/by-id/ata-disk_marker
76 mdadm --wait-clean /dev/md0
77 sync
78 poweroff -f