오늘 20에서 21로 업데이트했는데 21로 부팅하니 부팅 시간이 엄청나게 길어지는 걸 발견했습니다. 결과 systemd-analyze blame
:http://pastie.org/9794252
systemctl status akmods.service
:
● akmods.service - Builds and install new kmods from akmod packages
Loaded: loaded (/usr/lib/systemd/system/akmods.service; enabled)
Active: active (exited) since Mon 2014-12-22 15:00:42 CET; 5min ago
Main PID: 849 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/akmods.service
Dec 22 15:00:42 fundora akmods[849]: Checking kmods exist for 3.17.7-200.fc20.x86_64[ OK ]
Dec 22 15:00:42 fundora systemd[1]: Started Builds and install new kmods from akmod packages.
akmod.service가 왜 그렇게 오래 걸리나요?
답변1
Akmod는 기본적으로 현재 커널에 사용할 수 있는 일부(일반적으로 타사) 모듈/드라이버가 있는지 확인합니다.
RPM Fusion/Livna는 Fedora의 최신 커널 릴리스용으로 사전 컴파일된 모듈이 포함된 kmod 패키지로 커널 모듈을 배포합니다. 이는 대부분의 사람들에게 잘 작동하지만 자체 컴파일된 커널, 이전 Fedora 커널 또는 최신 테스트/생가죽에서 빠르게 변화하는 커널과 같은 다른 커널을 사용하는 시스템에서는 작동하지 않습니다. rpmbuild를 사용하여 이러한 커널에 대해 kmods-srpms를 쉽게 재구축할 수 있으며, kmod 관련 매개변수를 사용하여 kmod가 빌드될 커널을 정의할 수 있습니다. 그러나 이를 위해서는 rpms 구축 방법에 대한 지식이 필요합니다. 따라서 akmods 스크립트는 실행 중인 커널을 위해 kmod-srpm에서 kmod.rpm을 구축하는 데 필요한 모든 단계를 수행하므로 최종 사용자가 이를 더 쉽게 만들려고 노력합니다.
그러나 사용자가 새로 설치된 커널에 kmod를 제공해야 하는 경우 여전히 일부 수동 작업을 수행해야 합니다. 이것이 바로 akmodsd 데몬이 수정하려고 하는 것입니다. 이는 일반적으로 부팅 시 init에서 시작되어 모든 kmod가 있는지 확인하는 스크립트입니다. kmod가 발견되지 않으면 akmods는 파일 시스템 어딘가에서 발견된 kmod.srpm을 재구축하려고 시도합니다. 유효한 경우 재구축된 kmod를 실행 중인 커널에 자동으로 설치합니다.
이는 dkms와 유사하지만 중요한 이점이 있습니다. 하나의 kmod 사양 파일만 유지 관리되며 필요할 때 저장소 빌드 시스템과 클라이언트 시스템 모두에서 사용할 수 있습니다.
출처: RPMfusion:Packaging/KernelModules/Akmods
따라서 새 모듈을 구축해야 하거나 올바른 모듈을 사용할 수 있는지 확인해야 할 수도 있고 시간이 오래 걸릴 수도 있으므로 시간이 오래 걸릴 수 있습니다.
방법 1: 다음을 통해 비활성화할 수 있습니다.
sudo systemctl disable akmods
그러나 커널을 업데이트할 때 akmmods를 수동으로 실행하지 않으면 올바른 드라이버를 사용하지 못할 수 있습니다.
sudo akmods
적절한 kernel-devel
패키지를 설치하고 최신 상태로 유지해야 합니다. 이는 +debug 커널에서는 작동하지 않을 수 있습니다.
나는 이것을 해왔고 지금까지 작동하는 것 같습니다(1분 이내에 시작됩니다.저널 크기 감소(하드 드라이브가 있는 구형 시스템의 경우)). 다양한 다른 서비스를 추가로 비활성화할 수 있습니다(참조:질소오트두번째elow), 그러나 그것은 모두 더 간결하고 빠른 시스템을 원하는지 아니면 대부분의 작업에 적합한 시스템을 원하는지에 따라 다릅니다(예를 들어 저는 이전 시스템에서 LVM을 사용하지 않았습니다). 이러한 서비스는 일반적으로 유용한 이유로 존재합니다.
방법 2:
또는 제거를 사용 sudo dnf erase akmods
하지만 이에 의존하는 모듈(일반적으로 RPMfusion 또는 유사한 타사 모듈)이 제거될 수 있습니다. 다음 명령을 사용하면 akmod가 필요한 패키지를 확인할 수 있습니다 sudo rpm -q --whatrequires akmods
.
~$ sudo rpm -q --whatrequires akmods
akmod-wl-6.30.223.248-9.fc22.x86_64
akmod-VirtualBox-4.3.32-1.fc22.x86_64
따라서 제 경우에는 VirtualBox 및 무선 드라이버용 akmods만 있으면 됩니다.
서비스 시작 등을 확인하는 또 다른 방법은 다음을 실행하는 것입니다.
systemd-analyze plot > systemd-analyze.svg
이렇게 하면 어떤 서비스가 가장 오래 걸리는지 확인하는 데 사용할 수 있는 이미지가 생성됩니다. 또한 다루어짐여기.