diff --git a/home/lucifer/.local/share/nautilus/scripts/06-Qemu/05a-RPi-cli b/home/lucifer/.local/share/nautilus/scripts/06-Qemu/05a-RPi-cli new file mode 100755 index 0000000..36dccac --- /dev/null +++ b/home/lucifer/.local/share/nautilus/scripts/06-Qemu/05a-RPi-cli @@ -0,0 +1,180 @@ +#!/bin/bash +#=============================================================================== +# +# DIRECTORY: +# /home/*/.local/share/nautilus/scripts/06-Qemu/ +# OR +# /home/*/.gnome2/nautilus-sctipts/06-Qemu/ (deprecated) +# +# FILE: +# 05a-RPi-cli +# +# USAGE: +# Right klick on a RAW image (.dd) and +# choose this nautilus script from the context menu. +# +# OPTIONS: +# none +# +# DESCRIPTION: +# Boot up an emulated Raspberry Pi image with command line but more RAM. +# +# REQUIREMENTS: +# bash, zenity... +# +# BUGS: +# --- +# +# NOTES: +# Tested on +# - Debian 8+ +# - Arch Linux +# +# AUTHOR: +# Patrick Neumann, patrick@neumannsland.de +# +# COMPANY: +# (privately) +# +# VERSION: +# 0.9 (beta) +# +# LINK TO THE MOST CURRENT VERSION: +# https://... +# +# CREATED: +# 01.12.2020 +# +# COPYRIGHT (C): +# 2015-2020 - Patrick Neumann +# +# LICENSE: +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# WARRANTY: +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# TODO: +# --- +# +# HISTORY: +# 0.9 - Patrick Neumann - Initial (public) release +# +#=============================================================================== + +#------------------------------------------------------------------------------- +# Additional supported Distribution(s) (add before Library!). +#------------------------------------------------------------------------------- +SUPPORTED_OSR="arch" + +#------------------------------------------------------------------------------- +# Check for library (casualscripter_nautilus-scripts_functions.sh). +#------------------------------------------------------------------------------- +readonly LIBRARY="${0%/*/*}/.casualscripter_nautilus-scripts_functions.sh" +if [ ! -f "${LIBRARY}" ] ; then + zenity --error \ + --text \ + "ERROR: casualscripter_nautilus-scripts_functions.sh MISSING!" + exit 1 +fi + +source "${LIBRARY}" + +#------------------------------------------------------------------------------- +# Checks (see library "casualscripter_nautilus-scripts_functions.sh"). +#------------------------------------------------------------------------------- +check_dep "${LS_BIN}" "coreutils" +check_dep "${GREP_BIN}" "grep" +check_dep "${AWK_BIN}" "gawk" +check_dep "${TR_BIN}" "coreutils" +check_dep "${FCAT_BIN}" "sleuthkit" +check_dep "${SED_BIN}" "sed" +check_dep "${GTERMINAL_BIN}" "gnome-terminal" +check_dep "${QEMUSYSARM_BIN}" "qemu-arch-extra" + +check_ext "${SOURCE}" "dd" + +#------------------------------------------------------------------------------- +# Avoid unintended changes to the Image. +#------------------------------------------------------------------------------- +check_if_pwd_is_used_as_mountpoint + +#------------------------------------------------------------------------------- +# Check, if source is not mounted. +#------------------------------------------------------------------------------- +check_if_source_is_not_mounted + +#------------------------------------------------------------------------------- +# Choose kernel: +#------------------------------------------------------------------------------- +readonly DIRECTORY="${HOME}/RPi" +readonly VERSIONS="$( ${LS_BIN} -1 "${DIRECTORY}" \ + | ${GREP_BIN} "^[[:digit:]]" \ + | ${AWK_BIN} 'NR == 1 { print "TRUE", $0; }; NR > 1 { print "FALSE", $0; }' \ + | ${TR_BIN} "\n" " " )" +readonly VERSION="$( ${ZENITY_BIN} --list \ + --text "Choose kernel version:" \ + --radiolist \ + --width=180 \ + --height=400 \ + --column "Pick" \ + --column "Option" ${VERSIONS} )" + +if [ -z "${VERSION}" ] ; then + ${ZENITY_BIN} --error \ + --text \ + "ERROR: no version choosen!" + exit 1 +fi + +readonly KERNELS="$( ${LS_BIN} -1 "${DIRECTORY}/${VERSION}" \ + | ${AWK_BIN} 'NR == 1 { print "TRUE", $0; }; NR > 1 { print "FALSE", $0; }' \ + | ${TR_BIN} "\n" " " )" +readonly KERNEL="$( ${ZENITY_BIN} --list \ + --text "Choose kernel arch:" \ + --radiolist \ + --width=240 \ + --height=240 \ + --column "Pick" \ + --column "Option" ${KERNELS} )" + +if [ -z "${KERNEL}" ] ; then + ${ZENITY_BIN} --error \ + --text \ + "ERROR: no arch choosen!" + exit 1 +fi + +# allways offset 8192 or has it to be more generic!? +readonly CMDLINE="$( ${FCAT_BIN} -o 8192 "/cmdline.txt" "${SOURCE}" \ + | ${SED_BIN} 's/tty1/ttyAMA0/' )" + +#------------------------------------------------------------------------------- +# ... +#------------------------------------------------------------------------------- +${GTERMINAL_BIN} --execute \ + ${QEMUSYSARM_BIN} \ + -kernel "${DIRECTORY}/${VERSION}/${KERNEL}" \ + -append "${CMDLINE}" \ + -m 1024 \ + -M virt \ + -cpu cortex-a7 \ + -drive file="${SOURCE}",format=raw,if=none,id=hd-root \ + -device virtio-blk-device,drive=hd-root \ + -netdev user,id=mynet \ + -device virtio-net-device,netdev=mynet \ + -object rng-random,filename=/dev/urandom,id=rng0 \ + -device virtio-rng-pci,rng=rng0 \ + -nographic \ + -no-reboot + +exit 0 diff --git a/home/lucifer/.local/share/nautilus/scripts/06-Qemu/05b-RPi-gui b/home/lucifer/.local/share/nautilus/scripts/06-Qemu/05b-RPi-gui new file mode 100755 index 0000000..0031fd0 --- /dev/null +++ b/home/lucifer/.local/share/nautilus/scripts/06-Qemu/05b-RPi-gui @@ -0,0 +1,134 @@ +#!/bin/bash +#=============================================================================== +# +# DIRECTORY: +# /home/*/.local/share/nautilus/scripts/06-Qemu/ +# OR +# /home/*/.gnome2/nautilus-sctipts/06-Qemu/ (deprecated) +# +# FILE: +# 05b-RPi-gui +# +# USAGE: +# Right klick on a RAW image (.dd) and +# choose this nautilus script from the context menu. +# +# OPTIONS: +# none +# +# DESCRIPTION: +# Boot up an emulated Raspberry Pi image with GUI but less RAM. +# +# REQUIREMENTS: +# bash, zenity... +# +# BUGS: +# --- +# +# NOTES: +# Tested on +# - Debian 8+ +# - Arch Linux +# +# AUTHOR: +# Patrick Neumann, patrick@neumannsland.de +# +# COMPANY: +# (privately) +# +# VERSION: +# 0.9 (beta) +# +# LINK TO THE MOST CURRENT VERSION: +# https://... +# +# CREATED: +# 01.12.2020 +# +# COPYRIGHT (C): +# 2015-2020 - Patrick Neumann +# +# LICENSE: +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# WARRANTY: +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# TODO: +# --- +# +# HISTORY: +# 0.9 - Patrick Neumann - Initial (public) release +# +#=============================================================================== + +#------------------------------------------------------------------------------- +# Additional supported Distribution(s) (add before Library!). +#------------------------------------------------------------------------------- +SUPPORTED_OSR="arch" + +#------------------------------------------------------------------------------- +# Check for library (casualscripter_nautilus-scripts_functions.sh). +#------------------------------------------------------------------------------- +readonly LIBRARY="${0%/*/*}/.casualscripter_nautilus-scripts_functions.sh" +if [ ! -f "${LIBRARY}" ] ; then + ${ZENITY_BIN} --error \ + --text \ + "ERROR: casualscripter_nautilus-scripts_functions.sh MISSING!" + exit 1 +fi + +source "${LIBRARY}" + +#------------------------------------------------------------------------------- +# Checks (see library "casualscripter_nautilus-scripts_functions.sh"). +#------------------------------------------------------------------------------- +check_dep "${FILE_BIN}" "file" +check_dep "${GREP_BIN}" "grep" +check_dep "${GTERMINAL_BIN}" "gnome-terminal" +check_dep "${SUDO_BIN}" "sudo" +check_dep "${QEMUSYS64_BIN}" "qemu-system-x86" +check_dep "${SLEEP_BIN}" "coreutils" +check_dep "${VINAGRE_BIN}" "vinagre" + +check_ext "${SOURCE}" "dd" + +#------------------------------------------------------------------------------- +# Avoid unintended changes to the Image. +#------------------------------------------------------------------------------- +check_if_pwd_is_used_as_mountpoint + +#------------------------------------------------------------------------------- +# Check, if source is not mounted. +#------------------------------------------------------------------------------- +check_if_source_is_not_mounted + +#------------------------------------------------------------------------------- +# ... +#------------------------------------------------------------------------------- +${GTERMINAL_BIN} --execute \ + ${QEMUSYSARM_BIN} \ + -M versatilepb \ + -cpu arm1176 \ + -m 256 \ + -drive file="${SOURCE}",if=none,index=0,media=disk,format=raw,id=disk0 \ + -device virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off \ + -net nic \ + -net user \ + -dtb "${HOME}/RPi/versatilepb/versatile-pb-buster-5.4.51.dtb" \ + -kernel "${HOME}/RPi/versatilepb/kernel-qemu-5.4.51-buster" \ + -append 'root=/dev/vda2 panic=1' \ + -no-reboot + +exit 0 + +