voroshil's Blog

Здесь должно быть что-то умное

Загрузка Linux за 20 секунд

Прочитав статью о загрузке линукс за 10 секунд, загорелся сделать что-то подобное со своей Ubunt'ой.

Вооружившись программкой bootchart и потратив на оптимизацию пару дней, в конце-концов добился некоторых результатов: Диаграмма загрузки Ubuntu за 19 секунд

19 секунд это конечно не 10-ть, но тоже неплохо, особенно если учесть, что ранее система грузилась не меньше двух минут. Имейте в виду, что это - время загрузки до появления экрана входа в систему.

К сожалению, используемый GNOME скоростью загрузки похвастаться не может (еще около минуты при 100% загрузке диска, т.к. он при запуске читает с диска более 60 мегабайт данных, как оказалось).

Под катом - некоторые подробности и полная диаграмма.

Для достижения подобного результата пришлось сделать следующие вещи:

  1. Отключить неиспользуемые службы (например anacron, winbind).
  2. Собрать собственный initrd образ (викинул из него udev, упростил до минимума init script, добавил параллельную загрузку из initrd всех модулей, которые понадобяться позднее).
  3. отключить splash и добавить в grub к опциям ядра clocksource=hpet (Без этого загрузка модуля ata_piix длится более десяти минут, почему - не знаю. Причем при использовании udev в initrd такой проблемы замечено не было.).
  4. Изменить порядок загрузки некоторых служб в /etc/rcS.d (в частности грузить udev и инициализировать lo интерфейс не дожидаясь окончания настройки часов)
  5. Изменить скрипт /etc/init.d/readhead таким образом, чтобы система не ожидала завершения его работы для продолжения загрузки (т.е. добиться выполнения предзагрузки библиотек параллельно с основным процессом загрузки, тем самым избегая ненужного простоя диска в процессе загрузки).

Поскольку у меня используется автологин, то я на этом и остановился. В противном случае можно добавить предзагрузку (выполняемую во время показа диалога входа в систему) файлов, используемых GNOME и добиться его 10-ти а то и 5-ти секундной загрузки.

Полная диаграмма загрузки (опять же до приглашения к вводу пароля). Начиная с третьей секунды (не дожидаясь окончания загружки всех модулей) запускается основной init и отрабатываются rcS.d крипты. С 15-ой секунды грузятся rc2.d скрипты.

Диаграмма загрузки Ubuntu за 19 секунд