중요: Raspbian Stretch에 대한 최신 시스템 업데이트의 회귀

중요: Raspbian Stretch에 대한 최신 시스템 업데이트의 회귀

최근에 Stretch 시스템을 업데이트하여 systemd 버전 232-25+deb9u6을 제공했습니다.

매우 짜증나는 부작용은 내 /var/log/auth.log가 다음과 같이 채워져 있다는 것입니다.

Nov 30 07:13:34 rpi2-2 sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Nov 30 07:13:34 rpi2-2 su[29165]: Successful su for root by root
Nov 30 07:13:34 rpi2-2 su[29165]: + ??? root:root
Nov 30 07:13:34 rpi2-2 su[29165]: pam_unix(su:session): session opened for user root by (uid=0)
Nov 30 07:13:34 rpi2-2 su[29165]: pam_systemd(su:session): Cannot create session: Already running in a session
Nov 30 07:13:34 rpi2-2 su[29165]: pam_unix(su:session): session closed for user root
Nov 30 07:13:34 rpi2-2 sudo: pam_unix(sudo:session): session closed for user root
Nov 30 07:13:35 rpi2-2 sudo:       pi : TTY=unknown ; PWD=/home/pi ; USER=root ; COMMAND=/bin/su - -c echo 1 > /sys/class/backlight/rpi_backlight/bl_power

이 문제는 최신 버전의 systemd에서 수정된 것으로 보입니다(참조:https://github.com/systemd/systemd/pull/10832) 하지만 그 버전을 직접 만들 수는 없습니다.

1초에 두 번 "su"를 실행하여 auth.log가 루트 파티션을 빠르게 채우게 만드는 일부 코드가 있기 때문에 이것은 놀라운 문제입니다.

Raspbian Stretch용 최신 시스템 바이너리나 이 문제가 없는 이전 버전을 어떻게 얻을 수 있나요?

답변1

실제로 여기에는 몇 가지 질문이 있으며 각 질문에 대해 답변해 드리겠습니다. 여기서 해결책은 suStephen Kitt가 의견에서 지적한 대로 사용하지 않는 것 같습니다 .

다른 측면에 대해서도 이야기하겠습니다.

소스에서 빌드하기 위해 데비안 기반 시스템을 준비하는 방법(예: systemd)(먼저 샌드박스 시스템(예: VM)에서 이 작업을 몇 번 수행하는 것이 좋습니다)

$ sudo apt-get build-dep systemd

이제 빌드하려는 버전이 현재 버전보다 그다지 최신이 아니라고 가정하면 종속성은 일반적으로 동일하며 이는 패치된 systemd 버전에도 해당됩니다. 위의 명령은 systemd 자체를 제외하고 systemd를 빌드하는 데 필요한 모든 패키지를 가져옵니다. 아래에서는 가장 최신의 최고의 시스템을 얻을 수 있다는 점에 유의하십시오. 모든 전제 조건이 충족되는지 주의 깊게 확인하십시오.

그런 다음 소스 코드를 가져와 빌드합니다. systemd는 github에 있으므로 소스 코드를 얻으려면 git이 필요합니다.

$ sudo apt-get install git
$ git clone https://github.com/systemd/systemd.git

소스 코드가 빌드되는 정확한 방법은 관련 소프트웨어 개발자가 사용하는 빌드 시스템에 따라 다르며 systemd는 meson을 사용합니다. 제가 갔을 때 보니https://github.com/systemd/systemd, 아래로 스크롤했는데 프로젝트에 대한 정보가 있었습니다.

나는 다음 줄을 보았다 :

빌드 요구 사항에 대한 정보는 readme 파일에 제공됩니다.

그리고 Readme를 읽는 것은 항상 좋은 생각입니다!

$ sudo apt-get install meson
$ git clone https://github.com/systemd/systemd.git
$ meson systemd/ && ninja -C systemd
$ cd systemd; sudo ninja install

드라이브가 가득 차지 않도록 로그 보존을 구성하는 방법:

여기서는 rsyslog에 대한 로그 회전을 구성해야 합니다. logrotate에 대한 구성은 다음 위치에 있으며 /etc/logrotate.d우리가 원하는 파일은 다음과 같습니다./etc/logrotate.d/rsyslog

먼저 문서에 액세스하십시오.

  $ man logrotate.conf
  $ man logrotate

자, 이제 문서를 읽었으므로 로그 회전에 대한 키워드가 다음 파일로 회전할 시기를 지정하고, rotate회전 된 파일을 압축하고, 메일로 보냅니다(선택 사항). 파일을 회전시키려고 합니다. 나는 .sizecompressmailmailfirst

/etc/logrotate.d/rsyslog모습:

[...]
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
[...]

logrotate 구성 /var/log/auth:

[...]
/var/log/kern.log
/var/log/auth.log
{
  rotate 10
  size 100M
  compress
  mail [email protected]
  mailfirst
}
/var/log/user.log
[...]

이렇게 하면 거의 1Gb 크기의 파일을 최대 10개까지 보관할 수 있으며 100Mb, 파일이 100M에 도달하면 압축되어 다음 주소로 이메일로 전송됩니다.[이메일 보호됨]. 기본적으로 Rotatelog는 cron을 통해 매일 실행되며 매시간 실행하는 것이 좋습니다. man crontab.

관련 정보