web-dev-qa-db-ja.com

Linuxの特定のプログラムのインストール量RAMを偽造するにはどうすればよいですか?

私は [〜#〜] boinc [〜#〜] を2GBのRAMオンボードしか搭載していない古いネットブックで実行しているので、十分ではありませんいくつかのタスクを実行するために。同様に、彼らは拒否することを拒否し、RAMデバイスの低さを確認します。

私はbacking_devとzstdアルゴリズムを有効にしたzRAMを持っているので、実際には、メモリ不足が問題になることはなく、特に厳しい状況では常にsystemd-run --scope -p(+16 GB RAM)を要求するプログラムを正常に実行しました)

私のラップトップに2 GBを超えるRAMがインストールされているため、これらの厳しいタスクを実行できるようにするために、BOINCにどのように思わせることができますか?

いくつか考えた後、私はこれを行いました:

nano /proc/meminfoで始まる

MemTotalMemFreeMemAvailableSwapTotalおよびSwapFreeを目的の値に変更し、〜。/ meminfoに保存しました

ユーザーにboincパスワードSudo passwd boincとシェル-Sudo nano /etc/passwdを与え、行boinc:x:129:141:BOINC core client,,,:/var/lib/boinc-client:/usr/sbin/nologinを見つけて、/usr/sbin/nologin部分を/bin/bashに変更しました

それから私は偽造RAMここからの例を使用した情報 偽造/ 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

それが機能したことをfreeで確認しました

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

次に、ユーザーsu - boincに切り替えて、プログラムを起動しました

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

その後、BOINC Managerを通常どおり起動できます

完全な成功、以前は実行を拒否していたタスクがダウンロードを開始し、問題なく実行された

偽物meminfoを作成し、元の/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

上記のコマンドは、システムの他の部分から分離されたマウント名前空間で実行することもできます。参照: 偽装/ proc/meminfoからの回復

54