ВступлениеО новом планировщике задач BFS для Linux все уже наверняка слышали. Весьма эпатажный «трейлер» с xkcd к новому планировщику, и не менее веселый FAQ, пробудили интерес. Расспросил знакомых, кто ставил, чтобы поделились впечатлениями — никто не ставил, ибо «влом ядро новое ставить» или «я подожду, пока оно в мейнстриме появится». Поставил и попробовал сам, и для тех кто хочет сделать то же самое — краткое руководство для Ubuntu 9.04, с описанием потенциальных граблей.
В качестве тизера, скажу лишь, что полноэкранное видео на youtube действительно не тормозит и система стала отзывчивее и шустрее.
Итак, дабы не быть голословным, приступим. Предполагается, что у вас установлена Ubuntu 9.04 (Jaunty).
ЯдроДанный планировщик написан для ядер 2.6.30+, поэтому дефолтное в Jaunty ядро 2.6.28 нам не подходит. Нужно скачать 2.6.30, а лучше последнее на данный момент из ветки —
2.6.30.6Можно и последнее 2.6.31, но я заметил легкую регрессию в отзывчивости системы на этом ядре, поэтому остался на .30-й ветке. На вкус и цвет, как говорится.
Скачиваем исходники, заботливо упакованные в .deb разработчиками Ubuntu:
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v2.6.30.6/linux-source-2.6.30_2.6.30-02063006_all.deb
Устанавливаем исходники:
sudo dpkg -i linux-source-2.6.30_2.6.30-02063006_all.deb
cd /usr/src
sudo tar xvjf linux-source-2.6.30.tar.bz2
С ядром пока закончили.
Патч BFSТеперь нужно установить патч
BrainFuck Scheduler. Директория с патчем и прочими релевантными файлами находится
тут.
Последняя актуальная версия патча на момент написания [urlhttp://ck.kolivas.org/patches/bfs/old/2.6.30-sched-bfs-209.patch]2.0.9[/url] (для .30-й ветки ядра). Для ядра 2.6.31 используем
этот патч.
Скачиваем и накладываем патч:
cd /usr/src/linux-source-2.6.30/
sudo wget http://ck.kolivas.org/patches/bfs/old/2.6.30-sched-bfs-209.patch
sudo patch -p1 < 2.6.30-sched-bfs-209.patch
Патч два раза ругнется на «assume reverse patch» — нужно отвечать «нет», и на «Apply anyway?» — «yes».
Сборка пропатченного ядраТеперь собираем, как и всегда. Кто не знает, как собираем всегда, краткое введение — в Debian/Ubuntu для сборки ядра существует удобная утилита kernel-package, которая делает за нас тонну работы. Поэтому сначала её ставим, или убеждаемся, что она(и еще несколько необходимых программ) установлена:
sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
Теперь генерируем новую конфигурацию ядра на основе существующей:
sudo cp /boot/config-`uname -r` ./.config
sudo make menuconfig
Тут нам нужно будет сделать парочку изменений.
* Processor type and features -> Timer frequency устанавливаем в 1000Hz
* Processor type and features -> Tickless System (Dynamic Ticks) отключаем
* Processor type and features -> Preemption Model -> Preemptible kernel (Low latency desktop)
Выходим и сохраняем конфигурацию.
Далее, непосредственно сборка:
sudo make-kpkg clean
sudo fakeroot make-kpkg --initrd --append-to-version=-bfuck kernel_image kernel_headers
(на счет
sudo fakeroot автор явно погарячился
ибо это неправильно "слегка". Тем не менее, я сделал именно так. Поправьте пожалуйста меня в этом вопросе.)
Пока идет компиляция смело уходим на часок куда-нибудь погулять
Если всё прошло удачно, то в /usr/src/ у вас будут лежать два .deb пакета, с заголовками файлов и непосредственно с ядром и модулями. Устанавливаем их:
sudo dpkg -i /usr/src/*bfuck*.deb
При этом ядро и модули установятся в систему, сгенерируется новый initrd, пересоберутся зависимые внешние модули (кроме nvidia) и grub автоматически узнает про новое ядро.
Теперь можно перезагружаться.
================================
Необязательное дополнение про драйвера NVidia================================
Для пользователей дров из реп, соответственно, юзеров dkms:
Те драйвера, которые по умолчанию лежат в репозитории — не устанавливаются автоматически на новое ядро, а выдают ошибку. Это сбивает всю прелесть автоматических инсталляционных скриптов и у нас есть два выхода — либо скачать самый свежий инсталляционный бинарник с сайта Nvidia, либо использовать красивый метод с патчем для драйверов.
Итак, скачиваем патч для модуля nvidia:
wget http://lionsimba.lerlan.ru/temp/proc-dir-entry-owner.patch
Копируем его в /usr/src/nvidia-180.44/patches/
sudo cp proc-dir-entry-owner.patch /usr/src/nvidia-180.44/patches/
В файл /usr/src/nvidia-180.44/dkms.conf добавляем следующие строки:
PATCH[1]="proc-dir-entry-owner.patch"
PATCH_MATCH[1]="^2.6.30"
Всё, можно пользоваться всеми прелестями dkms и быть уверенными, что на новом ядре заработают драйвера Nvidia.
Взято
отсюда.
================================
От себя:
Все проверено на своих рабочей и домашней машинах. Все работает, проблем не замечено пока что. На счет производительности и отзывчивости системы - действительно правда. Система значительно шустрее. Многие программы стартуют в секунды. Chromium вообще в долю секунды
В общем, для любителей
Bleeding Edge и экспериментаторов. По крайней мере, полет у меня нормальный. Уверен, "гикам" понравится