Прочитав статью о загрузке линукс за 10 секунд, загорелся сделать что-то подобное со своей Ubunt'ой.
Вооружившись программкой bootchart и потратив на оптимизацию пару дней, в конце-концов добился некоторых результатов:
19 секунд это конечно не 10-ть, но тоже неплохо, особенно если учесть, что ранее система грузилась не меньше двух минут. Имейте в виду, что это - время загрузки до появления экрана входа в систему.
К сожалению, используемый GNOME скоростью загрузки похвастаться не может (еще около минуты при 100% загрузке диска, т.к. он при запуске читает с диска более 60 мегабайт данных, как оказалось).
Под катом - некоторые подробности и полная диаграмма.
Для достижения подобного результата пришлось сделать следующие вещи:
- Отключить неиспользуемые службы (например anacron, winbind).
- Собрать собственный initrd образ (викинул из него udev, упростил до минимума init script, добавил параллельную загрузку из initrd всех модулей, которые понадобяться позднее).
- отключить splash и добавить в grub к опциям ядра clocksource=hpet (Без этого загрузка модуля ata_piix длится более десяти минут, почему - не знаю. Причем при использовании udev в initrd такой проблемы замечено не было.).
- Изменить порядок загрузки некоторых служб в /etc/rcS.d (в частности грузить udev и инициализировать lo интерфейс не дожидаясь окончания настройки часов)
- Изменить скрипт /etc/init.d/readhead таким образом, чтобы система не ожидала завершения его работы для продолжения загрузки (т.е. добиться выполнения предзагрузки библиотек параллельно с основным процессом загрузки, тем самым избегая ненужного простоя диска в процессе загрузки).
Поскольку у меня используется автологин, то я на этом и остановился. В противном случае можно добавить предзагрузку (выполняемую во время показа диалога входа в систему) файлов, используемых GNOME и добиться его 10-ти а то и 5-ти секундной загрузки.
Полная диаграмма загрузки (опять же до приглашения к вводу пароля). Начиная с третьей секунды (не дожидаясь окончания загружки всех модулей) запускается основной init и отрабатываются rcS.d крипты. С 15-ой секунды грузятся rc2.d скрипты.