# ================================================================================================== # Arquivo de configuração para grub2 # ================================================================================================== # # Desenvolvido por: João Sales (joaosalless at gmail dot com) # # Estas configurações foram criadas no intuito de desenvolver um sistema de Backup e Recovery 100% # automatizado de uma instalação do Windows 7. # # Utiliza-se o Clonezilla (versão debian) para backup e restauração de partições # Utiliza-se variáveis como data e hora diretamente no grub.cfg para automatizar o nome dos backups. # Está funcionando perfeitamente com algumas resalvas: Foi testado apenas em um HD interno. # # O HD testado tinha as seguintes partições: # /dev/sda1 100M NTFS (Reservado pelo sistema) # /dev/sda2 49G NTFS (Windows) # /dev/sda3 68G ext3 (Recovery) # /dev/sda4 42G NTFS (Documentos) Todos os perfis de usuarios ficam nesta partição. Nenhum documento é perdido quando o Windows é restaurado. # # Nesta instalação utilizei: # Clonezilla: http://colocrossing.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.2.2-32/clonezilla-live-2.2.2-32-i686-pae.zip # SystemRescueCD: http://ufpr.dl.sourceforge.net/project/systemrescuecd/sysresccd-x86/4.1.0/systemrescuecd-x86-4.1.0.iso # # Para fazer uma instalação semelhante a esta, siga os passos supondo que a partição de Recovery será /dev/sda3: # # 1 - Dê boot na máquina com um LiveCD que possua o grub na versão 2.0 (eu utilizei Ubuntu 13.10) # 2 - Use o Gparted caso precise redimensionar ou criar partições # 3 - Monte a partição e navegue pelo terminal até a raiz da partição e crie as pastas necessárias com os comandos: # $ sudo mkdir -p /mnt/Recovery # $ sudo mount /dev/sda3 /mnt/Recovery # $ sudo mkdir -p {tmp,Recovery/{isos,images/{OEM,backups}}} # $ sudo chmod -R 770 Recovery tmp # # 4 - Baixe os links citados acima (Clonezilla e SystemRescueCD) com os comandos: # $ cd tmp # $ wget http://colocrossing.dl.sourceforge.net/project/clonezilla/clonezilla_live_stable/2.2.2-32/clonezilla-live-2.2.2-32-i686-pae.zip # $ unzip clonezilla-live-2.2.2-32-i686-pae.zip # $ cp -rf live/* ../Recovery/ # # $ wget http://ufpr.dl.sourceforge.net/project/systemrescuecd/sysresccd-x86/4.1.0/systemrescuecd-x86-4.1.0.iso # cp systemrescuecd-x86-4.1.0.iso ../Recovery/isos # # 5 - Instale o grub2 com o comando: # $ sudo grub-install --boot-directory=/mnt/Recovery/Recovery # # 6 - Copie este arquivo "grub.cfg" para /mnt/Recovery/Recovery/grub/grub.cfg # # 7 - Reinicie a máquina e use. if [ -s $prefix/grubenv ]; then set have_grubenv=true load_env fi set default=0 set timeout=20 set SYSRCD_IP=192.168.0.200 set SYSRCD_DNS=208.67.222.222,208.67.220.220 set SYSRCD_GATEWAY=192.168.0.1 set SYSRCD_HOSTNAME=recovery set ROOT_PASSWD=rootpasswd set VNC_PASSWD=vncpasswd set RECOVERY_ROOT_DIR=Recovery export RECOVERY_ROOT_DIR export SYSRCD_IP export SYSRCD_DNS export SYSRCD_GATEWAY export SYSRCD_HOSTNAME export ROOT_PASSWD export VNC_PASSWD set IMG_DIRECTORY=${RECOVERY_ROOT_DIR}/images/backups set AUTO_RECOVERY_IMG=AUTO-RECOVERY set OEMIMG_DIRECTORY=${RECOVERY_ROOT_DIR}/images/OEM set OEM_RECOVERY_IMG=OEM-RECOVERY set ISO_DIRECTORY=${RECOVERY_ROOT_DIR}/isos export RECOVERY_ROOT_DIR export AUTO_RECOVERY_IMG export IMG_DIRECTORY export ISO_DIRECTORY export OEMIMG_DIRECTORY insmod datehook set BKP_DATETIME=$YEAR-$MONTH-$DAY-$HOUR-$MINUTE export BKP_DATETIME if loadfont /${RECOVERY_ROOT_DIR}/grub/fonts/unicode.pf2 ; then insmod png set gfxmode=1024x768 insmod gfxterm insmod vbe terminal_output gfxterm load_video set locale_dir=$prefix/locale set lang=pt_BR insmod gettext fi if [ -f /${RECOVERY_ROOT_DIR}/grub/themes/blue/theme.txt ] ; then set theme=/${RECOVERY_ROOT_DIR}/grub/themes/blue/theme.txt export theme else set menu_color_normal=white/black set menu_color_highlight=black/yellow export menu_color_normal export menu_color_highlight fi # Localiza a partição que contém o windows instalado if [ -f (hd0,1)/Windows/explorer.exe ]; then set WIN_PARTITION=sda1 export WIN_PARTITION elif [ -f (hd0,2)/Windows/explorer.exe ]; then set WIN_PARTITION=sda2 export WIN_PARTITION elif [ -f (hd0,3)/Windows/explorer.exe ]; then set WIN_PARTITION=sda3 export WIN_PARTITION elif [ -f (hd0,4)/Windows/explorer.exe ]; then set WIN_PARTITION=sda4 export WIN_PARTITION fi # Localiza a partição de Backups (arquivos de boot do Clonezilla e a pasta usada para salvar e restaurar imagens) if [ -f (hd0,1)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sda1 set BKP_HDNUM=(hd0,1) export BKP_PARTITION export BKP_HDNUM elif [ -f (hd0,2)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sda2 set BKP_HDNUM=(hd0,2) export BKP_PARTITION export BKP_HDNUM elif [ -f (hd0,3)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sda3 set BKP_HDNUM=(hd0,3) export BKP_PARTITION export BKP_HDNUM elif [ -f (hd0,4)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sda4 set BKP_HDNUM=(hd0,4) export BKP_PARTITION export BKP_HDNUM fi if [ -f (hd1,1)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sdb1 set BKP_HDNUM=(hd1,1) export BKP_PARTITION export BKP_HDNUM elif [ -f (hd1,2)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sdb2 set BKP_HDNUM=(hd1,2) export BKP_PARTITION export BKP_HDNUM elif [ -f (hd1,3)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sdb3 set BKP_HDNUM=(hd1,3) export BKP_PARTITION export BKP_HDNUM elif [ -f (hd1,4)/${RECOVERY_ROOT_DIR}/initrd.img ]; then set BKP_PARTITION=sdb4 set BKP_HDNUM=(hd1,4) export BKP_PARTITION export BKP_HDNUM fi menuentry "Microsoft Windows 7" { insmod ntfs search --set=root --file /bootmgr chainloader +1 } submenu 'Backup e Restauração Automatizada do Sistema Operacional' --class backup { submenu 'Fazer Backup do Sistema Operacional' --class backup { menuentry "Criar backup do sistema operacional 100% Automatizado" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${IMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -sc -g auto -e1 auto -rm-win-swap-hib -e2 -r --batch -i 2000 -p reboot saveparts ${AUTO_RECOVERY_IMG} ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } menuentry "Criar backup do sistema operacional (com o nome ${BKP_DATETIME})" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${IMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -sc -g auto -e1 auto -rm-win-swap-hib -e2 -r --batch -i 2000 -p reboot saveparts ${BKP_DATETIME} ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } menuentry "Criar backup do sistema operacional (você define o nome do backup)" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${IMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -sc -g auto -e1 auto -rm-win-swap-hib -e2 -r --batch -i 2000 -p reboot saveparts ask_user ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } if [ ! -f ${BKP_HDNUM}/${OEMIMG_DIRECTORY}/${OEM_RECOVERY_IMG}/clonezilla-img ]; then menuentry "Criar imagem do sistema operacional em modo OEM (Estado de Fábrica)" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${OEMIMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -sc -g auto -e1 auto -rm-win-swap-hib -e2 -r --batch -i 2000 -p reboot saveparts ${OEM_RECOVERY_IMG} ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } fi } submenu 'Restaurar o Sistema Operacional' --class recovery { if [ -f ${BKP_HDNUM}/${IMG_DIRECTORY}/${AUTO_RECOVERY_IMG}/clonezilla-img ]; then menuentry "Restaurar o sistema operacional (100% Automatizado)" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${IMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -g auto -e1 auto -e2 --batch -k -r -p reboot restoreparts ${AUTO_RECOVERY_IMG} ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } fi menuentry "Restaurar o sistema através de um backup (Escolha o Backup)" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${IMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -g auto -e1 auto -e2 -k --batch -r -p reboot restoreparts ask_user ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } if [ -f ${BKP_HDNUM}/${OEMIMG_DIRECTORY}/${OEM_RECOVERY_IMG}/clonezilla-img ]; then menuentry "Restaurar o sistema para estado de fábrica - (OEM Recovery)" { search --set=root --file /${RECOVERY_ROOT_DIR}/initrd.img set ocs_prerun0="mount /dev/${BKP_PARTITION} /mnt" set ocs_prerun1="mount --bind /mnt/${OEMIMG_DIRECTORY} /home/partimag/" set ocs_live_run_custom="ocs-sr -g auto -e1 auto -e2 --batch -k -r -p reboot restoreparts ${OEM_RECOVERY_IMG} ${WIN_PARTITION}" set BOOT_OPTIONS="live-media-path=${RECOVERY_ROOT_DIR} boot=live config keyboard-model=abnt2 keyboard-layouts=br locales=pt_BR.UTF-8 noswap edd=on" linux /${RECOVERY_ROOT_DIR}/vmlinuz ${BOOT_OPTIONS} ocs_prerun=\"${ocs_prerun0}\" ocs_prerun1=\"${ocs_prerun1}\" ocs_live_run=\"${ocs_live_run_custom}\" nosplash toram=filesystem.squashfs initrd /${RECOVERY_ROOT_DIR}/initrd.img } fi } menuentry "Manutenção Remota de Backups - VNC: ${SYSRCD_IP}:5901" { set isofile="/${ISO_DIRECTORY}/systemrescuecd-x86-4.1.0.iso" export ${isofile} loopback loop ${isofile} set root=(loop) linux /isolinux/altker32 docache setkmap=br-a dostartx isoloop=${isofile} ethx=${SYSRCD_IP}/24 dns=${SYSRCD_DNS} gateway=${SYSRCD_GATEWAY} dhcphostname=${SYSRCD_HOSTNAME} rootpass=${ROOT_PASSWD} vncserver=1:${VNC_PASSWD} initrd /isolinux/initram.igz } } submenu "Iniciar Linux (Apartir de Live ISO)" --class gnu-linux { menuentry 'Ubuntu 13.10 32bit - Live' --class ubuntu { set isofile="/${ISO_DIRECTORY}/ubuntu-13.10-desktop-i386.iso" set seedfile='/cdrom/preseed/ubuntu.seed' loopback loop ${isofile} linux (loop)/casper/vmlinuz iso-scan/filename=${isofile} boot=casper file=${seedfile} debian-installer/language=pt keyboard-configuration/layoutcode=br noprompt quiet splash -- initrd (loop)/casper/initrd.lz } menuentry 'Kubuntu 13.10 64bit - Live' --class kubuntu { set isofile="/${ISO_DIRECTORY}/kubuntu-13.10-desktop-amd64.iso" set seedfile='/cdrom/preseed/ubuntu.seed' loopback loop ${isofile} linux (loop)/casper/vmlinuz.efi iso-scan/filename=${isofile} boot=casper file=${seedfile} maybe-ubiquity quiet splash -- initrd (loop)/casper/initrd.lz } # menuentry "Manutenção Remota de Backups - VNC: ${SYSRCD_IP}:5901" { # set isofile="/${ISO_DIRECTORY}/systemrescuecd-x86-4.1.0.iso" # export ${isofile} # loopback loop ${isofile} # set root=(loop) # linux /isolinux/altker32 docache setkmap=br-a dostartx isoloop=${isofile} ethx=${SYSRCD_IP}/24 dns=${SYSRCD_DNS} gateway=${SYSRCD_GATEWAY} dhcphostname=${SYSRCD_HOSTNAME} rootpass=${ROOT_PASSWD} vncserver=1:${VNC_PASSWD} # initrd /isolinux/initram.igz # } } menuentry 'Reiniciar o Computador' { reboot } menuentry 'Desligar o Computador' { halt }