Created
July 26, 2016 13:52
-
-
Save mzlumin/66a2daf960eba5832cc077d6c2b701c8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
root@Stark:/root# cat /var/lib/rear/layout/diskrestore.sh | |
#!/bin/bash | |
# Script ./make_rear_diskrestore_script.sh produced this /var/lib/rear/layout/diskrestore.sh file | |
# It is meant as debugging aid - do not run it or edit it | |
# Gratien D'haese - gratien . dhaese @ gmail . com | |
# Copyright GPLv3 | |
# | |
############################################################ | |
# | |
echo "Script ./make_rear_diskrestore_script.sh produced /var/lib/rear/layout/diskrestore.sh file" | |
echo "It is not meant to be executed - just to review the code" | |
echo "which recreates your disk layout (for debugging reasons)" | |
echo | |
echo "Force exit..." | |
exit 1 | |
############################################################ | |
############################################################ | |
# Script /var/lib/rear/layout/diskrestore.sh starts below | |
############################################################ | |
############################################################ | |
#!/bin/bash | |
LogPrint "Start system layout restoration." | |
mkdir -p | |
if create_component "vgchange" "rear" ; then | |
lvm vgchange -a n >&8 | |
component_created "vgchange" "rear" | |
fi | |
set -e | |
set -x | |
if create_component "/dev/sda" "disk" ; then | |
# Create /dev/sda (disk) | |
Log "Stop mdadm" | |
if grep -q md /proc/mdstat &>/dev/null; then | |
mdadm --stop -s >&2 || echo "stop mdadm failed" | |
# Prevent udev waking up mdadm later. | |
# Reasoning: At least on RHEL6 when parted created a raid partition on disk, | |
# udev (via /lib/udev/rules.d/65-md-incremental.rules) wakes up mdadm which locks the disk, | |
# so further parted commands with the disk will fail since the disk is busy now. | |
# The /lib/udev/rules.d/65-md-incremental.rules detects anaconda (the Red Hat installer), | |
# and if it find itself running under anaconda, it will not run. | |
# Accordingly also for other installers (in particular the rear installer) | |
# this rule should not be there (and other Linux distros probably do not have it) | |
# which means removing it is the right solution to make rear work also for RHEL6: | |
if [ -e /lib/udev/rules.d/65-md-incremental.rules ] ; then | |
rm -f /lib/udev/rules.d/65-md-incremental.rules || echo "rm 65-md-incremental.rules failed" | |
fi | |
fi | |
Log "Erasing MBR of disk /dev/sda" | |
dd if=/dev/zero of=/dev/sda bs=512 count=1 | |
sync | |
LogPrint "Creating partitions for disk /dev/sda (msdos)" | |
my_udevsettle | |
parted -s /dev/sda mklabel msdos >&2 | |
my_udevsettle | |
my_udevsettle | |
parted -s /dev/sda mkpart '"primary"' 1048576B 255852543B >&2 | |
my_udevsettle | |
my_udevsettle | |
parted -s /dev/sda set 1 boot on >&2 | |
my_udevsettle | |
my_udevsettle | |
parted -s /dev/sda mkpart '"primary"' 256900096B 256901119B >&2 | |
my_udevsettle | |
my_udevsettle | |
parted -s /dev/sda mkpart '"logical"' 256901120B 2000398843903B >&2 | |
my_udevsettle | |
my_udevsettle | |
parted -s /dev/sda set 5 lvm on >&2 | |
my_udevsettle | |
sleep 1 | |
if ! partprobe -s /dev/sda >&2 ; then | |
LogPrint 'retrying partprobe /dev/sda after 10 seconds' | |
sleep 10 | |
if ! partprobe -s /dev/sda >&2 ; then | |
LogPrint 'retrying partprobe /dev/sda after 1 minute' | |
sleep 60 | |
if ! partprobe -s /dev/sda >&2 ; then | |
LogPrint 'partprobe /dev/sda failed, proceeding bona fide' | |
fi | |
fi | |
fi | |
# Make sure device nodes are visible (eg. in RHEL4) | |
my_udevtrigger | |
my_udevsettle | |
component_created "/dev/sda" "disk" | |
else | |
LogPrint "Skipping /dev/sda (disk) as it has already been created." | |
fi | |
if create_component "/dev/sda1" "part" ; then | |
# Create /dev/sda1 (part) | |
component_created "/dev/sda1" "part" | |
else | |
LogPrint "Skipping /dev/sda1 (part) as it has already been created." | |
fi | |
if create_component "/dev/sda2" "part" ; then | |
# Create /dev/sda2 (part) | |
component_created "/dev/sda2" "part" | |
else | |
LogPrint "Skipping /dev/sda2 (part) as it has already been created." | |
fi | |
if create_component "/dev/sda5" "part" ; then | |
# Create /dev/sda5 (part) | |
component_created "/dev/sda5" "part" | |
else | |
LogPrint "Skipping /dev/sda5 (part) as it has already been created." | |
fi | |
if create_component "pv:/dev/sda5" "lvmdev" ; then | |
# Create pv:/dev/sda5 (lvmdev) | |
LogPrint "Creating LVM PV /dev/sda5" | |
lvm vgchange -a n Stark-vg || true | |
lvm pvcreate -ff --yes -v --uuid "ImZ231-KcF7-vIyB-5eB8-raak-HmG6-oKvx7t" --restorefile /var/lib/rear/layout/lvm/Stark-vg.cfg /dev/sda5 >&2 | |
component_created "pv:/dev/sda5" "lvmdev" | |
else | |
LogPrint "Skipping pv:/dev/sda5 (lvmdev) as it has already been created." | |
fi | |
if create_component "/dev/Stark-vg" "lvmgrp" ; then | |
# Create /dev/Stark-vg (lvmgrp) | |
LogPrint "Restoring LVM VG Stark-vg" | |
if [ -e "/dev/Stark-vg" ] ; then | |
rm -rf "/dev/Stark-vg" | |
fi | |
lvm vgcfgrestore -f "/var/lib/rear/layout/lvm/Stark-vg.cfg" Stark-vg >&2 | |
lvm vgchange --available y Stark-vg >&2 | |
LogPrint "Sleeping 3 seconds to let udev or systemd-udevd create their devices..." | |
sleep 3 >&2 | |
component_created "/dev/Stark-vg" "lvmgrp" | |
else | |
LogPrint "Skipping /dev/Stark-vg (lvmgrp) as it has already been created." | |
fi | |
if create_component "/dev/mapper/Stark--vg-root" "lvmvol" ; then | |
# Create /dev/mapper/Stark--vg-root (lvmvol) | |
component_created "/dev/mapper/Stark--vg-root" "lvmvol" | |
else | |
LogPrint "Skipping /dev/mapper/Stark--vg-root (lvmvol) as it has already been created." | |
fi | |
if create_component "/dev/mapper/Stark--vg-swap_1" "lvmvol" ; then | |
# Create /dev/mapper/Stark--vg-swap_1 (lvmvol) | |
component_created "/dev/mapper/Stark--vg-swap_1" "lvmvol" | |
else | |
LogPrint "Skipping /dev/mapper/Stark--vg-swap_1 (lvmvol) as it has already been created." | |
fi | |
if create_component "fs:/" "fs" ; then | |
# Create fs:/ (fs) | |
# Wait until udev had created '/dev/mapper/Stark--vg-root' before creating a filesystem there: | |
my_udevsettle | |
# Using wipefs to cleanup '/dev/mapper/Stark--vg-root' before creating filesystem. | |
LogPrint 'Creating filesystem of type 'ext4' with mount point '/' on '/dev/mapper/Stark--vg-root'.' | |
wipefs -a /dev/mapper/Stark--vg-root | |
# Try 'mkfs -U' to create the filesystem with initially correct UUID | |
# but if that fails assume it failed because of missing support for '-U' | |
# (e.g. in RHEL 5 it fails, see https://github.com/rear/rear/issues/890) | |
# then fall back to using mkfs without '-U' plus 'tune2fs/tune4fs -U' | |
if ! mkfs -t ext4 -b 4096 -i 16383 -U fc8f6cf5-34a6-4ccb-b89b-394b5348585c /dev/mapper/Stark--vg-root >&2 ; then | |
mkfs -t ext4 -b 4096 -i 16383 /dev/mapper/Stark--vg-root >&2 | |
tune2fs -U fc8f6cf5-34a6-4ccb-b89b-394b5348585c /dev/mapper/Stark--vg-root >&2 | |
fi | |
tune2fs -m 4 -c -1 -i 0d -o user_xattr,acl /dev/mapper/Stark--vg-root >&2 | |
LogPrint "Mounting filesystem /" | |
mkdir -p / | |
mount -o rw,relatime,errors=remount-ro,data=ordered /dev/mapper/Stark--vg-root / | |
component_created "fs:/" "fs" | |
else | |
LogPrint "Skipping fs:/ (fs) as it has already been created." | |
fi | |
if create_component "fs:/boot" "fs" ; then | |
# Create fs:/boot (fs) | |
# Wait until udev had created '/dev/sda1' before creating a filesystem there: | |
my_udevsettle | |
# Using wipefs to cleanup '/dev/sda1' before creating filesystem. | |
LogPrint 'Creating filesystem of type 'ext2' with mount point '/boot' on '/dev/sda1'.' | |
wipefs -a /dev/sda1 | |
# Try 'mkfs -U' to create the filesystem with initially correct UUID | |
# but if that fails assume it failed because of missing support for '-U' | |
# (e.g. in RHEL 5 it fails, see https://github.com/rear/rear/issues/890) | |
# then fall back to using mkfs without '-U' plus 'tune2fs/tune4fs -U' | |
if ! mkfs -t ext2 -b 1024 -i 4093 -U f2613fe4-3aa3-4926-bb9a-9fbbc9704be5 /dev/sda1 >&2 ; then | |
mkfs -t ext2 -b 1024 -i 4093 /dev/sda1 >&2 | |
tune2fs -U f2613fe4-3aa3-4926-bb9a-9fbbc9704be5 /dev/sda1 >&2 | |
fi | |
tune2fs -m 4 -c -1 -i 0d -o user_xattr,acl /dev/sda1 >&2 | |
LogPrint "Mounting filesystem /boot" | |
mkdir -p /boot | |
mount -o rw,relatime,stripe=4 /dev/sda1 /boot | |
component_created "fs:/boot" "fs" | |
else | |
LogPrint "Skipping fs:/boot (fs) as it has already been created." | |
fi | |
if create_component "swap:/dev/mapper/Stark--vg-swap_1" "swap" ; then | |
# Create swap:/dev/mapper/Stark--vg-swap_1 (swap) | |
LogPrint "Creating swap on /dev/mapper/Stark--vg-swap_1" | |
mkswap -U 33558643-e0f7-4f9e-8c22-6cab61abc2e0 /dev/mapper/Stark--vg-swap_1 >&2 | |
component_created "swap:/dev/mapper/Stark--vg-swap_1" "swap" | |
else | |
LogPrint "Skipping swap:/dev/mapper/Stark--vg-swap_1 (swap) as it has already been created." | |
fi | |
set +x | |
set +e | |
LogPrint "Disk layout created." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment