diff --git a/index.js b/index.js index c2b65d6..0b4ad82 100644 --- a/index.js +++ b/index.js @@ -19,12 +19,11 @@ const docker = new Docker({socketPath: '/var/run/docker.sock'}); const arch = os.arch().replace('x64', 'amd64'); const baseUrl = process.env.SUBFOLDER || '/'; const port = process.env.KASM_PORT || '443'; -const { spawn } = require('node:child_process'); let EULA; let images; let currentVersion; let sourceLocal = false; -let gpuInfo; +let gpuInfo = {}; let installSettings = {}; let upgradeSettings = {}; @@ -145,72 +144,9 @@ async function installerBlobs() { currentVersion = '1.19.0'; } images = await fetchWorkspaceList(currentVersion, arch); - gpuInfo = {}; - await new Promise((resolve) => { - let gpuData = []; - let gpuCmd = spawn('/gpuinfo.sh'); - gpuCmd.stdout.on('data', function(data) { - gpuData.push(data); - }); - gpuCmd.on('close', function(code) { - try { - if (code == 0) { - gpuInfo = JSON.parse(gpuData.join('')); - } else { - gpuInfo = {}; - } - } catch (err) { - // Manually backfill GPU info if available - gpuInfo = {}; - for (let i = 0; i < 10; i++) { - let num = i.toString(); - if (fs.existsSync('/dev/dri/card' + num)) { - gpuInfo['/dev/dri/card' + num] = "Unknown GPU"; - } - } - } - resolve(); - }); - }); } installerBlobs(); -// GPU image yaml merging -async function setGpu(imagesI) { - if (upgradeSettings['forceGpu'] !== undefined) { - installSettings = upgradeSettings; - } - const forceGpu = installSettings.forceGpu; - if (!forceGpu || forceGpu === 'disabled' || !forceGpu.includes('|')) { - console.error('setGpu: invalid or missing forceGpu value:', forceGpu); - return imagesI; - } - const [gpu, gpuName] = forceGpu.split('|'); - if (!gpu || !gpuName) { - console.error('setGpu: could not parse GPU path or name from forceGpu:', forceGpu); - return imagesI; - } - const card = gpu.slice(-1); - const render = (Number(card) + 128).toString(); - // Handle NVIDIA Gpus - let baseRun; - if (gpuName.includes('NVIDIA')) { - baseRun = JSON.parse('{"runtime":"nvidia","environment":{"NVIDIA_DRIVER_CAPABILITIES":"all","KASM_EGL_CARD":"/dev/dri/card' + card + '","KASM_RENDERD":"/dev/dri/renderD' + render + '"},"device_requests":[{"driver": "","count": -1,"device_ids": null,"capabilities":[["gpu"]],"options":{}}]}'); - } else { - baseRun = JSON.parse('{"environment":{"DRINODE":"/dev/dri/renderD' + render + '", "HW3D": true},"devices":["/dev/dri/card' + card + ':/dev/dri/card' + card + ':rwm","/dev/dri/renderD' + render + ':/dev/dri/renderD' + render + ':rwm"]}'); - } - let baseExec = JSON.parse('{"first_launch":{"user":"root","cmd": "bash -c \'chown -R kasm-user:kasm-user /dev/dri/*\'"}}'); - for (let i=0; i', {id: 'EULA'}).text(EULA); $('#container').append(EULADiv); @@ -230,14 +228,7 @@ async function pickSettings() { $('