In CentOS/RHEL, a volte è complesso determinare quale parte della sequenza di avvio richiede molto tempo. Durante la sequenza di avvio si verificano diversi eventi e talvolta il livello predefinito dei registri non è sufficiente per determinare il componente che causa il problema. In tal caso, i passaggi descritti in questo post possono essere utilizzati per raccogliere più dati su una possibile causa principale della sequenza di avvio lento.
1. Modifica la riga del kernel della voce del menu di grub corrispondente in /etc/grub.conf . Ad esempio:
[...] root (hd0,0) kernel /vmlinuz-3.8.13-68.3.4.el6uek.x86_64 ro root=/dev/mapper/vg_ol67-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_ol67/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_ol67/lv_root KEYBOARDTYPE=pc KEYTABLE=be-latin1 rd_NO_DM rhgb quiet [...]
E aggiungi il seguente parametro:
initcall_debug
Ad esempio, di seguito viene mostrato un argomento di avvio del kernel risultante:
[...] root (hd0,0) kernel /vmlinuz-3.8.13-68.3.4.el6uek.x86_64 ro root=/dev/mapper/vg_ol67-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_ol67/lv_swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_ol67/lv_root KEYBOARDTYPE=pc KEYTABLE=be-latin1 rd_NO_DM rhgb quiet initcall_debug [...]
E riavvia il sistema, usando questa voce di menu nel menu di grub all'avvio.
2. Dopo aver aggiunto questo parametro, sia la console seriale che l'output del comando dmesg stamperanno anche il tempo necessario per il completamento di una chiamata init. Ad esempio:
calling init_autofs4_fs+0x0/0x2a [autofs4] @ 1581 initcall init_autofs4_fs+0x0/0x2a [autofs4] returned 0 after 7463 usecs