내 보드에 systemd
/running 이 하나 있습니다. journald
시스템은 버전 216으로 구축 yocto
되었습니다 systemd
.
내가 얻고 싶은 것은 전달할 수 있는 커널 부트 로그입니다 journalctl -k
. 그러나 제가 알 수 있는 한 이 옵션의 긴 버전은 --dmesg
이것이 커널 링 버퍼에서 검색된 것이라고 생각하게 만듭니다. 물론, 시스템이 며칠 동안 실행된다면 이 정보를 얻지 못할 수도 있습니다. 여기에 대한 나의 이해가 정확합니까?
이제 문제는 journald
시스템이 부팅되자마자 이 정보를 덤프할 수 있는 옵션이 있느냐는 것입니다. 그렇지 않다면 journalctl -k > dmesg.log
그냥 스타트업의 마지막 단계라고 불러도 충분할까요?
답변1
Systemd는 모든 것을 로그에 저장합니다. 적어도 내 노트북에서는 적당히 사용하면 1년 전의 기본 설정으로 돌아갈 만큼 충분히 큽니다.
이것이 충분하지 않으면 수정할 수 있습니다로그 구성 파일
그런 다음 사용에 관한 것입니다 journalctl -t kernel
( -k
이전 부츠를 보고 필터를 사용할 수도 있다는 점을 제외하면 과 유사).
답변2
물론, 시스템이 며칠 동안 실행된다면 이 정보를 얻지 못할 수도 있습니다. 여기에 대한 나의 이해가 정확합니까?
예. 생성되는 로그 정보의 양에 따라 다르지만마지막으로부팅 정보는 커널 링 버퍼와 시스템 로그의 시작 부분부터 스크롤됩니다. 다른 사람의 시스템에 얼마나 오랜 시간이 걸렸는지는 알 수 없지만 내 시스템의 가동 시간은 수백 일에 달했고 부팅 로그 데이터는 시스템 로그 상단에 올라간 지 오래되었습니다. 이는 거대한 결합 로그 스트림의 단점 중 하나입니다. 모든 것이 팬인된 다음 팬아웃됩니다.
따라서 FreeBSD, NetBSD 및 그 파생 상품에 대해 알아보세요. 모두 로컬 파일 시스템이 마운트된 후 부팅 시 한 번 실행되는 서비스가 있습니다. 다음을 수행하십시오.
dmesg > /var/run/dmesg.boot
/var/run/dmesg.boot
따라서 커널 로그가 실제 로그 이상으로 롤링된 경우에도 부팅 시 커널 로그의 스냅샷을 사용할 수 있습니다.
동일한 기능을 갖춘 시스템 서비스를 작성하기만 하면 됩니다. 쉘을 사용하여 리디렉션 ExecStart=/bin/sh -c "exec dmesg > /run/dmesg.boot"
또는 이와 유사한 것을 사용하십시오.로랑 베르코redirfd
또는nosh 도구 세트fdredir
ExecStart=/usr/local/bin/fdredir --write 1 /run/dmesg.boot dmesg
.
journalctl -k
커널 로그만이 아닌 systemd 로그의 스냅샷을 찍으려면 이를 교체하고 서비스로 만드세요 Type=oneshot
. 사람들이 원하는 것으로 만들거나 , 사람들이 원하는 서비스 multi-user.target
로 만드세요 . 로컬 파일 시스템을 마운트한 후에는 주문할 필요가 없습니다(예: ). FreeBSD와 OpenBSD 는 디스크 파일 시스템일 수 있으므로 이 순서가 필요합니다 . 시스템 운영 체제에는 서비스 이전에 부트스트랩에 생성되는 "API 파일 시스템"이 있습니다.DefaultDependencies=no
basic.target
local-fs.target
/var/run
/run
(개인적으로 선호하는 접근 방식은 애초에 거대한 중앙 로그 스트림을 갖지 않는 것입니다. 전용 서비스는 커널 로그 소스를 제공합니다.홀로그리고 개인 로그 디렉토리에 로그인하십시오. 이것이 필요하다더 길게상단에서 마지막 안내 메시지가 스크롤되는 지점에 도달합니다. 또한 이전 시작의 시작 로그도 포함됩니다.
그러나 systemd 세계에서는 이를 설정하는 것이 /run/dmesg.boot
. 이것은 다음과 같은 것을 사용하여 수행됩니다.fifo-listen
그리고klog-read
, 또는socklog
. 출력은 안정적으로 크기 제한이 있고 자동으로 회전되는 전용 로그 디렉터리에 표준으로 쓰는 로그 데몬을 통해 파이프됩니다.데몬 도구/달리다/s6/간식/범인아기 돌보기 프로그램.
답변3
커널 로그는 systemd 로그에 복사됩니다. 이 작업을 수동으로 수행할 필요는 없습니다.
설명하다
systemd-journald는 로그 데이터를 수집하고 저장하는 시스템 서비스입니다. 다양한 소스에서 받은 로그 정보를 기반으로 구조화된 인덱스 로그를 생성하고 유지 관리합니다.
· 커널 로그 메시지, kmsg 기준