私は [〜#〜] boinc [〜#〜] を2GBのRAMオンボードしか搭載していない古いネットブックで実行しているので、十分ではありませんいくつかのタスクを実行するために。同様に、彼らは拒否することを拒否し、RAMデバイスの低さを確認します。
私はbacking_devとzstdアルゴリズムを有効にしたzRAMを持っているので、実際には、メモリ不足が問題になることはなく、特に厳しい状況では常にsystemd-run --scope -p
(+16 GB RAM)を要求するプログラムを正常に実行しました)
私のラップトップに2 GBを超えるRAMがインストールされているため、これらの厳しいタスクを実行できるようにするために、BOINCにどのように思わせることができますか?
いくつか考えた後、私はこれを行いました:
nano /proc/meminfo
で始まる
MemTotal
、MemFree
、MemAvailable
、SwapTotal
および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からの回復