e4rat, czyli przyspieszanie startu systemu dla ext4
Kategoria: Artykuły, etykiety: oprogramowanie, system, systemy plików, e4rat
Dodany: 2012-12-27 12:32
(zmodyfikowany: 2012-12-28 21:15)
Przez: P@blo
Wyświetleń: 13207
Wstępne przygotowania
1. System plików ext4
Podstawową sprawą jest posiadanie systemu na ext4
. Jeżeli korzystasz z grub2
, to jest nieco łatwiej, ponieważ obsługuje on system plików ext4. Jeżeli natomiast korzystasz z grub-legacy
, to zapraszam do przeczytania tego FAQ'a.
2. Kernel
Aby w ogóle mogło cokolwiek działać, musimy mieć wkompilowany moduł jądra o nazwie AUDITSYSCALL
, który tak oto się przedstawia w źródłach:
Symbol: AUDITSYSCALL [=y]
│ Type : boolean
│ Prompt: Enable system-call auditing support
│ Defined at init/Kconfig:291
│ Depends on: AUDIT [=y] && (X86 [=y] || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || ARM && AEABI && !OABI_COMPAT)
│ Location:
│ -> General setup
│ (3) -> Auditing support (AUDIT [=y])
Jeśli mamy kernel dystrybucyjny, to prawdopodobnie jest on załadowany. Jeśli mamy swoje jądro, wystarczy sprawdzić, czy go posiadamy:
$ grep AUDITSYS /boot/config-`uname -r`
jeżeli terminal odpowie nam w stylu:
CONFIG_AUDITSYSCALL=y
To znaczy, że nic nie stoi na przeszkodzie, aby czytać dalej ten artykuł.
3. bootchart
Przydałoby się sprawdzić nasze efekty. Służy do tego pakiet bootchart dostępny w repozytoriach debiana. Nie będę tutaj opisywał za wiele co i jak, ponieważ nie tego się tyczy ten artykuł, aczkolwiek uważam, że warto sprawdzić efekty swojej pracy.
Jeśli jednak kogoś interesuje to zagadnienie warto przeczytać tego FAQ'a.
Nasz bohater - e4rat
Teraz pozostaje nam sama zabawa z e4rat
. Na początek instalacja. Paczka jest do pobrania stąd.
Pakiet ten składa się z trzech podstawowych elementów:
- e4rat-collect - zbiera informacje o pakietach, które będziemy przyspieszać;
- e4rat-realloc - defragmentuje całą „sekwencję startową” (przyspiesza);
- e4rat-preload - wczytanie przyspieszonych pakietów.
Etap 1 - e4rat-collect:
Polega na edytowaniu linijki w grubie:
kernel /vmlinuz-3.7.0 root=/dev/sda2 ro rootfstype=ext4 quiet
dodając wpis:
init=/sbin/e4rat-collect
tak aby po zmianie mieć:
title Debian GNU/Linux, kernel 3.7.0
root (hd0,0)
kernel /vmlinuz-3.7.0 root=/dev/sda2 init=/sbin/e4rat-collect ro rootfstype=ext4 quiet
Aby zrobić to prawidłowo, zachęcam do przeczytania tego FAQ'a
Teraz wystarczy:
# reboot
System będzie wstawał nieco dłużej, ale warto poświęcić ten czas ;) Gdy już wstanie, należy wpisać w terminal
# e4rat-collect -k
co powie programowi, aby przestał zbierać informacje na temat pakietów, które ma przyspieszyć. Jeśli natomiast chcemy przyspieszyć uruchamianie np libreoffice, to wystarczy przed wpisaniem powyższej komendy włączyć odpowiednie programy.
Na koniec sprawdzamy, czy e4rat pozbierał jakiekolwiek informacje:
$ wc -l /var/lib/e4rat/startup.log
1883 /var/lib/e4rat/startup.log
Jak widać u mnie nazbierał 1883 pakiety/moduły do przyspieszenia. Teraz nastąpi sam etap przyspieszania.
Etap 2 - e4rat-realloc
Wpisujemy w terminalu:
# init 1
Gry ekran przedzie do konsoli (wygląda jakby się komputer wyłączał, lecz jednak tego nie zrobi), poprosi nas o hasło root'a. Następnie jako root wpisujemy:
# e4rat-realloc /var/lib/e4rat/startup.log
czego wynik będzie wyglądał mniej więcej tak:
# e4rat-realloc /var/lib/e4rat/startup.log
Parsing file /var/lib/e4rat/startup.log
520/2434 file(s) are not available
14/2434 file(s) have invalid file type.
1/2434 file(s) are presently not writable.
6/2434 file(s) have no blocks.
2/2434 file(s) are sparse-files which will retain gaps of unallocated blocks.
Defrag mode: locality group
Processing 1893 file(s) on device /dev/sda2 (mount-point: /)
Total fragment count before/afterwards/best-case: 1456/2315/1
There is no improvement possible.
Cannot dump log messages: /dev/kmsg: Bad file descriptor
Discard 1 unwritten log message(s).
Interesują nas liczby 1456/2315/1
. Po kolejnym wpisaniu:
# e4rat-realloc /var/lib/e4rat/startup.log
Parsing file /var/lib/e4rat/startup.log
520/2434 file(s) are not available
14/2434 file(s) have invalid file type.
1/2434 file(s) are presently not writable.
6/2434 file(s) have no blocks.
2/2434 file(s) are sparse-files which will retain gaps of unallocated blocks.
Defrag mode: locality group
Processing 1893 file(s) on device /dev/sda2 (mount-point: /)
Total fragment count before/afterwards/best-case: 1456/1241/1
będą to już 1456/1241/1
. Co oznaczają liczby dokładnie nie wiem. Jeżeli kogoś to interesuje to może coś przeczytać tutaj. Nie wdając się w szczegóły, chodzi o to, aby druga liczba (czyli u mnie 2315/1241
) była jak najmniejsza. Najlepiej zejść do liczby około 10.
Następnie wpisujemy exit
, co przywróci nas do środowiska graficznego.
Etap 3 - e4rat-preload
Na sam koniec zmieniamy wpis w grubie z:
init=/sbin/e4rat-collect
na:
init=/sbin/e4rat-preload
I to koniec całej zabawy. Wystarczy teraz reboot
i cieszyć się z efektów.
Enjoy ;)