diff --git a/reinstall.sh b/reinstall.sh new file mode 100644 index 0000000..d59c2f9 --- /dev/null +++ b/reinstall.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# todo 设置各种参数,例如是否自动安装 +localtest=0 +if [ $localtest == 1 ]; then + vmlinuz=http://192.168.43.139/images/pxeboot/vmlinuz + initrd=http://192.168.43.139/images/pxeboot/initrd.img + squashfs=http://192.168.43.139/LiveOS/squashfs.img + ks=http://192.168.43.139/ks-cd.cfg +else + site=$(curl -L "http://mirrorlist.centos.org/?release=7&repo=os&arch=x86_64" | head -1) + vmlinuz=${site}images/pxeboot/vmlinuz + initrd=${site}images/pxeboot/initrd.img + squashfs=${site}LiveOS/squashfs.img + + ks=https://xxx.com/ks.cfg +fi + +# 获取系统盘信息 +root_name=$(lsblk -l -o NAME,UUID,TYPE,MOUNTPOINT | tr -s ' ' | grep '/$' | cut -d ' ' -f1) +root_uuid=$(lsblk -l -o NAME,UUID,TYPE,MOUNTPOINT | tr -s ' ' | grep '/$' | cut -d ' ' -f2) +root_type=$(lsblk -l -o NAME,UUID,TYPE,MOUNTPOINT | tr -s ' ' | grep '/$' | cut -d ' ' -f3) + +# 清除之前的自定义启动条目 +sed -i '3,$d' /etc/grub.d/40_custom + +# 下载启动内核 +cd / +curl -LO $vmlinuz +curl -LO $initrd +cd - + +if [ -d /sys/firmware/efi ]; then + action='efi' +else + action='16' +fi + +if [ $root_type == "lvm" ]; then + cat <>/etc/grub.d/40_custom +menuentry "reinstall" { + insmod lvm + insmod xfs + set root=(lvm/$root_name) + linux$action /vmlinuz root=live:$squashfs inst.ks=$ks + initrd$action /initrd.img + } +EOF + +else + cat <>/etc/grub.d/40_custom +menuentry "reinstall" { + insmod xfs + search --no-floppy --fs-uuid --set=root $root_uuid + linux$action /vmlinuz root=live:$squashfs inst.ks=$ks + initrd$action /initrd.img + } +EOF +fi + +grub_cfg=$(find /boot -type f -name grub.cfg) +grub-mkconfig -o $grub_cfg || grub2-mkconfig -o $grub_cfg +grub-reboot reinstall || grub2-reboot reinstall +cat $grub_cfg +# reboot