Ускорение загрузки Ubuntu.

e4rat - утилита для более быстрой загрузки системы.

Автор: admin.


e4rat  Дистрибутив «юбунту», уже изначально, как бы неплохо оптимизирован сам по-себе, но дополнительное ускорение загрузки Ubuntu, постоянно интересовало многих пользователей, всегда хотелось, что бы система загружалась, как можно быстрее. По-умолчанию, в дистрибутиве используется специальная утилита «ureadahead», которая определяет все необходимые файлы, для процесса загрузки и создает собственный "пак" с этими данными. В последствие, система загружается, черпая информацию непосредственно из этого источника, сводя к минимуму время обращения к жесткому диску, ускоряя тем самым загрузку "ОС". Ну вот, как-то так, примерно.

 «Ureadahead» - это утилита, разработанная именно для «Ubuntu» самими "юбунтоводцами" и предназначена для замены «sreadahead», которая, видимо использовалась до нее, беря свое начало из дистрибутива «Fedora». Но мы сейчас поговорим о другой, независимой утилите e4rat, которая предназначена для таких же целей и по проведенным последним тестам, якобы показала очень неплохие результаты.

  Итак, что она делает? Да точно также, собирает информацию, необходимую для загрузки «ОС» и помещает ее в созданный log-файл. Кроме того, e4rat может собрать информацию о запускаемых приложениях и тоже, ускорить их запуск, но об этом чуть позже, а также, все собранные таким образом файлы, разместить на жестком диске в одном быстро-доступном месте. Это тоже самое, как в «Windows» при использование продвинутых дефрагментаторов, которые проводят т.н. глубокую оптимизацию, дефрагментируя файлы и перераспределяя их местоположение на жестком диске, собирая их в одно место. Кстати, о дефрагментации «ext4» можно прочитать здесь: http://www.linux-info.ru/e4defrag.html.

  Для более полного представления, разложим все по полочкам и посмотрим из чего состоит весь пакет e4rat. А состоит он из трех, образующих его утилит:

1) e4rat-collect - собирает статистику по используемым файлам в течении определенного времени (по умолчанию 120 секунд, но может быть скорректировано в файле: /etc/e4rat.conf).
2) e4rat-realloc - перераспределяет файлы из списка (помещает их в одну область диска).
3) e4rat-preload - заранее загружает нужные файлы в память.

  Приступим к установке. Первое, что надо сделать, это создать бэкап системы, всегда, когда вы экспериментируете с системой, перво-наперво создаете бэкап. Теперь, заходим на сайт и скачиваем DEB-пакет, здесь я указываю весь путь до пакета, потому, что версия пакета может со временем меняться и конечная ссылка тоже, заходим: http://e4rat.sourceforge.net/

В низу страницы будут такие строки:

Download

Get source code and/or Debian package here.

Жмем на последнее слово «here» и попадаем на страницу загрузки:

Страница загрузки e4rat

  В этом списке выбираем самую новую версию и кликаем по ней, в данном случае это v.0.2.3, после чего вас перебросит на страницу, где можно выбрать подходящий пакет и скачать его. Далее, e4rat - конфликтует с установленной по-умолчанию «ureadahead», поэтому ее нужно удалить.

sudo dpkg --purge ureadahead ubuntu-minimal

  Устанавливаем скачанный DEB-пакет, но нужно помнить, что эта утилита работает только на файловой системе «ext4». Перезагружаем компьютер и во время перезагрузки, удерживаем нажатой клавишу «Shift» (для того, что бы зайти в меню «GRUB»), это в том случае, если у вас одна операционная система. После входа в меню загрузчика, это будет выглядеть так: 

Загрузочное меню GRUB

  Это стандартный по-умолчанию вид меню с одной установленной операционной системой и первая строка в нем будет выделена автоматически, если нет, то выделите ее вручную и нажмите клавишу «e». В открывшимся сдедующем окне найдите строку загрузки ядра Linux, примерно вот такую:

linux  /boot/vmlinuz-3.5.0-22-generic root=UUID=...и.т.д.

  Удалите в этой строке слово «quiet», а в "конец" строки, сначала пробел, а затем пропишите:

init=/sbin/e4rat-collect

  Тоесть, эта запись должна отделяться от предыдущей пробелом, теперь нажмите «Ctrl+x» или «F10» (у меня «F10»), начнется загрузка системы. Не стоит бояться всех изменений, которые мы внесли в эти строки т.к., это единоразовое действие и при следующей загрузке, все возвернется в первозданный вид. Теперь, система начнет загружаться и собирать нужную информацию и с этого момента, начинается отсчет 120 секунд, поэтому, чем быстрее вы будете все делать, тем больше времени останется вот для чего:

