GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo falsificar la cantidad de RAM instalada para un programa específico en Linux?

Crea un meminfo falso y montarlo sobre un /proc/meminfo original :

$ mkdir fake-meminfo && cd fake-meminfo
$ cp /proc/meminfo .
$ chmod +w meminfo
$ sed -Ei 's,^MemTotal:        [0-9]+ kB,MemTotal:        8839012 kB,' meminfo   # replace 8839012 with an amount of RAM you want to pretend you have
$ free -m  # check how much RAM you have now
              total        used        free      shared  buff/cache   available
Mem:           7655        1586        3770         200        2298        5373
$ sudo mount --bind meminfo /proc/meminfo                                 
$ free -m  # check how much RAM you pretend to have after replacing /proc/meminfo
              total        used        free      shared  buff/cache   available
Mem:           8631        2531        3800         201        2299        5403
$ sudo umount /proc/meminfo # restore an original /proc/meminfo
$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7655        1549        3806         200        2299        5410

También puede ejecutar los comandos anteriores en un espacio de nombres de montaje aislado del resto del sistema. Referencias:Recuperarse de falsificar /proc/meminfo


Después de pensarlo un poco, hice esto:

Comenzó con nano /proc/meminfo

Cambiado MemTotal , MemFree , MemAvailable , SwapTotal y SwapFree a los valores deseados y guardados en ~./meminfo

Le dio al usuario la contraseña boinc sudo passwd boinc y shell -- sudo nano /etc/passwd , encontró la línea boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologin y cambió el /usr/sbin/nologin parte a /bin/bash

Luego falsifiqué información de RAM usando ejemplos de aquí Recuperarse de falsificar /proc/meminfo

unshare -m bash    #unshares mount spaces, for specific program "bash" only (and for whatever you want to launch from it)
mount --bind ~./meminfo /proc/meminfo      #substitutes real meminfo data with fake one

y confirmado con free que funcionó

          total        used        free         shared     buff/cache  available
Mem:     2321456       21456     2300000           0           0     2300000
Swap:     5000000     1000000     4000000

Luego cambió al usuario su - boinc y acaba de lanzar el programa con

boinc --check_all_logins --redirectio --dir /var/lib/boinc-client

BOINC Manager se puede iniciar entonces como de costumbre

Éxito total, tareas que antes se negaban a ejecutarse, comenzaron a descargarse y luego se ejecutaron sin complicaciones


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Linux:¿cómo obtener la dirección IPv4 para una interfaz desde /proc?

  3. ¿Cómo llenar el 90% de la memoria libre?

  4. Linux – ¿Vincular /proc/mnt a /proc/mounts?

  5. /proc/[pid]/pagemaps y /proc/[pid]/maps | linux

¿Cuál es la cantidad correcta de espacio de intercambio para un sistema Linux moderno?

Cómo encontrar la versión de Redhat Linux instalada

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

¿Cómo configurar el swapiness por proceso para Linux?

¿Cómo puedo probar la memoria RAM para detectar daños en los datos en un sistema basado en ARM?