Last active
February 1, 2021 14:10
-
-
Save asdaru/02233a8540018d2eee40d6fa9753489d 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
#!/bin/bash | |
COLOR_RED="\033[1;31m" | |
COLOR_GREEN="\033[1;32m" | |
COLOR_YELLOW="\033[1;33m" | |
COLOR_LESS="\033[0m" | |
BACKTITLE="ASDA.RU LTDA - me (985)135-32-52 | asda@asda.ru" | |
TITLE="MAKE RAID 1" | |
NULL=/dev/null | |
test -d /var/log/sa || mkdir -p /var/log/sa | |
# gpm-libs --------------------------------------------------------------------- | |
GPM_LIBS=http://mirror.centos.org/centos/7/os/x86_64/Packages/gpm-libs-1.20.7-6.el7.x86_64.rpm | |
rpm -q gpm-libs 1>$NULL || { | |
wget -q $GPM_LIBS -O /tmp/`basename $GPM_LIBS` && { | |
echo -e "${COLOR_YELLOW}Instalando gpm-libs...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $GPM_LIBS` | |
rm -f /tmp/`basename $GPM_LIBS` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки gpm-libs...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
# tmux-libs --------------------------------------------------------------------- | |
TMUX_LIBS=http://mirror.centos.org/centos/7/os/x86_64/Packages/tmux-1.8-4.el7.x86_64.rpm | |
rpm -q tmux 1>$NULL || { | |
wget -q $TMUX_LIBS -O /tmp/`basename $TMUX_LIBS` && { | |
echo -e "${COLOR_YELLOW}Instalando gpm-libs...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $TMUX_LIBS` | |
rm -f /tmp/`basename $TMUX_LIBS` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки tmux...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
# vim -------------------------------------------------------------------------- | |
VIM=http://mirror.centos.org/centos/7/os/x86_64/Packages/vim-filesystem-7.4.629-7.el7.x86_64.rpm | |
rpm -q vim-filesystem 1>$NULL || { | |
wget -q $VIM -O /tmp/`basename $VIM` && { | |
echo -e "${COLOR_YELLOW}Instalando vim-filesystem...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $VIM` | |
rm -f /tmp/`basename $VIM` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки vim...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
VIM_COMMON=http://mirror.centos.org/centos/7/os/x86_64/Packages/vim-common-7.4.629-7.el7.x86_64.rpm | |
rpm -q vim-common 1>$NULL || { | |
wget -q $VIM_COMMON -O /tmp/`basename $VIM_COMMON` && { | |
echo -e "${COLOR_YELLOW}Instalando vim-common...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $VIM_COMMON` | |
rm -f /tmp/`basename $VIM_COMMON` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки vim-common...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
VIM_ENHANCED=http://mirror.centos.org/centos/7/os/x86_64/Packages/vim-enhanced-7.4.629-7.el7.x86_64.rpm | |
rpm -q vim-enhanced 1>$NULL || { | |
wget -q $VIM_ENHANCED -O /tmp/`basename $VIM_ENHANCED` && { | |
echo -e "${COLOR_YELLOW}Instalando vim-enhanced...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $VIM_ENHANCED` | |
rm -f /tmp/`basename $VIM_ENHANCED` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки vim-enhanced...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
# slang ------------------------------------------------------------------------ | |
SLANG=http://mirror.centos.org/centos/7/os/x86_64/Packages/slang-2.2.4-11.el7.x86_64.rpm | |
rpm -q slang 1>$NULL || { | |
wget -q $SLANG -O /tmp/`basename $SLANG` && { | |
echo -e "${COLOR_YELLOW}Instalando slang...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $SLANG` | |
rm -f /tmp/`basename $SLANG` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки slang...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
# newt ------------------------------------------------------------------------- | |
NEWT=http://mirror.centos.org/centos/7/os/x86_64/Packages/newt-0.52.15-4.el7.x86_64.rpm | |
rpm -q newt 1>$NULL || { | |
wget -q $NEWT -O /tmp/`basename $NEWT` && { | |
echo -e "${COLOR_YELLOW}Instalando newt...${COLOR_LESS}" | |
rpm -ivh /tmp/`basename $NEWT` | |
rm -f /tmp/`basename $NEWT` | |
} || { | |
echo -e "${COLOR_RED}Ошибка установки newt...${COLOR_LESS}" | |
exit 1 | |
} | |
} | |
clear | |
# part1 ------------------------------------------------------------------------ | |
PART1() | |
{ | |
DISKS=$(fdisk -l 2>$NULL | grep ^Disk | grep "/dev/sd[a-z]" | awk {'print $2'} | cut -d: -f1) | |
cat $NULL > /tmp/disks | |
for i in `echo $DISKS` | |
do | |
echo "$i \"disk $i\" off" >> /tmp/disks | |
done | |
SD_ROOT=$(/bin/df | grep ^/dev/sd[a-z] | grep -w / | awk {'print $1'} | sed s/[1-9]//g) | |
CHOOSE=$(eval whiptail \ | |
--backtitle "\"$BACKTITLE\"" \ | |
--title "\"$TITLE\"" \ | |
--radiolist "\"Select disk \"$SD_ROOT\" where XEN was installed.:\"" 0 0 0 \ | |
$(cat /tmp/disks | grep "$SD_ROOT") 3>&1 1>&2 2>&3) | |
retval=$? | |
case "$retval" in | |
0) | |
IFDISK=$CHOOSE | |
;; | |
1) | |
rm -f /tmp/disks | |
exit 0 | |
;; | |
esac | |
# DESTINOS ---------------------------------------------------- | |
CHOOSE=$(eval whiptail \ | |
--backtitle "\"$BACKTITLE\"" \ | |
--title "\"$TITLE\"" \ | |
--checklist "\"Select second disk for mdraid\"" 0 0 0 \ | |
$(cat /tmp/disks | grep -v "$IFDISK") 3>&1 1>&2 2>&3) | |
retval=$? | |
case "$retval" in | |
0) | |
test -z $CHOOSE | |
OFDISK=$(echo $CHOOSE | sed s/\"//g) | |
rm -f /tmp/disks | |
;; | |
1) | |
rm -f /tmp/disks | |
exit 0 | |
;; | |
esac | |
# ------------------------------------------------------------------------------ | |
BOOT=bios | |
df -P | grep -w -q "/boot/efi" && BOOT=uefi | |
case "$BOOT" in | |
bios) | |
TYPECODE4=ef02 | |
;; | |
uefi) | |
TYPECODE4=ef00 | |
;; | |
esac | |
# ------------------------------------------------------------------------------ | |
# limpando disco destino ------------------------------------------------------- | |
echo -e "${COLOR_YELLOW}Limpando a tabela de partições de \"$OFDISK\"...${COLOR_LESS}" | |
mdadm --stop /dev/md0 2>$NULL | |
mdadm --stop /dev/md1 2>$NULL | |
mdadm --stop /dev/md2 2>$NULL | |
mdadm --stop /dev/md3 2>$NULL | |
mdadm --zero-superblock ${OFDISK}1 | |
mdadm --zero-superblock ${OFDISK}2 | |
mdadm --zero-superblock ${OFDISK}3 | |
mdadm --zero-superblock ${OFDISK}5 | |
echo -e "${COLOR_GREEN}sgdisk --zap-all ${OFDISK}${COLOR_LESS}" | |
sgdisk --zap-all ${OFDISK} | |
echo | |
echo -e "${COLOR_YELLOW}Copying GPT table from disk $IFDISK -> $OFDISK...${COLOR_LESS}" | |
sgdisk -R ${OFDISK} ${IFDISK} | |
# copiado setores p/ disco destino --------------------------------------------- | |
echo | |
echo -e "${COLOR_YELLOW}Setting GPT table for disk \"$OFDISK\"...${COLOR_LESS}" | |
# 1 / ---------------------------------- | |
echo -e "${COLOR_GREEN}sgdisk --typecode=1:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=1:fd00 ${OFDISK} | |
# 2 (update) --------------------------- | |
echo -e "${COLOR_GREEN}sgdisk --typecode=2:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=2:fd00 ${OFDISK} | |
# 3 lvm -------------------------------- | |
echo -e "${COLOR_GREEN}sgdisk --typecode=3:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=3:fd00 ${OFDISK} | |
# 4 BIOS boot partition / EFI System --- | |
# ef02 / ef00 | |
echo -e "${COLOR_GREEN}sgdisk --typecode=4:$TYPECODE4 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=4:$TYPECODE4 ${OFDISK} | |
# 5 /var/log --------------------------- | |
echo -e "${COLOR_GREEN}sgdisk --typecode=5:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=5:fd00 ${OFDISK} | |
# 6 swap ------------------------------- | |
echo -e "${COLOR_GREEN}sgdisk --typecode=6:8200 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=6:8200 ${OFDISK} | |
# RAID ------------------------------------------------------------------------- | |
echo | |
echo -e "${COLOR_YELLOW}Configurando raid...${COLOR_LESS}" | |
lsmod | grep -q ^raid1 || { | |
echo -e "${COLOR_GREEN}/sbin/modprobe raid1${COLOR_LESS}" | |
/sbin/modprobe raid1 | |
} | |
# /dev/md0 ----------------------------- | |
test -b /dev/md0 || { | |
echo -e "${COLOR_YELLOW}Criando dispositivo de bloco /dev/md0...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mknod /dev/md0 b 9 0${COLOR_LESS}" | |
mknod /dev/md0 b 9 0 | |
sleep 5 | |
} | |
# /dev/md1 ----------------------------- | |
test -b /dev/md1 || { | |
echo -e "${COLOR_YELLOW}Creating block device /dev/md1...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mknod /dev/md1 b 9 1${COLOR_LESS}" | |
mknod /dev/md1 b 9 1 | |
sleep 5 | |
} | |
# /dev/md2 ----------------------------- | |
test -b /dev/md2 || { | |
echo -e "${COLOR_YELLOW}Criando dispositivo de bloco /dev/md2...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mknod /dev/md2 b 9 2${COLOR_LESS}" | |
mknod /dev/md2 b 9 2 | |
sleep 5 | |
} | |
# /dev/md3 ----------------------------- | |
test -b /dev/md3 || { | |
echo -e "${COLOR_YELLOW}Creating block device /dev/md3...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mknod /dev/md3 b 9 3${COLOR_LESS}" | |
mknod /dev/md3 b 9 3 | |
sleep 5 | |
} | |
echo | |
echo -e "${COLOR_YELLOW}Creating \"$OFDISK\" ao raid...${COLOR_LESS}" | |
# 1 root ------------------------------- | |
echo -e "${COLOR_YELLOW}Creating raid device /dev/md0...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/bin/yes|mdadm --create /dev/md0 --level=1 --raid-devices=2 missing ${OFDISK}1 --metadata=0.90${COLOR_LESS}" | |
/usr/bin/yes|mdadm --create /dev/md0 --level=1 --raid-devices=2 missing ${OFDISK}1 --metadata=0.90 | |
sleep 5 | |
# 2 (update) --------------------------- | |
echo -e "${COLOR_YELLOW}Creating raid device /dev/md1...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/bin/yes|mdadm --create /dev/md1 --level=1 --raid-devices=2 missing ${OFDISK}2${COLOR_LESS}" | |
/usr/bin/yes|mdadm --create /dev/md1 --level=1 --raid-devices=2 missing ${OFDISK}2 | |
sleep 5 | |
# 3 lvm -------------------------------- | |
echo -e "${COLOR_YELLOW}Creating raid device /dev/md2...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/bin/yes|mdadm --create /dev/md2 --level=1 --raid-devices=2 missing ${OFDISK}3${COLOR_LESS}" | |
/usr/bin/yes|mdadm --create /dev/md2 --level=1 --raid-devices=2 missing ${OFDISK}3 | |
sleep 5 | |
# 5 /var/log ---------------------------- | |
echo -e "${COLOR_YELLOW}Creating raid device /dev/md3...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/bin/yes|mdadm --create /dev/md3 --level=1 --raid-devices=2 missing ${OFDISK}5${COLOR_LESS}" | |
/usr/bin/yes|mdadm --create /dev/md3 --level=1 --raid-devices=2 missing ${OFDISK}5 | |
sleep 5 | |
# MOVE LVM TO MD2 -------------------------------------------------------------- | |
echo | |
echo -e "${COLOR_YELLOW}Configure /etc/lvm/lvm.conf...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}sed -i 's/metadata_read_only = 1/metadata_read_only = 0/' /etc/lvm/lvm.conf${COLOR_LESS}" | |
sed -i 's/metadata_read_only = 1/metadata_read_only = 0/' /etc/lvm/lvm.conf | |
echo | |
echo -e "${COLOR_YELLOW}Создание volume LVM em /dev/md2...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}pvcreate -ff /dev/md2${COLOR_LESS}" | |
pvcreate -ff /dev/md2 | |
sleep 5 | |
echo -e "${COLOR_YELLOW}Расширение volume LVM до /dev/md2...${COLOR_LESS}" | |
vgextend `vgscan | grep VG | cut -d' ' -f6 | sed s/\"//g` /dev/md2 | |
sleep 30 | |
echo -e "${COLOR_YELLOW}Перенос volume LVM em ${IFDISK}3 -> /dev/md2...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}pvmove ${IFDISK}3 /dev/md2${COLOR_LESS}" | |
pvmove ${IFDISK}3 /dev/md2 | |
sleep 5 | |
echo -e "${COLOR_YELLOW}Reduzindo volume LVM em ${IFDISK}3...${COLOR_LESS}" | |
vgreduce `vgscan | grep VG | cut -d' ' -f6 | sed s/\"//g` ${IFDISK}3 | |
sleep 5 | |
echo -e "${COLOR_YELLOW}Удаляем volume LVM em ${IFDISK}3...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}pvremove ${IFDISK}3${COLOR_LESS}" | |
pvremove ${IFDISK}3 | |
sleep 3 | |
# ------------------------------------------------------------------------------ | |
echo -e "${COLOR_YELLOW}Formatando /dev/md0...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mkfs.ext3 -q /dev/md0${COLOR_LESS}" | |
mkfs.ext3 -q /dev/md0 | |
echo -e "${COLOR_YELLOW}Formatando /dev/md3...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mkfs.ext3 -q /dev/md3${COLOR_LESS}" | |
mkfs.ext3 -q /dev/md3 | |
echo -e "${COLOR_YELLOW}Montando /dev/md0 em /mnt...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mount /dev/md0 /mnt${COLOR_LESS}" | |
/usr/bin/mount /dev/md0 /mnt | |
test -d /mnt/var/log || { | |
echo -e "${COLOR_YELLOW}Criando /mnt/var/log...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mkdir -p /mnt/var/log${COLOR_LESS}" | |
mkdir -p /mnt/var/log | |
} | |
echo -e "${COLOR_YELLOW}Montando /dev/md3 em /mnt/var/log...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mount /dev/md3 /mnt/var/log${COLOR_LESS}" | |
/usr/bin/mount /dev/md3 /mnt/var/log | |
# ------------------------------------------------------------------------------ | |
echo -e "${COLOR_YELLOW}Copiando / -> /mnt${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}cp -xR --preserve=all / /mnt${COLOR_LESS}" | |
cp -xR --preserve=all / /mnt | |
# ------------------------------------------------------------------------------ | |
echo -e "${COLOR_YELLOW}Editando /mnt/etc/fstab${COLOR_LESS}" | |
# 1 / ---------------------------------- | |
ROOT_LABEL=`cat /etc/fstab | grep ^LABEL | grep -w root | awk {'print $1'}` | |
ROOT_UUID=`blkid -s UUID -o value /dev/md0` | |
ROOT_HDUUID="UUID=$ROOT_UUID" | |
echo -e "${COLOR_GREEN}sed -i \"s|${ROOT_LABEL}|${ROOT_HDUUID}|\" /mnt/etc/fstab${COLOR_LESS}" | |
sed -i "s|${ROOT_LABEL}|${ROOT_HDUUID}|" /mnt/etc/fstab | |
# 4 bios boot / efi -------------------- | |
case "$BOOT" in | |
uefi) | |
# http://askubuntu.com/questions/660023/how-to-install-ubuntu-14-04-64-bit-with-a-dual-boot-raid-1-partition-on-an-uefi | |
echo -e "${COLOR_YELLOW}Clonando ${IFDISK}4 -> ${OFDISK}4${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}dd if=${IFDISK}4 of=${OFDISK}4${COLOR_LESS}" | |
dd if=${IFDISK}4 of=${OFDISK}4 | |
#echo -e "${COLOR_YELLOW}Editando /mnt/etc/fstab...${COLOR_LESS}" | |
UEFI_LABEL=`cat /etc/fstab | grep ^LABEL | grep -w "/boot/efi" | awk {'print $1'}` | |
UEFI_HDUUID="UUID=`blkid -s UUID -o value ${OFDISK}4`" | |
echo -e "${COLOR_GREEN}sed -i \"s|${UEFI_LABEL}|${UEFI_HDUUID}|\" /mnt/etc/fstab${COLOR_LESS}" | |
sed -i "s|${UEFI_LABEL}|${UEFI_HDUUID}|" /mnt/etc/fstab | |
;; | |
esac | |
# 5 /var/log --------------------------- | |
LOG_LABEL=`cat /etc/fstab | grep ^LABEL | grep -w logs | awk {'print $1'}` | |
LOG_HDUUID="UUID=`blkid -s UUID -o value /dev/md3`" | |
echo -e "${COLOR_GREEN}sed -i \"s|${LOG_LABEL}|${LOG_HDUUID}|\" /mnt/etc/fstab${COLOR_LESS}" | |
sed -i "s|${LOG_LABEL}|${LOG_HDUUID}|" /mnt/etc/fstab | |
# 6 swap ------------------------------- | |
SWAP_LABEL=`cat /etc/fstab | grep ^LABEL | grep -w swap | awk {'print $1'}` | |
SWAP_HDUUID="UUID=`blkid -s UUID -o value ${IFDISK}6`" | |
echo -e "${COLOR_GREEN}sed -i \"s|${SWAP_LABEL}|$SWAP_HDUUID|\" /mnt/etc/fstab${COLOR_LESS}" | |
sed -i "s|${SWAP_LABEL}|$SWAP_HDUUID|" /mnt/etc/fstab | |
echo -e "${COLOR_YELLOW}Create swap em ${OFDISK}6${COLOR_LESS}" | |
mkswap ${OFDISK}6 | |
SWAP_HDUUID="UUID=`blkid -s UUID -o value ${OFDISK}6`" | |
echo -e "$SWAP_HDUUID\tswap\tswap\tdefaults\t0\t0" >> /mnt/etc/fstab | |
# ------------------------------------------------------------------------------ | |
# montar particoes chroot ------------------------------------------------------ | |
echo -e "${COLOR_YELLOW}Mount /mnt/dev...${COLOR_LESS}" | |
/usr/bin/mount -o bind /dev /mnt/dev | |
echo -e "${COLOR_YELLOW}Mount /mnt/sys...${COLOR_LESS}" | |
/usr/bin/mount -t sysfs none /mnt/sys | |
echo -e "${COLOR_YELLOW}Mount /mnt/proc...${COLOR_LESS}" | |
/usr/bin/mount -t proc none /mnt/proc | |
echo -e "${COLOR_YELLOW}Mount /mnt/run...${COLOR_LESS}" | |
#/usr/bin/mount -t tmpfs none /mnt/run | |
/usr/bin/mount --bind /run /mnt/run | |
# mdadm.conf ------------------------------------------------------------------- | |
echo -e "${COLOR_YELLOW}Create /etc/mdadm.conf..${COLOR_LESS}" | |
test -f /mnt/etc/mdadm.conf || touch /mnt/etc/mdadm.conf | |
cat /mnt/etc/mdadm.conf | grep -q "MAILADDR root" || echo "MAILADDR root" > /mnt/etc/mdadm.conf | |
echo "auto +imsm +1.x -all" >> /mnt/etc/mdadm.conf | |
echo "DEVICE /dev/sd*[a-z][1-9]" >> /mnt/etc/mdadm.conf | |
/sbin/mdadm --detail --scan >> /mnt/etc/mdadm.conf | |
cp /mnt/etc/mdadm.conf /etc | |
case "$BOOT" in | |
bios) | |
echo -e "${COLOR_YELLOW}Редактируем /mnt/boot/grub/grub.cfg${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}sed -i \"s|${ROOT_LABEL}|${ROOT_HDUUID}|\" /mnt/boot/grub/grub.cfg${COLOR_LESS}" | |
sed -i "s|${ROOT_LABEL}|${ROOT_HDUUID}|" /mnt/boot/grub/grub.cfg | |
sed -i "/search --label --set root $(echo ${ROOT_LABEL}| cut -d= -f2)/d" /mnt/boot/grub/grub.cfg | |
sed -i "s|quiet|rd.auto rd.auto=1 rhgb quiet|" /mnt/boot/grub/grub.cfg | |
;; | |
uefi) | |
echo -e "${COLOR_YELLOW}Редактируем /mnt/boot/efi/EFI/xenserver/grub.cfg${COLOR_LESS}" | |
mkdir -p /mnt/boot/efi | |
/usr/bin/mount ${OFDISK}4 /mnt/boot/efi | |
echo -e "${COLOR_GREEN}sed -i \"s|${ROOT_LABEL}|${ROOT_HDUUID}|\" /mnt/boot/efi/EFI/xenserver/grub.cfg${COLOR_LESS}" | |
sed -i "s|${ROOT_LABEL}|${ROOT_HDUUID}|" /mnt/boot/efi/EFI/xenserver/grub.cfg | |
sed -i "/search --label --set root $(echo ${ROOT_LABEL}| cut -d= -f2)/d" /mnt/boot/efi/EFI/xenserver/grub.cfg | |
sed -i "s|quiet|rd.auto rd.auto=1 rhgb quiet|" /mnt/boot/efi/EFI/xenserver/grub.cfg | |
sed -i "s|^set timeout=5|set timeout=10\ninsmod efi_gop\ninsmod efi_uga\ninsmod mdraid1x\nsearch --no-floppy --fs-uuid --set=root $ROOT_UUID|" /mnt/boot/efi/EFI/xenserver/grub.cfg | |
#/usr/bin/umount /mnt/boot/efi | |
;; | |
esac | |
# mkinitrd --------------------------------------------------------------------- | |
echo -e "${COLOR_YELLOW}Criando mkinitrd...${COLOR_LESS}" | |
# tmpfs | |
# devpts | |
# sysfs | |
# proc | |
chroot /mnt /usr/sbin/dracut -q \ | |
--mdadmconf \ | |
--fstab \ | |
--add="dm mdraid" \ | |
--filesystems "ext4 tmpfs devpts sysfs proc" \ | |
--add-drivers="raid1 raid10" \ | |
--force /boot/initrd-$(uname -r).img $(uname -r) -M | |
sleep 3 | |
case "$BOOT" in | |
bios) | |
echo -e "${COLOR_YELLOW}Instaling grub at \"${OFDISK}\"...${COLOR_LESS}" | |
chroot /mnt /usr/sbin/grub-install ${OFDISK} | |
;; | |
uefi) | |
/bin/umount /boot/efi | |
/bin/mount ${OFDISK}4 /boot/efi | |
echo -e "${COLOR_YELLOW}Executando efibootmgr em \"$OFDISK\"...${COLOR_LESS}" | |
#ISS=`udevadm info --query=all --name=$OFDISK | grep ID_SERIAL_SHORT | cut -d= -f2` | |
SERIAL_OFDISK=`lsblk -n -d -o serial $OFDISK` | |
#efibootmgr -c -g -d $OFDISK -p 4 -L "XenServer-$ISS" -l '\EFI\xenserver\grubx64.efi' | |
efibootmgr -c -g -d $OFDISK -p 4 -L "XenServer-$SERIAL_OFDISK" -l '\EFI\xenserver\grubx64.efi' | |
/bin/umount /boot/efi | |
/bin/mount ${IFDISK}4 /boot/efi | |
;; | |
esac | |
# -------------------------------------- | |
echo -e "${COLOR_YELLOW}Unmount /mnt/root/dev${COLOR_LESS}" | |
/usr/bin/umount /mnt/dev | |
echo -e "${COLOR_YELLOW}Unmount /mnt/root/sys${COLOR_LESS}" | |
/usr/bin/umount /mnt/sys | |
echo -e "${COLOR_YELLOW}Unmount /mnt/root/proc${COLOR_LESS}" | |
/usr/bin/umount /mnt/proc | |
echo -e "${COLOR_YELLOW}Unmount /mnt/var/log${COLOR_LESS}" | |
/usr/bin/umount /mnt/var/log | |
echo -e "${COLOR_YELLOW}Desmontando /mnt/run${COLOR_LESS}" | |
/usr/bin/umount /mnt/run | |
sleep 3 | |
case "$BOOT" in | |
uefi) | |
/usr/bin/umount /mnt/boot/efi | |
;; | |
esac | |
echo -e "${COLOR_YELLOW}Unmount /mnt${COLOR_LESS}" | |
/usr/bin/umount /mnt | |
echo | |
echo -e "${COLOR_YELLOW}Часть 1 завершена...${COLOR_LESS}" | |
echo | |
echo -e "${COLOR_YELLOW}Перезагрузите сервер. | |
Измените загрузку на другой диск, а затем запустите часть 2 этого скрипта (step2)...${COLOR_LESS}" | |
echo | |
} | |
################################################################################ | |
PART2() | |
{ | |
df | grep -q "/dev/md0" || { | |
whiptail \ | |
--backtitle "\"$BACKTITLE\"" \ | |
--title "\"$TITLE\"" \ | |
--msgbox "Корень вашей системы не /dev/md0. | |
Проверьте и измените загрузку на правильный диск, который уже отформатирован в RAID" 10 78 | |
exit 1 | |
} | |
DISKS=$(fdisk -l 2>$NULL | grep ^Disk | grep "/dev/sd[a-z]" | grep -v "/dev/md[0-3]" | awk {'print $2'} | cut -d: -f1) | |
cat $NULL > /tmp/disks | |
for i in `echo $DISKS` | |
do | |
echo "$i \"disco $i\" off" >> /tmp/disks | |
done | |
cat $NULL > /tmp/b | |
for i in `cat /proc/mdstat | grep sd[a-z] | cut -d: -f2- | awk {'print $3" "$4" "$5'}` | |
do | |
echo $i | cut -c 1-3 >> /tmp/b | |
done | |
IGNORE=$(cat /tmp/b | sort | uniq) | |
IFDISK=/dev/$IGNORE | |
CHOOSE=$(eval whiptail \ | |
--backtitle "\"$BACKTITLE\"" \ | |
--title "\"$TITLE\"" \ | |
--radiolist "\"Confirme o disco que deve ser adicionado ao RAID\"" 0 0 0 \ | |
$(cat /tmp/disks | grep -v "$IGNORE") 3>&1 1>&2 2>&3) | |
retval=$? | |
case "$retval" in | |
0) | |
OFDISK=$CHOOSE | |
rm -f /tmp/disks | |
rm -f /tmp/b | |
;; | |
1) | |
rm -f /tmp/disks | |
rm -f /tmp/b | |
;; | |
esac | |
# ------------------------------------------------------------------------------ | |
BOOT=bios | |
df -P | grep -w -q "/boot/efi" && BOOT=uefi | |
# ------------------------------------------------------------------------------ | |
echo | |
echo -e "${COLOR_YELLOW}Mirror ${OFDISK}...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}sgdisk --typecode=1:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=1:fd00 ${OFDISK} | |
echo -e "${COLOR_GREEN}sgdisk --typecode=2:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=2:fd00 ${OFDISK} | |
echo -e "${COLOR_GREEN}sgdisk --typecode=3:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=3:fd00 ${OFDISK} | |
echo -e "${COLOR_GREEN}sgdisk --typecode=5:fd00 ${OFDISK}${COLOR_LESS}" | |
sgdisk --typecode=5:fd00 ${OFDISK} | |
sleep 5 | |
echo | |
echo -e "${COLOR_YELLOW}Sincronize disk \"$OFDISK\"...${COLOR_LESS}" | |
# / ------------------------------------ | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md0 ${OFDISK}1${COLOR_LESS}" | |
mdadm -a /dev/md0 ${OFDISK}1 | |
#sleep 120 | |
while true; do | |
mdadm --detail /dev/md0 | grep "\s*State\s*:" | grep -q -E "degraded|recovering|spare|rebuilding" || break | |
cat /proc/mdstat | grep -w recovery | |
sleep 60 | |
done | |
# update ------------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md1 ${OFDISK}2${COLOR_LESS}" | |
mdadm -a /dev/md1 ${OFDISK}2 | |
#sleep 60 | |
while true; do | |
mdadm --detail /dev/md1 | grep "\s*State\s*:" | grep -q -E "degraded|recovering|spare|rebuilding" || break | |
cat /proc/mdstat | grep -w recovery | |
sleep 60 | |
done | |
# /var/log ----------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md3 ${OFDISK}5${COLOR_LESS}" | |
mdadm -a /dev/md3 ${OFDISK}5 | |
sleep 60 | |
# lvm ---------------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md2 ${OFDISK}3${COLOR_LESS}" | |
mdadm -a /dev/md2 ${OFDISK}3 | |
sleep 5 | |
echo | |
# ------------------------------------------------------------------------------ | |
# local storage | |
echo -e "${COLOR_YELLOW}Changing \"Local storage\" to \"/dev/md2\"...${COLOR_LESS}" | |
XR_UUID=$(xe sr-list name-label="Local storage" | grep ^uuid | cut -d: -f2- | awk {'print $1'}) | |
xe sr-scan uuid=$XR_UUID | |
PDB_UUID=$(xe pbd-list sr-uuid=$XR_UUID | grep ^uuid | cut -d: -f2 | awk {'print $1'}) | |
xe pbd-unplug uuid=$PDB_UUID | |
xe pbd-destroy uuid=$PDB_UUID | |
xe sr-forget uuid=$XR_UUID | |
HOST_UUID=$(xe host-list | grep ^uuid | cut -d: -f2 | awk {'print $1'}) | |
xe sr-create content-type="user" host-uuid=$HOST_UUID type=lvm device-config-device=/dev/md2 shared=false name-label="Local storage" | |
POOL_UUID=$(xe pool-list | grep ^uuid | cut -d: -f2 | awk {'print $1'}) | |
SR_UUID=$(xe sr-list name-label="Local storage" | grep ^uuid | cut -d: -f2- | awk {'print $1'}) | |
xe pool-param-set uuid=$POOL_UUID default-SR=$SR_UUID | |
# ------------------------------------------------------------------------------ | |
case "$BOOT" in | |
bios) | |
echo -e "${COLOR_YELLOW}Устанавливаем grub em ${OFDISK}...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/sbin/grub-install ${OFDISK}${COLOR_LESS}" | |
/usr/sbin/grub-install ${OFDISK} | |
;; | |
uefi) | |
#echo -e "${COLOR_GREEN}Apagando boot antigo${COLOR_LESS}" | |
#BOOT_N=`efibootmgr | grep -w XenServer | grep ^Boot000[0-9] | awk {'print $1'} | sed s/Boot//g | sed s/0//g | sed s/*//g` | |
#efibootmgr -b $BOOT_N -B | |
echo -e "${COLOR_GREEN}Unmount /boot/efi...${COLOR_LESS}" | |
/usr/bin/umount /boot/efi | |
echo -e "${COLOR_YELLOW}Клонируем ${IFDISK}4 -> ${OFDISK}4${COLOR_LESS}" | |
dd if=${IFDISK}4 of=${OFDISK}4 | |
echo -e "${COLOR_YELLOW}Mount ${OFDISK}4 /boot/efi${COLOR_LESS}" | |
/usr/bin/mount ${OFDISK}4 /boot/efi | |
echo -e "${COLOR_YELLOW}Executando efibootmgr em ${OFDISK}4${COLOR_LESS}" | |
#ISS=`udevadm info --query=all --name=$OFDISK | grep ID_SERIAL_SHORT | cut -d= -f2` | |
SERIAL_OFDISK=`lsblk -n -d -o serial $OFDISK` | |
#efibootmgr -c -g -d $OFDISK -p 4 -L "XenServer-$ISS" -l '\EFI\xenserver\grubx64.efi' | |
efibootmgr -c -g -d $OFDISK -p 4 -L "XenServer-$SERIAL_OFDISK" -l '\EFI\xenserver\grubx64.efi' | |
;; | |
esac | |
# http://www.ducea.com/2006/06/25/increase-the-speed-of-linux-software-raid-reconstruction/ | |
echo -e "${COLOR_YELLOW}Aumentar a velocidade do Linux Software RAID Reconstrução...${COLOR_LESS}" | |
echo 50000 >/proc/sys/dev/raid/speed_limit_min | |
echo | |
echo -e "${COLOR_YELLOW}Часть 2 завершена${COLOR_LESS}" | |
echo | |
echo -e "${COLOR_YELLOW}Закончено конфигурирование RAID${COLOR_LESS}" | |
echo | |
} | |
################################################################################ | |
PART3() | |
{ | |
BOOT=bios | |
df -P | grep -w -q "/boot/efi" && BOOT=uefi | |
# identificando o disco de origem ---------------------------------------------- | |
DISKS=$(fdisk -l 2>$NULL | grep ^Disk | grep "/dev/sd[a-z]" | grep -v "/dev/md[0-3]" | awk {'print $2'} | cut -d: -f1) | |
#cat $NULL > /tmp/disks | |
#for i in `echo $DISKS` | |
# do | |
# echo "$i \"disco $i\" off" >> /tmp/disks | |
# done | |
cat $NULL > /tmp/disks | |
for i in `echo $DISKS` | |
do | |
echo "$i \"disco $i\" off" >> /tmp/disks | |
done | |
cat $NULL > /tmp/b | |
for i in `cat /proc/mdstat | grep sd[a-z] | cut -d: -f2- | awk {'print $3" "$4" "$5'}` | |
do | |
echo $i | cut -c 1-3 >> /tmp/b | |
done | |
IGNORE=$(cat /tmp/b | sort | uniq) | |
IFDISK=/dev/$IGNORE | |
CHOOSE=$(eval whiptail \ | |
--backtitle "\"$BACKTITLE\"" \ | |
--title "\"$TITLE\"" \ | |
--radiolist "\"Confirme o disco que deve ser adicionado ao RAID\"" 0 0 0 \ | |
$(cat /tmp/disks | grep -v "$IGNORE") 3>&1 1>&2 2>&3) | |
retval=$? | |
case "$retval" in | |
0) | |
OFDISK=$CHOOSE | |
rm -f /tmp/disks | |
rm -f /tmp/b | |
;; | |
1) | |
rm -f /tmp/disks | |
rm -f /tmp/b | |
;; | |
esac | |
## SOURCE ----------------------------------------------------------------------- | |
#CHOOSE=$(eval whiptail \ | |
# --backtitle "\"EDEG INFORMATICA LTDA\"" \ | |
# --title "\"MAKE RAID 1\"" \ | |
# --radiolist "\"Selecione o disco que já contêm o XEN instalado\"" 0 0 0 \ | |
# $(cat /tmp/disks) 3>&1 1>&2 2>&3) | |
# | |
#retval=$? | |
# | |
#case "$retval" in | |
# 0) | |
# IFDISK=$CHOOSE | |
# ;; | |
# | |
# 1) | |
# rm -f /tmp/disks | |
# ;; | |
#esac | |
## identificando disco de destino ----------------------------------------------- | |
# | |
#CHOOSE=$(eval whiptail \ | |
# --backtitle "\"EDEG INFORMATICA LTDA\"" \ | |
# --title "\"MAKE RAID 1\"" \ | |
# --checklist "\"Confirme os discos que vão receber o XEN\"" 0 0 0 \ | |
# $(cat /tmp/disks | grep -v "$IFDISK") 3>&1 1>&2 2>&3) | |
# | |
#retval=$? | |
# | |
#case "$retval" in | |
# 0) | |
# test -z $CHOOSE | |
# OFDISK=$(echo $CHOOSE | sed s/\"//g) | |
# rm -f /tmp/disks | |
# ;; | |
# | |
# 1) | |
# rm -f /tmp/disks | |
# ;; | |
#esac | |
# limpando disco destino ------------------------------------------------------- | |
echo | |
echo -e "${COLOR_YELLOW}Limpando a tabela de partições de \"${OFDISK}\"...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}sgdisk --zap-all $OFDISK${COLOR_LESS}" | |
sgdisk --zap-all $OFDISK | |
# instalando uma tabela GPT disco destino -------------------------------------- | |
echo | |
echo -e "${COLOR_YELLOW}Instalando uma tabela GPT em \"${OFDISK}\"...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}sgdisk --mbrtogpt --clear $OFDISK${COLOR_LESS}" | |
sgdisk --mbrtogpt --clear $OFDISK | |
# copiado setores p/ disco destino ----- | |
echo | |
echo -e "${COLOR_YELLOW}Copiando tabela GPT para o disco \"${OFDISK}\"...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}sgdisk -R ${OFDISK} ${IFDISK}${COLOR_LESS}" | |
sgdisk -R ${OFDISK} ${IFDISK} | |
# sincronizando raid ------------------- | |
echo | |
echo -e "${COLOR_YELLOW}Sincronizando os disco \"${OFDISK}\"...${COLOR_LESS}" | |
# / (raiz) ----------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md0 ${OFDISK}1${COLOR_LESS}" | |
mdadm -a /dev/md0 ${OFDISK}1 | |
sleep 120 | |
# (update) ----------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md1 ${OFDISK}2${COLOR_LESS}" | |
mdadm -a /dev/md1 ${OFDISK}2 | |
sleep 60 | |
# /var/log ----------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md3 ${OFDISK}5${COLOR_LESS}" | |
mdadm -a /dev/md3 ${OFDISK}5 | |
sleep 60 | |
# lvm ---------------------------------- | |
echo -e "${COLOR_GREEN}mdadm -a /dev/md2 ${OFDISK}3${COLOR_LESS}" | |
mdadm -a /dev/md2 ${OFDISK}3 | |
sleep 10 | |
# swap --------------------------------- | |
echo -e "${COLOR_YELLOW}Apagando entrada swap antiga em /etc/fstab${COLOR_LESS}" | |
IFDISK_SWAP=`blkid -s UUID -s TYPE | grep swap | awk {'print $2'} | cut -d = -f2 | sed s/\"//g` | |
OLDDISK_SWAP=`cat /etc/fstab | grep swap | grep -v $IFDISK_SWAP` | |
sed -i "/${OLDDISK_SWAP}/d/" /etc/fstab | |
echo -e "${COLOR_YELLOW}Criando swap em ${OFDISK}6${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}mkswap ${OFDISK}6${COLOR_LESS}" | |
mkswap ${OFDISK}6 | |
echo -e "${COLOR_YELLOW}Adicionado swap ${OFDISK}6 em /etc/fstab${COLOR_LESS}" | |
SWAP_HDUUID="UUID=`blkid -s UUID -o value ${OFDISK}6`" | |
echo -e "$SWAP_HDUUID\tswap\tswap\tdefaults\t0\t0" >> /etc/fstab | |
# -------------------------------------- | |
case "$BOOT" in | |
bios) | |
echo -e "${COLOR_YELLOW}Instalando grub em \"${OFDISK}\"...${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/sbin/grub-install ${OFDISK}${COLOR_LESS}" | |
/usr/sbin/grub-install ${OFDISK} | |
;; | |
uefi) | |
echo -e "${COLOR_YELLOW}Desmontando /boot/efi${COLOR_LESS}" | |
echo -e "${COLOR_GREEN}/usr/bin/umount /boot/efi${COLOR_LESS}" | |
/usr/bin/umount /boot/efi | |
echo -e "${COLOR_GREEN}dd if=${IFDISK}4 of=${OFDISK}4${COLOR_LESS}" | |
dd if=${IFDISK}4 of=${OFDISK}4 | |
echo -e "${COLOR_GREEN}/usr/bin/mount $OFDISK /boot/efi${COLOR_LESS}" | |
/usr/bin/mount $OFDISK /boot/efi | |
echo -e "${COLOR_YELLOW}Executando efibootmgr em \"${OFDISK}\"...${COLOR_LESS}" | |
ISS=`udevadm info --query=all --name=$OFDISK | grep ID_SERIAL_SHORT | cut -d= -f2` | |
efibootmgr -c -g -d $OFDISK -p 4 -L "XenServer-$ISS" -l '\EFI\xenserver\grubx64.efi' | |
;; | |
esac | |
# fim -------------------------------------------------------------------------- | |
echo -e "${COLOR_YELLOW}Processo concluído...${COLOR_LESS}" | |
} | |
################################################################################ | |
case "$1" in | |
step1) | |
echo "Первый этап установки (создание mdraid и запись grub на выбранный диск)" | |
PART1 | |
;; | |
step2) | |
echo "Второй этап установки (подключаем первый диск)" | |
PART2 | |
;; | |
step3) | |
echo "Defective disk replacement..." | |
PART3 | |
;; | |
*) | |
echo "Usage: $0 {step1|step2|step3}" | |
#echo "Usage: $0 {step1|step2}" | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment