mirror of
				https://github.com/oSoWoSo/DistroHopper.git
				synced 2024-08-14 22:46:53 +00:00 
			
		
		
		
	Add FreeDOS support (#374)
* Add support for FreeDOS 1.2 to quickget * Add support for freedos guests to quickemu * Add support for FreeDOS 1.3 to quickget * Force qemu to keep booting from cd after formatting disk * Adjust VM settings * Refactor FreeDOS to use create_vm * Add FreeDOS to README * Add unzip to README as a dependency
This commit is contained in:
		
							parent
							
								
									38b086244d
								
							
						
					
					
						commit
						ebc83ebacf
					
				
					 3 changed files with 55 additions and 4 deletions
				
			
		|  | @ -86,6 +86,7 @@ Requirements | ||||||
| -   [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/) | -   [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/) | ||||||
| -   [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr) | -   [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr) | ||||||
| -   [zsync](http://zsync.moria.org.uk/) | -   [zsync](http://zsync.moria.org.uk/) | ||||||
|  | -   [unzip](http://www.info-zip.org/UnZip.html) | ||||||
| 
 | 
 | ||||||
| Usage | Usage | ||||||
| ===== | ===== | ||||||
|  | @ -215,10 +216,11 @@ Other Operating Systems | ||||||
| -   `cachyos` (CachyOS) | -   `cachyos` (CachyOS) | ||||||
| -   `debian` (Debian) | -   `debian` (Debian) | ||||||
| -   `devuan` (Devuan) | -   `devuan` (Devuan) | ||||||
|     `dragonflybsd` (DragonFlyBSD) | -    `dragonflybsd` (DragonFlyBSD) | ||||||
| -   `elementary` (elementary OS) | -   `elementary` (elementary OS) | ||||||
| -   `fedora` (Fedora) | -   `fedora` (Fedora) | ||||||
| -   `freebsd` (FreeBSD) | -   `freebsd` (FreeBSD) | ||||||
|  | -    `freedos` (FreeDOS) | ||||||
| -   `garuda` (Garuda Linux) | -   `garuda` (Garuda Linux) | ||||||
| -   `gentoo` (Gentoo) | -   `gentoo` (Gentoo) | ||||||
| -   `ghostbsd` (GhostBSD) | -   `ghostbsd` (GhostBSD) | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								quickemu
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								quickemu
									
										
									
									
									
								
							|  | @ -463,7 +463,7 @@ function vm_boot() { | ||||||
| 
 | 
 | ||||||
|   # Make any OS specific adjustments |   # Make any OS specific adjustments | ||||||
|   case ${guest_os} in |   case ${guest_os} in | ||||||
|     *bsd|haiku|linux) |     *bsd|haiku|freedos|linux) | ||||||
|       CPU="-cpu host,kvm=on" |       CPU="-cpu host,kvm=on" | ||||||
|       if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then |       if [ "${HOST_CPU_VENDOR}" == "AuthenticAMD" ]; then | ||||||
|         CPU="${CPU},topoext" |         CPU="${CPU},topoext" | ||||||
|  | @ -471,7 +471,7 @@ function vm_boot() { | ||||||
| 
 | 
 | ||||||
|       if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then |       if [ "${guest_os}" == "freebsd" ] || [ "${guest_os}" == "ghostbsd" ]; then | ||||||
|         MOUSE="usb-mouse" |         MOUSE="usb-mouse" | ||||||
|       elif [ "${guest_os}" == "haiku" ]; then |       elif [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "freedos" ]; then | ||||||
|         MACHINE_TYPE="pc" |         MACHINE_TYPE="pc" | ||||||
|         NET_DEVICE="rtl8139" |         NET_DEVICE="rtl8139" | ||||||
|       fi |       fi | ||||||
|  | @ -933,7 +933,11 @@ function vm_boot() { | ||||||
|     args+=(-drive media=cdrom,index=1,file="${fixed_iso}") |     args+=(-drive media=cdrom,index=1,file="${fixed_iso}") | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|   if [ -n "${iso}" ] && [ "${guest_os}" == "kolibrios" ]; then |   if [ -n "{iso}" ] && [ "${guest_os}" == "freedos" ]; then | ||||||
|  |     # FreeDOS reboots after partitioning the disk, and QEMU tries to boot from disk after first restart | ||||||
|  |     # This flag sets the boot order to cdrom,disk. It will persist until powering down the VM | ||||||
|  |     args+=(-boot order=dc) | ||||||
|  |   elif [ -n "${iso}" ] && [ "${guest_os}" == "kolibrios" ]; then | ||||||
|     # Since there is bug (probably) in KolibriOS: cdrom indexes 0 or 1 make system show an extra unexisting iso, so we use index=2 |     # Since there is bug (probably) in KolibriOS: cdrom indexes 0 or 1 make system show an extra unexisting iso, so we use index=2 | ||||||
|     # shellcheck disable=SC2054 |     # shellcheck disable=SC2054 | ||||||
|     args+=(-drive media=cdrom,index=2,file="${iso}") |     args+=(-drive media=cdrom,index=2,file="${iso}") | ||||||
|  |  | ||||||
							
								
								
									
										45
									
								
								quickget
									
										
									
									
									
								
							
							
						
						
									
										45
									
								
								quickget
									
										
									
									
									
								
							|  | @ -39,6 +39,7 @@ function pretty_name() { | ||||||
|     dragonflybsd)       PRETTY_NAME="DragonFlyBSD";; |     dragonflybsd)       PRETTY_NAME="DragonFlyBSD";; | ||||||
|     elementary)         PRETTY_NAME="elementary OS";; |     elementary)         PRETTY_NAME="elementary OS";; | ||||||
|     freebsd)            PRETTY_NAME="FreeBSD";; |     freebsd)            PRETTY_NAME="FreeBSD";; | ||||||
|  |     freedos)            PRETTY_NAME="FreeDOS";; | ||||||
|     garuda)             PRETTY_NAME="Garuda Linux";; |     garuda)             PRETTY_NAME="Garuda Linux";; | ||||||
|     ghostbsd)           PRETTY_NAME="GhostBSD";; |     ghostbsd)           PRETTY_NAME="GhostBSD";; | ||||||
|     kdeneon)            PRETTY_NAME="KDE Neon";; |     kdeneon)            PRETTY_NAME="KDE Neon";; | ||||||
|  | @ -166,6 +167,7 @@ function os_support() { | ||||||
|     elementary \ |     elementary \ | ||||||
|     fedora \ |     fedora \ | ||||||
|     freebsd \ |     freebsd \ | ||||||
|  |     freedos \ | ||||||
|     garuda \ |     garuda \ | ||||||
|     gentoo \ |     gentoo \ | ||||||
|     ghostbsd \ |     ghostbsd \ | ||||||
|  | @ -283,6 +285,11 @@ function editions_freebsd(){ | ||||||
|     echo disc1 dvd1 |     echo disc1 dvd1 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function releases_freedos() { | ||||||
|  |     echo 1.2 \ | ||||||
|  |          1.3 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function releases_garuda() { | function releases_garuda() { | ||||||
|     echo 220131 |     echo 220131 | ||||||
| } | } | ||||||
|  | @ -657,6 +664,9 @@ function make_vm_config() { | ||||||
|         haiku) |         haiku) | ||||||
|             GUEST="haiku" |             GUEST="haiku" | ||||||
|             IMAGE_TYPE="iso";; |             IMAGE_TYPE="iso";; | ||||||
|  |         freedos) | ||||||
|  |             GUEST="freedos" | ||||||
|  |             IMAGE_TYPE="iso";; | ||||||
|         kolibrios) |         kolibrios) | ||||||
|             GUEST="kolibrios" |             GUEST="kolibrios" | ||||||
|             IMAGE_TYPE="iso";; |             IMAGE_TYPE="iso";; | ||||||
|  | @ -698,6 +708,11 @@ EOF | ||||||
|         case ${OS} in |         case ${OS} in | ||||||
|           alma|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; |           alma|oraclelinux|rockylinux) echo "disk_size=\"32G\"" >> "${CONF_FILE}";; | ||||||
|           dragonflybsd|haiku|openbsd|netbsd|slackware|tails) echo "boot=\"legacy\"" >> "${CONF_FILE}";; |           dragonflybsd|haiku|openbsd|netbsd|slackware|tails) echo "boot=\"legacy\"" >> "${CONF_FILE}";; | ||||||
|  |           freedos) | ||||||
|  |             echo "boot=\"legacy\"" >> "${CONF_FILE}" | ||||||
|  |             echo "disk_size=\"4G\"" >> "${CONF_FILE}" | ||||||
|  |             echo "ram=\"256M\"" >> "${CONF_FILE}" | ||||||
|  |             ;; | ||||||
|           kolibrios) |           kolibrios) | ||||||
|             echo "boot=\"legacy\"" >> "${CONF_FILE}" |             echo "boot=\"legacy\"" >> "${CONF_FILE}" | ||||||
|             echo "disk_size=\"2G\"" >> "${CONF_FILE}" |             echo "disk_size=\"2G\"" >> "${CONF_FILE}" | ||||||
|  | @ -875,6 +890,28 @@ function get_freebsd() { | ||||||
|     echo "${URL}/${ISO} ${HASH}" |     echo "${URL}/${ISO} ${HASH}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function get_freedos() { | ||||||
|  |     local HASH="" | ||||||
|  |     local ISO="" | ||||||
|  |     local URL="" | ||||||
|  | 
 | ||||||
|  |     URL="http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/${RELEASE}/official" | ||||||
|  | 
 | ||||||
|  |     case $RELEASE in | ||||||
|  |         1.2) | ||||||
|  |           ISO="FD12CD.iso" | ||||||
|  |           HASH=$(wget -q -O- "${URL}/FD12.sha" | grep "${ISO}" | cut -d' ' -f1) | ||||||
|  |           ;; | ||||||
|  |         1.3) | ||||||
|  |           ISO="FD13-LiveCD.zip" | ||||||
|  |           HASH=$(wget -q -O- "${URL}/verify.txt" | grep -A 8 "sha256sum" | \ | ||||||
|  |             grep "${ISO}" | cut -d' ' -f1) | ||||||
|  |           ;; | ||||||
|  |     esac | ||||||
|  | 
 | ||||||
