Fedora 16 zrychlenie boot-u

Zdravim,
bezne mi boot F16 trval okolo 60s, zistite pomocou:
$ systemd-analyze
a boot jednotlivych procesov:
$ systemd-analyze blame

Podarilo sa mi zrazit boot time na 30s a to tak, ze som zamaskoval procesy, ktore su podla mna nepotrebne:
$ systemctl mask avahi-daemon.service sendmail.service sm-client.service systemd-readahead-collect.service systemd-readahead-replay.service iscsi.service
Ked potom chcete zrobit unmask predtym zamaskovaneho procesu, staci ho vymazat z /etc/systemd/system.

Tiez sa mi podarilo zrychlit GNOME 3.2, a to vypnutim zbytocnych programov pri starte:
Alt+F2 --> gnome-session-properties
A tam vypnut:
Backup Monitor (Deja Dup)
Caribou
Desktop Sharing
Evolution Alarm Notify
GNOME Login Sound
Orca Screen Reader

  • dalsie, ktore nepotrebujete.

Celkovo sa mi teda zrychlil boot time o 30s. Pre niekoho zname veci, ale predsa, niekomu to mozno pomoze.

Zrovna nedávno jsem chtěl otevřít toto téma s doporučením, které procesy lze bezpečně vypnout při bootu.
Osobně jsem stopnul a disable tyto procesy:
sm-client.service,
sendmail.service
iscsi.service

Další služby jsem nevypínal (radši než abych půl dne opravoval problémy :slight_smile: ).
Takže se ptám…
Jaký je rozdíl mezi mask a disable??
Jaké služby ještě můžu povypínat (abych něco nepokazil :slight_smile: )?

Momentálně mi systemctl-analyze blame píše nevyšší hodnotu u této služby: udev-settle.service. Lze bezpečně vypnout? :slight_smile:
Adepti budou ty co napsal rootMatt.
Jinak jsem čerpál informace odsud:


http://0pointer.de/blog/projects/blame-game.html

Z man stranok:
disable:
Disables one or more units. This removes all symlinks to the
specified unit files from the unit configuration directory, and
hence undoes the changes made by enable. Note however that this
removes all symlinks to the unit files (i.e. including manual
additions), not just those actually created by enable. This call
implicitly reloads the systemd daemon configuration after
completing the disabling of the units. Note that this command does
not implicitly stop the units that is being disabled. If this is
desired an additional stopcommand should be executed afterwards.

mask:
Mask one or more unit files, as specified on the command line. This
will link these units to /dev/null, making it impossible to start
them. This is a stronger version of disable, since it prohibits all
kinds of activation of the unit, including manual activation. Use
this option with care.

S udev-settle.service si nie som isty. Tak isto mam pri nom najvyssiu hodnotu.

Googloval jsem po netu a výsledek pátrání je asi následující:

  1. Nejprve je nutné se zbavit LVM, RAID, iSCSI nebo enkryptovaní disků nebo jejich oddílů. (nejlépe už při samotné instalaci Fedory). Místo toho vytvořit jen klasické oddíly s EXT4 formátem.

  2. Po dokončení instalace zamaskovat následující servisy:

systemctl mask fedora-wait-storage.service fedora-storage-init-late.service fedora-readonly.service \

fedora-storage-init.service fedora-loadmodules.service fedora-autoswap.service fedora-configure.service rc-local.service

  1. Dále vzít v potaz servisy jako abrt, rsyslog (v případě vypnutí tohoto servisu jdou všechny logy do kmsg, který redukuje přístupy na disk a je pro většinu uživatelů dostačující), audit, cpupower, ip6tables, lldapd, mcelog, multipathd, lvm2-monitor, mdmonitor, fcoe, dm-event, sendmail, atd.

  2. Zjistit, jaké další servisy jsou stále aktivní příkazem

systemctl list-unit-files

a pokud některý z nich není potřebný, zrušit ho také.

  1. Ten, kdo chce dosáhnout opravdu velmi krátkých časů startu může experimentovat se zrušením / obcházením initrd, protože kernel může nabootovat z ext4 oddílu i bez toho. Initrd se dal bez problémů zrušit ve Fedoře 15, ale s příchodem GRUB2 ve Fedoře 16 to již tak úplně neplatí. Je zde totiž problém, jak novému grub2 v /etc/grub.d vysvětlit touhu vypnout initrd. To lze sice provést při každém startu systému editací bootovacího menu, ale to už není tak pohodlné. Dalším problémem je, že yum přestane updatovat kernel, protože grub2-mkconfig skript závisí na /dev/root, který samozřejmě bez initrd chybí při bootu a přestane tak fungovat. Lze to obejit příkazem

ln -s /dev/sda1 /dev/root

a skript se znovu aktivuje. Pak lze opět bez problému updatovat kernel. Na tyto problémy byl otevřený bug #734274.

Takže následující úprava je spíše pro majitele Fedory 15. Ve Fedoře 16 jen na vlastní riziko nebo experimentování.

Initrd bypass:

A ) Upravit grub zadáním konkrétního čísla diskového oddílu pro root a jeho typ do řádku kernelu. Tj. přidat

rootfstype=ext4

a nahradit jméno disku root=UUID=XXXXXXXXX následujícím ekvivalentem

root=/dev/sda1

nebo podobně, v závislosti na lokalizaci vašeho root oddílu.

B ) Ještě je nutné vypnout Plymouth

plymouth.disable=0

C ) Nakonec zakomentovat řádek s initrd (#) (díky krokům A a B není nutný pro start systému) .

Příslušný řádek kernelu pak bude vypadat takto

title Fedora (2.6.38.6-26.rc1.fc15.i686.PAE)
root (hd0,0)
kernel /vmlinuz-2.6.38.6-26.rc1.fc15.i686.PAE ro root=/dev/sda1 rootfstype=ext4
plymouth.disable=0 rhgb quiet

initrd /initramfs-2.6.38.6-26.rc1.fc15.i686.PAE.img

Boot z biosu do grafického prostředí nyní trvá okolo 10 sekund na netbooku a 5 a míň sekund na noteboocích.

Rusit demony je potreba s rozmyslem udev settle slouzi k tomu aby udev mel cas natahnout a nainicializovat vsechny moduly (ovladace) zarizeni. Na nekterych PC to treba nemusi byt potreba, ale pak neco doinstalujete, pridate HW a budete se divit ze to nefunguje. Stejne tak sendmail. V zasade neni potreba, ale je spousta udalosti v systemu, ktere o sobe davaji vedet jen prostrednictvim mailu (napr. chyby pri ulohach spoustenych demonem cron). Vypnout syslog jde samozrejme take, ale az v systemu dojde k nejakym udalostem, ktere chcete sledovat, zjistit pricinu padu atd, budou vam systemove zaznamy chybet.
Readahead je sluzba ktera ma start systemu zrychlovat, ale samozrejme je to sporne - snazi se naucit a natahovat pri startu systemu paralelne, pokud je nevytizeny disk, sdilene knihovny dalsich aplikaci (proste je jen precte, cimz se dostanou do cache v RAM).

Tzn. vzdycky nez neco vypnu, mel bych vedet co to dela a zda to skutecne nepotrebuji, resp. co muze vypnuti zpusobit.