Add FreeBSD support (#62)

* Add releases_freebsd() function

* complete FreeBSD addition

* Add README.md info for FreeBSD

Co-authored-by: Kai Lyons <kailyons@pop-os.localdomain>
This commit is contained in:
Kai Lyons 2021-10-07 09:22:45 -06:00 committed by GitHub
parent 5e5b68f4f4
commit 0dd26be472
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 2 deletions

View File

@ -253,6 +253,18 @@ quickemu --vm windows-11.conf
* Download and install [UsbDk](https://www.spice-space.org/download/windows/usbdk/)
* Enables USB SPICE pass-through between the host and guest.
### FreeBSD Guest
`quickemu` supports FreeBSD production releases. FreeBSD support is maintained by `<kai@potabi.com>`.
FreeBSD version command reference (just in case):
* 12.2: `12_2`
* 13.0: `13_0`
```bash
quickget freebsd 13_0
quickemu --vm freebsd-13_0.conf
```
### Regional versions
By default `quickget` will download the *"English International"* release, but

View File

@ -1,7 +1,8 @@
#!/usr/bin/env bash
function os_support() {
echo kubuntu \
echo freebsd \
kubuntu \
lubuntu \
macos \
ubuntu \
@ -13,6 +14,12 @@ function os_support() {
xubuntu
}
function releases_freebsd(){
echo 13_0 \
12_2 # replace with 12.3 upon release
# 14_0 # Waiting for 14.0 release
}
function releases_macos() {
echo high-sierra \
mojave \
@ -128,7 +135,10 @@ function make_vm_config() {
local GUEST=""
IMAGE_FILE="${1}"
ISO_FILE="${2}"
if [[ "${OS}" == *"ubuntu"* ]]; then
if [[ "${OS}" == "freebsd" ]]; then
GUEST="freebsd"
IMAGE_TYPE="iso"
elif [[ "${OS}" == *"ubuntu"* ]]; then
GUEST="linux"
IMAGE_TYPE="iso"
elif [ "${OS}" == "macos" ]; then
@ -168,6 +178,39 @@ function start_vm_info() {
echo
}
function get_freebsd() {
# For future releases, use dvd1 iso files.
local URL=""
local CHECKSUMS=""
local DL_BASE="https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES"
local VERSION=""
case ${RELEASE} in
13_0)
VERSION="13.0"
;;
12_2)
VERSION="12.2"
;;
# Waiting until FreeBSD 14 release
# 14_0)
# VERSION="14.0"
# ;;
*)
echo "ERROR! FreeBSD ${RELEASE} is not a supported release."
releases_freebsd
exit 1
;;
esac
URL="${DL_BASE}/${VERSION}/FreeBSD-${VERSION}-RELEASE-amd64-dvd1.iso"
ISO="FreeBSD-${VERSION}-RELEASE-amd64-dvd1.iso"
web_get ${URL} ${VM_PATH}
make_vm_dir
make_vm_config ${ISO}
start_vm_info
}
function get_macos() {
local CWD=""
local MACRECOVERY=""
@ -380,6 +423,8 @@ VM_PATH="${OS}-${RELEASE}"
if [ "${OS}" == "macos" ]; then
get_macos
elif [[ "${OS}" == *"freebsd" ]]; then
get_freebsd
elif [[ "${OS}" == *"ubuntu"* ]]; then
get_ubuntu
elif [ "${OS}" == "windows" ]; then