feat: CPU configuration
* feat: CPU configuration
This commit is contained in:
parent
ddcf40b68f
commit
c2edb081bb
4 changed files with 40 additions and 24 deletions
|
@ -1,34 +1,16 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -Eeuo pipefail
|
set -Eeuo pipefail
|
||||||
|
|
||||||
KVM_ERR=""
|
|
||||||
KVM_OPTS=""
|
|
||||||
|
|
||||||
if [ -e /dev/kvm ] && sh -c 'echo -n > /dev/kvm' &> /dev/null; then
|
|
||||||
if ! grep -q -e vmx -e svm /proc/cpuinfo; then
|
|
||||||
KVM_ERR="(vmx/svm disabled)"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
[ -e /dev/kvm ] && KVM_ERR="(no write access)" || KVM_ERR="(device file missing)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$KVM_ERR" ]; then
|
|
||||||
if [ "$ARCH" == "amd64" ]; then
|
|
||||||
error "KVM acceleration not detected $KVM_ERR, see the FAQ about this."
|
|
||||||
[[ "$DEBUG" != [Yy1]* ]] && exit 88
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
KVM_OPTS=",accel=kvm -enable-kvm -cpu host"
|
|
||||||
fi
|
|
||||||
|
|
||||||
DEF_OPTS="-nodefaults"
|
DEF_OPTS="-nodefaults"
|
||||||
RAM_OPTS=$(echo "-m $RAM_SIZE" | sed 's/MB/M/g;s/GB/G/g;s/TB/T/g')
|
RAM_OPTS=$(echo "-m $RAM_SIZE" | sed 's/MB/M/g;s/GB/G/g;s/TB/T/g')
|
||||||
CPU_OPTS="-smp $CPU_CORES,sockets=1,dies=1,cores=$CPU_CORES,threads=1"
|
CPU_OPTS="-cpu $CPU_MODEL -smp $CPU_CORES,sockets=1,dies=1,cores=$CPU_CORES,threads=1"
|
||||||
MAC_OPTS="-machine type=q35,usb=off,dump-guest-core=off,hpet=off${KVM_OPTS}"
|
MAC_OPTS="-machine type=q35,usb=off,dump-guest-core=off,hpet=off${KVM_OPTS}"
|
||||||
SERIAL_OPTS="-serial mon:stdio -device virtio-serial-pci,id=virtio-serial0,bus=pcie.0,addr=0x3"
|
SERIAL_OPTS="-serial mon:stdio -device virtio-serial-pci,id=virtio-serial0,bus=pcie.0,addr=0x3"
|
||||||
EXTRA_OPTS="-device virtio-balloon-pci,id=balloon0 -object rng-random,id=rng0,filename=/dev/urandom -device virtio-rng-pci,rng=rng0"
|
EXTRA_OPTS="-device virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x4"
|
||||||
|
EXTRA_OPTS="$EXTRA_OPTS -object rng-random,id=objrng0,filename=/dev/urandom"
|
||||||
|
EXTRA_OPTS="$EXTRA_OPTS -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pcie.0,addr=0x1c"
|
||||||
|
|
||||||
ARGS="$DEF_OPTS $CPU_OPTS $RAM_OPTS $MAC_OPTS $SERIAL_OPTS $NET_OPTS $DISK_OPTS $DISPLAY_OPTS $BOOT_OPTS $EXTRA_OPTS $ARGUMENTS"
|
ARGS="$DEF_OPTS $CPU_OPTS $RAM_OPTS $MAC_OPTS $DISPLAY_OPTS $SERIAL_OPTS $NET_OPTS $DISK_OPTS $BOOT_OPTS $EXTRA_OPTS $ARGUMENTS"
|
||||||
ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ')
|
ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ')
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
32
src/cpu.sh
Normal file
32
src/cpu.sh
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -Eeuo pipefail
|
||||||
|
|
||||||
|
# Docker environment variables
|
||||||
|
: ${CPU_MODEL:='host'}
|
||||||
|
|
||||||
|
if [[ "$ARCH" == "amd64" && "$KVM" != [Nn]* ]]; then
|
||||||
|
|
||||||
|
if [ -e /dev/kvm ] && sh -c 'echo -n > /dev/kvm' &> /dev/null; then
|
||||||
|
if ! grep -q -e vmx -e svm /proc/cpuinfo; then
|
||||||
|
KVM_ERR="(vmx/svm disabled)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
[ -e /dev/kvm ] && KVM_ERR="(no write access)" || KVM_ERR="(device file missing)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$KVM_ERR" ]; then
|
||||||
|
error "KVM acceleration not detected $KVM_ERR, this will cause a major loss of performance."
|
||||||
|
error "See the FAQ on how to enable it, or skip this error by setting KVM=N (not recommended)."
|
||||||
|
[[ "$DEBUG" != [Yy1]* ]] && exit 88
|
||||||
|
[[ "$CPU_MODEL" == "host"* ]] && CPU_MODEL="max"
|
||||||
|
else
|
||||||
|
KVM_OPTS=",accel=kvm -enable-kvm"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
[[ "$CPU_MODEL" == "host"* ]] && CPU_MODEL="max"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
|
@ -12,6 +12,7 @@ cd /run
|
||||||
. display.sh # Initialize display
|
. display.sh # Initialize display
|
||||||
. network.sh # Initialize network
|
. network.sh # Initialize network
|
||||||
. boot.sh # Configure boot
|
. boot.sh # Configure boot
|
||||||
|
. cpu.sh # Initialize processor
|
||||||
. config.sh # Configure arguments
|
. config.sh # Configure arguments
|
||||||
|
|
||||||
trap - ERR
|
trap - ERR
|
||||||
|
|
|
@ -12,7 +12,8 @@ trap 'error "Status $? while: $BASH_COMMAND (line $LINENO/$BASH_LINENO)"' ERR
|
||||||
# Docker environment variables
|
# Docker environment variables
|
||||||
|
|
||||||
: ${BOOT:=''} # URL of the ISO file
|
: ${BOOT:=''} # URL of the ISO file
|
||||||
: ${DEBUG:='N'} # Enable debugging mode
|
: ${KVM:='Y'} # Enable KVM acceleration
|
||||||
|
: ${DEBUG:='N'} # Disable debugging mode
|
||||||
: ${ALLOCATE:='Y'} # Preallocate diskspace
|
: ${ALLOCATE:='Y'} # Preallocate diskspace
|
||||||
: ${ARGUMENTS:=''} # Extra QEMU parameters
|
: ${ARGUMENTS:=''} # Extra QEMU parameters
|
||||||
: ${CPU_CORES:='1'} # Amount of CPU cores
|
: ${CPU_CORES:='1'} # Amount of CPU cores
|
||||||
|
|
Loading…
Reference in a new issue