Bře 03

Need for speed alebo Zavádzanie pre netrpezlivých

archlinux1Nie, tento článok nie je recenzia. A ani nepojednáva o e4rat. Predstavíme si v ňom iba základnú otpimalzáciu potrebnú pre zrýchlenie bootovania Arch linuxu.

 

 

 

Táto optimalizácia, ak sa to tak dá nazvať, pozostáva z niekoľkých krokov:

1. automatické prihlásenie do virtuálnej konzoly
2. úprava .bash_profile a .xinitrc
3. úprava journald.conf
4. úprava GRUBu
5. zakázanie alebo maskovanie nepotrebnej služby načítanej pri štarte

 

Automatické prihlásenie do virtuálnej konzoly:

Ak preferujete zadávanie hesla pri prihlásení alebo automatické prihlásenie nie je možné z bezpečnostného hľadiska, tento krok je pre vás irelevantný.

V terminály sa zadá tento príkaz:

$ sudo systemctl edit getty@tty1

Otvorí sa editor nano, s ktorým sa má vytvoriť nový súbor:

$ /etc/systemd/system/getty@tty1.service.d/override.conf

A dopíše sa doň:

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin užívateľké_meno --noclear %I $TERM

užívateľské_meno je prihlasovacie meno (napríklad lombardo1981)
Súbor sa uloží pomocou Ctrl+o a ukončí pomocou Ctrl+x.

 

Úprava .bash_profile a .xinitrc:

Úprava .bash_profile a .xinitrc priamo súvisí s prvým krokom. Takže tí, ktorí ho vynechali, ignorujú aj tento.
Vďaka editácii týchto dvoch súborov automatické prihlásenie do virtuálnej konzoly prebehne korektne. Napríklad, ak sa neupraví .xinitrc, budete prihlásený do xorg.

 

~/.bash_profile:

Na úvod treba podotknúť, že súbor .bash_profile patrí ku bashu. Ak používate iný shell, súbor bude mať iný názov. Inak samotná úprava je rovnaká.
Ak neviete, aký shell používate, dá sa to zistiť zadaním tohto príkazu v terminály:

echo $SHELL
echo $0

echo $0 nefunguje pri použití csh

 

Pomocou nejakého textového editoru si otvorte konfiguračný súbor pre shell, ktorý používate. V tomto prípade sa jedná o bash:

pluma ~/.bash_profile

 

