GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich die Menge an installiertem RAM für ein bestimmtes Programm in Linux fälschen?

Erstellen Sie einen gefälschten meminfo und montieren Sie es über einem Original /proc/meminfo :

$ 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

Sie können die obigen Befehle auch in einem Mount-Namespace ausführen, der vom Rest des Systems isoliert ist. Referenzen:Wiederherstellen von gefälschtem /proc/meminfo


Nach einigem Nachdenken tat ich Folgendes:

Begonnen mit nano /proc/meminfo

MemTotal geändert , MemFree , MemAvailable , SwapTotal und SwapFree auf die gewünschten Werte und gespeichert in ~./meminfo

Hat dem Benutzer das boinc-Passwort sudo passwd boinc gegeben und Shell -- sudo nano /etc/passwd , fand die Zeile boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologin und den /usr/sbin/nologin geändert Teil zu /bin/bash

Dann habe ich RAM-Informationen mit Beispielen von hier gefälscht Wiederherstellen von gefälschtem /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

und mit free bestätigt dass es funktioniert hat

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

Dann zu Benutzer su - boinc gewechselt und das Programm einfach mit

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

BOINC Manager kann dann wie gewohnt gestartet werden

Voller Erfolg, Tasks, die zuvor nicht ausgeführt werden konnten, wurden heruntergeladen und liefen dann ohne Komplikationen


Linux
  1. Was ist die richtige Menge an Auslagerungsspeicher für ein modernes Linux-System?

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Wie kann man 90 % des freien Speichers füllen?

  4. Linux – /proc/mnt mit /proc/mounts verknüpfen?

  5. So legen Sie die Prozess-ID in Linux für ein bestimmtes Programm fest

So finden Sie die installierte Version von Redhat Linux

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Wie man die Interrupt/GPIO-Nummer für einen bestimmten Pin in Linux kennt

Wie kann ich die Anzahl und Größe von Linux-Ramdisks (/dev/ram0 - /dev/ram15) ändern?

Wie kann der Magic SysRq-Schlüssel für Linux-Benutzer gefährlich sein?