# E4rat (Русский)

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Уменьшение времени загрузки системы и входа в X-ы для файловой системы ext4 с использованием утиллит e4rat.

e4rat - проект Andreas Rid и Gundolf Kiefer, расшифровывается как e4 'reduced access time' (сокращение времени доступа), применяется только в файловой системе ext4. В набор утилит e4rat входит: e4rat-collect, e4rat-realloc и e4rat-preload.

## Описание

Если взглянуть на статистику bootchart, то можно заметить, что при загрузке системы ни жесткий диск, ни CPU не используются полностью. e4rat позволяет максимально задействовать жесткий диск и CPU, ускоряя таким образом процесс загрузки. Все проводится в три этапа:

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

### Кому это нужно, а кому нет

e4rat может быть полезной в системах с одним пользователем, использующим автозапуск Х-в, при этом также можно ускорить запуск нужных программ. На серверах или при загрузке в CLI - время загрузки системы может снизиться не на много. Для SSD-дисков вообще нет смысла использовать, поскольку у них отсутствуют движущиеся части и, как следствие, отсутствуют (почти) задержки, однако, пользователям таких дисков, может быть полезно ознакомиться с Ureadahead.

Примечание: Пользователи ureadahead, в официальном руководстве e4rat говориться о том, что ureadahead конфликтует с e4rat. Это может быть верным для Ubuntu, но в Arch Linux эти пакеты возможно будут работать нормально, хотя процесс загрузки, скорее всего, и не ускорится.

Перед использованием e4rat рекомендуется сделать резервные копии изменяемых во избежание потери важных данных.

## Установка

Пакет e4ratAUR можно найти в репозитории [community] и установить так:

    # pacman -S e4rat

## Использование

Далее более подробно:

### e4rat-collect

Чтоб e4rat смог создать список файлов, необходимо отредактировать файл `/boot/grub/menu.lst` (GRUB legacy) или `/boot/grub/grub.cfg` (grub2), добавив в строку загрузки ядра linux следующее:

    init=/sbin/e4rat-collect

Данное действие нужно будет выполнить один раз, поэтому также можно просто отредактировать нужную строку в меню grub на этапе загрузки из командной строки.

После загрузки, в течении 120 секунд, e4rat-collect будет собирать нужную информацию. Поэтому, в течении 2-х минут после загрузки, запустите X-ы, откройте любимый браузер или почтовую программу и т.д., при этом утилита зарегистрирует все запущенные программы и используемые файлы. При необходимости можно изменить стандартное время сбора статистики, для этого отредактируйте файл `/etc/e4rat.conf`. Чтобы вручную завершить работу e4rat-collect, выполните:

    e4rat-collect -k

или

    pkill e4rat-collect

После загрузки и успешного завершения работы e4rat-collect должен появиться файл: `/var/lib/e4rat/startup.log`

Теперь не забудьте удалить команду запуска e4rat-collect из своего файла `menu.lst` или `grub.cfg` (не обязательно, если вы ее добавляли из командной строки GRUB в процессе загрузки системы).

### e4rat-realloc

Для запуска процесса перемещения файлов, согласно созданному в предыдущем шаге списку, необходимо перейти в init 1:

    sudo init 1

Авторизоваться в качестве root и выполнить:

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

В зависимости от того, сколько файлов перечислено в `startup.log`, процесс может затянуться на продолжительное время.

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

### e4rat-preload

Отредактируйте файл `/boot/grub/menu.lst` (GRUB legacy) или `/boot/grub/grub.cfg` (grub2), добавив в параметры загрузки ядра:

    init=/sbin/e4rat-preload

Примечание: В случае использования grub2, параметры загрузки ядра добавляйте в строку `GRUB_CMDLINE_LINUX="..."` файла `/etc/default/grub`.

Перезагружайтесь и наслаждайтесь.

Примечание: После обновления системы может понадобиться выполнить заново все описанные для #e4rat-collect, #e4rat-realloc и #e4rat-preload действия

### Альтернатива: e4rat-preload-lite

jlindgren в качестве альтернативы разработал бинарный preload, позволяющий сэкономить несколько секунд при загрузке.

Экономия достигается за счет:

- использования чистого C без каких-либо зависимостей от внешних библиотек, что позволяет уменьшить количество связанных файлов .so с 22 до 3
- предварительной загрузки первых 100 файлов (таких как дескрипторы и файлы содержимого) перед запуском `/sbin/init`, и дальнейшей загрузки остальных файлов как параллельно, так и в определенной последовательности

e4rat-preload-liteAUR[ссылка недействительна: сохранено в aur-mirror] можно установить из AUR.

Отредактируйте файл `/boot/grub/menu.lst` (GRUB legacy) или `/boot/grub/grub.cfg` (GRUB), добавив в параметры загрузки ядра:

    init=/usr/sbin/e4rat-preload-lite

Перезагружайтесь и наслаждайтесь.

## e4rat и различные системы инициализации

По умолчанию e4rat-collect после завершения будет заменена на /sbin/init. Если вам нужно указать другой PID 1, например /bin/systemd, отредактируйте файл `/etc/e4rat.conf`, раскомментировав в нем строку с нужным параметром init

## Bootchart

Примечание: Еще находится в разработке и толком не работает - любые предложения приветствуются

Запустите Bootchart до и после использования e4rat, а затем сравните полученные результаты. Должны появиться видимые изменения.

### bootchart 0.9-9

В этой версии журнал ведется только до запуска экранного менеджера. Для обхода данного ограничения можно попробовать выполнить следующее (работает не у всех):

В файле `/etc/bootchartd.conf` установите:

    AUTO_STOP_LOGGER="no"

Когда будет нужно остановить работу сервиса - выполните:

    ~# bootchartd stop

Для запуска e4rat-preload и bootchart добавив в параметры загрузки ядра:

    init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload

### bootchart2

Для совместного использования bootchart2 с e4rat отредактируйте `/sbin/bootchartd` и заменить строку `init="/sbin/init"` на `init="/sbin/e4rat-preload"`.

`/etc/bootchartd.conf` от bootchart2 устроен иначе, а строка

    EXIT_PROC="kdm_greet xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"

может быть скорректирована таким образом, что можно будет либо завершать программу вручную (если оставить строку пустой), либо, при запуске указанной в строке программы, bootchart2 будет остановлен автоматически.

## Устранение неполадок

Если что-то не работает - можно попробовать следующее.

### startup.log не создается

- отключите все проверки в `rc.conf`
- изучите все сообщения из

    # dmesg | grep e4rat

- в `e4rat.conf` увеличите значения verbose и loglevel до 31.

### e4rat - отчеты об ошибках в файловой системе ext2

- в файле `grub.cfg` или `menu.lst` добавьте в параметры загрузки ядра:

    rootfstype=ext4

### /var/lib/e4rat/startup.log не доступен

- это говорит о том, что /var расположен на отдельном разделе и при загрузке еще не был смонтирован. Вам нужно переместить `startup.log` на раздел который доступен (лучше всего в /etc/e4rat/) и, для сохранения изменений, перенастроить `/etc/e4rat.conf`:

    startup_log_file /etc/e4rat/startup.log

Categories:

- Русский
- Boot process (Русский)

Hidden category:

- Pages with broken package links