Nájdite riadok: [[ -f ~/.bashrc ]] && . ~/.bashrc a dajte predeň #.
Na koniec súboru pridajte: [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

Takže nakoniec budú vyzerať takto:

#[[ -f ~/.bashrc ]] && . ~/.bashrc
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

 

Ak ~/.bash_profile neexistuje, skopíruje jeho základnú verziu z /etc/skel/.bash_profile:

$ cp /etc/skel/.bash_profile ~/.bash_profile

 

~/.xinitrc:

.xinitrc obsahuje startx. Čiže vďaka nemu systém vie, aké DE alebo WM sa má načítať.

Ak neexistuje, jednoducho sa skopíruje prednastavená verzia z /etc/X11/xinit/xinitrc:

$ cp /etc/X11/xinit/xinitrc ~/.xinitrc

 

Pomocou nejakého textového editoru sa upraví:

$ pluma ~/.xinitrc

 

Posledné riadky môžu vyzerať asi takto:

twm &
xclock -geometry 50×50-1+1 &
xterm -geometry 80×50+494+51 &
xterm -geometry 80×20+494-0 &
exec xterm -geometry 80×66+0+0 -name login

Pred každý z nich sa pridá #:

#twm &
#xclock -geometry 50×50-1+1 &
#xterm -geometry 80×50+494+51 &
#xterm -geometry 80×20+494-0 &
#exec xterm -geometry 80×66+0+0 -name login

Na KONIEC súboru sa pridá napríklad:

exec openbox-session

 

.xinitrc môže obsahovať viacero deklarácií exec. Pred tie, ktoré momentálne nie sú potrebné, sa vždy pridá #. No exec bez mriežky musí byť posledný!

OpenBox: exec openbox-session alebo exec dbus-launch --exit-with-session openbox-session
LXDE: exec startlxde
LXQT: exec startlxqt
XFCE: exec startxfce4
MATE: exec mate-session
CINNAMON: exec cinnamon-session
ENLIGHTENMENT: exec enlightenment_start
GNOME:exec gnome-session alebo exec gnome-session --session=gnome-classic
KDE: exec startkde

 

Úprava /etc/systemd/journald.conf:

Obmedzenie žurnálovacej veľkosti:

Odporúča sa limit nastaviť na cca 10% systémovej oblasti (/root).
Odstráni sa # a odpíše sa hodnota: SystemMaxUse=50M
Odstráni sa # a odpíše sa hodnota: SystemMaxFileSize=10M
Odstráni sa # a odpíše sa hodnota: MaxRetentionSec=3month
Odstráni sa # a odpíše sa hodnota: MaxFileSec=1week
Odstráni sa #: ForwardToSyslog=no

Toto je len príklad. Úpravu si môžte prispôsobiť. Len treba dávať pozor na veľkosti. Nemali by byť veľmi malé. Prvé dve hodnoty môžu vyzerať aj takto:

SystemMaxUse=16M
SystemMaxFileSize=1M

Manuálová stránka journald.conf:

$ man journald.conf

 

Úprava GRUBu:

Vždy sa upravuje /etc/default/grub!

$ sudo pluma /etc/default/grub

 

Odstránenie odpočítavanie načítania GRUBu:
Nájdite riadok, ktorý vyzerá asi takto: GRUB_TIMEOUT=5
A zmeňte ho na

GRUB_TIMEOUT=0

Zmena na 0, ale znemožní použitia SHIFT, ktorým sa vyvoláva možnosť pre priamu úpravu GRUBu pri zavádzaní!

No existuje možnosť ako použiť SHIFT aj pri 0.
Na koniec súboru /etc/default/grub treba dopísať:

GRUB_FORCE_HIDDEN_MENU=”true”

Ďalej je potrebné stiahnuť tento súbor, zkopírovať ho do zložky a prideliť mu potrebné práva.
Otvoríme si terminál v zložke, kde sa stiahnutý súbor nachádza alebo sa tam premiestnime pomocou príkazu cd:

sudo cp gistfile1.sh /etc/grub.d/31_hold_shift
sudo chmod a+x /etc/grub.d/31_hold_shift

Toto riešenie nemusí fungovať na všetkých strojoch. Najskôr ho treba vyskúšať po vypnutí počítača. Ak nefunguje, 0 stačí zmeniť na 1.

 

Vyhľadajte riadok: GRUB_CMDLINE_LINUX_DEFAULT=
Pred ” dopíšte: quiet raid=noautodetect libahci.ignore_sss=1

Nakoniec bude vyzerať asi takto:

GRUB_CMDLINE_LINUX_DEFAULT=”resume=UUID=f5s88a20-eg42-5e73-5731-evc954bv08c7 quiet raid=noautodetect libahci.ignore_sss=1″

raid=noautodetect: zakáže automatickú detekciu RAID
libahci.ignore_sss=1: Na zakázanie staggered spin-up (SSS). Či je SSS aktívne, sa dá zistiť pomocou dmesg | grep SSS. Ak nie je, neobjaví sa žiadny výstup.
Dá sa pridať aj ro (read only), avšak vtedy je potrebná aj úprava fstab.

 

Po každej úprave sa GRUB aktualizuje:

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

 

Zakázanie alebo maskovanie nepotrebnej služby načítanej pri štarte:

Tento krok je vysoko individuálny. Každú službu si treba poriadne naštudovať.

Zakázanie a znovu povolenie služby:

zakázanie:

$ sudo systemctl disable ModemManager.service

povolenie:

$ sudo systemctl enable ModemManager.service

štart:

$ sudo systemctl start ModemManager.service

Ak je zakázaná služba potrebná okamžite, stačí ju spustiť pomocou start.

 

Maskovanie a odmaskovanie služby:

maskovanie:

$ sudo systemctl mask ModemManager.service

odmaskovanie:

$ sudo systemctl unmask ModemManager.service

štart:

$ sudo systemctl start ModemManager.service

Ak je služba maskovaná, pre okamžité spustenie sa musí najskôr odmaskovať. A až potom spustiť. Inak sa objaví táto chybová hláška:

Failed to start ModemManager.service: Unit ModemManager.service is masked.

 

Zistenie závislostí pre ModemManager.service:

$ systemctl list-dependencies ModemManager.service

Zistenie statusu služby ModemManager.service:

$ systemctl status ModemManager.service

Zistenie, či je službaModemManager.service povolená:

$ systemctl is-enabled ModemManager.service

Zistenie času bootovania:

$ systemd-analyze

Zistenie zavádzacieho času jednotlivých služieb:

$ systemd-analyze blame

Zistenie kritickej časti zavádzania:

$ systemd-analyze critical-chain

Zavádzanie v podobe obrázka uloženého v ~/:

$ systemd-analyze plot > plot.svg

 

A teraz sa pozrime na pár služieb, ktorí môžu byť za určitých okolností zakázané:

lightdm.service: LightDM je display manažér, ktorý pri automatickom prihlásení do virtuálnej konzoly nie je potrebný. To isté platí aj pre iné display manažéry.

avahi-daemon.service: Avahi je implementácia zeroconfu, ktorá okrem iného uľahčuje konfiguráciu lokálnej siete (Samba a spol.). Len si pri kúpe novej tlačiarne treba spomenúť, že avahi-daemon.service je zakázaný. 🙂

ModemManager.service: Ak sa na pripojenie na internet používa iba WLAN/LAN (čiže wifi alebo kábel), nie je potrebný. Pre 3G/4G/5G či bluetooth tethering už je.

wpa_supplicant.service: Je potrebný pre wifi. Ak sa na internet propojujete iba cez kábel, nebude chýbať.

 

Ak niekoho táto téma zaujíma viac, v článku na freedesktop si môže o tom prečítať viac. Článok je samozrejme v angličtine.

 

 

Napsat komentář

Your email address will not be published.

%d blogerům se to líbí: