나는 뛰고있어본케내 오래된 넷북에는 온보드 RAM이 2GB밖에 없었는데, 이는 특정 작업을 실행하기에 충분하지 않았습니다. 예를 들어, 그들은 장치의 RAM이 얼마나 낮은지 알기 때문에 이를 거부합니다.
내 zRAM에는 backing_dev 및 zstd 알고리즘이 활성화되어 있으므로 실제로 메모리 부족은 전혀 문제가 되지 않으며 특히 어려운 상황에서도 항상 사용할 수 있습니다 systemd-run --scope -p
(+16GB RAM이 필요한 프로그램을 성공적으로 실행하는 데 이를 사용했습니다).
더 까다로운 작업을 실행할 수 있도록 BOINC가 내 노트북에 2GB 이상의 RAM이 설치되어 있다고 생각하게 하려면 어떻게 해야 합니까?
답변1
가짜를 만들고 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에서 복구
답변2
잠시 생각한 끝에 나는 이렇게 했습니다.
다음으로 시작됨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 관리자를 시작할 수 있습니다
완전히 성공했습니다. 이전에 실행을 거부했던 작업이 다운로드를 시작한 후 아무런 문제 없이 실행되었습니다.