#!/bin/bash ###################### # QEMU Starter Setup # # Creator: Cooleech # ###################### # Import user dirs . ~/.config/user-dirs.dirs if [ -f ~/.local/QemuStarter ]; then zenity --question --width 300 --title "QEMU Starter Setup" --text "Želite li odinstalirati Qemu Starter skriptu?" if [ $? = 0 ]; then rm -f ~/.local/QemuStarter rm -f "$XDG_DESKTOP_DIR"/QemuStarter.desktop rm -f "$HOME/Qemu Starter" zenity --info --width 300 --title "QEMU Starter Setup" --text "Qemu Starter skripta je odinstalirana!" --timeout 2 fi exit else zenity --question --width 300 --title "QEMU Starter Setup" --text "Prije instalacije ove skripte, provjerite imate li instaliran qemu paket.\n\nŽelite li instalirati Qemu Starter skriptu?" if [ $? != 0 ]; then exit fi fi Version="v0.9" echo -e "#!/bin/bash ##################### # QEMU STARTER $Version # # Creator: Cooleech # ##################### function SELECT_HDD { SelectHDD=\`zenity --title \"\$ScriptName - Odaberi virtualni HDD\" --file-selection --file-filter 'Svi podržani virtualni diskovi (*.cow, *.img, *.vdi, *.vhd, *.qcow, *.qcow2, *.qed, *.qvd) | *.[Cc][Oo][Ww] *.[Ii][Mm][Gg] *.[Vv][Dd][Ii] *.[Vv][Hh][Dd] *.[Qq][Cc][Oo][Ww] *.[Qq][Cc][Oo][Ww]2 *.[Qq][Ee][Dd] *.[Qq][Vv][Dd]' --file-filter 'QEMU virtualni diskovi (*.cow, *.qcow, *.qcow2, *.qed, *.qvd) | *.[Cc][Oo][Ww] *.[Qq][Cc][Oo][Ww] *.[Qq][Cc][Oo][Ww]2 *.[Qq][Ee][Dd] *.[Qq][Vv][Dd]' --file-filter 'Ostali virtualni diskovi (*.img, *.vdi, *.vhd) | *.[Ii][Mm][Gg] *.[Vv][Dd][Ii] *.[Vv][Hh][Dd]'\` if [ \$? != 0 ]; then exit fi } function SELECT_ISO { SelectISO=\`zenity --title \"\$ScriptName - Odaberi .iso datoteku\" --file-selection --file-filter 'ISO | *.[Ii][Ss][Oo]'\` if [ \$? != 0 ]; then exit fi } function RAM_SIZE { MAXmemory=\`cat /proc/meminfo | grep \"MemTotal\" | awk '{print \$2}'\` MAXmemory=\"\$(( MAXmemory / 1024 / 2 ))\" # Maximalno dozvoli pola RAM-a RAMsize=\`zenity --scale --title \"\$ScriptName - Odaberi količinu RAM-a\" --text \"Količina RAM-a za virtualnu mašinu (u MiB):\\\t\\\t\\\t\\\t\\\t\\\t\" --min-value 128 --max-value \$MAXmemory --value \$(( MAXmemory / 2 )) --step 1\` if [ \$? != 0 ]; then exit fi CPU_CORES } function CPU_CORES { CPUcores=\`cat /proc/cpuinfo | grep cores | awk '{print \$4}' | tail -n 1\` CPUcores=\`zenity --scale --title \"\$ScriptName - Odaberi broj jezgri CPU-a\" --text \"Broj jezgri CPU-a za virtualnu mašinu:\\\t\\\t\\\t\\\t\\\t\\\t\\\t\\\t\" --min-value 1 --max-value \$CPUcores --value 1 --step 1\` if [ \$? != 0 ]; then exit fi } function CREATE_HDD { MAXstorage=\`df -h ~ | tail -n1 | awk '{print \$4}'\` MAXstorage=\"\${MAXstorage:0:-1}\" MAXstorage=\"\${MAXstorage%.*}\" # Ne dopusti da se disk zapuni, miminum je 5 GiB free if [ \"\$MAXstorage\" -lt 5 ]; then zenity --error --width 300 --title \"\$ScriptName\" --text \"Preostalo vam je manje od 5 GiB slobodnog prostora na disku.\\\nNe možete nastaviti dalje s radom. Žao mi je :(\" exit fi HDDsize=\`zenity --scale --title \"\$ScriptName - Odaberi veličinu virtualog diska\" --text \"Veličina virtualnog HDD-a kojeg želite stvoriti (u GiB):\\\t\\\t\\\t\\\t\" --min-value 1 --max-value \$MAXstorage --value \$(( MAXstorage / 2 )) --step 1\` if [ \$? != 0 ]; then exit fi SaveHDD=\`zenity --title \"\$ScriptName - Spremi datoteku virtualnog diska (.qvd)\" --file-selection --save --file-filter 'QEMU virtualni disk | *.[Qq][Vv][Dd]'\` if [ \$? != 0 ]; then exit fi qemu-img create -f raw \"\$SaveHDD.qvd\" \${HDDsize}G SelectHDD=\"\$SaveHDD.qvd\" # Bitno za eventualnu instalaciju zenity --info --width 300 --title \"\$ScriptName\" --text \"Stvoren je virtualni disk:\\\n\\\n\$SaveHDD.qvd\\\n\\\nveličine \$HDDsize GB.\" } function RUN_HDD { \$QEMUvirtualMachine\$UseKVM \"\$SelectHDD\" -smp cores=\$CPUcores -boot c -net nic -net user -m \$RAMsize -rtc base=localtime if [ \$? != 0 ]; then zenity --error --width 300 --title \"\$ScriptName\" --text \"Greška pri pokretanju virtualnog diska!\" exit fi } function RUN_ISO { \$QEMUvirtualMachine\$UseKVM -cdrom \"\$SelectISO\" -smp cores=\$CPUcores -boot d -m \$RAMsize -rtc base=localtime if [ \$? != 0 ]; then zenity --error --width 300 --title \"\$ScriptName\" --text \"Greška pri pokretanju ISO datoteke!\" exit fi } function START { QEMUjob=\`zenity --width 300 --height 300 --list --radiolist --title \"\$ScriptName\" --text \"Što želite napraviti s QEMU?\" \\ --column \" ? \" --column \"Radnja za QEMU\" \$MkVirtHDD \"Stvori virtualni HDD\" \$RunVirtHDD \"Pokreni virtualni HDD\" \\ \$RunISO \"Pokreni ISO datoteku\" \$ImageInstall \"Instalacija pomoću ISO datoteke\"\` QEMU_JOB } function QEMU_JOB { case \"\$QEMUjob\" in Stv*HDD) CREATE_HDD # Postavi varijable za START MkVirtHDD=\"FALSE\" RunISO=\"FALSE\" RunVirtHDD=\"FALSE\" ImageInstall=\"TRUE\" START ;; Pok*ISO*) SELECT_ISO RAM_SIZE RUN_ISO ;; Pok*HDD) SELECT_HDD RAM_SIZE RUN_HDD ;; Ins*eke) SELECT_ISO if [ \"\$SelectHDD\" = \"\" ]; then zenity --question --width 300 --title \"\$ScriptName\" --text \"Želite li stvoriti novi virtualni HDD ili koristiti postojeći?\" --cancel-label \"Koristi postojeći\" --ok-label \"Stvori novi\" if [ \$? = 0 ]; then CREATE_HDD else SELECT_HDD fi fi RAM_SIZE \$QEMUvirtualMachine\$UseKVM -cdrom \"\$SelectISO\" -hda \"\$SelectHDD\" -smp cores=\$CPUcores -boot d -net nic -net user -m \$RAMsize -rtc base=localtime ;; esac } ScriptName=\"\${0##*/} $Version\" # Odabir QEMU virtualke po arhitekturi QEMUvirtualMachine=\"qemu-system-\$(uname -m)\" # Hvala JuraStublić! QEMUvirtualMachine=\"\${QEMUvirtualMachine//i?86/i386}\" # Fix za i486, i586 i i686 arhitekture # Detektiranje KVM-a lscpu | grep Virtualization if [ \$? = 0 ]; then UseKVM=\" -enable-kvm\" # Dodan razmak na početku! else UseKVM=\"\" fi if [ \$# -gt 1 ]; then zenity --error --width 300 --title \"\$ScriptName\" --text \"Morate odabrati samo jednu datoteku!\" exit 1 fi # Direktno pokretanje if [ \"\$1\" != \"\" ]; then case \"\$1\" in *cow|*img|*vdi|*vhd|*qcow|*qcow2|*qed|*qvd) RAM_SIZE SelectHDD=\"\$1\" RUN_HDD exit ;; *iso) RAM_SIZE SelectISO=\"\$1\" RUN_ISO exit ;; *) zenity --error --width 300 --title \"\$ScriptName\" --text \"Nepodržana datoteka!\" exit 1 ;; esac fi # Postavi varijable za START MkVirtHDD=\"FALSE\" RunISO=\"TRUE\" RunVirtHDD=\"FALSE\" ImageInstall=\"FALSE\" START" > ~/.local/QemuStarter chmod 777 ~/.local/QemuStarter echo -e "#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Icon=/usr/share/icons/hicolor/48x48/apps/gtk3-demo.png Exec=bash $HOME/.local/QemuStarter Name=Qemu Starter" > "$XDG_DESKTOP_DIR"/QemuStarter.desktop chmod 777 "$XDG_DESKTOP_DIR"/QemuStarter.desktop ln -s ~/.local/QemuStarter "$HOME/Qemu Starter" zenity --info --width 300 --title "QEMU Starter Setup" --text "Instalirana je Qemu Starter skripta. Lokacija skripte: $HOME/.local/\n\nNapravljen je i symlink na tu skriptu i nalazi se u $HOME mapi."