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 [1].

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 [2] 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 [3].

Nasz bohater - e4rat

Teraz pozostaje nam sama zabawa z e4rat. Na początek instalacja. Paczka jest do pobrania stąd. [4]

Pakiet ten składa się z trzech podstawowych elementó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 [5]

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 [6]. 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 ;)


Przypisy:

  1. http://dug.net.pl/tekst/219/
  2. http://packages.debian.org/search?keywords=bootchart
  3. http://dug.net.pl/tekst/222/
  4. http://sourceforge.net/projects/e4rat/files/
  5. http://dug.net.pl/tekst/225/
  6. http://forum.dug.net.pl/viewtopic.php?pid=218768#p218768