- после того, как система загрузиться и вы попадете на свой рабочий стол, начинайте быстренько открывать все приложения, чем больше, тем лучше, первым делом открывайте самые "тяжелые", типа «GIMP», браузеры и прочее. Одинм словом, все, что вы успеете открыть, попадет в информацию для оптимизации и в дальнейшем, эти приложения будут открываться быстро. Вся информация о файлах, которые были собраны за эти 120 сек., а это файлы, используемые системой для загрузки и плюс те, которые были задействованы при открытие вами приложений, попадут и будут находится в:  /var/lib/e4rat/startup.log.

  Как только вы примерно почувствовали, что 120 сек. закончились, можете зайти в эту директорию и убедиться, что log-файл создан. Перезагружаем компьютер и повторяем действия, т.е. входим в меню «GRUB», выбираем загружаемую систему, жмем «e», находим опять туже самую строку:

linux  /boot/vmlinuz-3.5.0-22-generic root=UUID=...и.т.д.

В "конец" строки, через пробел дописываем:

e4rat-realloc  /var/lib/e4rat/startup.log

  Нажимаем «Ctrl+x» или «F10» (как у меня), начнет загружаться система и в тоже время, будет происходить оптимизация файлов, процесс может занять некоторое время (у кого как), а может и не занять, обязательно нужно дождаться полного окончания, дальше, все как обычно и вы попадаете опять на свой рабочий стол, точно также, как и первом случае. Теперь, от имени «root» открываем файл: /boot/grub/grub.cfg. Дальше, немного сложнее, нужно в строку загрузки ядра «Linux», в "конец" строки, через пробел дописать: init=/sbin/e4rat-preload.

  Дальше, я привожу пример данного файла, понимаю, что будет трудновато выискивать эти строки, но это нужно сделать. Там будет несколько таких очень похожих записей, тем не менее, они разные, определяющим словом будет первое «menuentry», а в самом "конце", пропишем нужную нам строчку:  init=/sbin/e4rat-preload  (для удобства, весь необходимый фрагмент, я выделил жирным текстом, а начало и окончание всего фрагмента зеленым цветом).