|  |     echo "${URL}/${ISO} ${HASH}" | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function get_garuda() { | function get_garuda() { | ||||||
|     local EDITION="${1:-}" |     local EDITION="${1:-}" | ||||||
|     local HASH="" |     local HASH="" | ||||||
|  | @ -1657,13 +1694,21 @@ create_vm() { | ||||||
|     local URL="${URL_HASH[0]}" |     local URL="${URL_HASH[0]}" | ||||||
|     local HASH="${URL_HASH[1]}" |     local HASH="${URL_HASH[1]}" | ||||||
|     local ISO="${URL##*/}" |     local ISO="${URL##*/}" | ||||||
|  | 
 | ||||||
|     #echo "${URL}" |     #echo "${URL}" | ||||||
|     #echo "${ISO}" |     #echo "${ISO}" | ||||||
|     #echo "${HASH}" |     #echo "${HASH}" | ||||||
|     web_get "${URL}" "${VM_PATH}" |     web_get "${URL}" "${VM_PATH}" | ||||||
|  | 
 | ||||||
|     if [ -n "${HASH}" ]; then |     if [ -n "${HASH}" ]; then | ||||||
|       check_hash "${ISO}" "${HASH}" |       check_hash "${ISO}" "${HASH}" | ||||||
|     fi |     fi | ||||||
|  | 
 | ||||||
|  |     if [ ${OS} == "freedos" ] && [[ $ISO =~ ".zip" ]]; then | ||||||
|  |         unzip ${VM_PATH}/${ISO} -d ${VM_PATH} | ||||||
|  |         ISO=$(ls ${VM_PATH} | grep -i '.iso') | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|     make_vm_config "${ISO}" |     make_vm_config "${ISO}" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue