Debian Linux представља једну од најпопуларнијих савремених дистрибуција Linux-а, а такође је и „родитељ“ целог реда других дистрибуција, као што су Ubuntu, Linux Mint и др. Популарност је придобио захваљујући привржености кориснику. Тај приступ „удовољити свима“ има и својих мана, а највећа од свих је то да у старту не раде сви делови система оптимално. На пример слика initramfs заузима на диску скоро 10 мегабајта и садржи у себи практично све доступне модуле, што је у већини случаја непотребно. У овом тексту ћу навести поступак како максимално оптимизовао initramfs у Debian-у. Питате се, шта је у ствари initramfs? Initramfs је „корени систем датотека који користи језгро (kernel) на почетку покретања система“. На почетку се у меморију смешта језгро и initramfs слика, а затим језгро покреће систем из те слике. На основу тога може се закључити да што је мање непотребних ствари у тој слици, то ће се брже покретати систем и он ће у старту заузимати мање меморије. Пре него што наставим, потребно је да нагласим две ствари:
- све овде описане инструкције не важе само за Debian, већ и за већину његових „наследника“.
- на крају крајева, ако ручно компајлирате језгро initramfs вам није неопходан, али не желе сви при свакој надоградњи да поново компајлирају језгро. Зато боље једноставно оптимизовати initramfs на класичан начин.
Слика initramfs се ствара помоћу алатке update-initramfs. Извршавањем следеће команде у терминалу можете створити ову слику за текуће језгро:
update-initramfs -v -c -k `uname -r`
Можете приметити да се прво скупљају модули, затим најнеопходнији основни алати и на крају се извршавају „удице“ (hooks) – модули за update-initramfs, који додају у слику разне додатне функције. На пример удица dmsetup додаје подршку за Device Mapper, а удица fuse_utils подршку за системе датотека доступне кроз fuse. Ако у слици initramfs недостаје неки модул он ће се учитати касније директно са чврстог диска (најбитније је да модули који се налазе у овој слици гомогуће приступ том чврстом диску). Основна подешавања update-initramfs се налазе у директоријуму /etc/initramfs-tools. Како би покретали само модуле из списка неопходних модула потребно је изменити вредност параметра MODULES у датотеци initramfs.conf:
#MODULES=mostMODULES=list
Даље је потребно сачинити списак тих неопходних модула. То је најједноставније решити тако што ћемо искористити списак већ покренутих модула. Списак модула се чува у датотеци modules. Попунићемо је списком модула који смо добили алатом lsmod, следећом командом:
lsmod | tail -n +2 | sort | awk '{print $1;}' > /etc/initramfs-tools/modules
Затим ћемо поново направити слику initramfs, пошто уклонимо стару, на следећи начин:
update-initramfs -v -d -k `uname -r` && update-initramfs -v -c -k `uname -r`
Ако желите можете упоредити величину датотека /boot/initrd.img-* до и после ове команде. Да ли има разлике?
Ту завршавамо са модулима. Прелазимо на удице. Системске удице се чувају у директоријуму /usr/share/initramfs-tools/hooks, корисник (тачније администратор система) може поставити своје удице у директоријуму /etc/initramfs-tools/hooks (који је обично празан). Како би разумели која удица је одговорна за који пакет извршићемо следећу команду:
find /usr/share/initramfs-tools/hooks/ -type f -exec dpkg -S '{}' \;
На жалост при стварању слике initramfs не користи се списак удица, па је једини начин да уклоните сувишне удице из initramfs-а једноставно уклањање пакета који садржи непотребну удицу. Можемо, наравни и физички уклонити удицу, али ће се она поново створити приликом унапрећења пакета коме припада. Удице које припадају пакетима initramfs-tools и udev боље је не дирати, са осталима како хоћете. На пример, ако је Ваша машина сервер онда му не нису потербни системи датотека који се монтирају кроз fuse, па удице fuse_utils и ntfs_3g нису потребне. Њих се можете ослободити на следећи начин:
apt-get purge fuse-utils ntfs-3g && apt-get autoremove --purge && update-initramfs -v -c -k `uname -r`
Ако користите рачунар као радну станицу онда Вам вероватно подршка за Drive Mapper не треба. Ње се можете ослободити командом:
apt-get purge dmsetup && apt-get autoremove --purge && update-initramfs -v -c -k `uname -r`
Посебну пажњу заслужује питање поновног стварања слике приликом било какве измене у њеној конфигурацији, као на пример после постављања/уклањања пакета. При томе dpkg сам позива update-initramfs и при том користи команду:
update-initramfs -u -k all
Овде опција „-k“ показује на језгро („all“ – означава сва језгра која постоје на систему), а „-u“ – да треба обновити (али не стовити изнова!) слику initramfs. При обнављању слике у њој може остаи неки неред, па је боље ипак је стварати изнова командом:
update-initramfs -c -k all
То јест, уместо „-u“ ставити кључ „-c“. За детаљни преглед активности команде можете такође користити кључ „-v“. Коришћењем поменутих команди можете смањити величину слике 2–4 пута, што ће убрзати покретање система за пар стотинки (Заувар, зар не?).
Срећно!
moras da se prilagodis da te master ne izbaci sa fotelje