Посмотреть файл.

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
set default="0"

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  06cd77d8-dfc7-4653-86a1-ff3276b7b663
else
  search --no-floppy --fs-uuid --set=root 06cd77d8-dfc7-4653-86a1-ff3276b7b663
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=ru_RU
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=30
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
menuentry 'Ubuntu Linux' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-06cd77d8-dfc7-4653-86a1-ff3276b7b663' {
recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  06cd77d8-dfc7-4653-86a1-ff3276b7b663
    else
      search --no-floppy --fs-uuid --set=root 06cd77d8-dfc7-4653-86a1-ff3276b7b663
    fi
    linux    /boot/vmlinuz-3.5.0-22-generic root=UUID=06cd77d8-dfc7-4653-86a1-ff3276b7b663 ro init=/sbin/e4rat-preload  quiet splash ipv6.disable=1 $vt_handoff init=/sbin/e4rat-preload
    initrd    /boot/initrd.img-3.5.0-22-generic
}
submenu 'Дополнительные параметры для Ubuntu' $menuentry_id_option 'gnulinux-advanced-06cd77d8-dfc7-4653-86a1-ff3276b7b663' {
    menuentry 'Ubuntu, с Linux 3.5.0-22-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.5.0-22-generic-advanced-06cd77d8-dfc7-4653-86a1-ff3276b7b663' {
    recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  06cd77d8-dfc7-4653-86a1-ff3276b7b663
        else
          search --no-floppy --fs-uuid --set=root 06cd77d8-dfc7-4653-86a1-ff3276b7b663
        fi
        echo    'Загружается Linux 3.5.0-22-generic …'
        linux    /boot/vmlinuz-3.5.0-22-generic root=UUID=06cd77d8-dfc7-4653-86a1-ff3276b7b663 ro init=/sbin/e4rat-preload  quiet splash ipv6.disable=1 $vt_handoff
        echo    'Загружается начальный виртуальный диск …'
        initrd    /boot/initrd.img-3.5.0-22-generic
    }
    menuentry 'Ubuntu, с Linux 3.5.0-22-generic (режим восстановления)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.5.0-22-generic-recovery-06cd77d8-dfc7-4653-86a1-ff3276b7b663' {
    recordfail
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  06cd77d8-dfc7-4653-86a1-ff3276b7b663
        else
          search --no-floppy --fs-uuid --set=root 06cd77d8-dfc7-4653-86a1-ff3276b7b663
        fi
        echo    'Загружается Linux 3.5.0-22-generic …'
        linux    /boot/vmlinuz-3.5.0-22-generic root=UUID=06cd77d8-dfc7-4653-86a1-ff3276b7b663 ro recovery nomodeset init=/sbin/e4rat-preload
        echo    'Загружается начальный виртуальный диск …'
        initrd    /boot/initrd.img-3.5.0-22-generic
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  06cd77d8-dfc7-4653-86a1-ff3276b7b663
    else
      search --no-floppy --fs-uuid --set=root 06cd77d8-dfc7-4653-86a1-ff3276b7b663
    fi
    linux16    /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  06cd77d8-dfc7-4653-86a1-ff3276b7b663
    else
      search --no-floppy --fs-uuid --set=root 06cd77d8-dfc7-4653-86a1-ff3276b7b663
    fi
    linux16    /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
if [ "x${timeout}" != "x-1" ]; then
  if sleep --interruptible 7 ; then
    set timeout=0
  fi
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

### BEGIN /etc/grub.d/42_grml ###
menuentry "Grml Rescue System (linuxmint-14.1-cinnamon-dvd-32bit.iso)" {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos6'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6  10786C82786C6884
        else
          search --no-floppy --fs-uuid --set=root 10786C82786C6884
        fi
        iso_path="/linuxmint-14.1-cinnamon-dvd-32bit.iso"
        export iso_path
        kernelopts="   "
        export kernelopts
        loopback loop "/linuxmint-14.1-cinnamon-dvd-32bit.iso"
        set root=(loop)
        configfile /boot/grub/loopback.cfg
}
### END /etc/grub.d/42_grml ###

 
 

  Сохраните изменения и закройте файл. Если у вас «GRUB 2», то откройте от имени «root» файл: /etc/default/grub и в строке: GRUB_CMDLINE_LINUX="", между кавычек пропишите тоже значение, вот так: GRUB_CMDLINE_LINUX="init=/sbin/e4rat-preload". Затем, сохраните изменения, закройте файл и можете смело перезагружаться и смотреть на результат.

Для удаления программы нужно выполнить:

sudo apt-get purge e4rat

  А также в файлах: «/boot/grub/grub.cfg» и «/etc/default/grub» удалить запись:  init=/sbin/e4rat-preload, которую мы добавляли.  Плюс ко всему, можно удалить log-файл, вместе с папкой: /var/lib/e4rat/startup.log.  Только после этого можно перезагрузиться.

Не забываем установить ранее удаленный «ureadahead ubuntu-minimal».

sudo apt-get install ureadahead ubuntu-minimal 

А также «preload», если до этого стоял и вы его удаляли.

sudo apt-get install preload

 

Положительные характеристики e4rat:

  • Если сильно повезет, то получите значительный прирост скорости при загрузке системы и открытия приложений. 


Отрицательные характеристики e4rat:

  • Не всегда может принести желаемый результат, зависит от конкретной «ОС». 


  Ну и в заключение, скажу еще пару слов, не следует расчитывать, что все это обязательно должно дать супер-эффект, у одних, показывает очень хорошие результаты, у других не очень, у третьих, совсем нечего. С другой стороны, не попробуешь, не узнаешь. Да и самое главное, после каждого обновления ядра, нужно повторять процедуру оптимизации. В целом, не смотря на то, что здесь очень много написано и может показаться довольно громоздким, реальных действий для выполнения, совсем не много.

Примечание: в результате эксперементальной апробации на моей системе, были получены следующие результаты. Вариант первый - оптимизация загрузки системы, без последующего запуска приложений. Вариант второй - оптимизация загрузки системы с последующим запуском приложений. В первом случае, программа записала в log-файл, примерно 4500 тыс. файлов, а во-втором уже 12300 шт. Первый случай, как мне показалось, несколько улучшил загрузку системы, незначительно, но все-таки чуть-чуть стало быстрее. Второй случай наоборот, почти в два раза, а то и в три, увеличил загрузку. Вывод напрашивается такой: если наблюдается тенденция на ускорение загрузки, то использовать данный метод можно, как в моем случае, первый вариант, но тогда, не нужно удалять программу "preload", которая, как раз и будет работать сама по-себе и ускорять запуск приложений.

Ещё одно примечание: существует более простой способ такого же ускорения. Для этого, не нужно нечего удалять и нечего устанавливать. Просто заходите в меню загрузчика, точно также, как это описано выше и в этой же строчке, типа: linux  /boot/vmlinuz-3.5.0-22-generic root=UUID=...и.т.д., в конце, через один пробел прописываете слово: profile и перезагружаете систему. Грузиться она будет чуть-чуть дольше, чем обычно, т.к. будет создаваться файл с кэшем. Когда она полностью загрузиться, подождите пару минут и ещё раз, перезагрузите систему. Много вы не выиграете, но каких-нибудь 2-4 сек., прирост будет!

Параметры:

Язык интерфейса:  -"-   
Лицензия:  GNU GPL
Домашняя страница:  http://e4rat.sourceforge.net/

Проверялось на «Ubuntu» 12.10 Unity (32-bit.). 

 

 

 

Оптимизация в Ubuntu (1)  

 

Copyright 2011-2016 Ускорение загрузки Ubuntu. All Rights Reserved.
Joomla theme by hostgator coupons