Compare commits
370 Commits
Author | SHA1 | Date |
---|---|---|
|
934ffacdd3 | |
|
3bb13330cc | |
|
6a34e59f7b | |
|
68e1eb5382 | |
|
aaf00ca76a | |
|
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 | |
|
ca8f81f7fb | |
|
0b1dbb4b9e | |
|
083ee169dd | |
|
5568e6d4a9 | |
|
b519043ddb | |
|
ec13f369c5 | |
|
e92fbe95a2 | |
|
e305c41118 | |
|
0440ce149b | |
|
8cf007f8eb | |
|
66dfa6451a | |
|
13f98e32d3 | |
|
a931b2fc2c | |
|
ecfafc8125 | |
|
f7861a6e7f | |
|
1cf80e7d81 | |
|
a36d51ac98 | |
|
93ef5b2f12 | |
|
f846d8f9aa | |
|
90e9bf5087 | |
|
6a4705e365 | |
|
e18b7ed591 | |
|
5d1c8dfc4c | |
|
811b48cc4e | |
|
52e50f9815 | |
|
589f2c9a5c | |
|
8c10b20fb7 | |
|
5e90e336fe | |
|
e035121f71 | |
|
14feb27a8c | |
|
88ae2a100e | |
|
e34e3c5169 | |
|
0addc66fb6 | |
|
e0492eac17 | |
|
8265298a7e | |
|
e6543c53bd | |
|
6714e687c3 | |
|
5f164bc53c | |
|
0b3c3048b6 | |
|
e9d3ff2179 | |
|
93557fb61d | |
|
626591bca8 | |
|
17f5932024 | |
|
faccbae06a | |
|
5f8c40f7ab | |
|
ded5971b6e | |
|
1c89f520f2 | |
|
a4860869ee | |
|
24a2a7b413 | |
|
130cd6a811 | |
|
3a07d353b9 | |
|
4b30ea21f4 | |
|
7afab97c63 | |
|
a85bb0897a | |
|
0f616dcf08 | |
|
e0523746fd | |
|
60c140cfe4 | |
|
7ff1c58c69 | |
|
33a5d71dda | |
|
c760932d48 | |
|
ac42e6b492 | |
|
7e0e3e8306 | |
|
b730adf109 | |
|
9572ea6ae9 | |
|
d60c7baa8b | |
|
2c6a050643 | |
|
56ec3c9e47 | |
|
b8aabcb892 | |
|
7e919dac30 | |
|
9303b73ebe | |
|
9b1c28dbe1 | |
|
a7271034cf | |
|
94035a5930 | |
|
271e0eb7d7 | |
|
585814cf87 | |
|
39ffb0b6f2 | |
|
cb97c14f9d | |
|
f4c362eda7 | |
|
d78255b097 | |
|
cf4b63c51d | |
|
b357fcf240 | |
|
9fe835d107 | |
|
1fea6b46c2 | |
|
7bfeb7721e | |
|
143e3574fb | |
|
6e01e38298 | |
|
1e7714a1af | |
|
5e96af3eca | |
|
590bd560cb | |
|
7f250ed1b0 | |
|
dbe9f612fb | |
|
b009e5cef5 | |
|
023a7355db | |
|
1b6cf0ad69 | |
|
3e6acd8c98 | |
|
ff02a7b2cb | |
|
db04a6686a | |
|
4a7f4a4932 | |
|
aaeb413e3e | |
|
8d8c31e136 | |
|
da42a211d6 | |
|
6985a5f135 | |
|
b7ab6f6d36 | |
|
587d218f14 | |
|
62377a77c0 | |
|
d7fe13356c | |
|
5ab447e18e | |
|
98802b4891 | |
|
83c16dad2c | |
|
cefa2556f3 | |
|
8f58d0e07c | |
|
f4fbb7dd29 | |
|
6c07e3acdc | |
|
a4818025d8 | |
|
c3792c61f4 | |
|
085dfea742 | |
|
7e5d26daab | |
|
eb661221ef | |
|
f14eed78ce | |
|
c5b96cfcd5 | |
|
63409682f2 | |
|
6528520d0f | |
|
989ad37d65 | |
|
685b2ef742 | |
|
20684681c6 | |
|
3d83553d62 | |
|
b8c6465581 | |
|
fb103ef072 | |
|
a67386755e | |
|
c194bad2d4 | |
|
79a8f474f7 | |
|
62f6e30c70 | |
|
0e6fe28141 | |
|
2ccfac7ec0 | |
|
4b36aed8c6 | |
|
57019e72dd | |
|
f0b41749f6 | |
|
178619d673 | |
|
6000546e35 | |
|
c30c4612b5 | |
|
e1ee983245 | |
|
c4b2216617 | |
|
aeacc82b32 | |
|
22d6932ce2 | |
|
5515a9e7d7 | |
|
37c89a62f6 | |
|
1158f5a207 | |
|
8f9f7d8aed | |
|
9cfc4f6ed7 | |
|
45470649cb | |
|
542fcbe50e | |
|
304d459ddb | |
|
f6b5d684d4 | |
|
aaf4ae4ff6 | |
|
325dc7f904 | |
|
f17cfe4e78 | |
|
0b892f82a0 | |
|
cbc3c20104 | |
|
124202511a | |
|
cfa131fb9c | |
|
f3b475ec42 | |
|
f850dcb8db | |
|
e29173a16d | |
|
212a5bd6d0 | |
|
94cdce7dd2 | |
|
980fb1f66a | |
|
45191a796e | |
|
44e653a48d | |
|
6d44ca8c2d | |
|
f723ce6196 | |
|
e6fe7602b9 | |
|
8db3100355 | |
|
4ccee8097b | |
|
c83dc45b11 | |
|
96b7e8f991 | |
|
88cc5f0056 | |
|
9cb021b174 | |
|
99ccc0460b | |
|
19d01e2900 | |
|
f83e710bd2 | |
|
5b017a5163 | |
|
f2fb7f0f69 | |
|
58af2d9d9d | |
|
6b052910e8 | |
|
355f0b14ed | |
|
b2012ab641 | |
|
b45926f83c | |
|
398d4e7246 | |
|
a0d33ca42b | |
|
48f74d2cec | |
|
46fb3e60fb | |
|
ef711a0bbc | |
|
b3a1300144 | |
|
622f6046c7 | |
|
054f471f18 | |
|
70055b746e | |
|
90c373f0ab | |
|
bbc57c14e9 | |
|
50111513be | |
|
a628ee687d | |
|
c6eadae173 | |
|
7163384c3c | |
|
faa24eb7f2 | |
|
edcc5a0f43 | |
|
8d2b99bf46 | |
|
4b3cb8ac0d | |
|
10ccf892cd | |
|
49b1397350 | |
|
06a18b0045 | |
|
2d4157f4c1 | |
|
7f877d108b | |
|
116c35a0c6 | |
|
26a904f861 | |
|
41f4c6ae01 | |
|
c69bded135 | |
|
212450765b | |
|
ea92320fe4 | |
|
5edc931726 | |
|
f09a3b740a | |
|
5f9ff30643 | |
|
db1e602cf1 | |
|
a9576fb3a4 | |
|
bc399df328 | |
|
0b5050511b | |
|
493bacc318 | |
|
d2b5ee4b18 | |
|
9dc669b44e | |
|
27ca4a27f0 | |
|
58599a98ab | |
|
1ae4af6244 | |
|
edfafdee5b | |
|
ed1e85fb12 | |
|
eb6e9bf4df | |
|
dc30cc51b1 | |
|
d01011a39c | |
|
bd9d1d8ba4 | |
|
4679d680f0 | |
|
4283c1f507 | |
|
135a08c7b0 | |
|
7b915d691c | |
|
f51697593a | |
|
4dab035d46 | |
|
16e8115e77 | |
|
637f6a9652 | |
|
da01bdf27d | |
|
cd34eed243 |
|
@ -1,3 +1,3 @@
|
||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: flexiondotorg
|
github: [flexiondotorg, philclifford, lj3954]
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: 'bug: description of the bug you encountered'
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**I confirm this bug has not already been reported**
|
||||||
|
- [ ] I have searched the issues and this bug has not been reported previously
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behaviour:
|
||||||
|
1. Run `quickemu` with arguments '...'
|
||||||
|
2. See error
|
||||||
|
|
||||||
|
**Expected behaviour**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Quickemu output**
|
||||||
|
Run `quickemu` or `quickemu` and include the output of the failure below:
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Quickemu output</summary>
|
||||||
|
|
||||||
|
```text
|
||||||
|
quickemu/quickget output here
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
**System information**
|
||||||
|
Run `quickreport` and include the output here; if you can't run `quickreport`,
|
||||||
|
please provide the output of the following:
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Quickreport output</summary>
|
||||||
|
|
||||||
|
```text
|
||||||
|
quickreport output here
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: 'feat: describe the feature you are requesting'
|
||||||
|
labels: ''
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**I confirm this feature has not been previously requested**
|
||||||
|
- [ ] I have searched the issues and this feature has not previously been requested
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
|
@ -1,58 +0,0 @@
|
||||||
<!--
|
|
||||||
Please fill out the following template to the best of your ability.
|
|
||||||
If you're not sure about something, feel free to ask for help in Discord or the Discussions.
|
|
||||||
The more information you provide, the easier it will be to help you.
|
|
||||||
Issues that completely ignore this template will be closed.
|
|
||||||
-->
|
|
||||||
|
|
||||||
# Expected behavior
|
|
||||||
|
|
||||||
Describe your expected behavior.
|
|
||||||
|
|
||||||
## Actual behavior
|
|
||||||
|
|
||||||
Describe the actual behavior.
|
|
||||||
|
|
||||||
# Steps to reproduce the behavior
|
|
||||||
|
|
||||||
Outline the steps to reproduce the issue you've encountered.
|
|
||||||
|
|
||||||
# Additional context
|
|
||||||
|
|
||||||
## Quickemu output
|
|
||||||
|
|
||||||
Run `quickemu` or `quickemu` and include the output of the failure below:
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Quickemu output</summary>
|
|
||||||
|
|
||||||
```text
|
|
||||||
quickemu/quickget output here
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## System Information
|
|
||||||
|
|
||||||
**Run `quickreport` and include the output here**; if you can't run `quickreport`,
|
|
||||||
please provide the output of the following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
clear && \
|
|
||||||
echo -e "Ver:\t$(quickemu --version)" && \
|
|
||||||
echo -e "Distro:\t$(grep PRETTY_NAME /etc/os-release | cut -d'"' -f2)" && \
|
|
||||||
echo -e "Kernel:\t$(uname -s -r -m)" && \
|
|
||||||
echo -e "Memory:\t$(free --si -h | awk '/Mem:/{print $2}')" && \
|
|
||||||
lspci | grep -i vga | cut -d':' -f3 && echo && \
|
|
||||||
curl --version && echo && \
|
|
||||||
qemu-system-"$(uname -m)" -version | head -1 && \
|
|
||||||
qemu-system-"$(uname -m)" -cpu help && echo && \
|
|
||||||
lscpu | tee quickreport.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Quickreport output</summary>
|
|
||||||
|
|
||||||
```text
|
|
||||||
quickreport output here
|
|
||||||
```
|
|
||||||
</details>
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Description
|
||||||
|
|
||||||
|
Please include a summary of the changes along with any relevant motivation and context.
|
||||||
|
|
||||||
|
<!-- Close any related issues. Delete if not relevant -->
|
||||||
|
|
||||||
|
- Closes #
|
||||||
|
- Fixes #
|
||||||
|
- Resolves #
|
||||||
|
|
||||||
|
## Type of change
|
||||||
|
|
||||||
|
<!-- Delete any that are not relevant -->
|
||||||
|
|
||||||
|
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||||
|
- [ ] New feature (non-breaking change which adds functionality)
|
||||||
|
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||||
|
- [ ] Packaging (updates the packaging)
|
||||||
|
- [ ] Documentation (updates the documentation)
|
||||||
|
|
||||||
|
# Checklist:
|
||||||
|
|
||||||
|
- [ ] I have performed a self-review of my code
|
||||||
|
- [ ] I have tested my code in common scenarios and confirmed there are no regressions
|
||||||
|
- [ ] I have added comments to my code, particularly in hard-to-understand sections
|
||||||
|
- [ ] I have made corresponding changes to the documentation (*remove if no documentation changes were required*)
|
|
@ -0,0 +1,21 @@
|
||||||
|
name: Flake ❄️ Checker ✅
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
schedule:
|
||||||
|
- cron: '42 0 * * 6'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
flake-checker:
|
||||||
|
name: Flake Checker
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: DeterminateSystems/nix-installer-action@v19
|
||||||
|
- uses: DeterminateSystems/magic-nix-cache-action@v9
|
||||||
|
- uses: DeterminateSystems/flake-checker-action@v12
|
|
@ -0,0 +1,20 @@
|
||||||
|
name: Flake ❄️ Lock 🔒️ Updater ✨
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '37 13 14,28 * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lock-updater:
|
||||||
|
name: Flake Lock Updater
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- 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
|
name: Validate pull request title
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: amannn/action-semantic-pull-request@v5
|
- uses: amannn/action-semantic-pull-request@v6
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -10,7 +10,7 @@ jobs:
|
||||||
name: Shellcheck
|
name: Shellcheck
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- name: Run ShellCheck
|
- name: Run ShellCheck
|
||||||
uses: ludeeus/action-shellcheck@master
|
uses: ludeeus/action-shellcheck@master
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -16,7 +16,7 @@ jobs:
|
||||||
name: "Check versions ⚖️"
|
name: "Check versions ⚖️"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: "Compare App and Git versions 🟰"
|
- name: "Compare App and Git versions 🟰"
|
||||||
|
@ -37,7 +37,7 @@ jobs:
|
||||||
name: "Draft Release 📥️"
|
name: "Draft Release 📥️"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- name: Create release ${{ github.ref }} as a draft
|
- name: Create release ${{ github.ref }} as a draft
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -49,7 +49,7 @@ jobs:
|
||||||
name: "Build Release 👨🔧"
|
name: "Build Release 👨🔧"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- name: Build and Upload .deb
|
- name: Build and Upload .deb
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -67,7 +67,7 @@ jobs:
|
||||||
name: "Publish Release 📤️"
|
name: "Publish Release 📤️"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- name: Publish release ${{ github.ref }}
|
- name: Publish release ${{ github.ref }}
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -85,7 +85,7 @@ jobs:
|
||||||
id-token: "write"
|
id-token: "write"
|
||||||
contents: "read"
|
contents: "read"
|
||||||
steps:
|
steps:
|
||||||
- uses: "actions/checkout@v4"
|
- uses: "actions/checkout@v5"
|
||||||
with:
|
with:
|
||||||
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
|
||||||
- uses: "DeterminateSystems/nix-installer-action@main"
|
- uses: "DeterminateSystems/nix-installer-action@main"
|
||||||
|
@ -102,7 +102,7 @@ jobs:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: "Checkout 🥡"
|
- name: "Checkout 🥡"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v5
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: "Import gpg key 🔑"
|
- name: "Import gpg key 🔑"
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
name: Test build quickemu 🚧
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- quickemu
|
||||||
|
- quickget
|
||||||
|
- debian/**
|
||||||
|
- flake.nix
|
||||||
|
- package.nix
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- quickemu
|
||||||
|
- quickget
|
||||||
|
- debian/**
|
||||||
|
- flake.nix
|
||||||
|
- package.nix
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# TODO: arm64 runner
|
||||||
|
# https://github.blog/changelog/2024-06-03-actions-arm-based-linux-and-windows-runners-are-now-in-public-beta/
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-deb-build:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: "Checkout 🥡"
|
||||||
|
uses: actions/checkout@v5
|
||||||
|
- name: "Build & Test .deb 🍥"
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get -y install debhelper devscripts
|
||||||
|
REL_VER=$(grep "^readonly VERSION" quickemu | cut -d'"' -f2)
|
||||||
|
rm debian/changelog
|
||||||
|
dch --package quickemu --newversion="${REL_VER}-1" --distribution=unstable "New upstream release." --create
|
||||||
|
dpkg-buildpackage --build=binary --no-check-builddeps --compression=gzip
|
||||||
|
sudo apt-get -y install ../quickemu_${REL_VER}-1_all.deb
|
||||||
|
quickemu --help
|
||||||
|
quickget --help
|
||||||
|
|
||||||
|
test-nix-build:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
permissions:
|
||||||
|
id-token: "write"
|
||||||
|
contents: "read"
|
||||||
|
steps:
|
||||||
|
- name: "Checkout 🥡"
|
||||||
|
uses: "actions/checkout@v5"
|
||||||
|
- name: "Install Nix ❄️"
|
||||||
|
uses: "DeterminateSystems/nix-installer-action@v19"
|
||||||
|
- name: "Enable Magic Nix Cache 🪄"
|
||||||
|
uses: "DeterminateSystems/magic-nix-cache-action@v9"
|
||||||
|
- name: "Build & Test .nix ❄️"
|
||||||
|
run: |
|
||||||
|
nix build .#quickemu
|
||||||
|
tree ./result
|
||||||
|
./result/bin/quickemu --help
|
||||||
|
./result/bin/quickget --help
|
||||||
|
./result/bin/quickreport
|
||||||
|
# Text a VM if the Nix Installer successfully enabled KVM
|
||||||
|
if [ $DETERMINATE_NIX_KVM -eq 1 ]; then
|
||||||
|
./result/bin/quickget alpine v3.20
|
||||||
|
./result/bin/quickemu --vm alpine-v3.20.conf --display none
|
||||||
|
sleep 5
|
||||||
|
if pgrep -F ./alpine-v3.20/alpine-v3.20.pid; then
|
||||||
|
echo "Test VM is running"
|
||||||
|
else
|
||||||
|
echo "Test VM is not running"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Test a few more quickemu commands to clean up
|
||||||
|
./result/bin/quickemu --vm alpine-v3.20.conf --kill
|
||||||
|
./result/bin/quickemu --vm alpine-v3.20.conf --delete-disk
|
||||||
|
./result/bin/quickemu --vm alpine-v3.20.conf --delete-vm
|
||||||
|
fi
|
||||||
|
|
|
@ -3,106 +3,50 @@ name: "Test quickget 🧪"
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches: '**'
|
branches:
|
||||||
paths: [ quickget ]
|
- master
|
||||||
|
paths:
|
||||||
|
- quickget
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: '**'
|
branches:
|
||||||
paths: [ quickget ]
|
- '**'
|
||||||
|
paths:
|
||||||
|
- quickget
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
jobs:
|
||||||
list-all-supported:
|
quickget-tests:
|
||||||
name: "List all supported OS 📝"
|
name: "Run quickget tests 👟"
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
# The type of runner that the job will run on
|
|
||||||
#runs-on: ubuntu-latest
|
|
||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
||||||
steps:
|
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: "List all supported OS variants"
|
|
||||||
run: |
|
|
||||||
mkdir -p results
|
|
||||||
./quickget --list | tee results/supported.txt
|
|
||||||
echo -e "\nResults:"
|
|
||||||
echo "- All supported OS variants: $(wc -l results/supported.txt | cut -d' ' -f 1)"
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: supported
|
|
||||||
path: results/supported.txt
|
|
||||||
|
|
||||||
list-all-urls:
|
|
||||||
needs: [list-all-supported]
|
|
||||||
name: "List all URLs 🔗"
|
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- name: "quickget --url"
|
- name: "Install dependencies 📦️"
|
||||||
|
run: |
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get -y install curl qemu-utils
|
||||||
|
- name: "List OS variants 📃"
|
||||||
run: |
|
run: |
|
||||||
export TERM=xterm-256color
|
|
||||||
mkdir -p results
|
mkdir -p results
|
||||||
./quickget --url | tee results/urls.txt
|
./quickget --list | tail -n +2 | tee results/list.txt
|
||||||
- uses: actions/download-artifact@v4
|
- name: "Check OS downloads 💿️"
|
||||||
with:
|
|
||||||
path: results
|
|
||||||
merge-multiple: true
|
|
||||||
- name: "Show differences ⚖️"
|
|
||||||
run: |
|
run: |
|
||||||
echo -e "\nResults:"
|
|
||||||
echo -e "List All URLs:\t$(grep -c http results/urls.txt)"
|
|
||||||
echo -e "OS Info URLs:\t$(wc -l results/supported.txt | cut -d' ' -f 1)"
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: urls
|
|
||||||
path: results/urls.txt
|
|
||||||
|
|
||||||
check-all-urls:
|
|
||||||
name: "Check all image URLs 💿️"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: "quickget --check"
|
|
||||||
run: |
|
|
||||||
export TERM=xterm-256color
|
|
||||||
mkdir -p results
|
mkdir -p results
|
||||||
./quickget --check | tee results/checks.txt
|
./quickget --check | tee results/check.txt
|
||||||
WINDOWS=$(grep -c "windows-" results/checks.txt)
|
- name: "Display results 📊"
|
||||||
FAILED=$(grep -c ^FAIL results/checks.txt)
|
run: |
|
||||||
SKIPPED=$(grep -c ^SKIP results/checks.txt)
|
WINDOWS=$(grep -c "windows-" results/check.txt)
|
||||||
PASSED=$(grep -c ^PASS results/checks.txt)
|
FAILED=$(grep -c ^FAIL results/check.txt)
|
||||||
CHECKED=$((FAILED + SKIPPED + PASSED))
|
SKIPPED=$(grep -c ^SKIP results/check.txt)
|
||||||
|
PASSED=$(grep -c ^PASS results/check.txt)
|
||||||
|
CHECKED=$((WINDOWS + FAILED + SKIPPED + PASSED))
|
||||||
echo -e "\nResults:"
|
echo -e "\nResults:"
|
||||||
|
echo -e "- CHECKED:\t${CHECKED}"
|
||||||
echo -e "- PASSED:\t${PASSED}"
|
echo -e "- PASSED:\t${PASSED}"
|
||||||
echo -e "- SKIPPED:\t${SKIPPED}\t(of which ${WINDOWS} are Windows)"
|
echo -e "- SKIPPED:\t${SKIPPED}\t(of which ${WINDOWS} are Windows)"
|
||||||
echo -e "- FAILED:\t${FAILED}\n"
|
echo -e "- FAILED:\t${FAILED}\n"
|
||||||
grep ^FAIL results/checks.txt | tee results/failed.txt
|
grep ^FAIL results/check.txt | tee results/failed.txt
|
||||||
- uses: actions/upload-artifact@v4
|
VARIATIONS=$(wc -l results/list.txt | cut -d' ' -f 1)
|
||||||
with:
|
DOWNLOADS=$(wc -l results/check.txt | cut -d' ' -f 1)
|
||||||
name: checks
|
echo
|
||||||
path: results/checks.txt
|
echo "Compare OS variations with downloads:"
|
||||||
- uses: actions/upload-artifact@v4
|
echo -e "- Variations:\t${VARIATIONS}"
|
||||||
with:
|
echo -e "- Downloads:\t${DOWNLOADS}"
|
||||||
name: failed
|
|
||||||
path: results/failed.txt
|
|
||||||
|
|
||||||
upload-artifacts:
|
|
||||||
needs: [list-all-urls, check-all-urls]
|
|
||||||
name: "Uploading artifacts"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
path: results
|
|
||||||
merge-multiple: true
|
|
||||||
- name: "List results"
|
|
||||||
run: |
|
|
||||||
ls -R results/
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
overwrite: true
|
|
||||||
name: results
|
|
||||||
path: results/
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*.fixed
|
*.fixed
|
||||||
*.img
|
*.img
|
||||||
*.iso
|
*.iso
|
||||||
|
*.ISO
|
||||||
*.lock
|
*.lock
|
||||||
!flake.lock
|
!flake.lock
|
||||||
*.log
|
*.log
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
[submodule "build-docs"]
|
[submodule "build-docs"]
|
||||||
path = build-docs
|
path = build-docs
|
||||||
url = git@github.com:philclifford/quickemu-docs.git
|
url = https://github.com/philclifford/quickemu-docs.git
|
||||||
|
|
|
@ -0,0 +1,128 @@
|
||||||
|
# Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
## Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our
|
||||||
|
community a harassment-free experience for everyone, regardless of age, body
|
||||||
|
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||||
|
identity and expression, level of experience, education, socio-economic status,
|
||||||
|
nationality, personal appearance, race, religion, or sexual identity
|
||||||
|
and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||||
|
diverse, inclusive, and healthy community.
|
||||||
|
|
||||||
|
## Our Standards
|
||||||
|
|
||||||
|
Examples of behaviour that contributes to a positive environment for our
|
||||||
|
community include:
|
||||||
|
|
||||||
|
* Demonstrating empathy and kindness toward other people
|
||||||
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
* Giving and gracefully accepting constructive feedback
|
||||||
|
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||||
|
and learning from the experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the
|
||||||
|
overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behaviour include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery, and sexual attention or
|
||||||
|
advances of any kind
|
||||||
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or email
|
||||||
|
address, without their explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a
|
||||||
|
professional setting
|
||||||
|
|
||||||
|
## Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of
|
||||||
|
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
|
||||||
|
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||||
|
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||||
|
decisions when appropriate.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when
|
||||||
|
an individual is officially representing the community in public spaces.
|
||||||
|
Examples of representing our community include using an official e-mail address,
|
||||||
|
posting via an official social media account, or acting as an appointed
|
||||||
|
representative at an online or offline event.
|
||||||
|
|
||||||
|
## Enforcement
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the
|
||||||
|
reporter of any incident.
|
||||||
|
|
||||||
|
## Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining
|
||||||
|
the consequences for any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
### 1. Correction
|
||||||
|
|
||||||
|
**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
|
||||||
|
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 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
|
||||||
|
like social media. Violating these terms may lead to a temporary or
|
||||||
|
permanent ban.
|
||||||
|
|
||||||
|
### 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including
|
||||||
|
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
|
||||||
|
private interaction with the people involved, including unsolicited interaction
|
||||||
|
with those enforcing the Code of Conduct, is allowed during this period.
|
||||||
|
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 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
|
||||||
|
the community.
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
|
version 2.0, available at
|
||||||
|
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||||
|
enforcement ladder](https://github.com/mozilla/diversity).
|
||||||
|
|
||||||
|
[homepage]: https://www.contributor-covenant.org
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the FAQ at
|
||||||
|
https://www.contributor-covenant.org/faq. Translations are available at
|
||||||
|
https://www.contributor-covenant.org/translations.
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
We welcome contributions to Quickemu.
|
||||||
|
|
||||||
|
- Help other Quickemu users by answering questions in the [Quickemu Discussions](https://github.com/quickemu-project/quickemu/discussions) 🛟
|
||||||
|
- Improve the documentation in [this README](https://github.com/quickemu-project/quickemu/edit/master/README.md) and the [Quickemu Wiki](https://github.com/quickemu-project/quickemu/wiki) 📖
|
||||||
|
- File bug reports and feature requests in the [Quickemu Issues](https://github.com/quickemu-project/quickemu/issues) 📁
|
||||||
|
- Submit [Quickemu Pull requests](https://github.com/quickemu-project/quickemu/pulls) to fix bugs 🐞 or add new features ✨
|
||||||
|
- Follow our [guide to adding a new OS to quickget](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features#adding-a-new-os-to-quickget)
|
||||||
|
- Commit messages must [conform to the Conventional Commits specification](https://www.conventionalcommits.org/).
|
||||||
|
- [Sponsor the project](https://github.com/sponsors/flexiondotorg) 💖
|
|
@ -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
|
144
README.md
144
README.md
|
@ -5,8 +5,9 @@
|
||||||
|
|
||||||
**Quickly create and run optimised Windows, macOS and Linux virtual machines:**
|
**Quickly create and run optimised Windows, macOS and Linux virtual machines:**
|
||||||
|
|
||||||
**Made with 💝 for <img src=".github/tux.png" align="top" width="24" alt="Tux (Linux)"/>**
|
**Made with 💝 for <img src=".github/tux.png" align="top" width="24" alt="Tux (Linux)"/> & <img src=".github/apple.png" align="top" width="24" alt="Apple (macOS)"/>**
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://wimpysworld.io/discord" target="_blank"><img alt="Discord" src="https://img.shields.io/discord/712850672223125565?style=for-the-badge&logo=discord&logoColor=%23ffffff&label=Discord&labelColor=%234253e8&color=%23e4e2e2"></a>
|
<a href="https://wimpysworld.io/discord" target="_blank"><img alt="Discord" src="https://img.shields.io/discord/712850672223125565?style=for-the-badge&logo=discord&logoColor=%23ffffff&label=Discord&labelColor=%234253e8&color=%23e4e2e2"></a>
|
||||||
<a href="https://fosstodon.org/@wimpy" target="_blank"><img alt="Mastodon" src="https://img.shields.io/badge/Mastodon-6468fa?style=for-the-badge&logo=mastodon&logoColor=%23ffffff"></a>
|
<a href="https://fosstodon.org/@wimpy" target="_blank"><img alt="Mastodon" src="https://img.shields.io/badge/Mastodon-6468fa?style=for-the-badge&logo=mastodon&logoColor=%23ffffff"></a>
|
||||||
|
@ -14,6 +15,7 @@
|
||||||
<a href="https://linkedin.com/in/martinwimpress" target="_blank"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-1667be?style=for-the-badge&logo=linkedin&logoColor=%23ffffff"></a>
|
<a href="https://linkedin.com/in/martinwimpress" target="_blank"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-1667be?style=for-the-badge&logo=linkedin&logoColor=%23ffffff"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
**Quickemu** is a wrapper for the excellent [QEMU](https://www.qemu.org/) that
|
**Quickemu** is a wrapper for the excellent [QEMU](https://www.qemu.org/) that
|
||||||
|
@ -30,110 +32,80 @@ where the virtual machines and their configuration can be stored anywhere (such
|
||||||
as external USB storage or your home directory) and no elevated permissions are
|
as external USB storage or your home directory) and no elevated permissions are
|
||||||
required to run the virtual machines.
|
required to run the virtual machines.
|
||||||
|
|
||||||
**Today, Quickemu includes comprehensive support for
|
**Today, Quickemu includes comprehensive support for [macOS](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines),
|
||||||
[macOS](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines),
|
[Windows](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)**, most of the BSDs, novel non-Linux operating systems such as FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
|
||||||
[Windows](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)**,
|
|
||||||
most of the BSDs, novel non-Linux operating systems such as FreeDOS,
|
|
||||||
Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
|
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
- **macOS** Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
- Host support for **Linux and macOS**
|
||||||
- **Windows** 10 and 11 including TPM 2.0
|
- **macOS** Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
||||||
- **Windows Server** 2022 2019 2016 2012-r2
|
- **Windows** 10 and 11 including TPM 2.0
|
||||||
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
|
- **Windows Server** 2022 2019 2016
|
||||||
flavours](https://ubuntu.com/download/flavours)**
|
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
|
||||||
- **Nearly 1000 operating system editions are supported!**
|
flavours](https://ubuntu.com/download/flavours)**
|
||||||
- Full SPICE support including host/guest clipboard sharing
|
- **Nearly 1000 operating system editions are supported!**
|
||||||
- VirtIO-webdavd file sharing for Linux and Windows guests
|
- Full SPICE support including host/guest clipboard sharing
|
||||||
- VirtIO-9p file sharing for Linux and macOS guests
|
- VirtIO-webdavd file sharing for Linux and Windows guests
|
||||||
- [QEMU Guest Agent
|
- VirtIO-9p file sharing for Linux and macOS guests
|
||||||
support](https://wiki.qemu.org/Features/GuestAgent); provides access
|
- [QEMU Guest Agent
|
||||||
to a system-level agent via standard QMP commands
|
support](https://wiki.qemu.org/Features/GuestAgent); provides access
|
||||||
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
|
to a system-level agent via standard QMP commands
|
||||||
is installed on the host*)
|
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
|
||||||
- VirGL acceleration
|
is installed on the host*)
|
||||||
- USB device pass-through
|
- VirGL acceleration
|
||||||
- Smartcard pass-through
|
- USB device pass-through
|
||||||
- Automatic SSH port forwarding to guests
|
- Smartcard pass-through
|
||||||
- Network port forwarding
|
- Automatic SSH port forwarding to guests
|
||||||
- Full duplex audio
|
- Network port forwarding
|
||||||
- Braille support
|
- Full duplex audio
|
||||||
- EFI (with or without SecureBoot) and Legacy BIOS boot
|
- Braille support
|
||||||
|
- EFI (with or without SecureBoot) and Legacy BIOS boot
|
||||||
|
|
||||||
|
## As featured on [Linux Matters](https://linuxmatters.sh) podcast!
|
||||||
|
|
||||||
|
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>
|
||||||
|
<br />
|
||||||
|
<em>Linux Matters Podcast</em>
|
||||||
|
</div>
|
||||||
|
|
||||||
# Quick start
|
# Quick start
|
||||||
|
|
||||||
[Once Quickemu is
|
[Once Quickemu is installed](https://github.com/quickemu-project/quickemu/wiki/01-Installation), there are two simple steps to create and run a virtual machine:
|
||||||
installed](https://github.com/quickemu-project/quickemu/wiki/01-Installation),
|
|
||||||
there are two simple steps to create and run a virtual machine:
|
|
||||||
|
|
||||||
- `quickget` automatically downloads the ISO image for the operating
|
- `quickget` automatically downloads the ISO image for the operating system you want to run and creates a configuration file for the virtual machine.
|
||||||
system you want to run and creates a configuration file for the
|
|
||||||
virtual machine.
|
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
quickget nixos unstable
|
quickget nixos unstable minimal
|
||||||
```
|
```
|
||||||
|
|
||||||
- `quickemu` starts the virtual machine using the configuration file
|
- `quickemu` starts the virtual machine using the configuration file created by `quickget`.
|
||||||
created by `quickget`.
|
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
quickemu --vm nixos-unstable.conf
|
quickemu --vm nixos-unstable-minimal.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Execute `quickget` (with no arguments) to see a list of all the
|
Execute `quickget` (with no arguments) to see a list of all the supported operating systems.
|
||||||
supported operating systems.
|
|
||||||
|
|
||||||
## Demo
|
## Demo
|
||||||
|
|
||||||
<div align="center"><a href="https://asciinema.org/a/658148?autoplay=1" target="_blank"><img src="https://asciinema.org/a/658148.svg" /></a></div>
|
<div align="center">
|
||||||
|
|
||||||
|
<a href="https://asciinema.org/a/658148?autoplay=1" target="_blank"><img src="https://asciinema.org/a/658148.svg" /></a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
# Documentation
|
# Documentation
|
||||||
|
|
||||||
The wiki describes how to get up and running with Quickemu and also
|
The wiki describes how to get up and running with Quickemu and also covers more advanced configuration and usage.
|
||||||
covers more advanced configuration and usage.
|
|
||||||
|
|
||||||
- [**Installation**](https://github.com/quickemu-project/quickemu/wiki/01-Installation)
|
- [**Installation**](https://github.com/quickemu-project/quickemu/wiki/01-Installation) 💾
|
||||||
💾
|
- [**Create Linux virtual machines**](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines) 🐧
|
||||||
- [**Create Linux virtual
|
- [**Create macOS virtual machines**](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines) 🍏
|
||||||
machines**](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines)
|
- [**Create Windows virtual machines**](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines) 🪟
|
||||||
🐧
|
- [**Advanced quickemu configuration**](https://github.com/quickemu-project/quickemu/wiki/05-Advanced-quickemu-configuration) 🔧
|
||||||
- [**Create macOS virtual
|
- [**Advanced quickget features**](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features) 🤓
|
||||||
machines**](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines)
|
- [**Alternative frontends**](https://github.com/quickemu-project/quickemu/wiki/07-Alternative-frontends) 🧑💻
|
||||||
🍏
|
- [**References**](https://github.com/quickemu-project/quickemu/wiki/08-References) 📚️
|
||||||
- [**Create Windows virtual
|
|
||||||
machines**](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)
|
|
||||||
🪟
|
|
||||||
- [**Advanced quickemu
|
|
||||||
configuration**](https://github.com/quickemu-project/quickemu/wiki/05-Advanced-quickemu-configuration)
|
|
||||||
🔧
|
|
||||||
- [**Advanced quickget
|
|
||||||
features**](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features)
|
|
||||||
🤓
|
|
||||||
- [**Alternative
|
|
||||||
frontends**](https://github.com/quickemu-project/quickemu/wiki/07-Alternative-frontends)
|
|
||||||
🧑💻
|
|
||||||
- [**References**](https://github.com/quickemu-project/quickemu/wiki/08-References)
|
|
||||||
📚️
|
|
||||||
|
|
||||||
# Contributing
|
|
||||||
|
|
||||||
We welcome contributions to Quickemu.
|
|
||||||
|
|
||||||
- Help other Quickemu users by answering questions in the [Quickemu
|
|
||||||
Discussions](https://github.com/quickemu-project/quickemu/discussions)
|
|
||||||
🛟
|
|
||||||
- Improve the documentation in [this
|
|
||||||
README](https://github.com/quickemu-project/quickemu/edit/master/README.md)
|
|
||||||
and the [Quickemu
|
|
||||||
Wiki](https://github.com/quickemu-project/quickemu/wiki) 📖
|
|
||||||
- File bug reports and feature requests in the [Quickemu
|
|
||||||
Issues](https://github.com/quickemu-project/quickemu/issues) 📁
|
|
||||||
- Submit [Quickemu Pull
|
|
||||||
requests](https://github.com/quickemu-project/quickemu/pulls) to fix
|
|
||||||
bugs 🐞 or add new features ✨
|
|
||||||
- Follow our [guide to adding a new OS to quickget](https://github.com/quickemu-project/quickemu/wiki/06-Advanced-quickget-features#adding-a-new-os-to-quickget)
|
|
||||||
- Commit messages must [conform to the Conventional Commits
|
|
||||||
specification](https://www.conventionalcommits.org/)
|
|
||||||
- [Sponsor the project](https://github.com/sponsors/flexiondotorg) 💖
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Security Policy
|
||||||
|
|
||||||
|
## Supported Versions
|
||||||
|
|
||||||
|
Here are the versions of Quickemu currently being supported with security updates.
|
||||||
|
|
||||||
|
| Version | Supported |
|
||||||
|
| ------- | ------------------ |
|
||||||
|
| 4.9.x | :white_check_mark: |
|
||||||
|
| < 4.8 | :x: |
|
||||||
|
|
||||||
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
If you discover a vulnerability in Quickemu then [file an issue](https://github.com/quickemu-project/quickemu/issues/new) and click *Report a vulnerability*.
|
||||||
|
|
||||||
|
- Quickemu is a spare-time hobby project.
|
||||||
|
- We do not have SLAs for responding to security issues.
|
||||||
|
- It is a best-efforts basis.
|
|
@ -1 +1 @@
|
||||||
Subproject commit c8e81caf8a95ee689f7a2b37a7f4150e57175290
|
Subproject commit 3125ddc21a91440cd6f1f70aa40081d760c10a4e
|
|
@ -1,204 +1,5 @@
|
||||||
quickemu (4.9.1-1) unstable; urgency=medium
|
quickemu (4.9.6-1) unstable; urgency=medium
|
||||||
|
|
||||||
* New upstream release.
|
* New upstream release.
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 10 Nov 2023 14:49:08 +0000
|
-- Martin Wimpress <code@wimpress.io> Fri, 10 Nov 2023 14:49:08 +0000
|
||||||
|
|
||||||
quickemu (4.8-1~mantic1.0) mantic; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.8
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Wed, 14 Jun 2023 12:40:56 +0100
|
|
||||||
|
|
||||||
quickemu (4.7-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.7
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Wed, 26 Apr 2023 12:00:35 +0100
|
|
||||||
|
|
||||||
quickemu (4.6-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.6
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Sat, 04 Feb 2023 00:32:47 +0000
|
|
||||||
|
|
||||||
quickemu (4.5-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.5
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Sun, 11 Dec 2022 20:54:52 +0000
|
|
||||||
|
|
||||||
quickemu (4.4-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.4
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 21 Oct 2022 08:52:12 +0100
|
|
||||||
|
|
||||||
quickemu (4.3-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.3
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Thu, 22 Sep 2022 09:22:00 +0100
|
|
||||||
|
|
||||||
quickemu (4.2-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
+ https://github.com/quickemu-project/quickemu/releases/tag/4.2
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Wed, 21 Sep 2022 23:34:24 +0100
|
|
||||||
|
|
||||||
quickemu (4.1-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Sat, 20 Aug 2022 00:03:33 +0100
|
|
||||||
|
|
||||||
quickemu (4.0-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Mon, 01 Aug 2022 11:24:48 +0100
|
|
||||||
|
|
||||||
quickemu (3.16-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 29 Jul 2022 11:50:32 +0100
|
|
||||||
|
|
||||||
quickemu (3.15-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 22 Apr 2022 09:55:13 +0100
|
|
||||||
|
|
||||||
quickemu (3.14-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New Upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 11 Mar 2022 16:20:05 +0000
|
|
||||||
|
|
||||||
quickemu (3.13-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Thu, 24 Feb 2022 23:00:05 +0000
|
|
||||||
|
|
||||||
quickemu (3.12-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Tue, 22 Feb 2022 12:13:16 +0000
|
|
||||||
|
|
||||||
quickemu (3.11-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <martin.wimpress@ubuntu.com> Wed, 08 Dec 2021 11:01:04 +0000
|
|
||||||
|
|
||||||
quickemu (2.3.4-1~jammy1.0) jammy; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Mon, 06 Dec 2021 11:53:50 +0000
|
|
||||||
|
|
||||||
quickemu (2.3.3-1~jammy1.0) jammy; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 03 Dec 2021 11:38:10 +0000
|
|
||||||
|
|
||||||
quickemu (2.3.2-1~jammy1.0) jammy; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Sun, 14 Nov 2021 10:25:06 +0000
|
|
||||||
|
|
||||||
quickemu (2.3.1-1~jammy1.0) jammy; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Mon, 08 Nov 2021 00:54:38 +0000
|
|
||||||
|
|
||||||
quickemu (2.3.0-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 29 Oct 2021 10:03:58 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.9-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Thu, 28 Oct 2021 22:46:37 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.8-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Thu, 28 Oct 2021 16:13:20 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.7-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Wed, 27 Oct 2021 12:57:59 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.6-1~jammy1.0) jammy; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Thu, 21 Oct 2021 10:57:35 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.5-1~jammy1.0) jammy; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Sat, 16 Oct 2021 11:35:41 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.4-1~impish1.0) impish; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 15 Oct 2021 12:50:05 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.3-1~impish1.0) impish; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 08 Oct 2021 15:06:50 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.2-1~impish1.0) impish; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Fri, 08 Oct 2021 02:39:00 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.1-1~impish1.0) impish; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Thu, 07 Oct 2021 16:23:33 +0100
|
|
||||||
|
|
||||||
quickemu (2.2.0-1~impish1.0) impish; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Wed, 06 Oct 2021 11:08:33 +0100
|
|
||||||
|
|
||||||
quickemu (2.1.0-1~focal1.0) focal; urgency=medium
|
|
||||||
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Tue, 05 Oct 2021 17:12:48 +0100
|
|
||||||
|
|
||||||
quickemu (1.0.0-1~focal1.2) focal; urgency=medium
|
|
||||||
|
|
||||||
* Initial release.
|
|
||||||
|
|
||||||
-- Martin Wimpress <code@wimpress.io> Mon, 06 Sep 2021 23:11:44 +0100
|
|
||||||
|
|
|
@ -17,14 +17,18 @@ Depends:
|
||||||
curl,
|
curl,
|
||||||
genisoimage,
|
genisoimage,
|
||||||
jq,
|
jq,
|
||||||
|
mesa-utils,
|
||||||
|
pciutils,
|
||||||
procps,
|
procps,
|
||||||
python3-minimal,
|
python3-minimal,
|
||||||
qemu-system (>= 6.0),
|
qemu-system (>= 6.0),
|
||||||
|
base-files (<< 13~) | qemu-system-modules-spice,
|
||||||
socat,
|
socat,
|
||||||
spice-client-gtk,
|
spice-client-gtk,
|
||||||
swtpm,
|
swtpm,
|
||||||
usbutils,
|
usbutils,
|
||||||
util-linux,
|
util-linux,
|
||||||
|
uuid-runtime,
|
||||||
x11-xserver-utils,
|
x11-xserver-utils,
|
||||||
xdg-user-dirs,
|
xdg-user-dirs,
|
||||||
zsync,
|
zsync,
|
||||||
|
|
|
@ -4,7 +4,7 @@ Upstream-Contact: Martin Wimpress <code@wimpress.io>
|
||||||
Source: https://github.com/quickemu-project/quickemu
|
Source: https://github.com/quickemu-project/quickemu
|
||||||
|
|
||||||
Files: *
|
Files: *
|
||||||
Copyright: 2020-2021 Martin Wimpress <code@wimpress.io>
|
Copyright: 2020-2024 Martin Wimpress <code@wimpress.io>
|
||||||
License: MIT
|
License: MIT
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -26,7 +26,7 @@ License: MIT
|
||||||
# If you want to use GPL v2 or later for the /debian/* files use
|
# If you want to use GPL v2 or later for the /debian/* files use
|
||||||
# the following clauses, or change it to suit. Delete these two lines
|
# the following clauses, or change it to suit. Delete these two lines
|
||||||
Files: debian/*
|
Files: debian/*
|
||||||
Copyright: 2021 Martin Wimpress <code@wimpress.io>
|
Copyright: 2021 - 2024 Martin Wimpress <code@wimpress.io>
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
This package is free software; you can redistribute it and/or modify
|
This package is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,4 +2,3 @@ chunkcheck usr/bin
|
||||||
quickemu usr/bin
|
quickemu usr/bin
|
||||||
quickget usr/bin
|
quickget usr/bin
|
||||||
quickreport usr/bin
|
quickreport usr/bin
|
||||||
windowskey usr/bin
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
version=4
|
|
||||||
|
|
||||||
opts="filenamemangle=s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%quickemu-$1.tar.gz%" \
|
|
||||||
https://github.com/wimpysworld/quickemu/tags \
|
|
||||||
(?:.*?/)?v?(\d[\d.]*)\.tar\.gz
|
|
63
devshell.nix
63
devshell.nix
|
@ -1,51 +1,50 @@
|
||||||
{
|
{ lib,
|
||||||
mkShell,
|
mkShell,
|
||||||
cdrtools,
|
pkgs,
|
||||||
curl,
|
stdenv,
|
||||||
git,
|
|
||||||
gnugrep,
|
|
||||||
gnused,
|
|
||||||
jq,
|
|
||||||
ncurses,
|
|
||||||
nixpkgs-fmt,
|
|
||||||
procps,
|
|
||||||
python3,
|
|
||||||
qemu,
|
|
||||||
socat,
|
|
||||||
spice-gtk,
|
|
||||||
swtpm,
|
|
||||||
unzip,
|
|
||||||
usbutils,
|
|
||||||
util-linux,
|
|
||||||
xdg-user-dirs,
|
|
||||||
xrandr,
|
|
||||||
zsync,
|
|
||||||
}:
|
}:
|
||||||
mkShell {
|
mkShell {
|
||||||
strictDeps = true;
|
packages = with pkgs; ([
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
cdrtools
|
cdrtools
|
||||||
curl
|
curl
|
||||||
git
|
gawk
|
||||||
gnugrep
|
gnugrep
|
||||||
gnused
|
gnused
|
||||||
jq
|
jq
|
||||||
ncurses
|
pciutils
|
||||||
nixpkgs-fmt
|
|
||||||
procps
|
procps
|
||||||
python3
|
python3
|
||||||
qemu
|
qemu_full
|
||||||
|
samba
|
||||||
socat
|
socat
|
||||||
spice-gtk
|
spice-gtk
|
||||||
swtpm
|
swtpm
|
||||||
unzip
|
unzip
|
||||||
usbutils
|
|
||||||
util-linux
|
util-linux
|
||||||
xdg-user-dirs
|
xorg.xrandr
|
||||||
xrandr
|
|
||||||
zsync
|
zsync
|
||||||
|
OVMF
|
||||||
|
OVMFFull
|
||||||
|
] ++ lib.optionals stdenv.isLinux [
|
||||||
|
glxinfo
|
||||||
|
usbutils
|
||||||
|
xdg-user-dirs
|
||||||
|
]);
|
||||||
|
|
||||||
|
inputsFrom = with pkgs; [
|
||||||
|
git
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [];
|
shellHook = ''
|
||||||
|
echo "**********************************************************************"
|
||||||
|
echo "* 'direnv reload' to update '.direnv/bin/quickemu' for testing *"
|
||||||
|
echo "**********************************************************************"
|
||||||
|
sed \
|
||||||
|
-e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${pkgs.OVMFFull.firmware}","${pkgs.OVMFFull.variables}" |' \
|
||||||
|
-e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${pkgs.OVMF.firmware}","${pkgs.OVMF.variables}" |' \
|
||||||
|
-e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
|
||||||
|
-e 's,\$(command -v smbd),${pkgs.samba}/bin/smbd,' \
|
||||||
|
quickemu > $PWD/.direnv/bin/quickemu
|
||||||
|
chmod +x $PWD/.direnv/bin/quickemu
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,16 +9,18 @@ datadir := $(datarootdir)
|
||||||
mandir := $(datarootdir)/man
|
mandir := $(datarootdir)/man
|
||||||
bindir := $(PREFIX)/bin
|
bindir := $(PREFIX)/bin
|
||||||
|
|
||||||
all: quickget.1 quickemu.1 quickemu_conf.1
|
all: quickget.1 quickemu.1 quickemu_conf.5
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm *.1
|
rm *.1 *.5
|
||||||
|
|
||||||
install_docs: all
|
install_docs: all
|
||||||
install -d $(DESTDIR)$(mandir)/man1
|
install -d $(DESTDIR)$(mandir)/man1
|
||||||
|
install -d $(DESTDIR)$(mandir)/man5
|
||||||
install -m 644 quickget.1 $(DESTDIR)$(mandir)/man1
|
install -m 644 quickget.1 $(DESTDIR)$(mandir)/man1
|
||||||
install -m 644 quickemu.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
|
# install -m 644 quickgui.1 $(DESTDIR)$(mandir)/man1
|
||||||
|
|
||||||
|
@ -26,6 +28,7 @@ install_bins:
|
||||||
install -d $(DESTDIR)$(bindir)
|
install -d $(DESTDIR)$(bindir)
|
||||||
install -m 755 ../quickget $(DESTDIR)$(bindir)
|
install -m 755 ../quickget $(DESTDIR)$(bindir)
|
||||||
install -m 755 ../quickemu $(DESTDIR)$(bindir)
|
install -m 755 ../quickemu $(DESTDIR)$(bindir)
|
||||||
|
install -m 755 ../quickreport $(DESTDIR)$(bindir)
|
||||||
install -m 755 ../chunkcheck $(DESTDIR)$(bindir)
|
install -m 755 ../chunkcheck $(DESTDIR)$(bindir)
|
||||||
|
|
||||||
install: install_bins install_docs
|
install: install_bins install_docs
|
||||||
|
@ -33,9 +36,10 @@ install: install_bins install_docs
|
||||||
uninstall::
|
uninstall::
|
||||||
rm -f $(DESTDIR)$(mandir)/man1/quickget.1
|
rm -f $(DESTDIR)$(mandir)/man1/quickget.1
|
||||||
rm -f $(DESTDIR)$(mandir)/man1/quickemu.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)/quickget
|
||||||
rm -f $(DESTDIR)$(bindir)/quickemu
|
rm -f $(DESTDIR)$(bindir)/quickemu
|
||||||
|
rm -f $(DESTDIR)$(bindir)/quickreport
|
||||||
rm -f $(DESTDIR)$(bindir)/macrecovery
|
rm -f $(DESTDIR)$(bindir)/macrecovery
|
||||||
rm -f $(DESTDIR)$(bindir)/chunkcheck
|
rm -f $(DESTDIR)$(bindir)/chunkcheck
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
PANDOC ?= pandoc
|
PANDOC ?= pandoc
|
||||||
|
PANDOC_OPTIONS = -f gfm+definition_lists
|
||||||
|
|
||||||
MANSECTION ?= 1
|
.SUFFIXES: .1.md .1 .5.md .5
|
||||||
|
|
||||||
MANPAGE.md = $(PANDOC) --standalone $(PANDOCFLAGS) --to man
|
.1.md.1 .5.md.5:
|
||||||
|
$(PANDOC) --standalone $(PANDOC_OPTIONS) --to man -o $@ $<
|
||||||
%.$(MANSECTION): %.$(MANSECTION).md
|
|
||||||
$(MANPAGE.md) $< -o $@
|
|
||||||
|
|
486
docs/quickemu.1
486
docs/quickemu.1
|
@ -1,153 +1,157 @@
|
||||||
.\" Automatically generated by Pandoc 3.1.13
|
.\" Automatically generated by Pandoc 3.6.1
|
||||||
.\"
|
.\"
|
||||||
.TH "QUICKEMU" "1" "May 9, 2024" "quickemu" "Quickemu User Manual"
|
.TH "QUICKEMU" "1" "December 30, 2024" "quickemu" "Quickemu User Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
quickemu \- A quick VM builder and manager
|
quickemu \- A quick VM builder and manager
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
\f[B]quickemu\f[R] [\f[I]OPTION\f[R]]\&...
|
\f[B]quickemu\f[R] [\f[I]OPTION\f[R]]...
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
\f[B]quickemu\f[R] will create and run highly optimised desktop virtual
|
\f[B]quickemu\f[R] will create and run highly optimised desktop virtual
|
||||||
machines for Linux, macOS and Windows
|
machines for Linux, macOS and Windows
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]vm\f[R]
|
\f[B]\-\-vm\f[R]
|
||||||
vm configuration file
|
vm configuration file
|
||||||
.PP
|
.PP
|
||||||
You can also pass optional parameters
|
You can also pass optional parameters
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]access\f[R]
|
\f[B]\-\-access\f[R]
|
||||||
Enable remote spice access support.
|
Enable remote spice access support.
|
||||||
`local' (default), `remote', `clientipaddress'
|
\[aq]local\[aq] (default), \[aq]remote\[aq], \[aq]clientipaddress\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]braille\f[R]
|
\f[B]\-\-braille\f[R]
|
||||||
Enable braille support.
|
Enable braille support.
|
||||||
Requires SDL.
|
Requires SDL.
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]delete\-disk\f[R]
|
\f[B]\-\-delete\-disk\f[R]
|
||||||
Delete the disk image and EFI variables
|
Delete the disk image and EFI variables
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]delete\-vm\f[R]
|
\f[B]\-\-delete\-vm\f[R]
|
||||||
Delete the entire VM and it\[cq]s configuration
|
Delete the entire VM and its configuration
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]display\f[R]
|
\f[B]\-\-display\f[R]
|
||||||
Select display backend.
|
Select display backend.
|
||||||
`sdl' (default), `gtk', `none', `spice' or `spice\-app'
|
\[aq]sdl\[aq] (default), \[aq]gtk\[aq], \[aq]none\[aq], \[aq]spice\[aq]
|
||||||
|
or \[aq]spice\-app\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]fullscreen\f[R]
|
\f[B]\-\-fullscreen\f[R]
|
||||||
Starts VM in full screen mode (Ctl+Alt+f to exit)
|
Starts VM in full screen mode (Ctl+Alt+f to exit)
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]ignore\-msrs\-always\f[R]
|
\f[B]\-\-ignore\-msrs\-always\f[R]
|
||||||
Configure KVM to always ignore unhandled machine\-specific registers
|
Configure KVM to always ignore unhandled machine\-specific registers
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]screen <screen>\f[R]
|
\f[B]\-\-kill\f[R]
|
||||||
Use specified screen to determine the window size.
|
Kill the VM process if it is running
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]screenpct <percent>\f[R]
|
\f[B]\-\-offline\f[R]
|
||||||
Percent of fullscreen for VM if \[en]fullscreen is not specified.
|
Override all network settings and start the VM offline
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]shortcut\f[R]
|
\f[B]\-\-shortcut\f[R]
|
||||||
Create a desktop shortcut
|
Create a desktop shortcut
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]snapshot apply <tag>\f[R]
|
\f[B]\-\-snapshot apply <tag>\f[R]
|
||||||
Apply/restore a snapshot.
|
Apply/restore a snapshot.
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]snapshot create <tag>\f[R]
|
\f[B]\-\-snapshot create <tag>\f[R]
|
||||||
Create a snapshot.
|
Create a snapshot.
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]snapshot delete <tag>\f[R]
|
\f[B]\-\-snapshot delete <tag>\f[R]
|
||||||
Delete a snapshot.
|
Delete a snapshot.
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]snapshot info\f[R]
|
\f[B]\-\-snapshot info\f[R]
|
||||||
Show disk/snapshot info.
|
Show disk/snapshot info.
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]status\-quo\f[R]
|
\f[B]\-\-status\-quo\f[R]
|
||||||
Do not commit any changes to disk/snapshot.
|
Do not commit any changes to disk/snapshot.
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]viewer <viewer>\f[R]
|
\f[B]\-\-viewer <viewer>\f[R]
|
||||||
Choose an alternative viewer.
|
Choose an alternative viewer.
|
||||||
\[at]Options: `spicy' (default), `remote\-viewer', `none'
|
\[at]Options: \[aq]spicy\[aq] (default), \[aq]remote\-viewer\[aq],
|
||||||
|
\[aq]none\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]width <width>\f[R]
|
\f[B]\-\-width <width>\f[R]
|
||||||
Set VM screen width.
|
Set VM screen width; requires \[aq]\-\-height\[aq]
|
||||||
Does nothing without \[en]height
|
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]height <height>\f[R]
|
\f[B]\-\-height <height>\f[R]
|
||||||
Set VM screen height.
|
Set VM screen height; requires \[aq]\-\-width\[aq]
|
||||||
Does nothing without \[en]width
|
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]ssh\-port <port>\f[R]
|
\f[B]\-\-ssh\-port <port>\f[R]
|
||||||
Set ssh\-port manually
|
Set SSH port manually
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]spice\-port <port>\f[R]
|
\f[B]\-\-spice\-port <port>\f[R]
|
||||||
Set spice\-port manually
|
Set SPICE port manually
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]public\-dir <path>\f[R]
|
\f[B]\-\-public\-dir <path>\f[R]
|
||||||
Expose share directory.
|
Expose share directory.
|
||||||
\[at]Options: \[cq]\[cq] (default: xdg\-user\-dir PUBLICSHARE), `',
|
\[at]Options: \[aq]\[aq] (default: xdg\-user\-dir PUBLICSHARE),
|
||||||
`none'
|
\[aq]\[aq], \[aq]none\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]monitor <type>\f[R]
|
\f[B]\-\-monitor <type>\f[R]
|
||||||
Set monitor connection type.
|
Set monitor connection type.
|
||||||
\[at]Options: `socket' (default), `telnet', `none'
|
\[at]Options: \[aq]socket\[aq] (default), \[aq]telnet\[aq],
|
||||||
|
\[aq]none\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]monitor\-telnet\-host <ip/host>\f[R]
|
\f[B]\-\-monitor\-telnet\-host <ip/host>\f[R]
|
||||||
Set telnet host for monitor.
|
Set telnet host for monitor.
|
||||||
(default: `localhost')
|
(default: \[aq]localhost\[aq])
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]monitor\-telnet\-port <port>\f[R]
|
\f[B]\-\-monitor\-telnet\-port <port>\f[R]
|
||||||
Set telnet port for monitor.
|
Set telnet port for monitor.
|
||||||
(default: `4440')
|
(default: \[aq]4440\[aq])
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]monitor\-cmd <cmd>\f[R]
|
\f[B]\-\-monitor\-cmd <cmd>\f[R]
|
||||||
Send command to monitor if available.
|
Send command to monitor if available.
|
||||||
(Example: system_powerdown)
|
(Example: system_powerdown)
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]serial <type>\f[R]
|
\f[B]\-\-serial <type>\f[R]
|
||||||
Set serial connection type.
|
Set serial connection type.
|
||||||
\[at]Options: `socket' (default), `telnet', `none'
|
\[at]Options: \[aq]socket\[aq] (default), \[aq]telnet\[aq],
|
||||||
|
\[aq]none\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]serial\-telnet\-host <ip/host>\f[R]
|
\f[B]\-\-serial\-telnet\-host <ip/host>\f[R]
|
||||||
Set telnet host for serial.
|
Set telnet host for serial.
|
||||||
(default: `localhost')
|
(default: \[aq]localhost\[aq])
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]serial\-telnet\-port <port>\f[R]
|
\f[B]\-\-serial\-telnet\-port <port>\f[R]
|
||||||
Set telnet port for serial.
|
Set telnet port for serial.
|
||||||
(default: `6660')
|
(default: \[aq]6660\[aq])
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]keyboard <type>\f[R]
|
\f[B]\-\-keyboard <type>\f[R]
|
||||||
Set keyboard.
|
Set keyboard.
|
||||||
\[at]Options: `usb' (default), `ps2', `virtio'
|
\[at]Options: \[aq]usb\[aq] (default), \[aq]ps2\[aq], \[aq]virtio\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]keyboard_layout <layout>\f[R]
|
\f[B]\-\-keyboard_layout <layout>\f[R]
|
||||||
Set keyboard layout.
|
Set keyboard layout: \[aq]en\-us\[aq] (default)
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]mouse <type>\f[R]
|
\f[B]\-\-mouse <type>\f[R]
|
||||||
Set mouse.
|
Set mouse.
|
||||||
\[at]Options: `tablet' (default), `ps2', `usb', `virtio'
|
\[at]Options: \[aq]tablet\[aq] (default), \[aq]ps2\[aq], \[aq]usb\[aq],
|
||||||
|
\[aq]virtio\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]usb\-controller <type>\f[R]
|
\f[B]\-\-usb\-controller <type>\f[R]
|
||||||
Set usb\-controller.
|
Set usb\-controller.
|
||||||
\[at]Options: `ehci' (default), `xhci', `none'
|
\[at]Options: \[aq]ehci\[aq] (default), \[aq]xhci\[aq], \[aq]none\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]sound\-card <type>\f[R]
|
\f[B]\-\-sound\-card <type>\f[R]
|
||||||
Set sound card.
|
Set sound card.
|
||||||
\[at]Options: `intel\-hda' (default), `ac97', `es1370', `sb16', `none'
|
\[at]Options: \[aq]intel\-hda\[aq] (default), \[aq]ac97\[aq],
|
||||||
|
\[aq]es1370\[aq], \[aq]sb16\[aq], \[aq]none\[aq]
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]extra_args <arguments>\f[R]
|
\f[B]\-\-extra_args <arguments>\f[R]
|
||||||
Pass additional arguments to qemu
|
Pass additional arguments to qemu
|
||||||
.TP
|
.TP
|
||||||
\f[B]\[en]version\f[R]
|
\f[B]\-\-version\f[R]
|
||||||
Print version
|
Print version
|
||||||
.SH EXAMPLES
|
.SH EXAMPLES
|
||||||
.TP
|
.TP
|
||||||
\f[B]quickemu \[en]vm ubuntu\-mate\-22.04.conf\f[R]
|
\f[B]quickemu \-\-vm ubuntu\-mate\-22.04.conf\f[R]
|
||||||
Launches the VM specified in the file \f[I]ubuntu\-mate\-22.04.conf\f[R]
|
Launches the VM specified in the file \f[I]ubuntu\-mate\-22.04.conf\f[R]
|
||||||
.SH Introduction
|
.SH Introduction
|
||||||
\f[B]Quickemu\f[R] is a wrapper for the excellent \c
|
\f[B]Quickemu\f[R] is a wrapper for the excellent \c
|
||||||
.UR https://www.qemu.org/
|
.UR https://www.qemu.org/
|
||||||
QEMU
|
QEMU
|
||||||
.UE \c
|
.UE \c
|
||||||
\ that automatically \f[I]\[lq]does the right thing\[rq]\f[R] when
|
\ that automatically \f[I]\[dq]does the right thing\[dq]\f[R] when
|
||||||
creating virtual machines.
|
creating virtual machines.
|
||||||
No requirement for exhaustive configuration options.
|
No requirement for exhaustive configuration options.
|
||||||
You decide what operating system you want to run and Quickemu takes care
|
You decide what operating system you want to run and Quickemu takes care
|
||||||
|
@ -180,11 +184,13 @@ Windows
|
||||||
FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
|
FreeDOS, Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
|
||||||
.SH Features
|
.SH Features
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
Host support for \f[B]Linux and macOS\f[R]
|
||||||
|
.IP \[bu] 2
|
||||||
\f[B]macOS\f[R] Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
\f[B]macOS\f[R] Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[B]Windows\f[R] 10 and 11 including TPM 2.0
|
\f[B]Windows\f[R] 10 and 11 including TPM 2.0
|
||||||
.IP \[bu] 2
|
.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
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
.UR https://ubuntu.com/desktop
|
.UR https://ubuntu.com/desktop
|
||||||
|
@ -228,6 +234,20 @@ Full duplex audio
|
||||||
Braille support
|
Braille support
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
EFI (with or without SecureBoot) and Legacy BIOS boot
|
EFI (with or without SecureBoot) and Legacy BIOS boot
|
||||||
|
.SS As featured on \c
|
||||||
|
.UR https://linuxmatters.sh
|
||||||
|
Linux Matters
|
||||||
|
.UE \c
|
||||||
|
\ podcast!
|
||||||
|
The presenters of Linux Matters 🐧🎙️ are the creators of each of the
|
||||||
|
principle Quickemu projects.
|
||||||
|
We discussed Quickemu\[aq]s 2024 reboot in \c
|
||||||
|
.UR https://linuxmatters.sh/30
|
||||||
|
Episode 30 \- Quickemu Rising From the Bashes
|
||||||
|
.UE \c
|
||||||
|
\&.
|
||||||
|
.PP
|
||||||
|
\ Linux Matters Podcast
|
||||||
.PP
|
.PP
|
||||||
When installing from source, you will need to install the following
|
When installing from source, you will need to install the following
|
||||||
requirements manually:
|
requirements manually:
|
||||||
|
@ -261,16 +281,36 @@ EDK II
|
||||||
.UE \c
|
.UE \c
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
|
.UR https://www.gnu.org/software/gawk/
|
||||||
|
gawk
|
||||||
|
.UE \c
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
.UR https://www.gnu.org/software/grep/
|
.UR https://www.gnu.org/software/grep/
|
||||||
grep
|
grep
|
||||||
.UE \c
|
.UE \c
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
|
.UR https://gitlab.freedesktop.org/mesa/demos
|
||||||
|
glxinfo
|
||||||
|
.UE \c
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
.UR https://stedolan.github.io/jq/
|
.UR https://stedolan.github.io/jq/
|
||||||
jq
|
jq
|
||||||
.UE \c
|
.UE \c
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
|
.UR https://wiki.linuxfoundation.org/lsb/start
|
||||||
|
LSB
|
||||||
|
.UE \c
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
|
.UR https://github.com/pciutils/pciutils
|
||||||
|
pciutils
|
||||||
|
.UE \c
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
.UR https://gitlab.com/procps-ng/procps
|
.UR https://gitlab.com/procps-ng/procps
|
||||||
procps
|
procps
|
||||||
.UE \c
|
.UE \c
|
||||||
|
@ -281,11 +321,6 @@ python3
|
||||||
.UE \c
|
.UE \c
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
.UR https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7
|
|
||||||
chunkcheck
|
|
||||||
.UE \c
|
|
||||||
.IP \[bu] 2
|
|
||||||
\c
|
|
||||||
.UR http://cdrtools.sourceforge.net/private/cdrecord.html
|
.UR http://cdrtools.sourceforge.net/private/cdrecord.html
|
||||||
mkisofs
|
mkisofs
|
||||||
.UE \c
|
.UE \c
|
||||||
|
@ -299,6 +334,7 @@ usbutils
|
||||||
.UR https://github.com/karelzak/util-linux
|
.UR https://github.com/karelzak/util-linux
|
||||||
util\-linux
|
util\-linux
|
||||||
.UE \c
|
.UE \c
|
||||||
|
; including \f[CR]uuidgen\f[R]
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
.UR https://www.gnu.org/software/sed/
|
.UR https://www.gnu.org/software/sed/
|
||||||
|
@ -361,22 +397,54 @@ These examples may save a little typing:
|
||||||
This also applies to derivatives:
|
This also applies to derivatives:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
sudo apt install qemu bash coreutils curl ovmf grep jq procps python3 genisoimage usbutils util\-linux sed socat spice\-client\-gtk libtss2\-tcti\-swtpm0 xdg\-user\-dirs zsync unzip
|
sudo apt\-get install bash coreutils curl genisoimage grep jq mesa\-utils ovmf pciutils procps python3 qemu sed socat spice\-client\-gtk swtpm\-tools unzip usbutils util\-linux xdg\-user\-dirs xrandr zsync
|
||||||
.EE
|
.EE
|
||||||
.SS Install requirements on Fedora hosts
|
.SS Install requirements on Fedora hosts
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
sudo dnf install qemu bash coreutils curl edk2\-tools grep jq procps python3 genisoimage usbutils util\-linux sed socat spice\-gtk\-tools swtpm xdg\-user\-dirs xrandr unzip
|
sudo dnf install bash coreutils curl edk2\-tools genisoimage grep jq mesa\-demos pciutils procps python3 qemu sed socat spice\-gtk\-tools swtpm unzip usbutils util\-linux uuidgen\-runtime xdg\-user\-dirs xrandr zsync
|
||||||
.EE
|
.EE
|
||||||
.SS Install requirements on macOS hosts
|
.SS Install requirements on Gentoo
|
||||||
This is a \f[B]work in progress\f[R] (see \c
|
Please note that you may have to use \f[CR]sys\-firmware/edk2\-ovmf\f[R]
|
||||||
.UR https://github.com/quickemu-project/quickemu/issues/248
|
instead of \f[CR]sys\-firmware/edk2\-ovmf\-bin\f[R] \- depending on how
|
||||||
issue 248
|
your system is configured.
|
||||||
.UE \c
|
|
||||||
\ for other steps and changes that may enable running on MacOS)
|
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
brew install qemu bash coreutils curl grep jq python\[at]3.10 cdrtools gnu\-sed spice\-gtk zsync
|
sudo emerge \-\-ask \-\-noreplace app\-emulation/qemu \[rs]
|
||||||
|
app\-shells/bash \[rs]
|
||||||
|
sys\-apps/coreutils \[rs]
|
||||||
|
net\-misc/curl \[rs]
|
||||||
|
sys\-firmware/edk2\-ovmf\-bin \[rs]
|
||||||
|
sys\-apps/gawk \[rs]
|
||||||
|
sys\-apps/grep \[rs]
|
||||||
|
x11\-apps/mesa\-progs \[rs]
|
||||||
|
app\-misc/jq \[rs]
|
||||||
|
sys\-apps/pciutils \[rs]
|
||||||
|
sys\-process/procps \[rs]
|
||||||
|
app\-cdr/cdrtools \[rs]
|
||||||
|
sys\-apps/usbutils \[rs]
|
||||||
|
sys\-apps/util\-linux \[rs]
|
||||||
|
sys\-apps/sed \[rs]
|
||||||
|
net\-misc/socat \[rs]
|
||||||
|
app\-emulation/spice \[rs]
|
||||||
|
app\-crypt/swtpm \[rs]
|
||||||
|
x11\-misc/xdg\-user\-dirs \[rs]
|
||||||
|
x11\-apps/xrandr \[rs]
|
||||||
|
net\-misc/zsync \[rs]
|
||||||
|
app\-arch/unzip
|
||||||
|
.EE
|
||||||
|
.SS Install requirements on macOS hosts
|
||||||
|
Install the Quickemu requirements using brew:
|
||||||
|
.IP
|
||||||
|
.EX
|
||||||
|
brew install bash cdrtools coreutils jq python3 qemu usbutils samba socat swtpm zsync
|
||||||
|
.EE
|
||||||
|
.PP
|
||||||
|
Now clone the project:
|
||||||
|
.IP
|
||||||
|
.EX
|
||||||
|
git clone https://github.com/quickemu\-project/quickemu
|
||||||
|
cd quickemu
|
||||||
.EE
|
.EE
|
||||||
.SS \c
|
.SS \c
|
||||||
.UR https://github.com/quickemu-project/quickemu/wiki/07-Alternative-frontends
|
.UR https://github.com/quickemu-project/quickemu/wiki/07-Alternative-frontends
|
||||||
|
@ -387,7 +455,7 @@ While \f[CR]quickemu\f[R] and \f[CR]quickget\f[R] are designed for the
|
||||||
terminal, a graphical user interface is also available:
|
terminal, a graphical user interface is also available:
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[B]\c
|
\f[B]\c
|
||||||
.UR https://github.com/quickgui/quickgui
|
.UR https://github.com/quickemu-project/quickgui
|
||||||
Quickgui
|
Quickgui
|
||||||
.UE \c
|
.UE \c
|
||||||
\f[R] by \c
|
\f[R] by \c
|
||||||
|
@ -421,27 +489,6 @@ Philipp Kiemle
|
||||||
Quickemu icons
|
Quickemu icons
|
||||||
.UE \c
|
.UE \c
|
||||||
\f[R] 🎨
|
\f[R] 🎨
|
||||||
.SS qqX
|
|
||||||
There is also a multi option desktop integrated text interface, the
|
|
||||||
\f[B]quickemu quickget X terminal project\f[R], or \f[B]qqX\f[R], with
|
|
||||||
lots of unique tools and utilities to help you make light work of
|
|
||||||
installations, snapshots and disk management
|
|
||||||
.IP \[bu] 2
|
|
||||||
\f[B]\c
|
|
||||||
.UR https://github.com/TuxVinyards/qqX
|
|
||||||
qqX
|
|
||||||
.UE \c
|
|
||||||
\f[R] is independently curated by \c
|
|
||||||
.UR https://github.com/TuxVinyards
|
|
||||||
Alex Genovese
|
|
||||||
.UE \c
|
|
||||||
\ (see the github pages)
|
|
||||||
[IMAGE: \c
|
|
||||||
.UR https://github.com/TuxVinyards/qqX/assets/3956806/18e5c495-8072-49a5-8b9c-e1302549efcf
|
|
||||||
qqX\-vmm
|
|
||||||
.UE \c
|
|
||||||
]
|
|
||||||
qqX\-vmm
|
|
||||||
.SS Creating Linux guests 🐧
|
.SS Creating Linux guests 🐧
|
||||||
.SS Ubuntu
|
.SS Ubuntu
|
||||||
\f[CR]quickget\f[R] will automatically download an Ubuntu release and
|
\f[CR]quickget\f[R] will automatically download an Ubuntu release and
|
||||||
|
@ -521,11 +568,12 @@ You can also use \f[CR]quickget\f[R] with advanced options :
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
\-\-download <os> <release> [edition] : Download image; no VM configuration
|
\-\-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
|
\-\-open\-homepage <os> : Open homepage for the OS
|
||||||
\-\-show [os] : Show OS information
|
\-\-show [os] : Show OS information
|
||||||
\-\-version : Show version
|
\-\-version : Show version
|
||||||
\-\-help : Show this help message
|
\-\-help : Show this help message
|
||||||
|
\-\-disable\-unattended : Force quickget not to set up an unattended installation
|
||||||
\-\-url [os] [release] [edition] : Show image URL(s)
|
\-\-url [os] [release] [edition] : Show image URL(s)
|
||||||
\-\-check [os] [release] [edition] : Check image URL(s)
|
\-\-check [os] [release] [edition] : Check image URL(s)
|
||||||
\-\-list : List all supported systems
|
\-\-list : List all supported systems
|
||||||
|
@ -643,6 +691,8 @@ wiki
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
|
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
\f[CR]maboxlinux\f[R] (Mabox Linux)
|
||||||
|
.IP \[bu] 2
|
||||||
\f[CR]mageia\f[R] (Mageia)
|
\f[CR]mageia\f[R] (Mageia)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]manjaro\f[R] (Manjaro)
|
\f[CR]manjaro\f[R] (Manjaro)
|
||||||
|
@ -677,6 +727,8 @@ wiki
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]primtux\f[R] (PrimTux)
|
\f[CR]primtux\f[R] (PrimTux)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
\f[CR]proxmox\-ve\f[R] (Proxmox VE)
|
||||||
|
.IP \[bu] 2
|
||||||
\f[CR]pureos\f[R] (PureOS)
|
\f[CR]pureos\f[R] (PureOS)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]reactos\f[R] (ReactOS)
|
\f[CR]reactos\f[R] (ReactOS)
|
||||||
|
@ -755,17 +807,29 @@ enable copy/paste and USB redirection.
|
||||||
Install the SPICE WebDAV agent (\f[CR]spice\-webdavd\f[R]) in the guest
|
Install the SPICE WebDAV agent (\f[CR]spice\-webdavd\f[R]) in the guest
|
||||||
to enable file sharing.
|
to enable file sharing.
|
||||||
.RE
|
.RE
|
||||||
|
.SS Supporting old Linux distros
|
||||||
|
If you want to run an old Linux , from 2016 or earlier, change the
|
||||||
|
\f[CR]guest_os\f[R] to \f[CR]linux_old\f[R].
|
||||||
|
This will enable the \f[CR]vmware\-svga\f[R] graphics driver which is
|
||||||
|
better supported on older distros.
|
||||||
.SS \c
|
.SS \c
|
||||||
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
||||||
Creating macOS Guests
|
Creating macOS Guests
|
||||||
.UE \c
|
.UE \c
|
||||||
\ 🍏
|
\ 🍏
|
||||||
|
\f[B]Installing macOS in a VM can be a bit finicky, if you encounter
|
||||||
|
problems, \c
|
||||||
|
.UR https://github.com/quickemu-project/quickemu/discussions
|
||||||
|
check the Discussions
|
||||||
|
.UE \c
|
||||||
|
\ for solutions or ask for help there\f[R] 🛟
|
||||||
|
.PP
|
||||||
\f[CR]quickget\f[R] automatically downloads a macOS recovery image and
|
\f[CR]quickget\f[R] automatically downloads a macOS recovery image and
|
||||||
creates a virtual machine configuration.
|
creates a virtual machine configuration.
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
quickget macos catalina
|
quickget macos big\-sur
|
||||||
quickemu \-\-vm macos\-catalina.conf
|
quickemu \-\-vm macos\-big\-sur.conf
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
macOS \f[CR]mojave\f[R], \f[CR]catalina\f[R], \f[CR]big\-sur\f[R],
|
macOS \f[CR]mojave\f[R], \f[CR]catalina\f[R], \f[CR]big\-sur\f[R],
|
||||||
|
@ -838,21 +902,21 @@ on the hard disk when files are deleted:
|
||||||
sudo trimforce enable
|
sudo trimforce enable
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
You will be prompted to enter your account\[cq]s password to gain the
|
You will be prompted to enter your account\[aq]s password to gain the
|
||||||
privilege needed.
|
privilege needed.
|
||||||
Once you\[cq]ve entered your password and pressed enter the command will
|
Once you\[aq]ve entered your password and pressed enter the command will
|
||||||
request confirmation in the form of two questions that require you to
|
request confirmation in the form of two questions that require you to
|
||||||
type y (for a \[lq]yes\[rq] response) followed by enter to confirm.
|
type y (for a \[dq]yes\[dq] response) followed by enter to confirm.
|
||||||
.PP
|
.PP
|
||||||
If you press enter without first typing y the system will consider that
|
If you press enter without first typing y the system will consider that
|
||||||
a negative response as though you said \[lq]no\[rq]:
|
a negative response as though you said \[dq]no\[dq]:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
IMPORTANT NOTICE: This tool force\-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON\-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
IMPORTANT NOTICE: This tool force\-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON\-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
||||||
Are you sure you with to proceed (y/N)?
|
Are you sure you with to proceed (y/N)?
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
And a second confirmation once you\[cq]ve confirmed the previous one:
|
And a second confirmation once you\[aq]ve confirmed the previous one:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
Your system will immediately reboot when this is complete.
|
Your system will immediately reboot when this is complete.
|
||||||
|
@ -866,15 +930,15 @@ The default macOS configuration looks like this:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
guest_os=\[dq]macos\[dq]
|
guest_os=\[dq]macos\[dq]
|
||||||
img=\[dq]macos\-catalina/RecoveryImage.img\[dq]
|
img=\[dq]macos\- big\-sur/RecoveryImage.img\[dq]
|
||||||
disk_img=\[dq]macos\-catalina/disk.qcow2\[dq]
|
disk_img=\[dq]macos\- big\-sur/disk.qcow2\[dq]
|
||||||
macos_release=\[dq]catalina\[dq]
|
macos_release=\[dq] big\-sur\[dq]
|
||||||
.EE
|
.EE
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
|
\f[CR]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
|
||||||
macOS.
|
macOS.
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to
|
\f[CR]macos_release=\[dq] big\-sur\[dq]\f[R] instructs Quickemu to
|
||||||
optimise for a particular macOS release.
|
optimise for a particular macOS release.
|
||||||
.RS 2
|
.RS 2
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
@ -884,8 +948,118 @@ Sur and newer, but not previous releases.
|
||||||
And VirtIO Block Media (disks) are supported/stable in Catalina and
|
And VirtIO Block Media (disks) are supported/stable in Catalina and
|
||||||
newer.
|
newer.
|
||||||
.RE
|
.RE
|
||||||
|
.SH macOS compatibility
|
||||||
|
There are some considerations when running macOS via Quickemu.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Supported macOS releases:
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
Mojave
|
||||||
|
.IP \[bu] 2
|
||||||
|
Catalina
|
||||||
|
.IP \[bu] 2
|
||||||
|
Big Sur
|
||||||
|
.IP \[bu] 2
|
||||||
|
Monterey
|
||||||
|
.IP \[bu] 2
|
||||||
|
Ventura
|
||||||
|
.IP \[bu] 2
|
||||||
|
Sonoma
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
\f[CR]quickemu\f[R] will automatically download the required \c
|
||||||
|
.UR https://github.com/acidanthera/OpenCorePkg
|
||||||
|
OpenCore
|
||||||
|
.UE \c
|
||||||
|
\ bootloader and OVMF firmware from \c
|
||||||
|
.UR https://github.com/kholia/OSX-KVM
|
||||||
|
OSX\-KVM
|
||||||
|
.UE \c
|
||||||
|
\&.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Optimised by default, but no GPU acceleration is available.
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
Host CPU vendor is detected and guest CPU is optimised accordingly.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
|
.UR https://www.kraxel.org/blog/2019/06/macos-qemu-guest/
|
||||||
|
VirtIO Block Media
|
||||||
|
.UE \c
|
||||||
|
\ is used for the system disk where supported.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
|
.UR http://philjordan.eu/osx-virt/
|
||||||
|
VirtIO \f[CR]usb\-tablet\f[R]
|
||||||
|
.UE \c
|
||||||
|
\ is used for the mouse.
|
||||||
|
.IP \[bu] 2
|
||||||
|
VirtIO Network (\f[CR]virtio\-net\f[R]) is supported and enabled on
|
||||||
|
macOS Big Sur and newer, but earlier releases use \f[CR]vmxnet3\f[R].
|
||||||
|
.IP \[bu] 2
|
||||||
|
VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and
|
||||||
|
newer but disabled for other support macOS releases.
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
USB host and SPICE pass\-through is:
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
UHCI (USB 2.0) on macOS Catalina and earlier.
|
||||||
|
.IP \[bu] 2
|
||||||
|
XHCI (USB 3.0) on macOS Big Sur and newer.
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
Display resolution can be changed via \f[CR]quickemu\f[R] using
|
||||||
|
\f[CR]\-\-width\f[R] and \f[CR]\-\-height\f[R] command line arguments.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\f[B]Full Duplex audio requires \c
|
||||||
|
.UR https://github.com/chris1111/VoodooHDA-OC
|
||||||
|
VoodooHDA OC
|
||||||
|
.UE \c
|
||||||
|
\ or pass\-through a USB audio\-device to the macOS guest VM\f[R].
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
NOTE!
|
||||||
|
\c
|
||||||
|
.UR https://disable-gatekeeper.github.io/
|
||||||
|
Gatekeeper
|
||||||
|
.UE \c
|
||||||
|
\ and \c
|
||||||
|
.UR https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection
|
||||||
|
System Integrity Protection (SIP)
|
||||||
|
.UE \c
|
||||||
|
\ need to be disabled to install VoodooHDA OC
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
File sharing between guest and host is available via \c
|
||||||
|
.UR https://wiki.qemu.org/Documentation/9psetup
|
||||||
|
virtio\-9p
|
||||||
|
.UE \c
|
||||||
|
\ and \c
|
||||||
|
.UR https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24
|
||||||
|
SPICE webdavd
|
||||||
|
.UE \c
|
||||||
|
\&.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Copy/paste via SPICE agent is \f[B]not available on macOS\f[R].
|
||||||
|
.SH macOS App Store
|
||||||
|
If you see \f[I]\[dq]Your device or computer could not be
|
||||||
|
verified\[dq]\f[R] when you try to login to the App Store, make sure
|
||||||
|
that your wired ethernet device is \f[CR]en0\f[R].
|
||||||
|
Use \f[CR]ifconfig\f[R] in a terminal to verify this.
|
||||||
.PP
|
.PP
|
||||||
There is further advice and information about macOS guests in the
|
If the wired ethernet device is not \f[CR]en0\f[R], then then go to
|
||||||
|
\f[I]System Preferences\f[R] \-> \f[I]Network\f[R], delete all the
|
||||||
|
network devices and apply the changes.
|
||||||
|
Next, open a terminal and run the following:
|
||||||
|
.IP
|
||||||
|
.EX
|
||||||
|
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
|
||||||
|
.EE
|
||||||
|
.PP
|
||||||
|
Now reboot, and the App Store should work.
|
||||||
|
.PP
|
||||||
|
There may be further advice and information about macOS guests in the
|
||||||
project \c
|
project \c
|
||||||
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
||||||
wiki
|
wiki
|
||||||
|
@ -911,7 +1085,7 @@ VirtIO drivers for Windows
|
||||||
.UE \c
|
.UE \c
|
||||||
\&.
|
\&.
|
||||||
.PP
|
.PP
|
||||||
\f[B]Windows 8.1\f[R] is also supported but doesn\[cq]t feature any
|
\f[B]Windows 8.1\f[R] is also supported but doesn\[aq]t feature any
|
||||||
automated installation or driver optimisation.
|
automated installation or driver optimisation.
|
||||||
.PP
|
.PP
|
||||||
\f[CR]quickget\f[R] can also download \c
|
\f[CR]quickget\f[R] can also download \c
|
||||||
|
@ -970,12 +1144,12 @@ Arguments
|
||||||
\-\-access : Enable remote spice access support. \[aq]local\[aq] (default), \[aq]remote\[aq], \[aq]clientipaddress\[aq]
|
\-\-access : Enable remote spice access support. \[aq]local\[aq] (default), \[aq]remote\[aq], \[aq]clientipaddress\[aq]
|
||||||
\-\-braille : Enable braille support. Requires SDL.
|
\-\-braille : Enable braille support. Requires SDL.
|
||||||
\-\-delete\-disk : Delete the disk image and EFI variables
|
\-\-delete\-disk : Delete the disk image and EFI variables
|
||||||
\-\-delete\-vm : Delete the entire VM and it\[aq]s configuration
|
\-\-delete\-vm : Delete the entire VM and its configuration
|
||||||
\-\-display : Select display backend. \[aq]sdl\[aq] (default), \[aq]gtk\[aq], \[aq]none\[aq], \[aq]spice\[aq] or \[aq]spice\-app\[aq]
|
\-\-display : Select display backend. \[aq]sdl\[aq] (default), \[aq]cocoa\[aq], \[aq]gtk\[aq], \[aq]none\[aq], \[aq]spice\[aq] or \[aq]spice\-app\[aq]
|
||||||
\-\-fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
|
\-\-fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
|
||||||
\-\-ignore\-msrs\-always : Configure KVM to always ignore unhandled machine\-specific registers
|
\-\-ignore\-msrs\-always : Configure KVM to always ignore unhandled machine\-specific registers
|
||||||
\-\-screen <screen> : Use specified screen to determine the window size.
|
\-\-kill : Kill the VM process if it is running
|
||||||
\-\-screenpct <percent> : Percent of fullscreen for VM if \-\-fullscreen is not specified.
|
\-\-offline : Override all network settings and start the VM offline
|
||||||
\-\-shortcut : Create a desktop shortcut
|
\-\-shortcut : Create a desktop shortcut
|
||||||
\-\-snapshot apply <tag> : Apply/restore a snapshot.
|
\-\-snapshot apply <tag> : Apply/restore a snapshot.
|
||||||
\-\-snapshot create <tag> : Create a snapshot.
|
\-\-snapshot create <tag> : Create a snapshot.
|
||||||
|
@ -983,10 +1157,10 @@ Arguments
|
||||||
\-\-snapshot info : Show disk/snapshot info.
|
\-\-snapshot info : Show disk/snapshot info.
|
||||||
\-\-status\-quo : Do not commit any changes to disk/snapshot.
|
\-\-status\-quo : Do not commit any changes to disk/snapshot.
|
||||||
\-\-viewer <viewer> : Choose an alternative viewer. \[at]Options: \[aq]spicy\[aq] (default), \[aq]remote\-viewer\[aq], \[aq]none\[aq]
|
\-\-viewer <viewer> : Choose an alternative viewer. \[at]Options: \[aq]spicy\[aq] (default), \[aq]remote\-viewer\[aq], \[aq]none\[aq]
|
||||||
\-\-width <width> : Set VM screen width. Does nothing without \-\-height
|
\-\-width <width> : Set VM screen width; requires \[aq]\-\-height\[aq]
|
||||||
\-\-height <height> : Set VM screen height. Does nothing without \-\-width
|
\-\-height <height> : Set VM screen height; requires \[aq]\-\-width\[aq]
|
||||||
\-\-ssh\-port <port> : Set ssh\-port manually
|
\-\-ssh\-port <port> : Set SSH port manually
|
||||||
\-\-spice\-port <port> : Set spice\-port manually
|
\-\-spice\-port <port> : Set SPICE port manually
|
||||||
\-\-public\-dir <path> : Expose share directory. \[at]Options: \[aq]\[aq] (default: xdg\-user\-dir PUBLICSHARE), \[aq]<directory>\[aq], \[aq]none\[aq]
|
\-\-public\-dir <path> : Expose share directory. \[at]Options: \[aq]\[aq] (default: xdg\-user\-dir PUBLICSHARE), \[aq]<directory>\[aq], \[aq]none\[aq]
|
||||||
\-\-monitor <type> : Set monitor connection type. \[at]Options: \[aq]socket\[aq] (default), \[aq]telnet\[aq], \[aq]none\[aq]
|
\-\-monitor <type> : Set monitor connection type. \[at]Options: \[aq]socket\[aq] (default), \[aq]telnet\[aq], \[aq]none\[aq]
|
||||||
\-\-monitor\-telnet\-host <ip/host> : Set telnet host for monitor. (default: \[aq]localhost\[aq])
|
\-\-monitor\-telnet\-host <ip/host> : Set telnet host for monitor. (default: \[aq]localhost\[aq])
|
||||||
|
@ -996,10 +1170,11 @@ Arguments
|
||||||
\-\-serial\-telnet\-host <ip/host> : Set telnet host for serial. (default: \[aq]localhost\[aq])
|
\-\-serial\-telnet\-host <ip/host> : Set telnet host for serial. (default: \[aq]localhost\[aq])
|
||||||
\-\-serial\-telnet\-port <port> : Set telnet port for serial. (default: \[aq]6660\[aq])
|
\-\-serial\-telnet\-port <port> : Set telnet port for serial. (default: \[aq]6660\[aq])
|
||||||
\-\-keyboard <type> : Set keyboard. \[at]Options: \[aq]usb\[aq] (default), \[aq]ps2\[aq], \[aq]virtio\[aq]
|
\-\-keyboard <type> : Set keyboard. \[at]Options: \[aq]usb\[aq] (default), \[aq]ps2\[aq], \[aq]virtio\[aq]
|
||||||
\-\-keyboard_layout <layout> : Set keyboard layout.
|
\-\-keyboard_layout <layout> : Set keyboard layout: \[aq]en\-us\[aq] (default)
|
||||||
\-\-mouse <type> : Set mouse. \[at]Options: \[aq]tablet\[aq] (default), \[aq]ps2\[aq], \[aq]usb\[aq], \[aq]virtio\[aq]
|
\-\-mouse <type> : Set mouse. \[at]Options: \[aq]tablet\[aq] (default), \[aq]ps2\[aq], \[aq]usb\[aq], \[aq]virtio\[aq]
|
||||||
\-\-usb\-controller <type> : Set usb\-controller. \[at]Options: \[aq]ehci\[aq] (default), \[aq]xhci\[aq], \[aq]none\[aq]
|
\-\-usb\-controller <type> : Set usb\-controller. \[at]Options: \[aq]ehci\[aq] (default), \[aq]xhci\[aq], \[aq]none\[aq]
|
||||||
\-\-sound\-card <type> : Set sound card. \[at]Options: \[aq]intel\-hda\[aq] (default), \[aq]ac97\[aq], \[aq]es1370\[aq], \[aq]sb16\[aq], \[aq]none\[aq]
|
\-\-sound\-card <type> : Set sound card. \[at]Options: \[aq]intel\-hda\[aq] (default), \[aq]ac97\[aq], \[aq]es1370\[aq], \[aq]sb16\[aq], \[aq]usb\-audio\[aq], \[aq]none\[aq]
|
||||||
|
\-\-sound\-duplex <type> : Set sound card duplex. \[at]Options: \[aq]hda\-micro\[aq] (default: speaker/mic), \[aq]hda\-duplex\[aq] (line\-in/line\-out), \[aq]hda\-output\[aq] (output\-only)
|
||||||
\-\-extra_args <arguments> : Pass additional arguments to qemu
|
\-\-extra_args <arguments> : Pass additional arguments to qemu
|
||||||
\-\-version : Print version
|
\-\-version : Print version
|
||||||
.EE
|
.EE
|
||||||
|
@ -1011,59 +1186,6 @@ Here is an example of how to create a shortcut.
|
||||||
.EX
|
.EX
|
||||||
quickemu \-\-vm ubuntu\-22.04\-desktop.conf \-\-shortcut
|
quickemu \-\-vm ubuntu\-22.04\-desktop.conf \-\-shortcut
|
||||||
.EE
|
.EE
|
||||||
.SS Screen and window size (Linux guests only)
|
|
||||||
\f[CR]qemu\f[R] will always default to the primary monitor to display
|
|
||||||
the VM\[cq]s window.
|
|
||||||
.PP
|
|
||||||
Without the \f[CR]\-\-screen\f[R] option, \f[CR]quickemu\f[R] will look
|
|
||||||
for the size of the smallest monitor, and use a size that fits on said
|
|
||||||
monitor.
|
|
||||||
.PP
|
|
||||||
The \f[CR]\-\-screen\f[R] option forces \f[CR]quickemu\f[R] to use the
|
|
||||||
size of the given monitor to compute the size of the window.
|
|
||||||
\f[B]It won\[cq]t use that monitor to display the VM\[cq]s window if
|
|
||||||
it\[cq]s not the primary monitor\f[R].
|
|
||||||
This is useful if the primary monitor if not the smallest one, and if
|
|
||||||
the VM\[cq]s window doesn\[cq]t need to be moved around.
|
|
||||||
.PP
|
|
||||||
The \f[CR]\-\-screen\f[R] option is also useful with the
|
|
||||||
\f[CR]\-\-fullscreen\f[R] option, again because \f[CR]qemu\f[R] will
|
|
||||||
always use the primary monitor.
|
|
||||||
In order for the fullscreen mode to work properly, the resolution of the
|
|
||||||
VM\[cq]s window must match the resolution of the screen.
|
|
||||||
.PP
|
|
||||||
To know which screen to use, type:
|
|
||||||
.IP
|
|
||||||
.EX
|
|
||||||
xrandr \-\-listmonitors | grep \-v Monitors
|
|
||||||
.EE
|
|
||||||
.PP
|
|
||||||
The command will output something like this:
|
|
||||||
.IP
|
|
||||||
.EX
|
|
||||||
0: +*HDMI\-0 2560/597x1440/336+1920+0 HDMI\-0
|
|
||||||
1: +DVI\-D\-0 1920/527x1080/296+0+0 DVI\-D\-0
|
|
||||||
.EE
|
|
||||||
.PP
|
|
||||||
The first number is what needs to be passed to the \f[CR]\-\-screen\f[R]
|
|
||||||
option.
|
|
||||||
.PP
|
|
||||||
For example:
|
|
||||||
.IP
|
|
||||||
.EX
|
|
||||||
quickemu \-\-vm vm.conf \-\-screen 0
|
|
||||||
.EE
|
|
||||||
.PP
|
|
||||||
The above uses the 2560x1440 screen to compute the size of the window,
|
|
||||||
which Quickemu sizes to 2048x1152.
|
|
||||||
Without the \f[CR]\-\-screen\f[R] option, Quickemu would have used the
|
|
||||||
1920x1080 monitor which results in a window size of 1664x936.
|
|
||||||
.PP
|
|
||||||
The `\[en]screenpct' is an optional integer value between 25 <= pct <
|
|
||||||
100 which will override system default screen sizes.
|
|
||||||
The VM size will be `pct' of the chosen screen.
|
|
||||||
\f[B]If \[en]fullscreen is chosen screen will be fullsize instead of
|
|
||||||
being scaled down by \[en]screenpct value.\f[R]
|
|
||||||
.SS References
|
.SS References
|
||||||
Useful reference that assisted the development of Quickemu.
|
Useful reference that assisted the development of Quickemu.
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
@ -1072,7 +1194,7 @@ General
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
.UR https://qemu.readthedocs.io/en/latest/
|
.UR https://qemu.readthedocs.io/en/latest/
|
||||||
QEMU\[cq]s documentation!
|
QEMU\[aq]s documentation!
|
||||||
.UE \c
|
.UE \c
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\c
|
\c
|
||||||
|
@ -1207,6 +1329,6 @@ Full sources at: \c
|
||||||
.UR https://github.com/quickemu-project/quickemu
|
.UR https://github.com/quickemu-project/quickemu
|
||||||
.UE \c
|
.UE \c
|
||||||
.PP
|
.PP
|
||||||
quickemu_conf(1), quickget(1), quickgui(1)
|
quickemu_conf(5), quickget(1), quickgui(1)
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Martin Wimpress.
|
Martin Wimpress.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
author: Martin Wimpress
|
author: Martin Wimpress
|
||||||
date: May 9, 2024
|
date: December 30, 2024
|
||||||
footer: quickemu
|
footer: quickemu
|
||||||
header: Quickemu User Manual
|
header: Quickemu User Manual
|
||||||
section: 1
|
section: 1
|
||||||
|
@ -38,7 +38,7 @@ You can also pass optional parameters
|
||||||
: Delete the disk image and EFI variables
|
: Delete the disk image and EFI variables
|
||||||
|
|
||||||
**--delete-vm**
|
**--delete-vm**
|
||||||
: Delete the entire VM and it's configuration
|
: Delete the entire VM and its configuration
|
||||||
|
|
||||||
**--display**
|
**--display**
|
||||||
: Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or
|
: Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or
|
||||||
|
@ -50,11 +50,11 @@ You can also pass optional parameters
|
||||||
**--ignore-msrs-always**
|
**--ignore-msrs-always**
|
||||||
: Configure KVM to always ignore unhandled machine-specific registers
|
: Configure KVM to always ignore unhandled machine-specific registers
|
||||||
|
|
||||||
**--screen \<screen\>**
|
**--kill**
|
||||||
: Use specified screen to determine the window size.
|
: Kill the VM process if it is running
|
||||||
|
|
||||||
**--screenpct \<percent\>**
|
**--offline**
|
||||||
: Percent of fullscreen for VM if --fullscreen is not specified.
|
: Override all network settings and start the VM offline
|
||||||
|
|
||||||
**--shortcut**
|
**--shortcut**
|
||||||
: Create a desktop shortcut
|
: Create a desktop shortcut
|
||||||
|
@ -79,20 +79,20 @@ You can also pass optional parameters
|
||||||
'remote-viewer', 'none'
|
'remote-viewer', 'none'
|
||||||
|
|
||||||
**--width \<width\>**
|
**--width \<width\>**
|
||||||
: Set VM screen width. Does nothing without --height
|
: Set VM screen width; requires '--height'
|
||||||
|
|
||||||
**--height \<height\>**
|
**--height \<height\>**
|
||||||
: Set VM screen height. Does nothing without --width
|
: Set VM screen height; requires '--width'
|
||||||
|
|
||||||
**--ssh-port \<port\>**
|
**--ssh-port \<port\>**
|
||||||
: Set ssh-port manually
|
: Set SSH port manually
|
||||||
|
|
||||||
**--spice-port \<port\>**
|
**--spice-port \<port\>**
|
||||||
: Set spice-port manually
|
: Set SPICE port manually
|
||||||
|
|
||||||
**--public-dir \<path\>**
|
**--public-dir \<path\>**
|
||||||
: Expose share directory. @Options: '' (default: xdg-user-dir
|
: Expose share directory. @Options: '' (default: xdg-user-dir
|
||||||
PUBLICSHARE), '`<directory>`{=html}', 'none'
|
PUBLICSHARE), '<directory>', 'none'
|
||||||
|
|
||||||
**--monitor \<type\>**
|
**--monitor \<type\>**
|
||||||
: Set monitor connection type. @Options: 'socket' (default), 'telnet',
|
: Set monitor connection type. @Options: 'socket' (default), 'telnet',
|
||||||
|
@ -121,7 +121,7 @@ You can also pass optional parameters
|
||||||
: Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'
|
: Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'
|
||||||
|
|
||||||
**--keyboard_layout \<layout\>**
|
**--keyboard_layout \<layout\>**
|
||||||
: Set keyboard layout.
|
: Set keyboard layout: 'en-us' (default)
|
||||||
|
|
||||||
**--mouse \<type\>**
|
**--mouse \<type\>**
|
||||||
: Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'
|
: Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'
|
||||||
|
@ -152,10 +152,10 @@ thing"* when creating virtual machines. No requirement for exhaustive
|
||||||
configuration options. You decide what operating system you want to run
|
configuration options. You decide what operating system you want to run
|
||||||
and Quickemu takes care of the rest 🤖
|
and Quickemu takes care of the rest 🤖
|
||||||
|
|
||||||
- `quickget` **automatically downloads the upstream OS** and creates
|
- `quickget` **automatically downloads the upstream OS** and creates the
|
||||||
the configuration 📀
|
configuration 📀
|
||||||
- `quickemu` enumerates your hardware and launches the virtual machine
|
- `quickemu` enumerates your hardware and launches the virtual machine
|
||||||
with the **optimum configuration best suited to your computer** ⚡️
|
with the **optimum configuration best suited to your computer** ⚡️
|
||||||
|
|
||||||
The original objective of the project was to [enable quick testing of
|
The original objective of the project was to [enable quick testing of
|
||||||
Linux
|
Linux
|
||||||
|
@ -172,54 +172,73 @@ Haiku, KolibriOS, OpenIndiana, ReactOS, and more.
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
- **macOS** Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
- Host support for **Linux and macOS**
|
||||||
- **Windows** 10 and 11 including TPM 2.0
|
- **macOS** Sonoma, Ventura, Monterey, Big Sur, Catalina & Mojave
|
||||||
- **Windows Server** 2022 2019 2016 2012-r2
|
- **Windows** 10 and 11 including TPM 2.0
|
||||||
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
|
- **Windows Server** 2022 2019 2016
|
||||||
flavours](https://ubuntu.com/download/flavours)**
|
- [Ubuntu](https://ubuntu.com/desktop) and all the **[official Ubuntu
|
||||||
- **Nearly 1000 operating system editions are supported!**
|
flavours](https://ubuntu.com/download/flavours)**
|
||||||
- Full SPICE support including host/guest clipboard sharing
|
- **Nearly 1000 operating system editions are supported!**
|
||||||
- VirtIO-webdavd file sharing for Linux and Windows guests
|
- Full SPICE support including host/guest clipboard sharing
|
||||||
- VirtIO-9p file sharing for Linux and macOS guests
|
- VirtIO-webdavd file sharing for Linux and Windows guests
|
||||||
- [QEMU Guest Agent
|
- VirtIO-9p file sharing for Linux and macOS guests
|
||||||
support](https://wiki.qemu.org/Features/GuestAgent); provides access
|
- [QEMU Guest Agent support](https://wiki.qemu.org/Features/GuestAgent);
|
||||||
to a system-level agent via standard QMP commands
|
provides access to a system-level agent via standard QMP commands
|
||||||
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd`
|
- Samba file sharing for Linux, macOS and Windows guests (*if `smbd` is
|
||||||
is installed on the host*)
|
installed on the host*)
|
||||||
- VirGL acceleration
|
- VirGL acceleration
|
||||||
- USB device pass-through
|
- USB device pass-through
|
||||||
- Smartcard pass-through
|
- Smartcard pass-through
|
||||||
- Automatic SSH port forwarding to guests
|
- Automatic SSH port forwarding to guests
|
||||||
- Network port forwarding
|
- Network port forwarding
|
||||||
- Full duplex audio
|
- Full duplex audio
|
||||||
- Braille support
|
- Braille support
|
||||||
- EFI (with or without SecureBoot) and Legacy BIOS boot
|
- EFI (with or without SecureBoot) and Legacy BIOS boot
|
||||||
|
|
||||||
|
## 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 -->
|
||||||
|
|
||||||
|
<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>
|
||||||
|
<br /> <em>Linux Matters Podcast</em>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
When installing from source, you will need to install the following
|
When installing from source, you will need to install the following
|
||||||
requirements manually:
|
requirements manually:
|
||||||
|
|
||||||
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL,
|
- [QEMU](https://www.qemu.org/) (*6.0.0 or newer*) **with GTK, SDL,
|
||||||
SPICE & VirtFS support**
|
SPICE & VirtFS support**
|
||||||
- [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*)
|
- [bash](https://www.gnu.org/software/bash/) (*4.0 or newer*)
|
||||||
- [Coreutils](https://www.gnu.org/software/coreutils/)
|
- [Coreutils](https://www.gnu.org/software/coreutils/)
|
||||||
- [curl](https://curl.se/)
|
- [curl](https://curl.se/)
|
||||||
- [EDK II](https://github.com/tianocore/edk2)
|
- [EDK II](https://github.com/tianocore/edk2)
|
||||||
- [grep](https://www.gnu.org/software/grep/)
|
- [gawk](https://www.gnu.org/software/gawk/)
|
||||||
- [jq](https://stedolan.github.io/jq/)
|
- [grep](https://www.gnu.org/software/grep/)
|
||||||
- [procps](https://gitlab.com/procps-ng/procps)
|
- [glxinfo](https://gitlab.freedesktop.org/mesa/demos)
|
||||||
- [python3](https://www.python.org/)
|
- [jq](https://stedolan.github.io/jq/)
|
||||||
- [chunkcheck](https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7)
|
- [LSB](https://wiki.linuxfoundation.org/lsb/start)
|
||||||
- [mkisofs](http://cdrtools.sourceforge.net/private/cdrecord.html)
|
- [pciutils](https://github.com/pciutils/pciutils)
|
||||||
- [usbutils](https://github.com/gregkh/usbutils)
|
- [procps](https://gitlab.com/procps-ng/procps)
|
||||||
- [util-linux](https://github.com/karelzak/util-linux)
|
- [python3](https://www.python.org/)
|
||||||
- [sed](https://www.gnu.org/software/sed/)
|
- [mkisofs](http://cdrtools.sourceforge.net/private/cdrecord.html)
|
||||||
- [socat](http://www.dest-unreach.org/socat/)
|
- [usbutils](https://github.com/gregkh/usbutils)
|
||||||
- [spicy](https://gitlab.freedesktop.org/spice/spice-gtk)
|
- [util-linux](https://github.com/karelzak/util-linux); including
|
||||||
- [swtpm](https://github.com/stefanberger/swtpm)
|
`uuidgen`
|
||||||
- [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/)
|
- [sed](https://www.gnu.org/software/sed/)
|
||||||
- [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr)
|
- [socat](http://www.dest-unreach.org/socat/)
|
||||||
- [zsync](http://zsync.moria.org.uk/)
|
- [spicy](https://gitlab.freedesktop.org/spice/spice-gtk)
|
||||||
- [unzip](http://www.info-zip.org/UnZip.html)
|
- [swtpm](https://github.com/stefanberger/swtpm)
|
||||||
|
- [xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/)
|
||||||
|
- [xrandr](https://gitlab.freedesktop.org/xorg/app/xrandr)
|
||||||
|
- [zsync](http://zsync.moria.org.uk/)
|
||||||
|
- [unzip](http://www.info-zip.org/UnZip.html)
|
||||||
|
|
||||||
For Ubuntu, Arch and NixOS hosts, the
|
For Ubuntu, Arch and NixOS hosts, the
|
||||||
[ppa](https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu),
|
[ppa](https://launchpad.net/~flexiondotorg/+archive/ubuntu/quickemu),
|
||||||
|
@ -236,23 +255,59 @@ These examples may save a little typing:
|
||||||
This also applies to derivatives:
|
This also applies to derivatives:
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
sudo apt install qemu bash coreutils curl ovmf grep jq procps python3 genisoimage usbutils util-linux sed socat spice-client-gtk libtss2-tcti-swtpm0 xdg-user-dirs zsync unzip
|
sudo apt-get install bash coreutils curl genisoimage grep jq mesa-utils ovmf pciutils procps python3 qemu sed socat spice-client-gtk swtpm-tools unzip usbutils util-linux xdg-user-dirs xrandr zsync
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Install requirements on Fedora hosts
|
#### Install requirements on Fedora hosts
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
sudo dnf install qemu bash coreutils curl edk2-tools grep jq procps python3 genisoimage usbutils util-linux sed socat spice-gtk-tools swtpm xdg-user-dirs xrandr unzip
|
sudo dnf install bash coreutils curl edk2-tools genisoimage grep jq mesa-demos pciutils procps python3 qemu sed socat spice-gtk-tools swtpm unzip usbutils util-linux uuidgen-runtime xdg-user-dirs xrandr zsync
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install requirements on Gentoo
|
||||||
|
|
||||||
|
Please note that you may have to use `sys-firmware/edk2-ovmf` instead of
|
||||||
|
`sys-firmware/edk2-ovmf-bin` - depending on how your system is
|
||||||
|
configured.
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
sudo emerge --ask --noreplace app-emulation/qemu \
|
||||||
|
app-shells/bash \
|
||||||
|
sys-apps/coreutils \
|
||||||
|
net-misc/curl \
|
||||||
|
sys-firmware/edk2-ovmf-bin \
|
||||||
|
sys-apps/gawk \
|
||||||
|
sys-apps/grep \
|
||||||
|
x11-apps/mesa-progs \
|
||||||
|
app-misc/jq \
|
||||||
|
sys-apps/pciutils \
|
||||||
|
sys-process/procps \
|
||||||
|
app-cdr/cdrtools \
|
||||||
|
sys-apps/usbutils \
|
||||||
|
sys-apps/util-linux \
|
||||||
|
sys-apps/sed \
|
||||||
|
net-misc/socat \
|
||||||
|
app-emulation/spice \
|
||||||
|
app-crypt/swtpm \
|
||||||
|
x11-misc/xdg-user-dirs \
|
||||||
|
x11-apps/xrandr \
|
||||||
|
net-misc/zsync \
|
||||||
|
app-arch/unzip
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Install requirements on macOS hosts
|
#### Install requirements on macOS hosts
|
||||||
|
|
||||||
This is a **work in progress** (see [issue
|
Install the Quickemu requirements using brew:
|
||||||
248](https://github.com/quickemu-project/quickemu/issues/248) for other
|
|
||||||
steps and changes that may enable running on MacOS)
|
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
brew install qemu bash coreutils curl grep jq python@3.10 cdrtools gnu-sed spice-gtk zsync
|
brew install bash cdrtools coreutils jq python3 qemu usbutils samba socat swtpm zsync
|
||||||
|
```
|
||||||
|
|
||||||
|
Now clone the project:
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
git clone https://github.com/quickemu-project/quickemu
|
||||||
|
cd quickemu
|
||||||
```
|
```
|
||||||
|
|
||||||
## [Alternative Frontends](https://github.com/quickemu-project/quickemu/wiki/07-Alternative-frontends)
|
## [Alternative Frontends](https://github.com/quickemu-project/quickemu/wiki/07-Alternative-frontends)
|
||||||
|
@ -262,9 +317,9 @@ brew install qemu bash coreutils curl grep jq python@3.10 cdrtools gnu-sed spice
|
||||||
While `quickemu` and `quickget` are designed for the terminal, a
|
While `quickemu` and `quickget` are designed for the terminal, a
|
||||||
graphical user interface is also available:
|
graphical user interface is also available:
|
||||||
|
|
||||||
- **[Quickgui](https://github.com/quickgui/quickgui)** by [Mark
|
- **[Quickgui](https://github.com/quickemu-project/quickgui)** by [Mark
|
||||||
Johnson](https://github.com/marxjohnson) and [Yannick
|
Johnson](https://github.com/marxjohnson) and [Yannick
|
||||||
Mauray](https://github.com/ymauray).
|
Mauray](https://github.com/ymauray).
|
||||||
|
|
||||||
To install Quickgui on Ubuntu:
|
To install Quickgui on Ubuntu:
|
||||||
|
|
||||||
|
@ -278,19 +333,6 @@ Many thanks to [Luke Wesley-Holley](https://github.com/Lukewh) and
|
||||||
[Philipp Kiemle](https://github.com/daPhipz) for creating the
|
[Philipp Kiemle](https://github.com/daPhipz) for creating the
|
||||||
**[Quickemu icons](https://github.com/Lukewh/quickemu-icons)** 🎨
|
**[Quickemu icons](https://github.com/Lukewh/quickemu-icons)** 🎨
|
||||||
|
|
||||||
### qqX
|
|
||||||
|
|
||||||
There is also a multi option desktop integrated text interface, the
|
|
||||||
**quickemu quickget X terminal project**, or **qqX**, with lots of
|
|
||||||
unique tools and utilities to help you make light work of installations,
|
|
||||||
snapshots and disk management
|
|
||||||
|
|
||||||
- **[qqX](https://github.com/TuxVinyards/qqX)** is independently
|
|
||||||
curated by [Alex Genovese](https://github.com/TuxVinyards) (see the
|
|
||||||
github pages)
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## Creating Linux guests 🐧
|
## Creating Linux guests 🐧
|
||||||
|
|
||||||
### Ubuntu
|
### Ubuntu
|
||||||
|
@ -303,14 +345,14 @@ quickget ubuntu 22.04
|
||||||
quickemu --vm ubuntu-22.04.conf
|
quickemu --vm ubuntu-22.04.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Complete the installation as normal.
|
- Complete the installation as normal.
|
||||||
- Post-install:
|
- Post-install:
|
||||||
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
||||||
copy/paste and USB redirection
|
copy/paste and USB redirection
|
||||||
- `sudo apt install spice-vdagent`
|
- `sudo apt install spice-vdagent`
|
||||||
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
||||||
enable file sharing.
|
enable file sharing.
|
||||||
- `sudo apt install spice-webdavd`
|
- `sudo apt install spice-webdavd`
|
||||||
|
|
||||||
### Ubuntu daily-live images
|
### Ubuntu daily-live images
|
||||||
|
|
||||||
|
@ -335,28 +377,29 @@ The project
|
||||||
[wiki](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines)
|
[wiki](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines)
|
||||||
may have further information.
|
may have further information.
|
||||||
|
|
||||||
- `edubuntu` (Edubuntu)
|
- `edubuntu` (Edubuntu)
|
||||||
- `kubuntu` (Kubuntu)
|
- `kubuntu` (Kubuntu)
|
||||||
- `lubuntu` (Lubuntu)
|
- `lubuntu` (Lubuntu)
|
||||||
- `ubuntu-budgie` (Ubuntu Budgie)
|
- `ubuntu-budgie` (Ubuntu Budgie)
|
||||||
- `ubuntucinnamon` (Ubuntu Cinnamon)
|
- `ubuntucinnamon` (Ubuntu Cinnamon)
|
||||||
- `ubuntukylin` (Ubuntu Kylin)
|
- `ubuntukylin` (Ubuntu Kylin)
|
||||||
- `ubuntu-mate` (Ubuntu MATE)
|
- `ubuntu-mate` (Ubuntu MATE)
|
||||||
- `ubuntu-server` (Ubuntu Server)
|
- `ubuntu-server` (Ubuntu Server)
|
||||||
- `ubuntustudio` (Ubuntu Studio)
|
- `ubuntustudio` (Ubuntu Studio)
|
||||||
- `ubuntu` (Ubuntu)
|
- `ubuntu` (Ubuntu)
|
||||||
- `ubuntu-unity` (Ubuntu Unity)
|
- `ubuntu-unity` (Ubuntu Unity)
|
||||||
- `xubuntu` (Xubuntu)
|
- `xubuntu` (Xubuntu)
|
||||||
|
|
||||||
You can also use `quickget` with advanced options :
|
You can also use `quickget` with advanced options :
|
||||||
|
|
||||||
``` text
|
``` text
|
||||||
--download <os> <release> [edition] : Download image; no VM configuration
|
--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
|
--open-homepage <os> : Open homepage for the OS
|
||||||
--show [os] : Show OS information
|
--show [os] : Show OS information
|
||||||
--version : Show version
|
--version : Show version
|
||||||
--help : Show this help message
|
--help : Show this help message
|
||||||
|
--disable-unattended : Force quickget not to set up an unattended installation
|
||||||
--url [os] [release] [edition] : Show image URL(s)
|
--url [os] [release] [edition] : Show image URL(s)
|
||||||
--check [os] [release] [edition] : Check image URL(s)
|
--check [os] [release] [edition] : Check image URL(s)
|
||||||
--list : List all supported systems
|
--list : List all supported systems
|
||||||
|
@ -387,96 +430,98 @@ Further information is available from the project
|
||||||
|
|
||||||
`quickget` also supports:
|
`quickget` also supports:
|
||||||
|
|
||||||
- `alma` (AlmaLinux)
|
- `alma` (AlmaLinux)
|
||||||
- `alpine` (Alpine Linux)
|
- `alpine` (Alpine Linux)
|
||||||
- `android` (Android x86)
|
- `android` (Android x86)
|
||||||
- `antix` (Antix)
|
- `antix` (Antix)
|
||||||
- `archcraft` (Archcraft)
|
- `archcraft` (Archcraft)
|
||||||
- `archlinux` (Arch Linux)
|
- `archlinux` (Arch Linux)
|
||||||
- `arcolinux` (Arco Linux)
|
- `arcolinux` (Arco Linux)
|
||||||
- `artixlinux` (Artix Linux)
|
- `artixlinux` (Artix Linux)
|
||||||
- `athenaos` (Athena OS)
|
- `athenaos` (Athena OS)
|
||||||
- `batocera` (Batocera)
|
- `batocera` (Batocera)
|
||||||
- `bazzite` (Bazzite)
|
- `bazzite` (Bazzite)
|
||||||
- `biglinux` (BigLinux)
|
- `biglinux` (BigLinux)
|
||||||
- `blendos` (BlendOS)
|
- `blendos` (BlendOS)
|
||||||
- `bodhi` (Bodhi)
|
- `bodhi` (Bodhi)
|
||||||
- `bunsenlabs` (BunsenLabs)
|
- `bunsenlabs` (BunsenLabs)
|
||||||
- `cachyos` (CachyOS)
|
- `cachyos` (CachyOS)
|
||||||
- `centos-stream` (CentOS Stream)
|
- `centos-stream` (CentOS Stream)
|
||||||
- `chimeralinux` (Chimera Linux)
|
- `chimeralinux` (Chimera Linux)
|
||||||
- `crunchbang++` (Crunchbangplusplus)
|
- `crunchbang++` (Crunchbangplusplus)
|
||||||
- `debian` (Debian)
|
- `debian` (Debian)
|
||||||
- `deepin` (Deepin)
|
- `deepin` (Deepin)
|
||||||
- `devuan` (Devuan)
|
- `devuan` (Devuan)
|
||||||
- `dragonflybsd` (DragonFlyBSD)
|
- `dragonflybsd` (DragonFlyBSD)
|
||||||
- `easyos` (EasyOS)
|
- `easyos` (EasyOS)
|
||||||
- `elementary` (elementary OS)
|
- `elementary` (elementary OS)
|
||||||
- `endeavouros` (EndeavourOS)
|
- `endeavouros` (EndeavourOS)
|
||||||
- `endless` (Endless OS)
|
- `endless` (Endless OS)
|
||||||
- `fedora` (Fedora)
|
- `fedora` (Fedora)
|
||||||
- `freebsd` (FreeBSD)
|
- `freebsd` (FreeBSD)
|
||||||
- `freedos` (FreeDOS)
|
- `freedos` (FreeDOS)
|
||||||
- `garuda` (Garuda Linux)
|
- `garuda` (Garuda Linux)
|
||||||
- `gentoo` (Gentoo)
|
- `gentoo` (Gentoo)
|
||||||
- `ghostbsd` (GhostBSD)
|
- `ghostbsd` (GhostBSD)
|
||||||
- `gnomeos` (GNOME OS)
|
- `gnomeos` (GNOME OS)
|
||||||
- `guix` (Guix)
|
- `guix` (Guix)
|
||||||
- `haiku` (Haiku)
|
- `haiku` (Haiku)
|
||||||
- `holoiso` (HoloISO)
|
- `holoiso` (HoloISO)
|
||||||
- `kali` (Kali)
|
- `kali` (Kali)
|
||||||
- `kdeneon` (KDE Neon)
|
- `kdeneon` (KDE Neon)
|
||||||
- `kolibrios` (KolibriOS)
|
- `kolibrios` (KolibriOS)
|
||||||
- `linuxlite` (Linux Lite)
|
- `linuxlite` (Linux Lite)
|
||||||
- `linuxmint` (Linux Mint)
|
- `linuxmint` (Linux Mint)
|
||||||
- `lmde` (Linux Mint Debian Edition)
|
- `lmde` (Linux Mint Debian Edition)
|
||||||
- `mageia` (Mageia)
|
- `maboxlinux` (Mabox Linux)
|
||||||
- `manjaro` (Manjaro)
|
- `mageia` (Mageia)
|
||||||
- `mxlinux` (MX Linux)
|
- `manjaro` (Manjaro)
|
||||||
- `netboot` (netboot.xyz)
|
- `mxlinux` (MX Linux)
|
||||||
- `netbsd` (NetBSD)
|
- `netboot` (netboot.xyz)
|
||||||
- `nitrux` (Nitrux)
|
- `netbsd` (NetBSD)
|
||||||
- `nixos` (NixOS)
|
- `nitrux` (Nitrux)
|
||||||
- `nwg-shell` (nwg-shell)
|
- `nixos` (NixOS)
|
||||||
- `openbsd` (OpenBSD)
|
- `nwg-shell` (nwg-shell)
|
||||||
- `openindiana` (OpenIndiana)
|
- `openbsd` (OpenBSD)
|
||||||
- `opensuse` (openSUSE)
|
- `openindiana` (OpenIndiana)
|
||||||
- `oraclelinux` (Oracle Linux)
|
- `opensuse` (openSUSE)
|
||||||
- `parrotsec` (Parrot Security)
|
- `oraclelinux` (Oracle Linux)
|
||||||
- `peppermint` (PeppermintOS)
|
- `parrotsec` (Parrot Security)
|
||||||
- `popos` (Pop!\_OS)
|
- `peppermint` (PeppermintOS)
|
||||||
- `porteus` (Porteus)
|
- `popos` (Pop!\_OS)
|
||||||
- `primtux` (PrimTux)
|
- `porteus` (Porteus)
|
||||||
- `pureos` (PureOS)
|
- `primtux` (PrimTux)
|
||||||
- `reactos` (ReactOS)
|
- `proxmox-ve` (Proxmox VE)
|
||||||
- `rebornos` (RebornOS)
|
- `pureos` (PureOS)
|
||||||
- `rockylinux` (Rocky Linux)
|
- `reactos` (ReactOS)
|
||||||
- `siduction` (Siduction)
|
- `rebornos` (RebornOS)
|
||||||
- `slackware` (Slackware)
|
- `rockylinux` (Rocky Linux)
|
||||||
- `slax` (Slax)
|
- `siduction` (Siduction)
|
||||||
- `slint` (Slint)
|
- `slackware` (Slackware)
|
||||||
- `slitaz` (SliTaz)
|
- `slax` (Slax)
|
||||||
- `solus` (Solus)
|
- `slint` (Slint)
|
||||||
- `sparkylinux` (SparkyLinux)
|
- `slitaz` (SliTaz)
|
||||||
- `spirallinux` (SpiralLinux)
|
- `solus` (Solus)
|
||||||
- `tails` (Tails)
|
- `sparkylinux` (SparkyLinux)
|
||||||
- `tinycore` (Tiny Core Linux)
|
- `spirallinux` (SpiralLinux)
|
||||||
- `trisquel` (Trisquel-)
|
- `tails` (Tails)
|
||||||
- `truenas-core` (TrueNAS Core)
|
- `tinycore` (Tiny Core Linux)
|
||||||
- `truenas-scale` (TrueNAS Scale)
|
- `trisquel` (Trisquel-)
|
||||||
- `tuxedo-os` (Tuxedo OS)
|
- `truenas-core` (TrueNAS Core)
|
||||||
- `vanillaos` (Vanilla OS)
|
- `truenas-scale` (TrueNAS Scale)
|
||||||
- `void` (Void Linux)
|
- `tuxedo-os` (Tuxedo OS)
|
||||||
- `vxlinux` (VX Linux)
|
- `vanillaos` (Vanilla OS)
|
||||||
- `zorin` (Zorin OS)
|
- `void` (Void Linux)
|
||||||
|
- `vxlinux` (VX Linux)
|
||||||
|
- `zorin` (Zorin OS)
|
||||||
|
|
||||||
### [Custom Linux guests](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines#manually-create-linux-guests)
|
### [Custom Linux guests](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines#manually-create-linux-guests)
|
||||||
|
|
||||||
Or you can download a Linux image and manually create a VM
|
Or you can download a Linux image and manually create a VM
|
||||||
configuration.
|
configuration.
|
||||||
|
|
||||||
- Download a .iso image of a Linux distribution
|
- Download a .iso image of a Linux distribution
|
||||||
- Create a VM configuration file; for example `debian-bullseye.conf`
|
- Create a VM configuration file; for example `debian-bullseye.conf`
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
guest_os="linux"
|
guest_os="linux"
|
||||||
|
@ -484,66 +529,76 @@ disk_img="debian-bullseye/disk.qcow2"
|
||||||
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
|
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
|
||||||
```
|
```
|
||||||
|
|
||||||
- Use `quickemu` to start the virtual machine:
|
- Use `quickemu` to start the virtual machine:
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
quickemu --vm debian-bullseye.conf
|
quickemu --vm debian-bullseye.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Complete the installation as normal.
|
- Complete the installation as normal.
|
||||||
- Post-install:
|
- Post-install:
|
||||||
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
||||||
copy/paste and USB redirection.
|
copy/paste and USB redirection.
|
||||||
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
||||||
enable file sharing.
|
enable file sharing.
|
||||||
|
|
||||||
|
## Supporting old Linux distros
|
||||||
|
|
||||||
|
If you want to run an old Linux , from 2016 or earlier, change the
|
||||||
|
`guest_os` to `linux_old`. This will enable the `vmware-svga` graphics
|
||||||
|
driver which is better supported on older distros.
|
||||||
|
|
||||||
## [Creating macOS Guests](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests) 🍏
|
## [Creating macOS Guests](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests) 🍏
|
||||||
|
|
||||||
|
**Installing macOS in a VM can be a bit finicky, if you encounter
|
||||||
|
problems, [check the
|
||||||
|
Discussions](https://github.com/quickemu-project/quickemu/discussions)
|
||||||
|
for solutions or ask for help there** 🛟
|
||||||
|
|
||||||
`quickget` automatically downloads a macOS recovery image and creates a
|
`quickget` automatically downloads a macOS recovery image and creates a
|
||||||
virtual machine configuration.
|
virtual machine configuration.
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
quickget macos catalina
|
quickget macos big-sur
|
||||||
quickemu --vm macos-catalina.conf
|
quickemu --vm macos-big-sur.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
|
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
|
||||||
`sonoma` are supported.
|
`sonoma` are supported.
|
||||||
|
|
||||||
- Use cursor keys and enter key to select the **macOS Base System**
|
- Use cursor keys and enter key to select the **macOS Base System**
|
||||||
- From **macOS Utilities**
|
- From **macOS Utilities**
|
||||||
- Click **Disk Utility** and **Continue**
|
- Click **Disk Utility** and **Continue**
|
||||||
- Select `QEMU HARDDISK Media` (\~103.08GB) from the list (on
|
- Select `QEMU HARDDISK Media` (~103.08GB) from the list (on Big Sur
|
||||||
Big Sur and above use `Apple Inc. VirtIO Block Device`) and
|
and above use `Apple Inc. VirtIO Block Device`) and click
|
||||||
click **Erase**.
|
**Erase**.
|
||||||
- Enter a `Name:` for the disk
|
- Enter a `Name:` for the disk
|
||||||
- If you are installing macOS Mojave or later (Catalina, Big
|
- If you are installing macOS Mojave or later (Catalina, Big Sur,
|
||||||
Sur, Monterey, Ventura and Sonoma), choose any of the APFS
|
Monterey, Ventura and Sonoma), choose any of the APFS options as
|
||||||
options as the filesystem. MacOS Extended may not work.
|
the filesystem. MacOS Extended may not work.
|
||||||
- Click **Erase**.
|
- Click **Erase**.
|
||||||
- Click **Done**.
|
- Click **Done**.
|
||||||
- Close Disk Utility
|
- Close Disk Utility
|
||||||
- From **macOS Utilities**
|
- From **macOS Utilities**
|
||||||
- Click **Reinstall macOS** and **Continue**
|
- Click **Reinstall macOS** and **Continue**
|
||||||
- Complete the installation as you normally would.
|
- Complete the installation as you normally would.
|
||||||
- On the first reboot use cursor keys and enter key to select
|
- On the first reboot use cursor keys and enter key to select **macOS
|
||||||
**macOS Installer**
|
Installer**
|
||||||
- On the subsequent reboots use cursor keys and enter key to
|
- On the subsequent reboots use cursor keys and enter key to select
|
||||||
select the disk you named
|
the disk you named
|
||||||
- Once you have finished installing macOS you will be presented with
|
- Once you have finished installing macOS you will be presented with an
|
||||||
an the out-of-the-box first-start wizard to configure various
|
the out-of-the-box first-start wizard to configure various options and
|
||||||
options and set up your username and password
|
set up your username and password
|
||||||
- OPTIONAL: After you have concluded the out-of-the-box wizard, you
|
- OPTIONAL: After you have concluded the out-of-the-box wizard, you may
|
||||||
may want to enable the TRIM feature that the computer industry
|
want to enable the TRIM feature that the computer industry created for
|
||||||
created for SSD disks. This feature in our macOS installation will
|
SSD disks. This feature in our macOS installation will allow QuickEmu
|
||||||
allow QuickEmu to compact (shrink) your macOS disk image whenever
|
to compact (shrink) your macOS disk image whenever you delete files
|
||||||
you delete files inside the Virtual Machine. Without this step your
|
inside the Virtual Machine. Without this step your macOS disk image
|
||||||
macOS disk image will only ever get larger and will not shrink even
|
will only ever get larger and will not shrink even when you delete
|
||||||
when you delete lots of data inside macOS.
|
lots of data inside macOS.
|
||||||
- To enable TRIM, open the Terminal application and type the
|
- To enable TRIM, open the Terminal application and type the following
|
||||||
following command followed by pressing
|
command followed by pressing <kbd>enter</kbd> to tell macos to use
|
||||||
<kbd>enter</kbd> to tell macos to use the TRIM
|
the TRIM command on the hard disk when files are deleted:
|
||||||
command on the hard disk when files are deleted:
|
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
sudo trimforce enable
|
sudo trimforce enable
|
||||||
|
@ -551,14 +606,12 @@ sudo trimforce enable
|
||||||
|
|
||||||
You will be prompted to enter your account's password to gain the
|
You will be prompted to enter your account's password to gain the
|
||||||
privilege needed. Once you've entered your password and pressed
|
privilege needed. Once you've entered your password and pressed
|
||||||
<kbd>enter</kbd> the command will request confirmation
|
<kbd>enter</kbd> the command will request confirmation in the form of
|
||||||
in the form of two questions that require you to type
|
two questions that require you to type <kbd>y</kbd> (for a "yes"
|
||||||
<kbd>y</kbd> (for a "yes" response) followed by
|
response) followed by <kbd>enter</kbd> to confirm.
|
||||||
<kbd>enter</kbd> to confirm.
|
|
||||||
|
|
||||||
If you press <kbd>enter</kbd> without first typing
|
If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the
|
||||||
<kbd>y</kbd> the system will consider that a negative
|
system will consider that a negative response as though you said "no":
|
||||||
response as though you said "no":
|
|
||||||
|
|
||||||
``` plain
|
``` plain
|
||||||
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
||||||
|
@ -579,20 +632,78 @@ The default macOS configuration looks like this:
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
guest_os="macos"
|
guest_os="macos"
|
||||||
img="macos-catalina/RecoveryImage.img"
|
img="macos- big-sur/RecoveryImage.img"
|
||||||
disk_img="macos-catalina/disk.qcow2"
|
disk_img="macos- big-sur/disk.qcow2"
|
||||||
macos_release="catalina"
|
macos_release=" big-sur"
|
||||||
```
|
```
|
||||||
|
|
||||||
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
||||||
- `macos_release="catalina"` instructs Quickemu to optimise for a
|
- `macos_release=" big-sur"` instructs Quickemu to optimise for a
|
||||||
particular macOS release.
|
particular macOS release.
|
||||||
- For example VirtIO Network and Memory Ballooning are available
|
- For example VirtIO Network and Memory Ballooning are available in
|
||||||
in Big Sur and newer, but not previous releases.
|
Big Sur and newer, but not previous releases.
|
||||||
- And VirtIO Block Media (disks) are supported/stable in Catalina
|
- And VirtIO Block Media (disks) are supported/stable in Catalina and
|
||||||
and newer.
|
newer.
|
||||||
|
|
||||||
There is further advice and information about macOS guests in the
|
# macOS compatibility
|
||||||
|
|
||||||
|
There are some considerations when running macOS via Quickemu.
|
||||||
|
|
||||||
|
- Supported macOS releases:
|
||||||
|
- Mojave
|
||||||
|
- Catalina
|
||||||
|
- Big Sur
|
||||||
|
- Monterey
|
||||||
|
- Ventura
|
||||||
|
- Sonoma
|
||||||
|
- `quickemu` will automatically download the required
|
||||||
|
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and
|
||||||
|
OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
|
||||||
|
- Optimised by default, but no GPU acceleration is available.
|
||||||
|
- Host CPU vendor is detected and guest CPU is optimised accordingly.
|
||||||
|
- [VirtIO Block
|
||||||
|
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
|
||||||
|
used for the system disk where supported.
|
||||||
|
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for
|
||||||
|
the mouse.
|
||||||
|
- VirtIO Network (`virtio-net`) is supported and enabled on macOS Big
|
||||||
|
Sur and newer, but earlier releases use `vmxnet3`.
|
||||||
|
- VirtIO Memory Ballooning is supported and enabled on macOS Big Sur
|
||||||
|
and newer but disabled for other support macOS releases.
|
||||||
|
- USB host and SPICE pass-through is:
|
||||||
|
- UHCI (USB 2.0) on macOS Catalina and earlier.
|
||||||
|
- XHCI (USB 3.0) on macOS Big Sur and newer.
|
||||||
|
- Display resolution can be changed via `quickemu` using `--width` and
|
||||||
|
`--height` command line arguments.
|
||||||
|
- **Full Duplex audio requires [VoodooHDA
|
||||||
|
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
|
||||||
|
audio-device to the macOS guest VM**.
|
||||||
|
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
|
||||||
|
[System Integrity Protection
|
||||||
|
(SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
|
||||||
|
need to be disabled to install VoodooHDA OC
|
||||||
|
- File sharing between guest and host is available via
|
||||||
|
[virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE
|
||||||
|
webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
|
||||||
|
- Copy/paste via SPICE agent is **not available on macOS**.
|
||||||
|
|
||||||
|
# macOS App Store
|
||||||
|
|
||||||
|
If you see *"Your device or computer could not be verified"* when you
|
||||||
|
try to login to the App Store, make sure that your wired ethernet device
|
||||||
|
is `en0`. Use `ifconfig` in a terminal to verify this.
|
||||||
|
|
||||||
|
If the wired ethernet device is not `en0`, then then go to *System
|
||||||
|
Preferences* -\> *Network*, delete all the network devices and apply the
|
||||||
|
changes. Next, open a terminal and run the following:
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
|
||||||
|
```
|
||||||
|
|
||||||
|
Now reboot, and the App Store should work.
|
||||||
|
|
||||||
|
There may be further advice and information about macOS guests in the
|
||||||
project
|
project
|
||||||
[wiki](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests).
|
[wiki](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests).
|
||||||
|
|
||||||
|
@ -623,12 +734,12 @@ quickget windows 11
|
||||||
quickemu --vm windows-11.conf
|
quickemu --vm windows-11.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Complete the installation as you normally would.
|
- Complete the installation as you normally would.
|
||||||
- All relevant drivers and services should be installed automatically.
|
- All relevant drivers and services should be installed automatically.
|
||||||
- A local administrator user account is automatically created, with
|
- A local administrator user account is automatically created, with
|
||||||
these credentials:
|
these credentials:
|
||||||
- Username: `Quickemu`
|
- Username: `Quickemu`
|
||||||
- Password: `quickemu`
|
- Password: `quickemu`
|
||||||
|
|
||||||
Further information is available from the project
|
Further information is available from the project
|
||||||
[wiki](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)
|
[wiki](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)
|
||||||
|
@ -645,12 +756,12 @@ Arguments
|
||||||
--access : Enable remote spice access support. 'local' (default), 'remote', 'clientipaddress'
|
--access : Enable remote spice access support. 'local' (default), 'remote', 'clientipaddress'
|
||||||
--braille : Enable braille support. Requires SDL.
|
--braille : Enable braille support. Requires SDL.
|
||||||
--delete-disk : Delete the disk image and EFI variables
|
--delete-disk : Delete the disk image and EFI variables
|
||||||
--delete-vm : Delete the entire VM and it's configuration
|
--delete-vm : Delete the entire VM and its configuration
|
||||||
--display : Select display backend. 'sdl' (default), 'gtk', 'none', 'spice' or 'spice-app'
|
--display : Select display backend. 'sdl' (default), 'cocoa', 'gtk', 'none', 'spice' or 'spice-app'
|
||||||
--fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
|
--fullscreen : Starts VM in full screen mode (Ctl+Alt+f to exit)
|
||||||
--ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers
|
--ignore-msrs-always : Configure KVM to always ignore unhandled machine-specific registers
|
||||||
--screen <screen> : Use specified screen to determine the window size.
|
--kill : Kill the VM process if it is running
|
||||||
--screenpct <percent> : Percent of fullscreen for VM if --fullscreen is not specified.
|
--offline : Override all network settings and start the VM offline
|
||||||
--shortcut : Create a desktop shortcut
|
--shortcut : Create a desktop shortcut
|
||||||
--snapshot apply <tag> : Apply/restore a snapshot.
|
--snapshot apply <tag> : Apply/restore a snapshot.
|
||||||
--snapshot create <tag> : Create a snapshot.
|
--snapshot create <tag> : Create a snapshot.
|
||||||
|
@ -658,10 +769,10 @@ Arguments
|
||||||
--snapshot info : Show disk/snapshot info.
|
--snapshot info : Show disk/snapshot info.
|
||||||
--status-quo : Do not commit any changes to disk/snapshot.
|
--status-quo : Do not commit any changes to disk/snapshot.
|
||||||
--viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'
|
--viewer <viewer> : Choose an alternative viewer. @Options: 'spicy' (default), 'remote-viewer', 'none'
|
||||||
--width <width> : Set VM screen width. Does nothing without --height
|
--width <width> : Set VM screen width; requires '--height'
|
||||||
--height <height> : Set VM screen height. Does nothing without --width
|
--height <height> : Set VM screen height; requires '--width'
|
||||||
--ssh-port <port> : Set ssh-port manually
|
--ssh-port <port> : Set SSH port manually
|
||||||
--spice-port <port> : Set spice-port manually
|
--spice-port <port> : Set SPICE port manually
|
||||||
--public-dir <path> : Expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none'
|
--public-dir <path> : Expose share directory. @Options: '' (default: xdg-user-dir PUBLICSHARE), '<directory>', 'none'
|
||||||
--monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'
|
--monitor <type> : Set monitor connection type. @Options: 'socket' (default), 'telnet', 'none'
|
||||||
--monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost')
|
--monitor-telnet-host <ip/host> : Set telnet host for monitor. (default: 'localhost')
|
||||||
|
@ -671,10 +782,11 @@ Arguments
|
||||||
--serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost')
|
--serial-telnet-host <ip/host> : Set telnet host for serial. (default: 'localhost')
|
||||||
--serial-telnet-port <port> : Set telnet port for serial. (default: '6660')
|
--serial-telnet-port <port> : Set telnet port for serial. (default: '6660')
|
||||||
--keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'
|
--keyboard <type> : Set keyboard. @Options: 'usb' (default), 'ps2', 'virtio'
|
||||||
--keyboard_layout <layout> : Set keyboard layout.
|
--keyboard_layout <layout> : Set keyboard layout: 'en-us' (default)
|
||||||
--mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'
|
--mouse <type> : Set mouse. @Options: 'tablet' (default), 'ps2', 'usb', 'virtio'
|
||||||
--usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none'
|
--usb-controller <type> : Set usb-controller. @Options: 'ehci' (default), 'xhci', 'none'
|
||||||
--sound-card <type> : Set sound card. @Options: 'intel-hda' (default), 'ac97', 'es1370', 'sb16', 'none'
|
--sound-card <type> : Set sound card. @Options: 'intel-hda' (default), 'ac97', 'es1370', 'sb16', 'usb-audio', 'none'
|
||||||
|
--sound-duplex <type> : Set sound card duplex. @Options: 'hda-micro' (default: speaker/mic), 'hda-duplex' (line-in/line-out), 'hda-output' (output-only)
|
||||||
--extra_args <arguments> : Pass additional arguments to qemu
|
--extra_args <arguments> : Pass additional arguments to qemu
|
||||||
--version : Print version
|
--version : Print version
|
||||||
```
|
```
|
||||||
|
@ -689,93 +801,42 @@ shortcut.
|
||||||
quickemu --vm ubuntu-22.04-desktop.conf --shortcut
|
quickemu --vm ubuntu-22.04-desktop.conf --shortcut
|
||||||
```
|
```
|
||||||
|
|
||||||
## Screen and window size (Linux guests only)
|
|
||||||
|
|
||||||
`qemu` will always default to the primary monitor to display the VM's
|
|
||||||
window.
|
|
||||||
|
|
||||||
Without the `--screen` option, `quickemu` will look for the size of the
|
|
||||||
smallest monitor, and use a size that fits on said monitor.
|
|
||||||
|
|
||||||
The `--screen` option forces `quickemu` to use the size of the given
|
|
||||||
monitor to compute the size of the window. **It won't use that monitor
|
|
||||||
to display the VM's window if it's not the primary monitor**. This is
|
|
||||||
useful if the primary monitor if not the smallest one, and if the VM's
|
|
||||||
window doesn't need to be moved around.
|
|
||||||
|
|
||||||
The `--screen` option is also useful with the `--fullscreen` option,
|
|
||||||
again because `qemu` will always use the primary monitor. In order for
|
|
||||||
the fullscreen mode to work properly, the resolution of the VM's window
|
|
||||||
must match the resolution of the screen.
|
|
||||||
|
|
||||||
To know which screen to use, type:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
xrandr --listmonitors | grep -v Monitors
|
|
||||||
```
|
|
||||||
|
|
||||||
The command will output something like this:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
0: +*HDMI-0 2560/597x1440/336+1920+0 HDMI-0
|
|
||||||
1: +DVI-D-0 1920/527x1080/296+0+0 DVI-D-0
|
|
||||||
```
|
|
||||||
|
|
||||||
The first number is what needs to be passed to the `--screen` option.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
``` shell
|
|
||||||
quickemu --vm vm.conf --screen 0
|
|
||||||
```
|
|
||||||
|
|
||||||
The above uses the 2560x1440 screen to compute the size of the window,
|
|
||||||
which Quickemu sizes to 2048x1152. Without the `--screen` option,
|
|
||||||
Quickemu would have used the 1920x1080 monitor which results in a window
|
|
||||||
size of 1664x936.
|
|
||||||
|
|
||||||
The '--screenpct' is an optional integer value between 25 \<= pct \< 100
|
|
||||||
which will override system default screen sizes. The VM size will be
|
|
||||||
'pct' of the chosen screen. **If --fullscreen is chosen screen will be
|
|
||||||
fullsize instead of being scaled down by --screenpct value.**
|
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
Useful reference that assisted the development of Quickemu.
|
Useful reference that assisted the development of Quickemu.
|
||||||
|
|
||||||
- General
|
- General
|
||||||
- [QEMU's documentation!](https://qemu.readthedocs.io/en/latest/)
|
- [QEMU's documentation!](https://qemu.readthedocs.io/en/latest/)
|
||||||
- <https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines>
|
- <https://pve.proxmox.com/wiki/Qemu/KVM_Virtual_Machines>
|
||||||
- <https://www.kraxel.org/blog/2020/01/qemu-sound-audiodev/>
|
- <https://www.kraxel.org/blog/2020/01/qemu-sound-audiodev/>
|
||||||
- macOS
|
- macOS
|
||||||
- <https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/>
|
- <https://www.nicksherlock.com/2020/06/installing-macos-big-sur-on-proxmox/>
|
||||||
- <https://passthroughpo.st/mac-os-adds-early-support-for-virtio-qemu/>
|
- <https://passthroughpo.st/mac-os-adds-early-support-for-virtio-qemu/>
|
||||||
- <https://github.com/kholia/OSX-KVM>
|
- <https://github.com/kholia/OSX-KVM>
|
||||||
- <https://github.com/thenickdude/KVM-Opencore>
|
- <https://github.com/thenickdude/KVM-Opencore>
|
||||||
- <https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7>
|
- <https://gist.github.com/MCJack123/943eaca762730ca4b7ae460b731b68e7>
|
||||||
- <https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macrecovery>
|
- <https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/macrecovery>
|
||||||
- <https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/>
|
- <https://www.kraxel.org/blog/2017/09/running-macos-as-guest-in-kvm/>
|
||||||
- <https://www.nicksherlock.com/2017/10/passthrough-of-advanced-cpu-features-for-macos-high-sierra-guests/>
|
- <https://www.nicksherlock.com/2017/10/passthrough-of-advanced-cpu-features-for-macos-high-sierra-guests/>
|
||||||
- <http://philjordan.eu/osx-virt/>
|
- <http://philjordan.eu/osx-virt/>
|
||||||
- <https://github.com/Dids/clover-builder>
|
- <https://github.com/Dids/clover-builder>
|
||||||
- [OpenCore
|
- [OpenCore Configurator](https://mackie100projects.altervista.org)
|
||||||
Configurator](https://mackie100projects.altervista.org)
|
- Windows
|
||||||
- Windows
|
- <https://www.heiko-sieger.info/running-windows-10-on-linux-using-kvm-with-vga-passthrough/>
|
||||||
- <https://www.heiko-sieger.info/running-windows-10-on-linux-using-kvm-with-vga-passthrough/>
|
- <https://leduccc.medium.com/improving-the-performance-of-a-windows-10-guest-on-qemu-a5b3f54d9cf5>
|
||||||
- <https://leduccc.medium.com/improving-the-performance-of-a-windows-10-guest-on-qemu-a5b3f54d9cf5>
|
- <https://frontpagelinux.com/tutorials/how-to-use-linux-kvm-to-optimize-your-windows-10-virtual-machine/>
|
||||||
- <https://frontpagelinux.com/tutorials/how-to-use-linux-kvm-to-optimize-your-windows-10-virtual-machine/>
|
- <https://turlucode.com/qemu-command-line-args/>
|
||||||
- <https://turlucode.com/qemu-command-line-args/>
|
- <https://github.com/pbatard/Fido>
|
||||||
- <https://github.com/pbatard/Fido>
|
- <https://www.catapultsystems.com/blogs/create-zero-touch-windows-10-iso/>
|
||||||
- <https://www.catapultsystems.com/blogs/create-zero-touch-windows-10-iso/>
|
- TPM
|
||||||
- TPM
|
- <https://qemu-project.gitlab.io/qemu/specs/tpm.html>
|
||||||
- <https://qemu-project.gitlab.io/qemu/specs/tpm.html>
|
- <https://www.tecklyfe.com/how-to-create-a-windows-11-virtual-machine-in-qemu/>
|
||||||
- <https://www.tecklyfe.com/how-to-create-a-windows-11-virtual-machine-in-qemu/>
|
- 9p & virtiofs
|
||||||
- 9p & virtiofs
|
- <https://wiki.qemu.org/Documentation/9p>
|
||||||
- <https://wiki.qemu.org/Documentation/9p>
|
- <https://wiki.qemu.org/Documentation/9psetup>
|
||||||
- <https://wiki.qemu.org/Documentation/9psetup>
|
- <https://www.kraxel.org/blog/2019/06/macos-qemu-guest/>
|
||||||
- <https://www.kraxel.org/blog/2019/06/macos-qemu-guest/>
|
- <https://superuser.com/questions/628169/how-to-share-a-directory-with-the-host-without-networking-in-qemu>
|
||||||
- <https://superuser.com/questions/628169/how-to-share-a-directory-with-the-host-without-networking-in-qemu>
|
- <https://virtio-fs.gitlab.io/>
|
||||||
- <https://virtio-fs.gitlab.io/>
|
|
||||||
|
|
||||||
# AUTHORS
|
# AUTHORS
|
||||||
|
|
||||||
|
@ -790,4 +851,4 @@ Submit bug reports online at:
|
||||||
|
|
||||||
Full sources at: <https://github.com/quickemu-project/quickemu>
|
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.1.13
|
.\" Automatically generated by Pandoc 3.6.1
|
||||||
.\"
|
.\"
|
||||||
.TH "QUICKEMU_CONF" "1" "May 9, 2024" "quickemu_conf" "Quickemu Configuration Manual"
|
.TH "QUICKEMU_CONF" "5" "December 30, 2024" "quickemu_conf" "Quickemu Configuration Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
quickemu_conf \- Options and parameters in the quickemu <vm>.conf
|
quickemu_conf \- Options and parameters in the quickemu <vm>.conf
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
|
@ -143,11 +143,11 @@ following line to the VM configuration:
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]fixed_iso=\[dq]/path/to/image.iso\[dq]\f[R]
|
\f[CR]fixed_iso=\[dq]/path/to/image.iso\[dq]\f[R]
|
||||||
.SS Floppy disks
|
.SS Floppy disks
|
||||||
If you\[cq]re like \c
|
If you\[aq]re like \c
|
||||||
.UR https://popey.com
|
.UR https://popey.com
|
||||||
Alan Pope
|
Alan Pope
|
||||||
.UE \c
|
.UE \c
|
||||||
\ you\[cq]ll probably want to mount a floppy disk image in the guest.
|
\ you\[aq]ll probably want to mount a floppy disk image in the guest.
|
||||||
To do so add the following line to the VM configuration:
|
To do so add the following line to the VM configuration:
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]floppy=\[dq]/path/to/floppy.img\[dq]\f[R]
|
\f[CR]floppy=\[dq]/path/to/floppy.img\[dq]\f[R]
|
||||||
|
@ -173,8 +173,8 @@ For example:
|
||||||
\- smbd: On guest: smb://10.0.2.4/qemu
|
\- smbd: On guest: smb://10.0.2.4/qemu
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
If using a Windows guest, right\-click on \[lq]This PC\[rq], click
|
If using a Windows guest, right\-click on \[dq]This PC\[dq], click
|
||||||
\[lq]Add a network location\[rq], and paste this address, removing
|
\[dq]Add a network location\[dq], and paste this address, removing
|
||||||
\f[CR]smb:\f[R] and replacing forward slashes with backslashes (in this
|
\f[CR]smb:\f[R] and replacing forward slashes with backslashes (in this
|
||||||
example \f[CR]\[rs]\[rs]10.0.2.4\[rs]qemu\f[R]).
|
example \f[CR]\[rs]\[rs]10.0.2.4\[rs]qemu\f[R]).
|
||||||
.SS SPICE WebDAV 🐧 🪟
|
.SS SPICE WebDAV 🐧 🪟
|
||||||
|
@ -228,14 +228,51 @@ So you can generate your own MAC addresses with:
|
||||||
.SS USB redirection
|
.SS USB redirection
|
||||||
Quickemu supports USB redirection via SPICE pass\-through and host
|
Quickemu supports USB redirection via SPICE pass\-through and host
|
||||||
pass\-through.
|
pass\-through.
|
||||||
|
Quickemu supports USB redirection via SPICE pass\-through and host
|
||||||
|
pass\-through.
|
||||||
|
.PP
|
||||||
|
\f[B]NOTE!\f[R] When a USB device is redirected from the host, it will
|
||||||
|
not be usable by host operating system until the guest redirection is
|
||||||
|
stopped.
|
||||||
|
Therefore, do not redirect the input devices, such as the keyboard and
|
||||||
|
mouse, as it will be difficult (or impossible) to revert the situation.
|
||||||
.SS SPICE redirection (recommended)
|
.SS SPICE redirection (recommended)
|
||||||
Using SPICE for USB pass\-through is easiest as it doesn\[cq]t require
|
Using SPICE for USB pass\-through is easiest as it doesn\[aq]t require
|
||||||
any elevated permission:
|
any elevated permission:
|
||||||
|
.PP
|
||||||
|
Both \f[CR]spicy\f[R] from \c
|
||||||
|
.UR https://www.spice-space.org/spice-gtk.html
|
||||||
|
spice\-gtk
|
||||||
|
.UE \c
|
||||||
|
\ (\f[I]Input \-> Select USB Devices for redirection\f[R]) and
|
||||||
|
\f[CR]remote\-viewer\f[R] from \c
|
||||||
|
.UR https://gitlab.com/virt-viewer/virt-viewer
|
||||||
|
virt\-viewer
|
||||||
|
.UE \c
|
||||||
|
\ (\f[I]File \-> USB device selection\f[R]) support this feature.
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
Start Quickemu with \f[CR]\-\-display spice\f[R] and then
|
Start Quickemu with \f[CR]\-\-display spice\f[R] and then
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
select \f[CR]Input\f[R] \-> \f[CR]Select USB Device for redirection\f[R]
|
Select \f[CR]Input\f[R] \-> \f[CR]Select USB Device for redirection\f[R]
|
||||||
from the menu to choose which device(s) you want to attach to the guest.
|
from the menu to choose which device(s) you want to attach to the guest.
|
||||||
|
.IP \[bu] 2
|
||||||
|
**\f[CR]spicy\f[R] (default)
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
**Select \f[CR]Input\f[R] \->
|
||||||
|
\f[CR]Select USB Device for redirection\f[R] from the menu to choose
|
||||||
|
which device(s) you want to attach to the guest.
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
**\f[CR]remote\-viewer\f[R]
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
**Select \f[CR]File\f[R] \-> \f[CR]USB device selection\f[R] from the
|
||||||
|
menu to choose which device(s) you want to attach to the guest.
|
||||||
|
.RE
|
||||||
|
.PP
|
||||||
|
To ensure that this functionality works as expected, make sure that you
|
||||||
|
have installed the necessary SPICE Guest Tools on the virtual machine.
|
||||||
.SS Enabling SPICE redirection on NixOS
|
.SS Enabling SPICE redirection on NixOS
|
||||||
On NixOS, if you encounter this error:
|
On NixOS, if you encounter this error:
|
||||||
.IP
|
.IP
|
|
@ -1,9 +1,9 @@
|
||||||
---
|
---
|
||||||
author: Martin Wimpress
|
author: Martin Wimpress
|
||||||
date: May 9, 2024
|
date: December 30, 2024
|
||||||
footer: quickemu_conf
|
footer: quickemu_conf
|
||||||
header: Quickemu Configuration Manual
|
header: Quickemu Configuration Manual
|
||||||
section: 1
|
section: 5
|
||||||
title: QUICKEMU_CONF
|
title: QUICKEMU_CONF
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -82,13 +82,13 @@ disk_img="macos-catalina/disk.qcow2"
|
||||||
macos_release="catalina"
|
macos_release="catalina"
|
||||||
```
|
```
|
||||||
|
|
||||||
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
||||||
- `macos_release="catalina"` instructs Quickemu to optimise for a
|
- `macos_release="catalina"` instructs Quickemu to optimise for a
|
||||||
particular macOS release.
|
particular macOS release.
|
||||||
- For example VirtIO Network and Memory Ballooning are available
|
- For example VirtIO Network and Memory Ballooning are available in
|
||||||
in Big Sur and newer, but not previous releases.
|
Big Sur and newer, but not previous releases.
|
||||||
- And VirtIO Block Media (disks) are supported/stable in Catalina
|
- And VirtIO Block Media (disks) are supported/stable in Catalina and
|
||||||
and newer.
|
newer.
|
||||||
|
|
||||||
The default Windows 11 configuration looks like this:
|
The default Windows 11 configuration looks like this:
|
||||||
|
|
||||||
|
@ -101,10 +101,10 @@ tpm="on"
|
||||||
secureboot="on"
|
secureboot="on"
|
||||||
```
|
```
|
||||||
|
|
||||||
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
|
- `guest_os="windows"` instructs `quickemu` to optimise for Windows.
|
||||||
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
|
- `fixed_iso=` specifies the ISO image that provides VirtIO drivers.
|
||||||
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
|
- `tpm="on"` instructs `quickemu` to create a software emulated TPM
|
||||||
device using `swtpm`.
|
device using `swtpm`.
|
||||||
|
|
||||||
### BIOS and EFI
|
### BIOS and EFI
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ Since Quickemu 2.1.0 `efi` is the default boot option. If you want to
|
||||||
override this behaviour then add the following line to you VM
|
override this behaviour then add the following line to you VM
|
||||||
configuration to enable legacy BIOS.
|
configuration to enable legacy BIOS.
|
||||||
|
|
||||||
- `boot="legacy"` - Enable Legacy BIOS boot
|
- `boot="legacy"` - Enable Legacy BIOS boot
|
||||||
|
|
||||||
### Tuning CPU cores, RAM & disks
|
### Tuning CPU cores, RAM & disks
|
||||||
|
|
||||||
|
@ -123,11 +123,10 @@ your liking.
|
||||||
|
|
||||||
Add additional lines to your virtual machine configuration:
|
Add additional lines to your virtual machine configuration:
|
||||||
|
|
||||||
- `cpu_cores="4"` - Specify the number of CPU cores allocated to the
|
- `cpu_cores="4"` - Specify the number of CPU cores allocated to the VM
|
||||||
VM
|
- `ram="4G"` - Specify the amount of RAM to allocate to the VM
|
||||||
- `ram="4G"` - Specify the amount of RAM to allocate to the VM
|
- `disk_size="16G"` - Specify the size of the virtual disk allocated to
|
||||||
- `disk_size="16G"` - Specify the size of the virtual disk allocated
|
the VM
|
||||||
to the VM
|
|
||||||
|
|
||||||
### Disk preallocation
|
### Disk preallocation
|
||||||
|
|
||||||
|
@ -139,14 +138,14 @@ Specify what disk preallocation should be used, if any, when creating
|
||||||
the system disk image by adding a line like this to your VM
|
the system disk image by adding a line like this to your VM
|
||||||
configuration.
|
configuration.
|
||||||
|
|
||||||
- `preallocation="metadata"`
|
- `preallocation="metadata"`
|
||||||
|
|
||||||
### CD-ROM disks
|
### CD-ROM disks
|
||||||
|
|
||||||
If you want to expose an ISO image from the host to guest add the
|
If you want to expose an ISO image from the host to guest add the
|
||||||
following line to the VM configuration:
|
following line to the VM configuration:
|
||||||
|
|
||||||
- `fixed_iso="/path/to/image.iso"`
|
- `fixed_iso="/path/to/image.iso"`
|
||||||
|
|
||||||
### Floppy disks
|
### Floppy disks
|
||||||
|
|
||||||
|
@ -154,7 +153,7 @@ If you're like [Alan Pope](https://popey.com) you'll probably want to
|
||||||
mount a floppy disk image in the guest. To do so add the following line
|
mount a floppy disk image in the guest. To do so add the following line
|
||||||
to the VM configuration:
|
to the VM configuration:
|
||||||
|
|
||||||
- `floppy="/path/to/floppy.img"`
|
- `floppy="/path/to/floppy.img"`
|
||||||
|
|
||||||
### File Sharing
|
### File Sharing
|
||||||
|
|
||||||
|
@ -184,11 +183,11 @@ slashes with backslashes (in this example `\\10.0.2.4\qemu`).
|
||||||
|
|
||||||
#### SPICE WebDAV 🐧 🪟
|
#### SPICE WebDAV 🐧 🪟
|
||||||
|
|
||||||
- TBD
|
- TBD
|
||||||
|
|
||||||
#### VirtIO-9P 🐧 🍏
|
#### VirtIO-9P 🐧 🍏
|
||||||
|
|
||||||
- TBD
|
- TBD
|
||||||
|
|
||||||
### Networking
|
### Networking
|
||||||
|
|
||||||
|
@ -197,19 +196,19 @@ slashes with backslashes (in this example `\\10.0.2.4\qemu`).
|
||||||
Add an additional line to your virtual machine configuration. For
|
Add an additional line to your virtual machine configuration. For
|
||||||
example:
|
example:
|
||||||
|
|
||||||
- `port_forwards=("8123:8123" "8888:80")`
|
- `port_forwards=("8123:8123" "8888:80")`
|
||||||
|
|
||||||
In the example above:
|
In the example above:
|
||||||
|
|
||||||
- Port 8123 on the host is forwarded to port 8123 on the guest.
|
- Port 8123 on the host is forwarded to port 8123 on the guest.
|
||||||
- Port 8888 on the host is forwarded to port 80 on the guest.
|
- Port 8888 on the host is forwarded to port 80 on the guest.
|
||||||
|
|
||||||
#### Disable networking
|
#### Disable networking
|
||||||
|
|
||||||
To completely disable all network interfaces in a guest VM add this
|
To completely disable all network interfaces in a guest VM add this
|
||||||
additional line to your virtual machine configuration:
|
additional line to your virtual machine configuration:
|
||||||
|
|
||||||
- `network="none"`
|
- `network="none"`
|
||||||
|
|
||||||
#### Restricted networking
|
#### Restricted networking
|
||||||
|
|
||||||
|
@ -221,14 +220,14 @@ This can be used to prevent software running inside the guest from
|
||||||
phoning home while still providing a network inside the guest. Add this
|
phoning home while still providing a network inside the guest. Add this
|
||||||
additional line to your virtual machine configuration:
|
additional line to your virtual machine configuration:
|
||||||
|
|
||||||
- `network="restrict"`
|
- `network="restrict"`
|
||||||
|
|
||||||
#### Bridged networking
|
#### Bridged networking
|
||||||
|
|
||||||
Connect your virtual machine to a preconfigured network bridge. Add an
|
Connect your virtual machine to a preconfigured network bridge. Add an
|
||||||
additional line to your virtual machine configuration:
|
additional line to your virtual machine configuration:
|
||||||
|
|
||||||
- `network="br0"`
|
- `network="br0"`
|
||||||
|
|
||||||
If you want to have a persistent MAC address for your bridged network
|
If you want to have a persistent MAC address for your bridged network
|
||||||
interface in the guest VM you can add `macaddr` to the virtual machine
|
interface in the guest VM you can add `macaddr` to the virtual machine
|
||||||
|
@ -237,21 +236,42 @@ configuration. QEMU requires that the MAC address is in the range:
|
||||||
|
|
||||||
So you can generate your own MAC addresses with:
|
So you can generate your own MAC addresses with:
|
||||||
|
|
||||||
- `macaddr="52:54:00:AB:51:AE"`
|
- `macaddr="52:54:00:AB:51:AE"`
|
||||||
|
|
||||||
### USB redirection
|
### USB redirection
|
||||||
|
|
||||||
Quickemu supports USB redirection via SPICE pass-through and host
|
Quickemu supports USB redirection via SPICE pass-through and host
|
||||||
pass-through.
|
pass-through. Quickemu supports USB redirection via SPICE pass-through
|
||||||
|
and host pass-through.
|
||||||
|
|
||||||
|
**NOTE!** When a USB device is redirected from the host, it will not be
|
||||||
|
usable by host operating system until the guest redirection is stopped.
|
||||||
|
Therefore, do not redirect the input devices, such as the keyboard and
|
||||||
|
mouse, as it will be difficult (or impossible) to revert the situation.
|
||||||
|
|
||||||
#### SPICE redirection (recommended)
|
#### SPICE redirection (recommended)
|
||||||
|
|
||||||
Using SPICE for USB pass-through is easiest as it doesn't require any
|
Using SPICE for USB pass-through is easiest as it doesn't require any
|
||||||
elevated permission:
|
elevated permission:
|
||||||
|
|
||||||
- Start Quickemu with `--display spice` and then
|
Both `spicy` from
|
||||||
- select `Input` -\> `Select USB Device for redirection` from the menu
|
[spice-gtk](https://www.spice-space.org/spice-gtk.html) (*Input -\>
|
||||||
to choose which device(s) you want to attach to the guest.
|
Select USB Devices for redirection*) and `remote-viewer` from
|
||||||
|
[virt-viewer](https://gitlab.com/virt-viewer/virt-viewer) (*File -\> USB
|
||||||
|
device selection*) support this feature.
|
||||||
|
|
||||||
|
- Start Quickemu with `--display spice` and then
|
||||||
|
- Select `Input` -\> `Select USB Device for redirection` from the menu
|
||||||
|
to choose which device(s) you want to attach to the guest.
|
||||||
|
- \*\*`spicy` (default)
|
||||||
|
- \*\*Select `Input` -\> `Select USB Device for redirection` from the
|
||||||
|
menu to choose which device(s) you want to attach to the guest.
|
||||||
|
- \*\*`remote-viewer`
|
||||||
|
- \*\*Select `File` -\> `USB device selection` from the menu to choose
|
||||||
|
which device(s) you want to attach to the guest.
|
||||||
|
|
||||||
|
To ensure that this functionality works as expected, make sure that you
|
||||||
|
have installed the necessary SPICE Guest Tools on the virtual machine.
|
||||||
|
|
||||||
##### Enabling SPICE redirection on NixOS
|
##### Enabling SPICE redirection on NixOS
|
||||||
|
|
||||||
|
@ -275,14 +295,14 @@ preferred, see above.
|
||||||
Add an additional line to your virtual machine configuration. For
|
Add an additional line to your virtual machine configuration. For
|
||||||
example:
|
example:
|
||||||
|
|
||||||
- `usb_devices=("046d:082d" "046d:085e")`
|
- `usb_devices=("046d:082d" "046d:085e")`
|
||||||
|
|
||||||
In the example above:
|
In the example above:
|
||||||
|
|
||||||
- The USB device with vendor_id 046d and product_id 082d will be
|
- The USB device with vendor_id 046d and product_id 082d will be exposed
|
||||||
exposed to the guest.
|
to the guest.
|
||||||
- The USB device with vendor_id 046d and product_id 085e will be
|
- The USB device with vendor_id 046d and product_id 085e will be exposed
|
||||||
exposed to the guest.
|
to the guest.
|
||||||
|
|
||||||
If the USB devices are not writable, `quickemu` will display the
|
If the USB devices are not writable, `quickemu` will display the
|
||||||
appropriate commands to modify the USB device(s) access permissions,
|
appropriate commands to modify the USB device(s) access permissions,
|
209
docs/quickget.1
209
docs/quickget.1
|
@ -1,6 +1,6 @@
|
||||||
.\" Automatically generated by Pandoc 3.1.13
|
.\" Automatically generated by Pandoc 3.6.1
|
||||||
.\"
|
.\"
|
||||||
.TH "QUICKGET" "1" "May 9, 2024" "quickget" "Quickget User Manual"
|
.TH "QUICKGET" "1" "December 30, 2024" "quickget" "Quickget User Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
quickget \- download and prepare materials for building a quickemu VM
|
quickget \- download and prepare materials for building a quickemu VM
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -11,26 +11,44 @@ quickget \- download and prepare materials for building a quickemu VM
|
||||||
configuration for \f[CR]quickemu\f[R] to use to build and run
|
configuration for \f[CR]quickemu\f[R] to use to build and run
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.TP
|
.TP
|
||||||
\f[B]version | \-version | \[en]version\f[R]
|
|
||||||
show version (from Quickemu)
|
|
||||||
.TP
|
|
||||||
\f[B]list | list_csv | list_json\f[R]
|
|
||||||
provide a csv list of all supported guest OSes, versions and variants.
|
|
||||||
.TP
|
|
||||||
\f[B]\f[CB]\-\-show\-iso\-url\f[B] | \-s\f[R] {\f[B]os\f[R]} {\f[B]release\f[R]} [\f[B]edition\f[R]]
|
|
||||||
show ISO download URL
|
|
||||||
.TP
|
|
||||||
\f[B]\f[CB]\-\-test\-iso\-url\f[B] | \-t\f[R] {\f[B]os\f[R]} {\f[B]release\f[R]} [\f[B]edition\f[R]]
|
|
||||||
test if ISO is available
|
|
||||||
.TP
|
|
||||||
\f[B]\f[CB]\-\-open\-distro\-homepage\f[B] | \-o\f[R] {\f[B]os\f[R]}
|
|
||||||
open OS homepage in browser
|
|
||||||
.TP
|
|
||||||
\f[B][OS] [Release] [Edition]\f[R]
|
\f[B][OS] [Release] [Edition]\f[R]
|
||||||
specify the OS and release (and optional edition) if insufficient input
|
specify the OS and release (and optional edition) if insufficient input
|
||||||
is provided a list of missing options will be reported and the script
|
is provided a list of missing options will be reported and the script
|
||||||
will exit.
|
will exit.
|
||||||
Editions may not apply and will be defaulted if not provided.
|
Editions may not apply and will be defaulted if not provided.
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-download\f[R] [edition]
|
||||||
|
Download image; no VM configuration
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-create\-config\f[R] [path/url]
|
||||||
|
Create VM config for a OS image
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-open\-homepage\f[R]
|
||||||
|
Open homepage for the OS
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-show\f[R] [os]
|
||||||
|
Show OS information
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-url\f[R] [os] [release] [edition]
|
||||||
|
Show image URL(s)
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-check\f[R] [os] [release] [edition]
|
||||||
|
Check image URL(s)
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-list\f[R]
|
||||||
|
List all supported systems
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-list\-csv\f[R]
|
||||||
|
List everything in csv format
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-list\-json\f[R]
|
||||||
|
List everything in json format
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-version\f[R]
|
||||||
|
Show version
|
||||||
|
.TP
|
||||||
|
\f[B]\-\-help\f[R]
|
||||||
|
Show this help message
|
||||||
.SH NOTES
|
.SH NOTES
|
||||||
.SS Creating Linux guests 🐧
|
.SS Creating Linux guests 🐧
|
||||||
.SS Ubuntu
|
.SS Ubuntu
|
||||||
|
@ -111,11 +129,12 @@ You can also use \f[CR]quickget\f[R] with advanced options :
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
\-\-download <os> <release> [edition] : Download image; no VM configuration
|
\-\-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
|
\-\-open\-homepage <os> : Open homepage for the OS
|
||||||
\-\-show [os] : Show OS information
|
\-\-show [os] : Show OS information
|
||||||
\-\-version : Show version
|
\-\-version : Show version
|
||||||
\-\-help : Show this help message
|
\-\-help : Show this help message
|
||||||
|
\-\-disable\-unattended : Force quickget not to set up an unattended installation
|
||||||
\-\-url [os] [release] [edition] : Show image URL(s)
|
\-\-url [os] [release] [edition] : Show image URL(s)
|
||||||
\-\-check [os] [release] [edition] : Check image URL(s)
|
\-\-check [os] [release] [edition] : Check image URL(s)
|
||||||
\-\-list : List all supported systems
|
\-\-list : List all supported systems
|
||||||
|
@ -233,6 +252,8 @@ wiki
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
|
\f[CR]lmde\f[R] (Linux Mint Debian Edition)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
\f[CR]maboxlinux\f[R] (Mabox Linux)
|
||||||
|
.IP \[bu] 2
|
||||||
\f[CR]mageia\f[R] (Mageia)
|
\f[CR]mageia\f[R] (Mageia)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]manjaro\f[R] (Manjaro)
|
\f[CR]manjaro\f[R] (Manjaro)
|
||||||
|
@ -267,6 +288,8 @@ wiki
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]primtux\f[R] (PrimTux)
|
\f[CR]primtux\f[R] (PrimTux)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
\f[CR]proxmox\-ve\f[R] (Proxmox VE)
|
||||||
|
.IP \[bu] 2
|
||||||
\f[CR]pureos\f[R] (PureOS)
|
\f[CR]pureos\f[R] (PureOS)
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]reactos\f[R] (ReactOS)
|
\f[CR]reactos\f[R] (ReactOS)
|
||||||
|
@ -345,17 +368,29 @@ enable copy/paste and USB redirection.
|
||||||
Install the SPICE WebDAV agent (\f[CR]spice\-webdavd\f[R]) in the guest
|
Install the SPICE WebDAV agent (\f[CR]spice\-webdavd\f[R]) in the guest
|
||||||
to enable file sharing.
|
to enable file sharing.
|
||||||
.RE
|
.RE
|
||||||
|
.SS Supporting old Linux distros
|
||||||
|
If you want to run an old Linux , from 2016 or earlier, change the
|
||||||
|
\f[CR]guest_os\f[R] to \f[CR]linux_old\f[R].
|
||||||
|
This will enable the \f[CR]vmware\-svga\f[R] graphics driver which is
|
||||||
|
better supported on older distros.
|
||||||
.SS \c
|
.SS \c
|
||||||
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
||||||
Creating macOS Guests
|
Creating macOS Guests
|
||||||
.UE \c
|
.UE \c
|
||||||
\ 🍏
|
\ 🍏
|
||||||
|
\f[B]Installing macOS in a VM can be a bit finicky, if you encounter
|
||||||
|
problems, \c
|
||||||
|
.UR https://github.com/quickemu-project/quickemu/discussions
|
||||||
|
check the Discussions
|
||||||
|
.UE \c
|
||||||
|
\ for solutions or ask for help there\f[R] 🛟
|
||||||
|
.PP
|
||||||
\f[CR]quickget\f[R] automatically downloads a macOS recovery image and
|
\f[CR]quickget\f[R] automatically downloads a macOS recovery image and
|
||||||
creates a virtual machine configuration.
|
creates a virtual machine configuration.
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
quickget macos catalina
|
quickget macos big\-sur
|
||||||
quickemu \-\-vm macos\-catalina.conf
|
quickemu \-\-vm macos\-big\-sur.conf
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
macOS \f[CR]mojave\f[R], \f[CR]catalina\f[R], \f[CR]big\-sur\f[R],
|
macOS \f[CR]mojave\f[R], \f[CR]catalina\f[R], \f[CR]big\-sur\f[R],
|
||||||
|
@ -428,21 +463,21 @@ on the hard disk when files are deleted:
|
||||||
sudo trimforce enable
|
sudo trimforce enable
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
You will be prompted to enter your account\[cq]s password to gain the
|
You will be prompted to enter your account\[aq]s password to gain the
|
||||||
privilege needed.
|
privilege needed.
|
||||||
Once you\[cq]ve entered your password and pressed enter the command will
|
Once you\[aq]ve entered your password and pressed enter the command will
|
||||||
request confirmation in the form of two questions that require you to
|
request confirmation in the form of two questions that require you to
|
||||||
type y (for a \[lq]yes\[rq] response) followed by enter to confirm.
|
type y (for a \[dq]yes\[dq] response) followed by enter to confirm.
|
||||||
.PP
|
.PP
|
||||||
If you press enter without first typing y the system will consider that
|
If you press enter without first typing y the system will consider that
|
||||||
a negative response as though you said \[lq]no\[rq]:
|
a negative response as though you said \[dq]no\[dq]:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
IMPORTANT NOTICE: This tool force\-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON\-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
IMPORTANT NOTICE: This tool force\-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an \[dq]as is\[dq] basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON\-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
||||||
Are you sure you with to proceed (y/N)?
|
Are you sure you with to proceed (y/N)?
|
||||||
.EE
|
.EE
|
||||||
.PP
|
.PP
|
||||||
And a second confirmation once you\[cq]ve confirmed the previous one:
|
And a second confirmation once you\[aq]ve confirmed the previous one:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
Your system will immediately reboot when this is complete.
|
Your system will immediately reboot when this is complete.
|
||||||
|
@ -456,15 +491,15 @@ The default macOS configuration looks like this:
|
||||||
.IP
|
.IP
|
||||||
.EX
|
.EX
|
||||||
guest_os=\[dq]macos\[dq]
|
guest_os=\[dq]macos\[dq]
|
||||||
img=\[dq]macos\-catalina/RecoveryImage.img\[dq]
|
img=\[dq]macos\- big\-sur/RecoveryImage.img\[dq]
|
||||||
disk_img=\[dq]macos\-catalina/disk.qcow2\[dq]
|
disk_img=\[dq]macos\- big\-sur/disk.qcow2\[dq]
|
||||||
macos_release=\[dq]catalina\[dq]
|
macos_release=\[dq] big\-sur\[dq]
|
||||||
.EE
|
.EE
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
|
\f[CR]guest_os=\[dq]macos\[dq]\f[R] instructs Quickemu to optimise for
|
||||||
macOS.
|
macOS.
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
\f[CR]macos_release=\[dq]catalina\[dq]\f[R] instructs Quickemu to
|
\f[CR]macos_release=\[dq] big\-sur\[dq]\f[R] instructs Quickemu to
|
||||||
optimise for a particular macOS release.
|
optimise for a particular macOS release.
|
||||||
.RS 2
|
.RS 2
|
||||||
.IP \[bu] 2
|
.IP \[bu] 2
|
||||||
|
@ -474,8 +509,118 @@ Sur and newer, but not previous releases.
|
||||||
And VirtIO Block Media (disks) are supported/stable in Catalina and
|
And VirtIO Block Media (disks) are supported/stable in Catalina and
|
||||||
newer.
|
newer.
|
||||||
.RE
|
.RE
|
||||||
|
.SH macOS compatibility
|
||||||
|
There are some considerations when running macOS via Quickemu.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Supported macOS releases:
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
Mojave
|
||||||
|
.IP \[bu] 2
|
||||||
|
Catalina
|
||||||
|
.IP \[bu] 2
|
||||||
|
Big Sur
|
||||||
|
.IP \[bu] 2
|
||||||
|
Monterey
|
||||||
|
.IP \[bu] 2
|
||||||
|
Ventura
|
||||||
|
.IP \[bu] 2
|
||||||
|
Sonoma
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
\f[CR]quickemu\f[R] will automatically download the required \c
|
||||||
|
.UR https://github.com/acidanthera/OpenCorePkg
|
||||||
|
OpenCore
|
||||||
|
.UE \c
|
||||||
|
\ bootloader and OVMF firmware from \c
|
||||||
|
.UR https://github.com/kholia/OSX-KVM
|
||||||
|
OSX\-KVM
|
||||||
|
.UE \c
|
||||||
|
\&.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Optimised by default, but no GPU acceleration is available.
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
Host CPU vendor is detected and guest CPU is optimised accordingly.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
|
.UR https://www.kraxel.org/blog/2019/06/macos-qemu-guest/
|
||||||
|
VirtIO Block Media
|
||||||
|
.UE \c
|
||||||
|
\ is used for the system disk where supported.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\c
|
||||||
|
.UR http://philjordan.eu/osx-virt/
|
||||||
|
VirtIO \f[CR]usb\-tablet\f[R]
|
||||||
|
.UE \c
|
||||||
|
\ is used for the mouse.
|
||||||
|
.IP \[bu] 2
|
||||||
|
VirtIO Network (\f[CR]virtio\-net\f[R]) is supported and enabled on
|
||||||
|
macOS Big Sur and newer, but earlier releases use \f[CR]vmxnet3\f[R].
|
||||||
|
.IP \[bu] 2
|
||||||
|
VirtIO Memory Ballooning is supported and enabled on macOS Big Sur and
|
||||||
|
newer but disabled for other support macOS releases.
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
USB host and SPICE pass\-through is:
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
UHCI (USB 2.0) on macOS Catalina and earlier.
|
||||||
|
.IP \[bu] 2
|
||||||
|
XHCI (USB 3.0) on macOS Big Sur and newer.
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
Display resolution can be changed via \f[CR]quickemu\f[R] using
|
||||||
|
\f[CR]\-\-width\f[R] and \f[CR]\-\-height\f[R] command line arguments.
|
||||||
|
.IP \[bu] 2
|
||||||
|
\f[B]Full Duplex audio requires \c
|
||||||
|
.UR https://github.com/chris1111/VoodooHDA-OC
|
||||||
|
VoodooHDA OC
|
||||||
|
.UE \c
|
||||||
|
\ or pass\-through a USB audio\-device to the macOS guest VM\f[R].
|
||||||
|
.RS 2
|
||||||
|
.IP \[bu] 2
|
||||||
|
NOTE!
|
||||||
|
\c
|
||||||
|
.UR https://disable-gatekeeper.github.io/
|
||||||
|
Gatekeeper
|
||||||
|
.UE \c
|
||||||
|
\ and \c
|
||||||
|
.UR https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection
|
||||||
|
System Integrity Protection (SIP)
|
||||||
|
.UE \c
|
||||||
|
\ need to be disabled to install VoodooHDA OC
|
||||||
|
.RE
|
||||||
|
.IP \[bu] 2
|
||||||
|
File sharing between guest and host is available via \c
|
||||||
|
.UR https://wiki.qemu.org/Documentation/9psetup
|
||||||
|
virtio\-9p
|
||||||
|
.UE \c
|
||||||
|
\ and \c
|
||||||
|
.UR https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24
|
||||||
|
SPICE webdavd
|
||||||
|
.UE \c
|
||||||
|
\&.
|
||||||
|
.IP \[bu] 2
|
||||||
|
Copy/paste via SPICE agent is \f[B]not available on macOS\f[R].
|
||||||
|
.SH macOS App Store
|
||||||
|
If you see \f[I]\[dq]Your device or computer could not be
|
||||||
|
verified\[dq]\f[R] when you try to login to the App Store, make sure
|
||||||
|
that your wired ethernet device is \f[CR]en0\f[R].
|
||||||
|
Use \f[CR]ifconfig\f[R] in a terminal to verify this.
|
||||||
.PP
|
.PP
|
||||||
There is further advice and information about macOS guests in the
|
If the wired ethernet device is not \f[CR]en0\f[R], then then go to
|
||||||
|
\f[I]System Preferences\f[R] \-> \f[I]Network\f[R], delete all the
|
||||||
|
network devices and apply the changes.
|
||||||
|
Next, open a terminal and run the following:
|
||||||
|
.IP
|
||||||
|
.EX
|
||||||
|
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
|
||||||
|
.EE
|
||||||
|
.PP
|
||||||
|
Now reboot, and the App Store should work.
|
||||||
|
.PP
|
||||||
|
There may be further advice and information about macOS guests in the
|
||||||
project \c
|
project \c
|
||||||
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
.UR https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests
|
||||||
wiki
|
wiki
|
||||||
|
@ -501,7 +646,7 @@ VirtIO drivers for Windows
|
||||||
.UE \c
|
.UE \c
|
||||||
\&.
|
\&.
|
||||||
.PP
|
.PP
|
||||||
\f[B]Windows 8.1\f[R] is also supported but doesn\[cq]t feature any
|
\f[B]Windows 8.1\f[R] is also supported but doesn\[aq]t feature any
|
||||||
automated installation or driver optimisation.
|
automated installation or driver optimisation.
|
||||||
.PP
|
.PP
|
||||||
\f[CR]quickget\f[R] can also download \c
|
\f[CR]quickget\f[R] can also download \c
|
||||||
|
@ -560,6 +705,6 @@ Full sources at: \c
|
||||||
.UR https://github.com/quickemu-project/quickemu
|
.UR https://github.com/quickemu-project/quickemu
|
||||||
.UE \c
|
.UE \c
|
||||||
.PP
|
.PP
|
||||||
quickemu(1), quickemu_conf(1), quickgui(1)
|
quickemu(1), quickemu_conf(5), quickgui(1)
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Martin Wimpress.
|
Martin Wimpress.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
author: Martin Wimpress
|
author: Martin Wimpress
|
||||||
date: May 9, 2024
|
date: December 30, 2024
|
||||||
footer: quickget
|
footer: quickget
|
||||||
header: Quickget User Manual
|
header: Quickget User Manual
|
||||||
section: 1
|
section: 1
|
||||||
|
@ -22,28 +22,45 @@ configuration for `quickemu` to use to build and run
|
||||||
|
|
||||||
# OPTIONS
|
# OPTIONS
|
||||||
|
|
||||||
**version \| -version \| --version**
|
|
||||||
: show version (from Quickemu)
|
|
||||||
|
|
||||||
**list \| list_csv \| list_json**
|
|
||||||
: provide a csv list of all supported guest OSes, versions and
|
|
||||||
variants.
|
|
||||||
|
|
||||||
**`--show-iso-url` \| -s** {**os**} {**release**} \[**edition**\]
|
|
||||||
: show ISO download URL
|
|
||||||
|
|
||||||
**`--test-iso-url` \| -t** {**os**} {**release**} \[**edition**\]
|
|
||||||
: test if ISO is available
|
|
||||||
|
|
||||||
**`--open-distro-homepage` \| -o** {**os**}
|
|
||||||
: open OS homepage in browser
|
|
||||||
|
|
||||||
**\[OS\] \[Release\] \[Edition\]**
|
**\[OS\] \[Release\] \[Edition\]**
|
||||||
: specify the OS and release (and optional edition) if insufficient
|
: specify the OS and release (and optional edition) if insufficient
|
||||||
input is provided a list of missing options will be reported and the
|
input is provided a list of missing options will be reported and the
|
||||||
script will exit. Editions may not apply and will be defaulted if
|
script will exit. Editions may not apply and will be defaulted if
|
||||||
not provided.
|
not provided.
|
||||||
|
|
||||||
|
**--download** <os> <release> \[edition\]
|
||||||
|
: Download image; no VM configuration
|
||||||
|
|
||||||
|
**--create-config** <os> \[path/url\]
|
||||||
|
: Create VM config for a OS image
|
||||||
|
|
||||||
|
**--open-homepage** <os>
|
||||||
|
: Open homepage for the OS
|
||||||
|
|
||||||
|
**--show** \[os\]
|
||||||
|
: Show OS information
|
||||||
|
|
||||||
|
**--url** \[os\] \[release\] \[edition\]
|
||||||
|
: Show image URL(s)
|
||||||
|
|
||||||
|
**--check** \[os\] \[release\] \[edition\]
|
||||||
|
: Check image URL(s)
|
||||||
|
|
||||||
|
**--list**
|
||||||
|
: List all supported systems
|
||||||
|
|
||||||
|
**--list-csv**
|
||||||
|
: List everything in csv format
|
||||||
|
|
||||||
|
**--list-json**
|
||||||
|
: List everything in json format
|
||||||
|
|
||||||
|
**--version**
|
||||||
|
: Show version
|
||||||
|
|
||||||
|
**--help**
|
||||||
|
: Show this help message
|
||||||
|
|
||||||
# NOTES
|
# NOTES
|
||||||
|
|
||||||
## Creating Linux guests 🐧
|
## Creating Linux guests 🐧
|
||||||
|
@ -58,14 +75,14 @@ quickget ubuntu 22.04
|
||||||
quickemu --vm ubuntu-22.04.conf
|
quickemu --vm ubuntu-22.04.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Complete the installation as normal.
|
- Complete the installation as normal.
|
||||||
- Post-install:
|
- Post-install:
|
||||||
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
||||||
copy/paste and USB redirection
|
copy/paste and USB redirection
|
||||||
- `sudo apt install spice-vdagent`
|
- `sudo apt install spice-vdagent`
|
||||||
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
||||||
enable file sharing.
|
enable file sharing.
|
||||||
- `sudo apt install spice-webdavd`
|
- `sudo apt install spice-webdavd`
|
||||||
|
|
||||||
### Ubuntu daily-live images
|
### Ubuntu daily-live images
|
||||||
|
|
||||||
|
@ -90,28 +107,29 @@ The project
|
||||||
[wiki](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines)
|
[wiki](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines)
|
||||||
may have further information.
|
may have further information.
|
||||||
|
|
||||||
- `edubuntu` (Edubuntu)
|
- `edubuntu` (Edubuntu)
|
||||||
- `kubuntu` (Kubuntu)
|
- `kubuntu` (Kubuntu)
|
||||||
- `lubuntu` (Lubuntu)
|
- `lubuntu` (Lubuntu)
|
||||||
- `ubuntu-budgie` (Ubuntu Budgie)
|
- `ubuntu-budgie` (Ubuntu Budgie)
|
||||||
- `ubuntucinnamon` (Ubuntu Cinnamon)
|
- `ubuntucinnamon` (Ubuntu Cinnamon)
|
||||||
- `ubuntukylin` (Ubuntu Kylin)
|
- `ubuntukylin` (Ubuntu Kylin)
|
||||||
- `ubuntu-mate` (Ubuntu MATE)
|
- `ubuntu-mate` (Ubuntu MATE)
|
||||||
- `ubuntu-server` (Ubuntu Server)
|
- `ubuntu-server` (Ubuntu Server)
|
||||||
- `ubuntustudio` (Ubuntu Studio)
|
- `ubuntustudio` (Ubuntu Studio)
|
||||||
- `ubuntu` (Ubuntu)
|
- `ubuntu` (Ubuntu)
|
||||||
- `ubuntu-unity` (Ubuntu Unity)
|
- `ubuntu-unity` (Ubuntu Unity)
|
||||||
- `xubuntu` (Xubuntu)
|
- `xubuntu` (Xubuntu)
|
||||||
|
|
||||||
You can also use `quickget` with advanced options :
|
You can also use `quickget` with advanced options :
|
||||||
|
|
||||||
``` text
|
``` text
|
||||||
--download <os> <release> [edition] : Download image; no VM configuration
|
--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
|
--open-homepage <os> : Open homepage for the OS
|
||||||
--show [os] : Show OS information
|
--show [os] : Show OS information
|
||||||
--version : Show version
|
--version : Show version
|
||||||
--help : Show this help message
|
--help : Show this help message
|
||||||
|
--disable-unattended : Force quickget not to set up an unattended installation
|
||||||
--url [os] [release] [edition] : Show image URL(s)
|
--url [os] [release] [edition] : Show image URL(s)
|
||||||
--check [os] [release] [edition] : Check image URL(s)
|
--check [os] [release] [edition] : Check image URL(s)
|
||||||
--list : List all supported systems
|
--list : List all supported systems
|
||||||
|
@ -142,96 +160,98 @@ Further information is available from the project
|
||||||
|
|
||||||
`quickget` also supports:
|
`quickget` also supports:
|
||||||
|
|
||||||
- `alma` (AlmaLinux)
|
- `alma` (AlmaLinux)
|
||||||
- `alpine` (Alpine Linux)
|
- `alpine` (Alpine Linux)
|
||||||
- `android` (Android x86)
|
- `android` (Android x86)
|
||||||
- `antix` (Antix)
|
- `antix` (Antix)
|
||||||
- `archcraft` (Archcraft)
|
- `archcraft` (Archcraft)
|
||||||
- `archlinux` (Arch Linux)
|
- `archlinux` (Arch Linux)
|
||||||
- `arcolinux` (Arco Linux)
|
- `arcolinux` (Arco Linux)
|
||||||
- `artixlinux` (Artix Linux)
|
- `artixlinux` (Artix Linux)
|
||||||
- `athenaos` (Athena OS)
|
- `athenaos` (Athena OS)
|
||||||
- `batocera` (Batocera)
|
- `batocera` (Batocera)
|
||||||
- `bazzite` (Bazzite)
|
- `bazzite` (Bazzite)
|
||||||
- `biglinux` (BigLinux)
|
- `biglinux` (BigLinux)
|
||||||
- `blendos` (BlendOS)
|
- `blendos` (BlendOS)
|
||||||
- `bodhi` (Bodhi)
|
- `bodhi` (Bodhi)
|
||||||
- `bunsenlabs` (BunsenLabs)
|
- `bunsenlabs` (BunsenLabs)
|
||||||
- `cachyos` (CachyOS)
|
- `cachyos` (CachyOS)
|
||||||
- `centos-stream` (CentOS Stream)
|
- `centos-stream` (CentOS Stream)
|
||||||
- `chimeralinux` (Chimera Linux)
|
- `chimeralinux` (Chimera Linux)
|
||||||
- `crunchbang++` (Crunchbangplusplus)
|
- `crunchbang++` (Crunchbangplusplus)
|
||||||
- `debian` (Debian)
|
- `debian` (Debian)
|
||||||
- `deepin` (Deepin)
|
- `deepin` (Deepin)
|
||||||
- `devuan` (Devuan)
|
- `devuan` (Devuan)
|
||||||
- `dragonflybsd` (DragonFlyBSD)
|
- `dragonflybsd` (DragonFlyBSD)
|
||||||
- `easyos` (EasyOS)
|
- `easyos` (EasyOS)
|
||||||
- `elementary` (elementary OS)
|
- `elementary` (elementary OS)
|
||||||
- `endeavouros` (EndeavourOS)
|
- `endeavouros` (EndeavourOS)
|
||||||
- `endless` (Endless OS)
|
- `endless` (Endless OS)
|
||||||
- `fedora` (Fedora)
|
- `fedora` (Fedora)
|
||||||
- `freebsd` (FreeBSD)
|
- `freebsd` (FreeBSD)
|
||||||
- `freedos` (FreeDOS)
|
- `freedos` (FreeDOS)
|
||||||
- `garuda` (Garuda Linux)
|
- `garuda` (Garuda Linux)
|
||||||
- `gentoo` (Gentoo)
|
- `gentoo` (Gentoo)
|
||||||
- `ghostbsd` (GhostBSD)
|
- `ghostbsd` (GhostBSD)
|
||||||
- `gnomeos` (GNOME OS)
|
- `gnomeos` (GNOME OS)
|
||||||
- `guix` (Guix)
|
- `guix` (Guix)
|
||||||
- `haiku` (Haiku)
|
- `haiku` (Haiku)
|
||||||
- `holoiso` (HoloISO)
|
- `holoiso` (HoloISO)
|
||||||
- `kali` (Kali)
|
- `kali` (Kali)
|
||||||
- `kdeneon` (KDE Neon)
|
- `kdeneon` (KDE Neon)
|
||||||
- `kolibrios` (KolibriOS)
|
- `kolibrios` (KolibriOS)
|
||||||
- `linuxlite` (Linux Lite)
|
- `linuxlite` (Linux Lite)
|
||||||
- `linuxmint` (Linux Mint)
|
- `linuxmint` (Linux Mint)
|
||||||
- `lmde` (Linux Mint Debian Edition)
|
- `lmde` (Linux Mint Debian Edition)
|
||||||
- `mageia` (Mageia)
|
- `maboxlinux` (Mabox Linux)
|
||||||
- `manjaro` (Manjaro)
|
- `mageia` (Mageia)
|
||||||
- `mxlinux` (MX Linux)
|
- `manjaro` (Manjaro)
|
||||||
- `netboot` (netboot.xyz)
|
- `mxlinux` (MX Linux)
|
||||||
- `netbsd` (NetBSD)
|
- `netboot` (netboot.xyz)
|
||||||
- `nitrux` (Nitrux)
|
- `netbsd` (NetBSD)
|
||||||
- `nixos` (NixOS)
|
- `nitrux` (Nitrux)
|
||||||
- `nwg-shell` (nwg-shell)
|
- `nixos` (NixOS)
|
||||||
- `openbsd` (OpenBSD)
|
- `nwg-shell` (nwg-shell)
|
||||||
- `openindiana` (OpenIndiana)
|
- `openbsd` (OpenBSD)
|
||||||
- `opensuse` (openSUSE)
|
- `openindiana` (OpenIndiana)
|
||||||
- `oraclelinux` (Oracle Linux)
|
- `opensuse` (openSUSE)
|
||||||
- `parrotsec` (Parrot Security)
|
- `oraclelinux` (Oracle Linux)
|
||||||
- `peppermint` (PeppermintOS)
|
- `parrotsec` (Parrot Security)
|
||||||
- `popos` (Pop!\_OS)
|
- `peppermint` (PeppermintOS)
|
||||||
- `porteus` (Porteus)
|
- `popos` (Pop!\_OS)
|
||||||
- `primtux` (PrimTux)
|
- `porteus` (Porteus)
|
||||||
- `pureos` (PureOS)
|
- `primtux` (PrimTux)
|
||||||
- `reactos` (ReactOS)
|
- `proxmox-ve` (Proxmox VE)
|
||||||
- `rebornos` (RebornOS)
|
- `pureos` (PureOS)
|
||||||
- `rockylinux` (Rocky Linux)
|
- `reactos` (ReactOS)
|
||||||
- `siduction` (Siduction)
|
- `rebornos` (RebornOS)
|
||||||
- `slackware` (Slackware)
|
- `rockylinux` (Rocky Linux)
|
||||||
- `slax` (Slax)
|
- `siduction` (Siduction)
|
||||||
- `slint` (Slint)
|
- `slackware` (Slackware)
|
||||||
- `slitaz` (SliTaz)
|
- `slax` (Slax)
|
||||||
- `solus` (Solus)
|
- `slint` (Slint)
|
||||||
- `sparkylinux` (SparkyLinux)
|
- `slitaz` (SliTaz)
|
||||||
- `spirallinux` (SpiralLinux)
|
- `solus` (Solus)
|
||||||
- `tails` (Tails)
|
- `sparkylinux` (SparkyLinux)
|
||||||
- `tinycore` (Tiny Core Linux)
|
- `spirallinux` (SpiralLinux)
|
||||||
- `trisquel` (Trisquel-)
|
- `tails` (Tails)
|
||||||
- `truenas-core` (TrueNAS Core)
|
- `tinycore` (Tiny Core Linux)
|
||||||
- `truenas-scale` (TrueNAS Scale)
|
- `trisquel` (Trisquel-)
|
||||||
- `tuxedo-os` (Tuxedo OS)
|
- `truenas-core` (TrueNAS Core)
|
||||||
- `vanillaos` (Vanilla OS)
|
- `truenas-scale` (TrueNAS Scale)
|
||||||
- `void` (Void Linux)
|
- `tuxedo-os` (Tuxedo OS)
|
||||||
- `vxlinux` (VX Linux)
|
- `vanillaos` (Vanilla OS)
|
||||||
- `zorin` (Zorin OS)
|
- `void` (Void Linux)
|
||||||
|
- `vxlinux` (VX Linux)
|
||||||
|
- `zorin` (Zorin OS)
|
||||||
|
|
||||||
### [Custom Linux guests](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines#manually-create-linux-guests)
|
### [Custom Linux guests](https://github.com/quickemu-project/quickemu/wiki/02-Create-Linux-virtual-machines#manually-create-linux-guests)
|
||||||
|
|
||||||
Or you can download a Linux image and manually create a VM
|
Or you can download a Linux image and manually create a VM
|
||||||
configuration.
|
configuration.
|
||||||
|
|
||||||
- Download a .iso image of a Linux distribution
|
- Download a .iso image of a Linux distribution
|
||||||
- Create a VM configuration file; for example `debian-bullseye.conf`
|
- Create a VM configuration file; for example `debian-bullseye.conf`
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
guest_os="linux"
|
guest_os="linux"
|
||||||
|
@ -239,66 +259,76 @@ disk_img="debian-bullseye/disk.qcow2"
|
||||||
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
|
iso="debian-bullseye/firmware-11.0.0-amd64-DVD-1.iso"
|
||||||
```
|
```
|
||||||
|
|
||||||
- Use `quickemu` to start the virtual machine:
|
- Use `quickemu` to start the virtual machine:
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
quickemu --vm debian-bullseye.conf
|
quickemu --vm debian-bullseye.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Complete the installation as normal.
|
- Complete the installation as normal.
|
||||||
- Post-install:
|
- Post-install:
|
||||||
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
- Install the SPICE agent (`spice-vdagent`) in the guest to enable
|
||||||
copy/paste and USB redirection.
|
copy/paste and USB redirection.
|
||||||
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
- Install the SPICE WebDAV agent (`spice-webdavd`) in the guest to
|
||||||
enable file sharing.
|
enable file sharing.
|
||||||
|
|
||||||
|
## Supporting old Linux distros
|
||||||
|
|
||||||
|
If you want to run an old Linux , from 2016 or earlier, change the
|
||||||
|
`guest_os` to `linux_old`. This will enable the `vmware-svga` graphics
|
||||||
|
driver which is better supported on older distros.
|
||||||
|
|
||||||
## [Creating macOS Guests](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests) 🍏
|
## [Creating macOS Guests](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests) 🍏
|
||||||
|
|
||||||
|
**Installing macOS in a VM can be a bit finicky, if you encounter
|
||||||
|
problems, [check the
|
||||||
|
Discussions](https://github.com/quickemu-project/quickemu/discussions)
|
||||||
|
for solutions or ask for help there** 🛟
|
||||||
|
|
||||||
`quickget` automatically downloads a macOS recovery image and creates a
|
`quickget` automatically downloads a macOS recovery image and creates a
|
||||||
virtual machine configuration.
|
virtual machine configuration.
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
quickget macos catalina
|
quickget macos big-sur
|
||||||
quickemu --vm macos-catalina.conf
|
quickemu --vm macos-big-sur.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
|
macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and
|
||||||
`sonoma` are supported.
|
`sonoma` are supported.
|
||||||
|
|
||||||
- Use cursor keys and enter key to select the **macOS Base System**
|
- Use cursor keys and enter key to select the **macOS Base System**
|
||||||
- From **macOS Utilities**
|
- From **macOS Utilities**
|
||||||
- Click **Disk Utility** and **Continue**
|
- Click **Disk Utility** and **Continue**
|
||||||
- Select `QEMU HARDDISK Media` (\~103.08GB) from the list (on
|
- Select `QEMU HARDDISK Media` (~103.08GB) from the list (on Big Sur
|
||||||
Big Sur and above use `Apple Inc. VirtIO Block Device`) and
|
and above use `Apple Inc. VirtIO Block Device`) and click
|
||||||
click **Erase**.
|
**Erase**.
|
||||||
- Enter a `Name:` for the disk
|
- Enter a `Name:` for the disk
|
||||||
- If you are installing macOS Mojave or later (Catalina, Big
|
- If you are installing macOS Mojave or later (Catalina, Big Sur,
|
||||||
Sur, Monterey, Ventura and Sonoma), choose any of the APFS
|
Monterey, Ventura and Sonoma), choose any of the APFS options as
|
||||||
options as the filesystem. MacOS Extended may not work.
|
the filesystem. MacOS Extended may not work.
|
||||||
- Click **Erase**.
|
- Click **Erase**.
|
||||||
- Click **Done**.
|
- Click **Done**.
|
||||||
- Close Disk Utility
|
- Close Disk Utility
|
||||||
- From **macOS Utilities**
|
- From **macOS Utilities**
|
||||||
- Click **Reinstall macOS** and **Continue**
|
- Click **Reinstall macOS** and **Continue**
|
||||||
- Complete the installation as you normally would.
|
- Complete the installation as you normally would.
|
||||||
- On the first reboot use cursor keys and enter key to select
|
- On the first reboot use cursor keys and enter key to select **macOS
|
||||||
**macOS Installer**
|
Installer**
|
||||||
- On the subsequent reboots use cursor keys and enter key to
|
- On the subsequent reboots use cursor keys and enter key to select
|
||||||
select the disk you named
|
the disk you named
|
||||||
- Once you have finished installing macOS you will be presented with
|
- Once you have finished installing macOS you will be presented with an
|
||||||
an the out-of-the-box first-start wizard to configure various
|
the out-of-the-box first-start wizard to configure various options and
|
||||||
options and set up your username and password
|
set up your username and password
|
||||||
- OPTIONAL: After you have concluded the out-of-the-box wizard, you
|
- OPTIONAL: After you have concluded the out-of-the-box wizard, you may
|
||||||
may want to enable the TRIM feature that the computer industry
|
want to enable the TRIM feature that the computer industry created for
|
||||||
created for SSD disks. This feature in our macOS installation will
|
SSD disks. This feature in our macOS installation will allow QuickEmu
|
||||||
allow QuickEmu to compact (shrink) your macOS disk image whenever
|
to compact (shrink) your macOS disk image whenever you delete files
|
||||||
you delete files inside the Virtual Machine. Without this step your
|
inside the Virtual Machine. Without this step your macOS disk image
|
||||||
macOS disk image will only ever get larger and will not shrink even
|
will only ever get larger and will not shrink even when you delete
|
||||||
when you delete lots of data inside macOS.
|
lots of data inside macOS.
|
||||||
- To enable TRIM, open the Terminal application and type the
|
- To enable TRIM, open the Terminal application and type the following
|
||||||
following command followed by pressing
|
command followed by pressing <kbd>enter</kbd> to tell macos to use
|
||||||
<kbd>enter</kbd> to tell macos to use the TRIM
|
the TRIM command on the hard disk when files are deleted:
|
||||||
command on the hard disk when files are deleted:
|
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
sudo trimforce enable
|
sudo trimforce enable
|
||||||
|
@ -306,14 +336,12 @@ sudo trimforce enable
|
||||||
|
|
||||||
You will be prompted to enter your account's password to gain the
|
You will be prompted to enter your account's password to gain the
|
||||||
privilege needed. Once you've entered your password and pressed
|
privilege needed. Once you've entered your password and pressed
|
||||||
<kbd>enter</kbd> the command will request confirmation
|
<kbd>enter</kbd> the command will request confirmation in the form of
|
||||||
in the form of two questions that require you to type
|
two questions that require you to type <kbd>y</kbd> (for a "yes"
|
||||||
<kbd>y</kbd> (for a "yes" response) followed by
|
response) followed by <kbd>enter</kbd> to confirm.
|
||||||
<kbd>enter</kbd> to confirm.
|
|
||||||
|
|
||||||
If you press <kbd>enter</kbd> without first typing
|
If you press <kbd>enter</kbd> without first typing <kbd>y</kbd> the
|
||||||
<kbd>y</kbd> the system will consider that a negative
|
system will consider that a negative response as though you said "no":
|
||||||
response as though you said "no":
|
|
||||||
|
|
||||||
``` plain
|
``` plain
|
||||||
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached devices, even though such devices may not have been validated for data integrity while using TRIM. Use of this tool to enable TRIM may result in unintended data loss or data corruption. It should not be used in a commercial operating environment or with important data. Before using this tool, you should back up all of your data and regularly back up data while TRIM is enabled. This tool is provided on an "as is" basis. APPLE MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES, SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND EFFORT IS WITH YOU.
|
||||||
|
@ -334,20 +362,78 @@ The default macOS configuration looks like this:
|
||||||
|
|
||||||
``` shell
|
``` shell
|
||||||
guest_os="macos"
|
guest_os="macos"
|
||||||
img="macos-catalina/RecoveryImage.img"
|
img="macos- big-sur/RecoveryImage.img"
|
||||||
disk_img="macos-catalina/disk.qcow2"
|
disk_img="macos- big-sur/disk.qcow2"
|
||||||
macos_release="catalina"
|
macos_release=" big-sur"
|
||||||
```
|
```
|
||||||
|
|
||||||
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
- `guest_os="macos"` instructs Quickemu to optimise for macOS.
|
||||||
- `macos_release="catalina"` instructs Quickemu to optimise for a
|
- `macos_release=" big-sur"` instructs Quickemu to optimise for a
|
||||||
particular macOS release.
|
particular macOS release.
|
||||||
- For example VirtIO Network and Memory Ballooning are available
|
- For example VirtIO Network and Memory Ballooning are available in
|
||||||
in Big Sur and newer, but not previous releases.
|
Big Sur and newer, but not previous releases.
|
||||||
- And VirtIO Block Media (disks) are supported/stable in Catalina
|
- And VirtIO Block Media (disks) are supported/stable in Catalina and
|
||||||
and newer.
|
newer.
|
||||||
|
|
||||||
There is further advice and information about macOS guests in the
|
# macOS compatibility
|
||||||
|
|
||||||
|
There are some considerations when running macOS via Quickemu.
|
||||||
|
|
||||||
|
- Supported macOS releases:
|
||||||
|
- Mojave
|
||||||
|
- Catalina
|
||||||
|
- Big Sur
|
||||||
|
- Monterey
|
||||||
|
- Ventura
|
||||||
|
- Sonoma
|
||||||
|
- `quickemu` will automatically download the required
|
||||||
|
[OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and
|
||||||
|
OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM).
|
||||||
|
- Optimised by default, but no GPU acceleration is available.
|
||||||
|
- Host CPU vendor is detected and guest CPU is optimised accordingly.
|
||||||
|
- [VirtIO Block
|
||||||
|
Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is
|
||||||
|
used for the system disk where supported.
|
||||||
|
- [VirtIO `usb-tablet`](http://philjordan.eu/osx-virt/) is used for
|
||||||
|
the mouse.
|
||||||
|
- VirtIO Network (`virtio-net`) is supported and enabled on macOS Big
|
||||||
|
Sur and newer, but earlier releases use `vmxnet3`.
|
||||||
|
- VirtIO Memory Ballooning is supported and enabled on macOS Big Sur
|
||||||
|
and newer but disabled for other support macOS releases.
|
||||||
|
- USB host and SPICE pass-through is:
|
||||||
|
- UHCI (USB 2.0) on macOS Catalina and earlier.
|
||||||
|
- XHCI (USB 3.0) on macOS Big Sur and newer.
|
||||||
|
- Display resolution can be changed via `quickemu` using `--width` and
|
||||||
|
`--height` command line arguments.
|
||||||
|
- **Full Duplex audio requires [VoodooHDA
|
||||||
|
OC](https://github.com/chris1111/VoodooHDA-OC) or pass-through a USB
|
||||||
|
audio-device to the macOS guest VM**.
|
||||||
|
- NOTE! [Gatekeeper](https://disable-gatekeeper.github.io/) and
|
||||||
|
[System Integrity Protection
|
||||||
|
(SIP)](https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection)
|
||||||
|
need to be disabled to install VoodooHDA OC
|
||||||
|
- File sharing between guest and host is available via
|
||||||
|
[virtio-9p](https://wiki.qemu.org/Documentation/9psetup) and [SPICE
|
||||||
|
webdavd](https://gitlab.gnome.org/GNOME/phodav/-/merge_requests/24).
|
||||||
|
- Copy/paste via SPICE agent is **not available on macOS**.
|
||||||
|
|
||||||
|
# macOS App Store
|
||||||
|
|
||||||
|
If you see *"Your device or computer could not be verified"* when you
|
||||||
|
try to login to the App Store, make sure that your wired ethernet device
|
||||||
|
is `en0`. Use `ifconfig` in a terminal to verify this.
|
||||||
|
|
||||||
|
If the wired ethernet device is not `en0`, then then go to *System
|
||||||
|
Preferences* -\> *Network*, delete all the network devices and apply the
|
||||||
|
changes. Next, open a terminal and run the following:
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
sudo rm /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist
|
||||||
|
```
|
||||||
|
|
||||||
|
Now reboot, and the App Store should work.
|
||||||
|
|
||||||
|
There may be further advice and information about macOS guests in the
|
||||||
project
|
project
|
||||||
[wiki](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests).
|
[wiki](https://github.com/quickemu-project/quickemu/wiki/03-Create-macOS-virtual-machines#automatically-create-macos-guests).
|
||||||
|
|
||||||
|
@ -378,12 +464,12 @@ quickget windows 11
|
||||||
quickemu --vm windows-11.conf
|
quickemu --vm windows-11.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
- Complete the installation as you normally would.
|
- Complete the installation as you normally would.
|
||||||
- All relevant drivers and services should be installed automatically.
|
- All relevant drivers and services should be installed automatically.
|
||||||
- A local administrator user account is automatically created, with
|
- A local administrator user account is automatically created, with
|
||||||
these credentials:
|
these credentials:
|
||||||
- Username: `Quickemu`
|
- Username: `Quickemu`
|
||||||
- Password: `quickemu`
|
- Password: `quickemu`
|
||||||
|
|
||||||
Further information is available from the project
|
Further information is available from the project
|
||||||
[wiki](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)
|
[wiki](https://github.com/quickemu-project/quickemu/wiki/04-Create-Windows-virtual-machines)
|
||||||
|
@ -401,4 +487,4 @@ Submit bug reports online at:
|
||||||
|
|
||||||
Full sources at: <https://github.com/quickemu-project/quickemu>
|
Full sources at: <https://github.com/quickemu-project/quickemu>
|
||||||
|
|
||||||
quickemu(1), quickemu_conf(1), quickgui(1)
|
quickemu(1), quickemu_conf(5), quickgui(1)
|
||||||
|
|
22
flake.lock
22
flake.lock
|
@ -2,12 +2,12 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"flake-schemas": {
|
"flake-schemas": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697467827,
|
"lastModified": 1721999734,
|
||||||
"narHash": "sha256-j8SR19V1SRysyJwpOBF4TLuAvAjF5t+gMiboN4gYQDU=",
|
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
|
||||||
"rev": "764932025c817d4e500a8d2a4d8c565563923d29",
|
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
|
||||||
"revCount": 29,
|
"revCount": 75,
|
||||||
"type": "tarball",
|
"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": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
|
@ -16,16 +16,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1714253743,
|
"lastModified": 1756217674,
|
||||||
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=",
|
"narHash": "sha256-TH1SfSP523QI7kcPiNtMAEuwZR3Jdz0MCDXPs7TS8uo=",
|
||||||
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994",
|
"rev": "4e7667a90c167f7a81d906e5a75cba4ad8bee620",
|
||||||
"revCount": 617818,
|
"revCount": 808864,
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.617818%2Brev-58a1abdbae3217ca6b702f03d3b35125d88a2994/018f25c6-e917-75c9-967b-ebda3b3dc4ae/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": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://flakehub.com/f/NixOS/nixpkgs/0.1.%2A.tar.gz"
|
"url": "https://flakehub.com/f/NixOS/nixpkgs/%2A.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
|
|
36
flake.nix
36
flake.nix
|
@ -2,7 +2,7 @@
|
||||||
description = "Quickemu flake";
|
description = "Quickemu flake";
|
||||||
inputs = {
|
inputs = {
|
||||||
flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
flake-schemas.url = "https://flakehub.com/f/DeterminateSystems/flake-schemas/*.tar.gz";
|
||||||
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz";
|
nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/*.tar.gz";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
|
@ -10,29 +10,33 @@
|
||||||
flake-schemas,
|
flake-schemas,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
}: let
|
}: let
|
||||||
forAllSystems = function:
|
# Define supported systems and a helper function for generating system-specific outputs
|
||||||
nixpkgs.lib.genAttrs [
|
supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
|
||||||
"x86_64-linux"
|
|
||||||
# TODO: Add support for these platforms in quickemu and quickget
|
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
|
||||||
# "aarch64-linux"
|
system = system;
|
||||||
# "x86_64-darwin"
|
pkgs = import nixpkgs { inherit system; };
|
||||||
# "aarch64-darwin"
|
});
|
||||||
] (system: function nixpkgs.legacyPackages.${system});
|
|
||||||
in {
|
in {
|
||||||
# Schemas tell Nix about the structure of your flake's outputs
|
# Define schemas for the flake's outputs
|
||||||
schemas = flake-schemas.schemas;
|
schemas = flake-schemas.schemas;
|
||||||
|
|
||||||
overlays.default = final: prev: {
|
# Define overlays for each supported system
|
||||||
quickemu = final.callPackage ./package.nix {};
|
overlays = {
|
||||||
|
default = final: prev: {
|
||||||
|
quickemu = final.callPackage ./package.nix { };
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = forAllSystems (pkgs: rec {
|
# Define packages for each supported system
|
||||||
quickemu = pkgs.callPackage ./package.nix {};
|
packages = forEachSupportedSystem ({pkgs, system, ...}: rec {
|
||||||
|
quickemu = pkgs.callPackage ./package.nix { };
|
||||||
default = quickemu;
|
default = quickemu;
|
||||||
});
|
});
|
||||||
|
|
||||||
devShells = forAllSystems (pkgs: {
|
# Define devShells for each supported system
|
||||||
default = pkgs.callPackage ./devshell.nix {};
|
devShells = forEachSupportedSystem ({pkgs, system, ...}: {
|
||||||
|
default = pkgs.callPackage ./devshell.nix { };
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
47
package.nix
47
package.nix
|
@ -6,13 +6,16 @@
|
||||||
, testers
|
, testers
|
||||||
, cdrtools
|
, cdrtools
|
||||||
, curl
|
, curl
|
||||||
|
, gawk
|
||||||
|
, glxinfo
|
||||||
, gnugrep
|
, gnugrep
|
||||||
, gnused
|
, gnused
|
||||||
, jq
|
, jq
|
||||||
, ncurses
|
, pciutils
|
||||||
, procps
|
, procps
|
||||||
, python3
|
, python3
|
||||||
, qemu
|
, qemu_full
|
||||||
|
, samba
|
||||||
, socat
|
, socat
|
||||||
, spice-gtk
|
, spice-gtk
|
||||||
, swtpm
|
, swtpm
|
||||||
|
@ -24,31 +27,44 @@
|
||||||
, zsync
|
, zsync
|
||||||
, OVMF
|
, OVMF
|
||||||
, OVMFFull
|
, OVMFFull
|
||||||
|
, quickemu
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
runtimePaths = [
|
runtimePaths = [
|
||||||
cdrtools
|
cdrtools
|
||||||
curl
|
curl
|
||||||
|
gawk
|
||||||
gnugrep
|
gnugrep
|
||||||
gnused
|
gnused
|
||||||
jq
|
jq
|
||||||
ncurses
|
pciutils
|
||||||
procps
|
procps
|
||||||
python3
|
python3
|
||||||
qemu
|
qemu_full
|
||||||
|
samba
|
||||||
socat
|
socat
|
||||||
swtpm
|
swtpm
|
||||||
unzip
|
unzip
|
||||||
usbutils
|
|
||||||
util-linux
|
util-linux
|
||||||
xdg-user-dirs
|
|
||||||
xrandr
|
xrandr
|
||||||
zsync
|
zsync
|
||||||
|
OVMF
|
||||||
|
OVMFFull
|
||||||
|
] ++ lib.optionals stdenv.isLinux [
|
||||||
|
glxinfo
|
||||||
|
usbutils
|
||||||
|
xdg-user-dirs
|
||||||
];
|
];
|
||||||
|
versionMatches =
|
||||||
|
builtins.match ''
|
||||||
|
.*
|
||||||
|
readonly[[:blank:]]VERSION="([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)"
|
||||||
|
.*
|
||||||
|
'' (builtins.readFile ./quickemu);
|
||||||
in
|
in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "quickemu";
|
pname = "quickemu";
|
||||||
|
version = builtins.concatStringsSep "" versionMatches;
|
||||||
src = lib.cleanSource ./.;
|
src = lib.cleanSource ./.;
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -56,7 +72,7 @@ stdenv.mkDerivation rec {
|
||||||
-e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${OVMFFull.firmware}","${OVMFFull.variables}" |' \
|
-e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${OVMFFull.firmware}","${OVMFFull.variables}" |' \
|
||||||
-e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${OVMF.firmware}","${OVMF.variables}" |' \
|
-e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${OVMF.firmware}","${OVMF.variables}" |' \
|
||||||
-e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
|
-e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
|
||||||
-e 's/Icon=.*qemu.svg/Icon=qemu/' \
|
-e 's,\$(command -v smbd),${samba}/bin/smbd,' \
|
||||||
quickemu
|
quickemu
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -65,12 +81,12 @@ stdenv.mkDerivation rec {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
installManPage docs/quickget.1 docs/quickemu.1 docs/quickemu_conf.1
|
installManPage docs/quickget.1 docs/quickemu.1 docs/quickemu_conf.5
|
||||||
install -Dm755 -t "$out/bin" chunkcheck quickemu quickget quickreport windowskey
|
install -Dm755 -t "$out/bin" chunkcheck quickemu quickget quickreport
|
||||||
|
|
||||||
# spice-gtk needs to be put in suffix so that when virtualisation.spiceUSBRedirection
|
# 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
|
# 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 \
|
wrapProgram $out/bin/$f \
|
||||||
--prefix PATH : "${lib.makeBinPath runtimePaths}" \
|
--prefix PATH : "${lib.makeBinPath runtimePaths}" \
|
||||||
--suffix PATH : "${lib.makeBinPath [ spice-gtk ]}"
|
--suffix PATH : "${lib.makeBinPath [ spice-gtk ]}"
|
||||||
|
@ -79,10 +95,13 @@ stdenv.mkDerivation rec {
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
passthru.tests = testers.testVersion { package = quickemu; };
|
||||||
|
|
||||||
|
meta = {
|
||||||
description = "Quickly create and run optimised Windows, macOS and Linux virtual machines";
|
description = "Quickly create and run optimised Windows, macOS and Linux virtual machines";
|
||||||
homepage = "https://github.com/quickemu-project/quickemu";
|
homepage = "https://github.com/quickemu-project/quickemu";
|
||||||
license = licenses.mit;
|
mainProgram = "quickemu";
|
||||||
maintainers = with maintainers; [ fedx-sudo flexiondotorg ];
|
license = lib.licenses.mit;
|
||||||
|
maintainers = with lib.maintainers; [ fedx-sudo flexiondotorg ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
69
quickreport
69
quickreport
|
@ -2,26 +2,56 @@
|
||||||
|
|
||||||
quick_report() {
|
quick_report() {
|
||||||
local GPUS
|
local GPUS
|
||||||
|
local OS_KERNEL
|
||||||
local PRETTY_NAME
|
local PRETTY_NAME
|
||||||
|
local QUICKEMU
|
||||||
local VERSION
|
local VERSION
|
||||||
if [ -e /etc/os-release ]; then
|
OS_KERNEL=$(uname -s)
|
||||||
PRETTY_NAME="$(grep PRETTY_NAME /etc/os-release | cut -d'"' -f2)"
|
|
||||||
|
if [ "${OS_KERNEL}" == "Darwin" ]; then
|
||||||
|
# Get macOS product name and version using swvers
|
||||||
|
if [ -x "$(command -v sw_vers)" ]; then
|
||||||
|
PRETTY_NAME="$(sw_vers -productName) $(sw_vers -productVersion)"
|
||||||
|
else
|
||||||
|
PRETTY_NAME="macOS"
|
||||||
|
fi
|
||||||
|
elif [ -e /etc/os-release ]; then
|
||||||
|
PRETTY_NAME=$(grep PRETTY_NAME /etc/os-release | cut -d'"' -f2)
|
||||||
else
|
else
|
||||||
PRETTY_NAME="Unknown OS"
|
PRETTY_NAME="Unknown OS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v quickemu &> /dev/null; then
|
CWD="$(dirname "${0}")"
|
||||||
VERSION=$(quickemu --version)
|
if [ -x "${CWD}/quickemu" ]; then
|
||||||
|
QUICKEMU="${CWD}/quickemu"
|
||||||
|
elif [ -x "$(command -v quickemu)" ]; then
|
||||||
|
QUICKEMU="$(command -v quickemu)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${QUICKEMU}" ]; then
|
||||||
|
VERSION=$(${QUICKEMU} --version)
|
||||||
echo \
|
echo \
|
||||||
"----------------------------------
|
"----------------------------------
|
||||||
Quickemu ${VERSION}
|
Quickemu ${VERSION}
|
||||||
----------------------------------"
|
----------------------------------"
|
||||||
echo -e "Distro:\t${PRETTY_NAME}"
|
echo -e "Distro:\t${PRETTY_NAME}"
|
||||||
echo -e "Kernel:\t$(uname -s -r -m)"
|
echo -e "Kernel:\t$(uname -s -r -m)"
|
||||||
echo -e "Memory:\t$(free --si -h | awk '/Mem:/{print $2}')"
|
|
||||||
|
if [ "${OS_KERNEL}" == "Darwin" ]; then
|
||||||
|
echo -e "Memory:\t$(($(sysctl -n hw.memsize) / (1048576*1024)))G"
|
||||||
|
else
|
||||||
|
# Determine the number of gigabytes of RAM in the host by extracting the first numerical value from the output.
|
||||||
|
echo -e "Memory:\t$(free --giga -h | tr ' ' '\n' | grep -m 1 "[0-9]" | cut -d'G' -f 1)G"
|
||||||
|
fi
|
||||||
|
|
||||||
# Break IFS on new line
|
# Break IFS on new line
|
||||||
IFS=$'\n'
|
IFS=$'\n'
|
||||||
GPUS=$(lspci | grep -i vga | cut -d':' -f3)
|
if [ "${OS_KERNEL}" == "Darwin" ]; then
|
||||||
|
# Get GPU information using system_profiler
|
||||||
|
GPUS=$(system_profiler SPDisplaysDataType | grep "Chipset Model" | awk -F: '{print $2}' | sed 's/^ *//')
|
||||||
|
else
|
||||||
|
GPUS=$(lspci | grep -i vga | cut -d':' -f3)
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$(echo "${GPUS}" | wc -l)" -eq 1 ]; then
|
if [ "$(echo "${GPUS}" | wc -l)" -eq 1 ]; then
|
||||||
echo "GPU:"
|
echo "GPU:"
|
||||||
|
@ -43,11 +73,11 @@ quick_report() {
|
||||||
VERSION=$(curl --version)
|
VERSION=$(curl --version)
|
||||||
echo \
|
echo \
|
||||||
"----------------------------------
|
"----------------------------------
|
||||||
curl $(echo "${VERSION}" | head -1 | cut -d' ' -f2)
|
curl $(echo "${VERSION}" | head -n 1 | cut -d' ' -f2)
|
||||||
----------------------------------"
|
----------------------------------"
|
||||||
echo -e "Libraries:$(echo "${VERSION}" | head -1 | cut -d')' -f2-)"
|
echo -e "Libraries:$(echo "${VERSION}" | head -n 1 | cut -d')' -f2-)"
|
||||||
echo -e "Protocols:$(echo "${VERSION}" | tail +3 | head -1 | cut -d':' -f2-)"
|
echo -e "Protocols:$(echo "${VERSION}" | tail -n +3 | head -n 1 | cut -d':' -f2-)"
|
||||||
echo -e "Features: $(echo "${VERSION}" | tail +4 | head -1 | cut -d':' -f2-)"
|
echo -e "Features: $(echo "${VERSION}" | tail -n +4 | head -n 1 | cut -d':' -f2-)"
|
||||||
else
|
else
|
||||||
echo \
|
echo \
|
||||||
"----------------------------------
|
"----------------------------------
|
||||||
|
@ -55,13 +85,20 @@ quick_report() {
|
||||||
----------------------------------"
|
----------------------------------"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command -v qemu-system-"$(uname -m)" &> /dev/null; then
|
local HOST_ARCH
|
||||||
VERSION=$(qemu-system-"$(uname -m)" -version | head -1 | cut -d' ' -f4)
|
HOST_ARCH=$(uname -m)
|
||||||
|
local QEMU_ARCH="${HOST_ARCH}"
|
||||||
|
if [ "${HOST_ARCH}" == "arm64" ]; then
|
||||||
|
QEMU_ARCH="aarch64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v "qemu-system-${QEMU_ARCH}" &> /dev/null; then
|
||||||
|
VERSION=$("qemu-system-${QEMU_ARCH}" --version | head -n 1 | cut -d' ' -f4)
|
||||||
echo \
|
echo \
|
||||||
"----------------------------------
|
"----------------------------------
|
||||||
QEMU ${VERSION}
|
QEMU ${VERSION}
|
||||||
----------------------------------"
|
----------------------------------"
|
||||||
qemu-system-"$(uname -m)" -cpu help
|
"qemu-system-${QEMU_ARCH}" -cpu help
|
||||||
else
|
else
|
||||||
echo \
|
echo \
|
||||||
"----------------------------------
|
"----------------------------------
|
||||||
|
@ -73,7 +110,11 @@ quick_report() {
|
||||||
"----------------------------------
|
"----------------------------------
|
||||||
CPU
|
CPU
|
||||||
----------------------------------"
|
----------------------------------"
|
||||||
lscpu
|
if [ "${OS_KERNEL}" == "Darwin" ]; then
|
||||||
|
sysctl -n machdep.cpu.brand_string
|
||||||
|
else
|
||||||
|
lscpu
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
clear
|
clear
|
||||||
|
|
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