Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add FreeBSD support #62

Merged
merged 3 commits into from
Oct 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,18 @@ quickemu --vm windows-10.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
Expand Down
49 changes: 47 additions & 2 deletions quickget
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#!/usr/bin/env bash

function os_support() {
echo kubuntu \
echo freebsd \
kubuntu \
lubuntu \
macos \
ubuntu \
Expand All @@ -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 \
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -163,6 +173,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=""
Expand Down Expand Up @@ -375,6 +418,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
Expand Down