aboutsummaryrefslogtreecommitdiff
path: root/deno
diff options
context:
space:
mode:
Diffstat (limited to 'deno')
-rw-r--r--deno/tools/vm.ts36
1 files changed, 29 insertions, 7 deletions
diff --git a/deno/tools/vm.ts b/deno/tools/vm.ts
index 37a7af0..b54c0d4 100644
--- a/deno/tools/vm.ts
+++ b/deno/tools/vm.ts
@@ -20,7 +20,10 @@ function normalizeArch(generalName: GeneralArch): Arch {
interface GeneralVmSetup {
name?: string[];
arch: GeneralArch;
+ cpuNumber?: number;
+ memory?: number;
disk: string;
+ usbTablet?: boolean;
sshForwardPort?: number;
tpm?: boolean;
kvm?: boolean;
@@ -28,7 +31,10 @@ interface GeneralVmSetup {
interface VmSetup {
arch: Arch;
+ cpuNumber: number;
+ memory: number;
disk: string;
+ usbTablet: boolean;
sshForwardPort?: number;
tpm: boolean;
kvm: boolean;
@@ -56,16 +62,27 @@ const MY_VMS: GeneralVmSetup[] = [
{
name: ["win"],
arch: "x86_64",
+ cpuNumber: 4,
+ memory: 16,
disk: getDiskFilePath("win"),
+ usbTablet: true,
tpm: true,
},
];
function normalizeVmSetup(generalSetup: GeneralVmSetup): VmSetup {
- const { arch, disk, sshForwardPort, tpm, kvm } = generalSetup;
+ const { arch, cpuNumber, memory, disk, usbTablet, sshForwardPort, tpm, kvm } =
+ generalSetup;
+
+ const normalizedArch = normalizeArch(arch);
+ const is64 = normalizedArch === "x86_64";
+
return {
- arch: normalizeArch(arch),
+ arch: normalizedArch,
disk,
+ cpuNumber: cpuNumber ?? 1,
+ memory: memory ?? (is64 ? 8 : 4),
+ usbTablet: usbTablet ?? false,
sshForwardPort,
tpm: tpm ?? false,
kvm: kvm ?? Deno.build.os === "linux",
@@ -95,11 +112,15 @@ function getLinuxHostArgs(kvm: boolean): string[] {
return kvm ? ["-enable-kvm"] : [];
}
-function getMachineArgs(arch: Arch): string[] {
- const is64 = arch === "x86_64";
+function getMachineArgs(vm: VmSetup): string[] {
+ const is64 = vm.arch === "x86_64";
const machineArgs = is64 ? ["-machine", "q35"] : [];
- const memory = is64 ? 8 : 4;
- return [...machineArgs, "-m", `${memory}G`];
+ return [...machineArgs, "-smp", String(vm.cpuNumber), "-m", `${vm.memory}G`];
+}
+
+function getDeviceArgs(vm: VmSetup): string[] {
+ const { usbTablet } = vm;
+ return usbTablet ? ["-usb", "-device", "usb-tablet"] : [];
}
function getNetworkArgs(sshForwardPort?: number): string[] {
@@ -158,7 +179,8 @@ function createQemuArgs(setup: VmSetup): string[] {
return [
getQemuBin(arch),
...getLinuxHostArgs(setup.kvm),
- ...getMachineArgs(arch),
+ ...getMachineArgs(setup),
+ ...getDeviceArgs(setup),
...getDisplayArgs(),
...getNetworkArgs(sshForwardPort),
...getDiskArgs(disk),