Fedora 21 akmods.service tempo de inicialização longo

2

Eu atualizei de 20 a 21 hoje e, durante a inicialização em 21, percebi que o tempo de inicialização era muito longo. O resultado de systemd-analyze blame : link

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.

Por que o akmod.service está demorando tanto?

    
por user95724 22.12.2014 / 15:18

1 resposta

2

Akmods são uma coisa que basicamente garante que você tenha certos módulos / drivers disponíveis para o kernel atual:

RPM Fusion/Livna distributes kernel-modules as kmod packages that contain modules precompiled for the latest kernels released by Fedora. That works fine for most people, but it doesn't work on systems with use different kernel -- like a self-compiled kernel, an older Fedora kernel or the quickly changing kernels from updates-testing/rawhide. The kmods-srpms can easily be rebuilt for those kernels using rpmbuild with a kmod-specific parameter that defines what kernel to build the kmod for. But that requires some knowledge of how to build rpms; this is what the script akmods tries to make easier for the end user, as it does all the steps required to build a kmod.rpm for the running kernel from a kmod-srpm.

But the user still needs to do something manually when he needs a kmod for a newly installed kernel. This is what the akmodsd daemon is trying to fix: it's a script normally started from init on bootup that checks if all kmods are present. If a kmod is not found then akmods tries to rebuild kmod.srpms found in a certain place in the filesystem; if that works it will install the rebuilt kmod into the running kernel automatically.

This is similar to dkms, but has one important benefit: one only needs to maintain a single kmod spec file which can be used both in the repos buildsystem and on the clients systems if needed.

Fonte: RPMfusion: Packaging / KernelModules / Akmods

Por isso, leva muito tempo, porque um novo módulo pode precisar ser construído, ou é apenas verificar se os módulos corretos estão disponíveis, o que também pode demorar um pouco.

Método 1:

Você pode removê-lo com sudo dnf erase akmods , mas isso provavelmente removerá os módulos que dependem dele (geralmente os de terceiros do RPMfusion ou similares). Você pode quais pacotes precisam do akmod com 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

Portanto, no meu caso, os akmods são para o VirtualBox e drivers sem fio, o que eu meio que preciso.

Método 2:

Também é possível desativá-lo com:

sudo systemctl disable akmods

No entanto, quando você atualizar o kernel, ele provavelmente não terá os drivers corretos disponíveis, a menos que você execute akmods manualmente:

sudo akmods

Observe que o pacote kernel-devel apropriado deve estar instalado e atualizado, e isso provavelmente não funcionará com + kernels de depuração.

Eu fiz isso e parece funcionar até agora (inicializa bem menos de um minuto com o tamanho do diário reduzido também (em um sistema antigo com um HDD)) . Você pode ir mais longe desabilitando vários outros serviços também, mas tudo depende se você quer um sistema um pouco mais enxuto, ou um que funcione com a maioria das coisas. Estes serviços existem por razões geralmente úteis ...

N.B. outro método de análise de serviços de inicialização, etc., é executar:

systemd-analyze plot > systemd-analyze.svg

Isso produz uma imagem que você pode usar para determinar quais serviços estão demorando mais tempo. Também coberto aqui .

    
por 05.11.2015 / 16:35