Compare commits
119 Commits
Author | SHA1 | Date |
---|---|---|
|
78b938facf | |
|
539b11bbf4 | |
|
4de41eb836 | |
|
4a11725b1e | |
|
508822fc90 | |
|
6d0a09e831 | |
|
8ebc01bd91 | |
|
ee531af4fb | |
|
a6367ccb78 | |
|
36082437e1 | |
|
808caa1e74 | |
|
bd178bb4c3 | |
|
f6b36c4ec5 | |
|
d912402e32 | |
|
58d7c41998 | |
|
7d7332a1fc | |
|
e4c2c5cf2b | |
|
91e06a64fd | |
|
9f90d46ea1 | |
|
6145f685aa | |
|
3d40baa0e4 | |
|
c6c75e6550 | |
|
0e6be87757 | |
|
517ba94203 | |
|
7ad2308fa3 | |
|
42d81b12bb | |
|
2129abf060 | |
|
0d61c0643e | |
|
89fa572c85 | |
|
45dd058774 | |
|
f25205f451 | |
|
6b51f740a4 | |
|
ed455b17a6 | |
|
727708b1ae | |
|
0c4e257048 | |
|
910d35f80c | |
|
616d10b594 | |
|
40f86c0af1 | |
|
15c0003442 | |
|
f01db134da | |
|
6d5b9231d2 | |
|
9dc70808c5 | |
|
daba59d46c | |
|
4ecf677a74 | |
|
3da9edc995 | |
|
b60ff761e7 | |
|
588e421040 | |
|
f87cc613ab | |
|
70b531c463 | |
|
ae94ac7c16 | |
|
eb0fd03137 | |
|
0c772d5619 | |
|
20b17cb129 | |
|
37190c7b3a | |
|
622ecfd4a4 | |
|
238ec98071 | |
|
eeee8266db | |
|
c2024d2490 | |
|
2a9d455307 | |
|
652708388e | |
|
373f133ac7 | |
|
a305f993c3 | |
|
a905d652e6 | |
|
42c83f7e6a | |
|
6334e82a42 | |
|
2c22f0c31e | |
|
122992112b | |
|
e27aa30804 | |
|
d0ae72a251 | |
|
ec0f276abf | |
|
a09d5128be | |
|
16a43af329 | |
|
17a5971e49 | |
|
3f7bc4a77a | |
|
24e081752d | |
|
8299bfc896 | |
|
70603de2a3 | |
|
20c1fe030d | |
|
1638b7a721 | |
|
9d4b82db20 | |
|
3de28e1e56 | |
|
8eda1e1150 | |
|
66a0af3a92 | |
|
0f8d56d2c8 | |
|
84595dc32f | |
|
002e366552 | |
|
3a20b31b49 | |
|
c915522962 | |
|
17f3cd7eeb | |
|
42ee12d51c | |
|
973e57eefa | |
|
bf3ee94724 | |
|
04be5de7f1 | |
|
4a871fff22 | |
|
37b0f5dd25 | |
|
790484cb7d | |
|
42c90e9771 | |
|
9332ff25cd | |
|
c10ba9aac0 | |
|
0cfeffbc82 | |
|
def912cce3 | |
|
75bd81d1e9 | |
|
1f0dc50194 | |
|
18cdda254b | |
|
35f8e9333d | |
|
070514d449 | |
|
bb103295ea | |
|
bc2858ecbf | |
|
a13d554374 | |
|
a2c3572512 | |
|
885d4a84b2 | |
|
fc43f861b7 | |
|
d3a95c2fe5 | |
|
113bd4d1f5 | |
|
3c50a65df5 | |
|
9276573c02 | |
|
8d9c63ff6c | |
|
aeb14a717b | |
|
00c53fb022 |
|
@ -14,11 +14,11 @@ assignees: ''
|
|||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
Steps to reproduce the behaviour:
|
||||
1. Run `quickemu` with arguments '...'
|
||||
2. See error
|
||||
|
||||
**Expected behavior**
|
||||
**Expected behaviour**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Quickemu output**
|
||||
|
|
|
@ -13,9 +13,9 @@ jobs:
|
|||
name: Flake Checker
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: DeterminateSystems/nix-installer-action@v12
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@v7
|
||||
- uses: DeterminateSystems/flake-checker-action@v8
|
||||
- uses: DeterminateSystems/nix-installer-action@v19
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@v9
|
||||
- uses: DeterminateSystems/flake-checker-action@v12
|
||||
|
|
|
@ -10,11 +10,11 @@ jobs:
|
|||
name: Flake Lock Updater
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- uses: DeterminateSystems/nix-installer-action@v12
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@v7
|
||||
- uses: DeterminateSystems/update-flake-lock@v23
|
||||
- uses: DeterminateSystems/nix-installer-action@v19
|
||||
- uses: DeterminateSystems/magic-nix-cache-action@v9
|
||||
- uses: DeterminateSystems/update-flake-lock@v27
|
||||
with:
|
||||
pr-title: "chore: update flake.lock"
|
||||
|
|
|
@ -15,7 +15,7 @@ jobs:
|
|||
name: Validate pull request title
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v5
|
||||
- uses: amannn/action-semantic-pull-request@v6
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
|
|
|
@ -10,7 +10,7 @@ jobs:
|
|||
name: Shellcheck
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Run ShellCheck
|
||||
uses: ludeeus/action-shellcheck@master
|
||||
with:
|
||||
|
|
|
@ -16,7 +16,7 @@ jobs:
|
|||
name: "Check versions ⚖️"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: "Compare App and Git versions 🟰"
|
||||
|
@ -37,7 +37,7 @@ jobs:
|
|||
name: "Draft Release 📥️"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Create release ${{ github.ref }} as a draft
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -49,7 +49,7 @@ jobs:
|
|||
name: "Build Release 👨🔧"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Build and Upload .deb
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -67,7 +67,7 @@ jobs:
|
|||
name: "Publish Release 📤️"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Publish release ${{ github.ref }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -85,7 +85,7 @@ jobs:
|
|||
id-token: "write"
|
||||
contents: "read"
|
||||
steps:
|
||||
- uses: "actions/checkout@v4"
|
||||
- uses: "actions/checkout@v5"
|
||||
with:
|
||||
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
||||
- uses: "DeterminateSystems/nix-installer-action@main"
|
||||
|
@ -102,7 +102,7 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: "Checkout 🥡"
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: "Import gpg key 🔑"
|
||||
|
|
|
@ -29,7 +29,7 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: "Checkout 🥡"
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: "Build & Test .deb 🍥"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
@ -51,11 +51,11 @@ jobs:
|
|||
contents: "read"
|
||||
steps:
|
||||
- name: "Checkout 🥡"
|
||||
uses: "actions/checkout@v4"
|
||||
uses: "actions/checkout@v5"
|
||||
- name: "Install Nix ❄️"
|
||||
uses: "DeterminateSystems/nix-installer-action@v12"
|
||||
uses: "DeterminateSystems/nix-installer-action@v19"
|
||||
- name: "Enable Magic Nix Cache 🪄"
|
||||
uses: "DeterminateSystems/magic-nix-cache-action@v7"
|
||||
uses: "DeterminateSystems/magic-nix-cache-action@v9"
|
||||
- name: "Build & Test .nix ❄️"
|
||||
run: |
|
||||
nix build .#quickemu
|
||||
|
|
|
@ -18,7 +18,7 @@ jobs:
|
|||
name: "Run quickget tests 👟"
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: "Install dependencies 📦️"
|
||||
run: |
|
||||
sudo apt-get -y update
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
[submodule "build-docs"]
|
||||
path = build-docs
|
||||
url = git@github.com:philclifford/quickemu-docs.git
|
||||
url = https://github.com/philclifford/quickemu-docs.git
|
||||
|
|
|
@ -14,7 +14,7 @@ diverse, inclusive, and healthy community.
|
|||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
Examples of behaviour that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
|
@ -25,7 +25,7 @@ community include:
|
|||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
Examples of unacceptable behaviour include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
|
@ -39,8 +39,8 @@ Examples of unacceptable behavior include:
|
|||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
acceptable behaviour and will take appropriate and fair corrective action in
|
||||
response to any behaviour that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
|
@ -58,7 +58,7 @@ representative at an online or offline event.
|
|||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
Instances of abusive, harassing, or otherwise unacceptable behaviour may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
#quickemu channel on Discord.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
@ -73,19 +73,19 @@ the consequences for any action they deem in violation of this Code of Conduct:
|
|||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
**Community Impact**: Use of inappropriate language or other behaviour deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
behaviour was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
**Consequence**: A warning with consequences for continued behaviour. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
|
@ -95,7 +95,7 @@ permanent ban.
|
|||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
sustained inappropriate behaviour.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
|
@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
|
|||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
standards, including sustained inappropriate behaviour, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
class Quickemu < Formula
|
||||
desc "Quickly create and run optimised Windows, macOS and Linux virtual machines"
|
||||
homepage "https://github.com/quickemu-project/quickemu"
|
||||
|
||||
livecheck do
|
||||
url :stable
|
||||
end
|
||||
|
||||
stable do
|
||||
latest_release = JSON.parse(Utils.safe_popen_read("curl", "-s", "https://api.github.com/repos/quickemu-project/quickemu/releases/latest"))
|
||||
version latest_release["tag_name"]
|
||||
url "https://api.github.com/repos/quickemu-project/quickemu/tarball/#{latest_release["tag_name"]}"
|
||||
end
|
||||
|
||||
head "https://github.com/quickemu-project/quickemu.git"
|
||||
license "MIT"
|
||||
|
||||
depends_on "bash"
|
||||
depends_on "cdrtools"
|
||||
depends_on "coreutils"
|
||||
depends_on "jq"
|
||||
depends_on "python3"
|
||||
depends_on "qemu"
|
||||
depends_on "samba"
|
||||
depends_on "socat"
|
||||
depends_on "swtpm"
|
||||
depends_on "usbutils"
|
||||
depends_on "zsync"
|
||||
|
||||
def install
|
||||
bin.install "quickemu"
|
||||
bin.install "quickget"
|
||||
end
|
||||
|
||||
test do
|
||||
# `test do` will create, run in and delete a temporary directory.
|
||||
#
|
||||
# This test will fail and we won't accept that! For Homebrew/homebrew-core
|
||||
# this will need to be a test that verifies the functionality of the
|
||||
# software. Run the test with `brew test quickemu`. Options passed
|
||||
# to `brew install` such as `--HEAD` also need to be provided to `brew test`.
|
||||
#
|
||||
# The installed folder is not in the path, so use the entire path to any
|
||||
# executables being tested: `system bin/"program", "do", "something"`.
|
||||
system "false"
|
||||
end
|
||||
end
|
|
@ -63,7 +63,7 @@ required to run the virtual machines.
|
|||
|
||||
## As featured on [Linux Matters](https://linuxmatters.sh) podcast!
|
||||
|
||||
The presenters of Linux Matters 🐧🎙️ are the creators of each of the principle Quickemu projects. We discussed Quickemu's 2024 reboot in [Episode 30 - Quickemu Rising From the Bashes](https://linuxmatters.sh/30). <!-- and in [Episode 32 - Quick, quicker, quickest](https://linuxmatters.sh/32) [Martin](https://github.com/flexiondotorg) unveils macOS host support for [**Quickemu**](https://github.com/quickemu-project/quickemu), [Mark](https://github.com/marxjohnson) explains the origins of the [**Quickgui**](https://github.com/quickemu-project/quickgui) desktop app and upcoming improvements, and [Alan](https://github.com/popey) debuts [**Quicktest**](https://github.com/quickemu-project/quicktest); a framework for automatically testing operating systems via Quickemu -->
|
||||
The presenters of Linux Matters 🐧🎙️ are the creators of each of the principal Quickemu projects. We discussed Quickemu's 2024 reboot in [Episode 30 - Quickemu Rising From the Bashes](https://linuxmatters.sh/30). <!-- and in [Episode 32 - Quick, quicker, quickest](https://linuxmatters.sh/32) [Martin](https://github.com/flexiondotorg) unveils macOS host support for [**Quickemu**](https://github.com/quickemu-project/quickemu), [Mark](https://github.com/marxjohnson) explains the origins of the [**Quickgui**](https://github.com/quickemu-project/quickgui) desktop app and upcoming improvements, and [Alan](https://github.com/popey) debuts [**Quicktest**](https://github.com/quickemu-project/quicktest); a framework for automatically testing operating systems via Quickemu -->
|
||||
|
||||
<div align="center">
|
||||
<a href="https://linuxmatters.sh" target="_blank"><img src="https://github.com/wimpysworld/nix-config/raw/main/.github/screenshots/linuxmatters.png" alt="Linux Matters Podcast"/></a>
|
||||
|
|
|
@ -22,6 +22,7 @@ Depends:
|
|||
procps,
|
||||
python3-minimal,
|
||||
qemu-system (>= 6.0),
|
||||
base-files (<< 13~) | qemu-system-modules-spice,
|
||||
socat,
|
||||
spice-client-gtk,
|
||||
swtpm,
|
||||
|
|
|
@ -2,4 +2,3 @@ chunkcheck usr/bin
|
|||
quickemu usr/bin
|
||||
quickget usr/bin
|
||||
quickreport usr/bin
|
||||
windowskey usr/bin
|
||||
|
|
|
@ -9,16 +9,18 @@ datadir := $(datarootdir)
|
|||
mandir := $(datarootdir)/man
|
||||
bindir := $(PREFIX)/bin
|
||||
|
||||
all: quickget.1 quickemu.1 quickemu_conf.1
|
||||
all: quickget.1 quickemu.1 quickemu_conf.5
|
||||
|
||||
clean:
|
||||
rm *.1
|
||||
rm *.1 *.5
|
||||
|
||||
install_docs: all
|
||||
install -d $(DESTDIR)$(mandir)/man1
|
||||
install -d $(DESTDIR)$(mandir)/man5
|
||||
install -m 644 quickget.1 $(DESTDIR)$(mandir)/man1
|
||||
install -m 644 quickemu.1 $(DESTDIR)$(mandir)/man1
|
||||
install -m 644 quickemu_conf.1 $(DESTDIR)$(mandir)/man1
|
||||
install -m 644 quickemu_conf.5 $(DESTDIR)$(mandir)/man5
|
||||
rm -f $(DESTDIR)$(mandir)/man1/quickemu_conf.1
|
||||
|
||||
# install -m 644 quickgui.1 $(DESTDIR)$(mandir)/man1
|
||||
|
||||
|
@ -34,7 +36,7 @@ install: install_bins install_docs
|
|||
uninstall::
|
||||
rm -f $(DESTDIR)$(mandir)/man1/quickget.1
|
||||
rm -f $(DESTDIR)$(mandir)/man1/quickemu.1
|
||||
rm -f $(DESTDIR)$(mandir)/man1/quickemu_conf.1
|
||||
rm -f $(DESTDIR)$(mandir)/man5/quickemu_conf.5
|
||||
rm -f $(DESTDIR)$(bindir)/quickget
|
||||
rm -f $(DESTDIR)$(bindir)/quickemu
|
||||
rm -f $(DESTDIR)$(bindir)/quickreport
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
PANDOC ?= pandoc
|
||||
PANDOC_OPTIONS = -f gfm+definition_lists
|
||||
|
||||
MANSECTION ?= 1
|
||||
.SUFFIXES: .1.md .1 .5.md .5
|
||||
|
||||
PANDOC_OPTIONS=-f gfm+definition_lists --standalone
|
||||
|
||||
|
||||
MANPAGE.md = $(PANDOC) --standalone $(PANDOC_OPTIONS) --to man
|
||||
|
||||
%.$(MANSECTION): %.$(MANSECTION).md
|
||||
$(MANPAGE.md) $< -o $@
|
||||
.1.md.1 .5.md.5:
|
||||
$(PANDOC) --standalone $(PANDOC_OPTIONS) --to man -o $@ $<
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.\" Automatically generated by Pandoc 3.2.1
|
||||
.\" Automatically generated by Pandoc 3.6.1
|
||||
.\"
|
||||
.TH "QUICKEMU" "1" "June 29, 2024" "quickemu" "Quickemu User Manual"
|
||||
.TH "QUICKEMU" "1" "December 30, 2024" "quickemu" "Quickemu User Manual"
|
||||
.SH NAME
|
||||
quickemu \- A quick VM builder and manager
|
||||
.SH SYNOPSIS
|
||||
|
@ -190,7 +190,7 @@ Host support for \f[B]Linux and macOS\f[R]
|
|||
.IP \[bu] 2
|
||||
\f[B]Windows\f[R] 10 and 11 including TPM 2.0
|
||||
.IP \[bu] 2
|
||||
\f[B]Windows Server\f[R] 2022 2019 2016 2012\-r2
|
||||
\f[B]Windows Server\f[R] 2022 2019 2016
|
||||
.IP \[bu] 2
|
||||
\c
|
||||
.UR https://ubuntu.com/desktop
|
||||
|
@ -568,11 +568,12 @@ You can also use \f[CR]quickget\f[R] with advanced options :
|
|||
.IP
|
||||
.EX
|
||||
\-\-download <os> <release> [edition] : Download image; no VM configuration
|
||||
\-\-create\-config <os> [path/url] : Create VM config for a OS image
|
||||
\-\-create\-config <os> [path/url] [flags] : Create VM config for an OS image
|
||||
\-\-open\-homepage <os> : Open homepage for the OS
|
||||
\-\-show [os] : Show OS information
|
||||
\-\-version : Show version
|
||||
\-\-help : Show this help message
|
||||
\-\-disable\-unattended : Force quickget not to set up an unattended installation
|
||||
\-\-url [os] [release] [edition] : Show image URL(s)
|
||||
\-\-check [os] [release] [edition] : Check image URL(s)
|
||||
\-\-list : List all supported systems
|
||||
|
@ -690,6 +691,8 @@ wiki
|
|||
.IP \[bu] 2
|
||||
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
|
||||
.IP \[bu] 2
|
||||
\f[CR]maboxlinux\f[R] (Mabox Linux)
|
||||
.IP \[bu] 2
|
||||
\f[CR]mageia\f[R] (Mageia)
|
||||
.IP \[bu] 2
|
||||
\f[CR]manjaro\f[R] (Manjaro)
|
||||
|
@ -724,6 +727,8 @@ wiki
|
|||
.IP \[bu] 2
|
||||
\f[CR]primtux\f[R] (PrimTux)
|
||||
.IP \[bu] 2
|
||||
\f[CR]proxmox\-ve\f[R] (Proxmox VE)
|
||||
.IP \[bu] 2
|
||||
\f[CR]pureos\f[R] (PureOS)
|
||||
.IP \[bu] 2
|
||||
\f[CR]reactos\f[R] (ReactOS)
|
||||
|
@ -1324,6 +1329,6 @@ Full sources at: \c
|
|||
.UR https://github.com/quickemu-project/quickemu
|
||||
.UE \c
|
||||
.PP
|
||||
quickemu_conf(1), quickget(1), quickgui(1)
|
||||
quickemu_conf(5), quickget(1), quickgui(1)
|
||||
.SH AUTHORS
|
||||
Martin Wimpress.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
author: Martin Wimpress
|
||||
date: June 29, 2024
|
||||
date: December 30, 2024
|
||||
footer: quickemu
|
||||
header: Quickemu User Manual
|
||||
section: 1
|
||||
|
@ -175,7 +175,7 @@ Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
|
|||
- Host support for **Linux and macOS**
|
||||
- **macOS** Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
||||
- **Windows** 10 and 11 including TPM 2.0
|
||||
- **Windows Server** 2022 2019 2016 2012-r2
|
||||
- **Windows Server** 2022 2019 2016
|
||||
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
|
||||
flavours](https://ubuntu.com/download/flavours)**
|
||||
- **Nearly 1000 operating system editions are supported!**
|
||||
|
@ -394,11 +394,12 @@ You can also use `quickget` with advanced options :
|
|||
|
||||
``` text
|
||||
--download <os> <release> [edition] : Download image; no VM configuration
|
||||
--create-config <os> [path/url] : Create VM config for a OS image
|
||||
--create-config <os> [path/url] [flags] : Create VM config for an OS image
|
||||
--open-homepage <os> : Open homepage for the OS
|
||||
--show [os] : Show OS information
|
||||
--version : Show version
|
||||
--help : Show this help message
|
||||
--disable-unattended : Force quickget not to set up an unattended installation
|
||||
--url [os] [release] [edition] : Show image URL(s)
|
||||
--check [os] [release] [edition] : Check image URL(s)
|
||||
--list : List all supported systems
|
||||
|
@ -472,6 +473,7 @@ Further information is available from the project
|
|||
- `linuxlite` (Linux Lite)
|
||||
- `linuxmint` (Linux Mint)
|
||||
- `lmde` (Linux Mint Debian Edition)
|
||||
- `maboxlinux` (Mabox Linux)
|
||||
- `mageia` (Mageia)
|
||||
- `manjaro` (Manjaro)
|
||||
- `mxlinux` (MX Linux)
|
||||
|
@ -489,6 +491,7 @@ Further information is available from the project
|
|||
- `popos` (Pop!\_OS)
|
||||
- `porteus` (Porteus)
|
||||
- `primtux` (PrimTux)
|
||||
- `proxmox-ve` (Proxmox VE)
|
||||
- `pureos` (PureOS)
|
||||
- `reactos` (ReactOS)
|
||||
- `rebornos` (RebornOS)
|
||||
|
@ -848,4 +851,4 @@ Submit bug reports online at:
|
|||
|
||||
Full sources at: <https://github.com/quickemu-project/quickemu>
|
||||
|
||||
quickemu_conf(1), quickget(1), quickgui(1)
|
||||
quickemu_conf(5), quickget(1), quickgui(1)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.\" Automatically generated by Pandoc 3.2
|
||||
.\" Automatically generated by Pandoc 3.6.1
|
||||
.\"
|
||||
.TH "QUICKEMU_CONF" "1" "June 24, 2024" "quickemu_conf" "Quickemu Configuration Manual"
|
||||
.TH "QUICKEMU_CONF" "5" "December 30, 2024" "quickemu_conf" "Quickemu Configuration Manual"
|
||||
.SH NAME
|
||||
quickemu_conf \- Options and parameters in the quickemu <vm>.conf
|
||||
.SH DESCRIPTION
|
|
@ -1,9 +1,9 @@
|
|||
---
|
||||
author: Martin Wimpress
|
||||
date: June 24, 2024
|
||||
date: December 30, 2024
|
||||
footer: quickemu_conf
|
||||
header: Quickemu Configuration Manual
|
||||
section: 1
|
||||
section: 5
|
||||
title: QUICKEMU_CONF
|
||||
---
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
.\" Automatically generated by Pandoc 3.2
|
||||
.\" Automatically generated by Pandoc 3.6.1
|
||||
.\"
|
||||
.TH "QUICKGET" "1" "June 24, 2024" "quickget" "Quickget User Manual"
|
||||
.TH "QUICKGET" "1" "December 30, 2024" "quickget" "Quickget User Manual"
|
||||
.SH NAME
|
||||
quickget \- download and prepare materials for building a quickemu VM
|
||||
.SH SYNOPSIS
|
||||
|
@ -129,11 +129,12 @@ You can also use \f[CR]quickget\f[R] with advanced options :
|
|||
.IP
|
||||
.EX
|
||||
\-\-download <os> <release> [edition] : Download image; no VM configuration
|
||||
\-\-create\-config <os> [path/url] : Create VM config for a OS image
|
||||
\-\-create\-config <os> [path/url] [flags] : Create VM config for an OS image
|
||||
\-\-open\-homepage <os> : Open homepage for the OS
|
||||
\-\-show [os] : Show OS information
|
||||
\-\-version : Show version
|
||||
\-\-help : Show this help message
|
||||
\-\-disable\-unattended : Force quickget not to set up an unattended installation
|
||||
\-\-url [os] [release] [edition] : Show image URL(s)
|
||||
\-\-check [os] [release] [edition] : Check image URL(s)
|
||||
\-\-list : List all supported systems
|
||||
|
@ -251,6 +252,8 @@ wiki
|
|||
.IP \[bu] 2
|
||||
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
|
||||
.IP \[bu] 2
|
||||
\f[CR]maboxlinux\f[R] (Mabox Linux)
|
||||
.IP \[bu] 2
|
||||
\f[CR]mageia\f[R] (Mageia)
|
||||
.IP \[bu] 2
|
||||
\f[CR]manjaro\f[R] (Manjaro)
|
||||
|
@ -285,6 +288,8 @@ wiki
|
|||
.IP \[bu] 2
|
||||
\f[CR]primtux\f[R] (PrimTux)
|
||||
.IP \[bu] 2
|
||||
\f[CR]proxmox\-ve\f[R] (Proxmox VE)
|
||||
.IP \[bu] 2
|
||||
\f[CR]pureos\f[R] (PureOS)
|
||||
.IP \[bu] 2
|
||||
\f[CR]reactos\f[R] (ReactOS)
|
||||
|
@ -700,6 +705,6 @@ Full sources at: \c
|
|||
.UR https://github.com/quickemu-project/quickemu
|
||||
.UE \c
|
||||
.PP
|
||||
quickemu(1), quickemu_conf(1), quickgui(1)
|
||||
quickemu(1), quickemu_conf(5), quickgui(1)
|
||||
.SH AUTHORS
|
||||
Martin Wimpress.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
author: Martin Wimpress
|
||||
date: June 24, 2024
|
||||
date: December 30, 2024
|
||||
footer: quickget
|
||||
header: Quickget User Manual
|
||||
section: 1
|
||||
|
@ -124,11 +124,12 @@ You can also use `quickget` with advanced options :
|
|||
|
||||
``` text
|
||||
--download <os> <release> [edition] : Download image; no VM configuration
|
||||
--create-config <os> [path/url] : Create VM config for a OS image
|
||||
--create-config <os> [path/url] [flags] : Create VM config for an OS image
|
||||
--open-homepage <os> : Open homepage for the OS
|
||||
--show [os] : Show OS information
|
||||
--version : Show version
|
||||
--help : Show this help message
|
||||
--disable-unattended : Force quickget not to set up an unattended installation
|
||||
--url [os] [release] [edition] : Show image URL(s)
|
||||
--check [os] [release] [edition] : Check image URL(s)
|
||||
--list : List all supported systems
|
||||
|
@ -202,6 +203,7 @@ Further information is available from the project
|
|||
- `linuxlite` (Linux Lite)
|
||||
- `linuxmint` (Linux Mint)
|
||||
- `lmde` (Linux Mint Debian Edition)
|
||||
- `maboxlinux` (Mabox Linux)
|
||||
- `mageia` (Mageia)
|
||||
- `manjaro` (Manjaro)
|
||||
- `mxlinux` (MX Linux)
|
||||
|
@ -219,6 +221,7 @@ Further information is available from the project
|
|||
- `popos` (Pop!\_OS)
|
||||
- `porteus` (Porteus)
|
||||
- `primtux` (PrimTux)
|
||||
- `proxmox-ve` (Proxmox VE)
|
||||
- `pureos` (PureOS)
|
||||
- `reactos` (ReactOS)
|
||||
- `rebornos` (RebornOS)
|
||||
|
@ -484,4 +487,4 @@ Submit bug reports online at:
|
|||
|
||||
Full sources at: <https://github.com/quickemu-project/quickemu>
|
||||
|
||||
quickemu(1), quickemu_conf(1), quickgui(1)
|
||||
quickemu(1), quickemu_conf(5), quickgui(1)
|
||||
|
|
20
flake.lock
20
flake.lock
|
@ -2,12 +2,12 @@
|
|||
"nodes": {
|
||||
"flake-schemas": {
|
||||
"locked": {
|
||||
"lastModified": 1697467827,
|
||||
"narHash": "sha256-j8SR19V1SRysyJwpOBF4TLuAvAjF5t+gMiboN4gYQDU=",
|
||||
"rev": "764932025c817d4e500a8d2a4d8c565563923d29",
|
||||
"revCount": 29,
|
||||
"lastModified": 1721999734,
|
||||
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
|
||||
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
|
||||
"revCount": 75,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.2/018b3da8-4cc3-7fbb-8ff7-1588413c53e2/source.tar.gz"
|
||||
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
|
@ -16,12 +16,12 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1717952948,
|
||||
"narHash": "sha256-mJi4/gjiwQlSaxjA6AusXBN/6rQRaPCycR7bd8fydnQ=",
|
||||
"rev": "2819fffa7fa42156680f0d282c60d81e8fb185b7",
|
||||
"revCount": 631440,
|
||||
"lastModified": 1756217674,
|
||||
"narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=",
|
||||
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620",
|
||||
"revCount": 808864,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2405.631440%2Brev-2819fffa7fa42156680f0d282c60d81e8fb185b7/0190034c-678d-7039-b45c-fa38168f2500/source.tar.gz"
|
||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2505.808864%2Brev-4e7667a90c167f7a81d906e5a75cba4ad8bee620/0198eaa3-105a-74fa-a9b2-0a930acea8de/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
schemas = flake-schemas.schemas;
|
||||
|
||||
# Define overlays for each supported system
|
||||
overlays = forEachSupportedSystem ({pkgs, system, ...}: {
|
||||
overlays = {
|
||||
default = final: prev: {
|
||||
quickemu = final.callPackage ./package.nix { };
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
# Define packages for each supported system
|
||||
packages = forEachSupportedSystem ({pkgs, system, ...}: rec {
|
||||
|
|
|
@ -81,12 +81,12 @@ stdenv.mkDerivation rec {
|
|||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
installManPage docs/quickget.1 docs/quickemu.1 docs/quickemu_conf.1
|
||||
install -Dm755 -t "$out/bin" chunkcheck quickemu quickget quickreport windowskey
|
||||
installManPage docs/quickget.1 docs/quickemu.1 docs/quickemu_conf.5
|
||||
install -Dm755 -t "$out/bin" chunkcheck quickemu quickget quickreport
|
||||
|
||||
# spice-gtk needs to be put in suffix so that when virtualisation.spiceUSBRedirection
|
||||
# is enabled, the wrapped spice-client-glib-usb-acl-helper is used
|
||||
for f in chunkcheck quickget quickemu quickreport windowskey; do
|
||||
for f in chunkcheck quickget quickemu quickreport; do
|
||||
wrapProgram $out/bin/$f \
|
||||
--prefix PATH : "${lib.makeBinPath runtimePaths}" \
|
||||
--suffix PATH : "${lib.makeBinPath [ spice-gtk ]}"
|
||||
|
|
70
quickemu
70
quickemu
|
@ -10,7 +10,7 @@ function ignore_msrs_always() {
|
|||
# Make sure the host has /etc/modprobe.d
|
||||
if [ -d /etc/modprobe.d ]; then
|
||||
# Skip if ignore_msrs is already enabled, assumes initramfs has been rebuilt
|
||||
if grep -lq 'ignore_msrs=Y' /etc/modprobe.d/kvm-quickemu.conf >/dev/null 2>&1; then
|
||||
if ! grep -lq 'ignore_msrs=Y' /etc/modprobe.d/kvm-quickemu.conf >/dev/null 2>&1; then
|
||||
echo "options kvm ignore_msrs=Y" | sudo tee /etc/modprobe.d/kvm-quickemu.conf
|
||||
sudo update-initramfs -k all -u
|
||||
fi
|
||||
|
@ -323,6 +323,10 @@ function configure_cpu() {
|
|||
HOST_CPU_SOCKETS=$(get_cpu_info 'Socket')
|
||||
HOST_CPU_VENDOR=$(get_cpu_info 'Vendor')
|
||||
|
||||
if [ "${HOST_CPU_SOCKETS}" = "-" ]; then
|
||||
HOST_CPU_SOCKETS=1
|
||||
fi
|
||||
|
||||
CPU_MODEL="host"
|
||||
QEMU_ACCEL="tcg"
|
||||
# Configure appropriately for the host platform
|
||||
|
@ -391,6 +395,16 @@ function configure_cpu() {
|
|||
fi
|
||||
fi
|
||||
|
||||
# SMM is also required for Linux guests when Secure Boot is enabled
|
||||
if [ "${secureboot}" == "on" ]; then
|
||||
if [ "${guest_os}" == "linux" ]; then
|
||||
# SMM is not available on QEMU for macOS via Homebrew
|
||||
if [ "${OS_KERNEL}" == "Linux" ]; then
|
||||
SMM="on"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
case ${guest_os} in
|
||||
batocera|freedos|haiku|solaris) MACHINE_TYPE="pc";;
|
||||
kolibrios|reactos)
|
||||
|
@ -410,7 +424,7 @@ function configure_cpu() {
|
|||
# A CPU with fma is required for Metal support
|
||||
# A CPU with invtsc is required for macOS to boot
|
||||
case ${macos_release} in
|
||||
ventura|sonoma)
|
||||
ventura|sonoma|sequoia)
|
||||
# A CPU with AVX2 support is required for >= macOS Ventura
|
||||
if check_cpu_flag sse4_2 && check_cpu_flag avx2; then
|
||||
if [ "${HOST_CPU_VENDOR}" != "GenuineIntel" ] && [ -z "${HYPERVISOR}" ]; then
|
||||
|
@ -659,13 +673,14 @@ function configure_bios() {
|
|||
if [ -n "${EFI_CODE}" ] || [ ! -e "${EFI_CODE}" ]; then
|
||||
case ${secureboot} in
|
||||
on) # shellcheck disable=SC2054,SC2140
|
||||
ovmfs=("${SHARE_PATH}/OVMF/OVMF_CODE_4M.secboot.fd","${SHARE_PATH}/OVMF/OVMF_VARS_4M.fd" \
|
||||
"${SHARE_PATH}/edk2/ovmf/OVMF_CODE.secboot.fd","${SHARE_PATH}/edk2/ovmf/OVMF_VARS.fd" \
|
||||
ovmfs=("${SHARE_PATH}/OVMF/OVMF_CODE_4M.secboot.fd","${SHARE_PATH}/OVMF/OVMF_VARS_4M.ms.fd" \
|
||||
"${SHARE_PATH}/edk2/ovmf/OVMF_CODE.secboot.fd","${SHARE_PATH}/edk2/ovmf/OVMF_VARS.secboot.fd" \
|
||||
"${SHARE_PATH}/OVMF/x64/OVMF_CODE.secboot.fd","${SHARE_PATH}/OVMF/x64/OVMF_VARS.fd" \
|
||||
"${SHARE_PATH}/edk2-ovmf/OVMF_CODE.secboot.fd","${SHARE_PATH}/edk2-ovmf/OVMF_VARS.fd" \
|
||||
"${SHARE_PATH}/qemu/ovmf-x86_64-smm-ms-code.bin","${SHARE_PATH}/qemu/ovmf-x86_64-smm-ms-vars.bin" \
|
||||
"${SHARE_PATH}/qemu/edk2-x86_64-secure-code.fd","${SHARE_PATH}/qemu/edk2-x86_64-code.fd" \
|
||||
"${SHARE_PATH}/edk2-ovmf/x64/OVMF_CODE.secboot.fd","${SHARE_PATH}/edk2-ovmf/x64/OVMF_VARS.fd"
|
||||
"${SHARE_PATH}/edk2-ovmf/x64/OVMF_CODE.secboot.fd","${SHARE_PATH}/edk2-ovmf/x64/OVMF_VARS.fd" \
|
||||
"${SHARE_PATH}/edk2/x64/OVMF_CODE.secboot.4m.fd","${SHARE_PATH}/edk2/x64/OVMF_VARS.4m.fd"
|
||||
);;
|
||||
*) # shellcheck disable=SC2054,SC2140
|
||||
ovmfs=("${SHARE_PATH}/OVMF/OVMF_CODE_4M.fd","${SHARE_PATH}/OVMF/OVMF_VARS_4M.fd" \
|
||||
|
@ -675,7 +690,8 @@ function configure_bios() {
|
|||
"${SHARE_PATH}/edk2-ovmf/OVMF_CODE.fd","${SHARE_PATH}/edk2-ovmf/OVMF_VARS.fd" \
|
||||
"${SHARE_PATH}/qemu/ovmf-x86_64-4m-code.bin","${SHARE_PATH}/qemu/ovmf-x86_64-4m-vars.bin" \
|
||||
"${SHARE_PATH}/qemu/edk2-x86_64-code.fd","${SHARE_PATH}/qemu/edk2-x86_64-code.fd" \
|
||||
"${SHARE_PATH}/edk2-ovmf/x64/OVMF_CODE.fd","${SHARE_PATH}/edk2-ovmf/x64/OVMF_VARS.fd"
|
||||
"${SHARE_PATH}/edk2-ovmf/x64/OVMF_CODE.fd","${SHARE_PATH}/edk2-ovmf/x64/OVMF_VARS.fd" \
|
||||
"${SHARE_PATH}/edk2/x64/OVMF_CODE.4m.fd","${SHARE_PATH}/edk2/x64/OVMF_VARS.4m.fd"
|
||||
);;
|
||||
esac
|
||||
# Attempt each EFI_CODE file one by one, selecting the corresponding code and vars
|
||||
|
@ -736,7 +752,7 @@ function configure_bios() {
|
|||
|
||||
function configure_os_quirks() {
|
||||
|
||||
if [ "${guest_os}" == "batocera" ] || [ "${guest_os}" == "freedos" ] || [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "kolibrios" ]; then
|
||||
if [ "${guest_os}" == "batocera" ] || [ "${guest_os}" == "haiku" ] || [ "${guest_os}" == "kolibrios" ]; then
|
||||
NET_DEVICE="rtl8139"
|
||||
fi
|
||||
|
||||
|
@ -747,7 +763,8 @@ function configure_os_quirks() {
|
|||
case ${guest_os} in
|
||||
windows-server) NET_DEVICE="e1000";;
|
||||
*bsd|linux*|windows) NET_DEVICE="virtio-net";;
|
||||
freedos) sound_card="sb16";;
|
||||
freedos) sound_card="sb16"
|
||||
NET_DEVICE="pcnet";;
|
||||
*solaris) usb_controller="xhci"
|
||||
sound_card="ac97";;
|
||||
reactos) NET_DEVICE="e1000"
|
||||
|
@ -760,7 +777,7 @@ function configure_os_quirks() {
|
|||
# * VirtIO Memory Balloning is supported since Big Sur (https://pmhahn.github.io/virtio-balloon/)
|
||||
# * VirtIO RNG is supported since Big Sur, but exposed to all guests by default.
|
||||
case ${macos_release} in
|
||||
big-sur|monterey|ventura|sonoma)
|
||||
big-sur|monterey|ventura|sonoma|sequoia)
|
||||
BALLOON="-device virtio-balloon"
|
||||
MAC_DISK_DEV="virtio-blk-pci"
|
||||
NET_DEVICE="virtio-net"
|
||||
|
@ -874,12 +891,23 @@ function configure_storage() {
|
|||
}
|
||||
|
||||
function configure_display() {
|
||||
# Determine which audio driver use between Pulseaudio or ALSA
|
||||
local AUDIO_DRIVER="pa"
|
||||
if pidof pipewire >/dev/null 2>&1; then
|
||||
# QEMU's pipewire audio backend was added in version 8.1
|
||||
if [ "${QEMU_VER_SHORT}" -ge 81 ]; then
|
||||
AUDIO_DRIVER="pipewire"
|
||||
fi
|
||||
elif ! pidof pulseaudio >/dev/null 2>&1; then
|
||||
AUDIO_DRIVER="alsa"
|
||||
fi
|
||||
|
||||
# Setup the appropriate audio device based on the display output
|
||||
# https://www.kraxel.org/blog/2020/01/qemu-sound-audiodev/
|
||||
case ${display} in
|
||||
cocoa) AUDIO_DEV="coreaudio,id=audio0";;
|
||||
none|spice|spice-app) AUDIO_DEV="spice,id=audio0";;
|
||||
*) AUDIO_DEV="pa,id=audio0";;
|
||||
*) AUDIO_DEV="${AUDIO_DRIVER},id=audio0";;
|
||||
esac
|
||||
|
||||
# Determine a sane resolution for Linux guests.
|
||||
|
@ -1086,7 +1114,9 @@ function configure_file_sharing() {
|
|||
fi
|
||||
|
||||
# SMB
|
||||
if [ -x "$(command -v smbd)" ]; then
|
||||
# We need to search in NixOS compatible paths as well as the standard location
|
||||
# since /usr/sbin/smbd may not be in the PATH.
|
||||
if [ -x "$(command -v smbd)" ] || [ -x "/usr/sbin/smbd" ]; then
|
||||
NET+=",smb=${PUBLIC}"
|
||||
echo " - smbd: On guest: smb://10.0.2.4/qemu"
|
||||
fi
|
||||
|
@ -1168,6 +1198,8 @@ function vm_boot() {
|
|||
# Set the hostname of the VM
|
||||
NET="user,hostname=${VMNAME}"
|
||||
|
||||
echo "#!/usr/bin/env bash" > "${VMDIR}/${VMNAME}.sh"
|
||||
|
||||
configure_cpu
|
||||
configure_ram
|
||||
configure_bios
|
||||
|
@ -1180,8 +1212,6 @@ function vm_boot() {
|
|||
configure_usb
|
||||
configure_tpm
|
||||
|
||||
echo "#!/usr/bin/env bash" > "${VMDIR}/${VMNAME}.sh"
|
||||
|
||||
# Changing process name is not supported on macOS
|
||||
if [ "${OS_KERNEL}" == "Linux" ]; then
|
||||
# shellcheck disable=SC2054,SC2206,SC2140
|
||||
|
@ -1191,9 +1221,16 @@ function vm_boot() {
|
|||
args+=(-machine ${MACHINE_TYPE},smm=${SMM},vmport=off,accel=${QEMU_ACCEL} ${GUEST_TWEAKS}
|
||||
${CPU} ${SMP}
|
||||
-m ${RAM_VM} ${BALLOON}
|
||||
-rtc base=localtime,clock=host,driftfix=slew
|
||||
-pidfile "${VMDIR}/${VMNAME}.pid")
|
||||
|
||||
if [ "${guest_os}" == "windows" ] || [ "${guest_os}" == "windows-server" ] || [ "${guest_os}" == "reactos" ] || [ "${guest_os}" == "freedos" ]; then
|
||||
# shellcheck disable=SC2054
|
||||
args+=(-rtc base=localtime,clock=host,driftfix=slew)
|
||||
else
|
||||
# shellcheck disable=SC2054
|
||||
args+=(-rtc base=utc,clock=host)
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2206
|
||||
args+=(${VIDEO} -display ${DISPLAY_RENDER})
|
||||
# Only enable SPICE is using SPICE display
|
||||
|
@ -1893,7 +1930,7 @@ VMPATH=""
|
|||
# shellcheck disable=SC2155
|
||||
readonly LAUNCHER=$(basename "${0}")
|
||||
readonly DISK_MIN_SIZE=$((197632 * 8))
|
||||
readonly VERSION="4.9.6"
|
||||
readonly VERSION="4.9.8"
|
||||
|
||||
# TODO: Make this run the native architecture binary
|
||||
ARCH_VM="x86_64"
|
||||
|
@ -1917,7 +1954,8 @@ if [ "${OS_KERNEL}" == "Darwin" ]; then
|
|||
fi
|
||||
|
||||
QEMU_VER_LONG=$(${QEMU_IMG} --version | head -n 1 | awk '{print $3}')
|
||||
QEMU_VER_SHORT=$(echo "${QEMU_VER_LONG//./}" | cut -c1-2)
|
||||
# strip patch version and remove dots. 6.0.0 => 60 / 10.0.0 => 100
|
||||
QEMU_VER_SHORT=$(echo "${QEMU_VER_LONG%.*}" | sed 's/\.//g')
|
||||
if [ "${QEMU_VER_SHORT}" -lt 60 ]; then
|
||||
echo "ERROR! QEMU 6.0.0 or newer is required, detected ${QEMU_VER_LONG}."
|
||||
exit 1
|
||||
|
|
85
windowskey
85
windowskey
|
@ -1,85 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
import html.parser
|
||||
import os
|
||||
import sys
|
||||
import urllib.request
|
||||
|
||||
|
||||
"""
|
||||
Download Windows product keys from MicroSoft
|
||||
"""
|
||||
|
||||
key_page_url = "https://docs.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys"
|
||||
|
||||
|
||||
def usage():
|
||||
script = os.path.basename(sys.argv[0])
|
||||
message = f"""Usage: {script} [windows-version]
|
||||
|
||||
To specify the version of Windows you'd like, pass a string that matches the
|
||||
name of the operating system you'd like to download. Case doesn't matter, so
|
||||
you can use "windows 10" or "Windows 10".
|
||||
|
||||
e.g.
|
||||
|
||||
{script} "Windows 10"
|
||||
{script} "enterprise"
|
||||
|
||||
"""
|
||||
print(message, file=sys.stderr)
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def download_page(url):
|
||||
response = urllib.request.urlopen(url)
|
||||
return response.read().decode("utf-8")
|
||||
|
||||
|
||||
class WindowsKeyPageParser(html.parser.HTMLParser):
|
||||
def __init__(self, *, convert_charrefs=True):
|
||||
super().__init__(convert_charrefs=True)
|
||||
self.product_keys = {}
|
||||
self.parsing_os = False
|
||||
|
||||
def handle_starttag(self, tag, attrs):
|
||||
self.parsing_os = tag == "td"
|
||||
|
||||
def handle_endtag(self, tag):
|
||||
self.parsing_os = False
|
||||
|
||||
def handle_data(self, data):
|
||||
if self.parsing_os:
|
||||
self.stash_table_cell(data)
|
||||
|
||||
def stash_table_cell(self, data):
|
||||
if "Windows" in data:
|
||||
self.current_os = data
|
||||
else:
|
||||
product_key = data
|
||||
self.product_keys[self.current_os] = product_key
|
||||
|
||||
|
||||
def find_keys_for_all_versions(markup):
|
||||
parser = WindowsKeyPageParser()
|
||||
parser.feed(markup)
|
||||
return parser.product_keys
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
arg = sys.argv[1]
|
||||
except IndexError:
|
||||
windows_version = ""
|
||||
else:
|
||||
if arg in ["-h", "--help"]:
|
||||
usage()
|
||||
windows_version = arg
|
||||
|
||||
markup = download_page(key_page_url)
|
||||
product_keys = find_keys_for_all_versions(markup)
|
||||
|
||||
for os_name, product_key in product_keys.items():
|
||||
if windows_version.lower() in os_name.lower():
|
||||
print(f"{os_name}: {product_key}")
|
Loading…
Reference in New Issue