|
Автор |
Сообщение |
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
|
|
цель: перекомпилировать ядро под конкретный процессор (для меня Athlon64) на семействе дистрибутивов OpenSUSE (у меня сусе 11.2 - 2.6.31.12). семейство процессоров может быть следующим:
-386
-486
-586/K5
-pentium_classic (по умолчанию для 32-битных систем)
-pentium_mmx
-pentium_pro
-pentium_II
-pentium_III
-pentium_M
-pentium_4/celeron(P4-based)
-K6
-Athlon/Duron/K7
-optero/athlon64/hammer/K8
-crusoe
-Efficeon
...
-VIA_C7
-core_2/newer_Xeon
подготовка:
1) устанавливаем необходимое ПО для перекомпиляции:
-исходники ядра. только с оффициального сайта сусе, т.к. в сусе используется сильно-патченные ядра (вчастности они пропатчены для apparmor, который собираются ввести в
основную ветку ядра только с 2.6.36 http://www.opennet.ru/opennews/art.shtml?num=27488). лучше зайти в Yast и установить "пакеты для разработки ядра линукс".
2) для тех кто использует видеокарты nvidia с проприетырными драйверами, советую сразу слить с офф. сайта http://www.nvidia.com драйвера (run-файлик).
3) !!!если вы ставили проприетарные дрова nvidia с репозитория сусе, то удалите их!!!
4) !!!если вы ставили virtualbox, то удалите его!!! и слейте rpm-пакет с офф. сайта http://www.virtualbox.org/wiki/Downloads.
приступаем:
1) для нового ядра желательно скопировать конфигурацию с уже работающего. для этого переходим в каталог, где у нас находяться исходники ядра "cd /usr/src/linux"
и "sudo cp /boot/config-`uname -r` ./.config" - непосредственно для копирования конфига.
2) выполняем конфигурирование будущего ядра "sudo make menuconfig" тут появиться уйма найстроек, понятных и не очень! читаем http://wiki.linuxformat.ru/index.php/LXF78:Конфигурация_ядра:_готовые_рецепты (раздел "оптимизация") - для поверхностного ознакомления.
//изменения, которые внёс я:
-изменил архитектуру процессора;
-вынес из ядра поддержку неиспользуемых ФС, оставил в ядре только extFS4.
-исменил "ориентацию" ядра с No Forced Preemption на Preemptible Kernel (тем самым заметно повысил отзывчивость системы, но для серверов этот вариант не годиться).
-отключил поддержку не x86 архитектуры, ну и по мелочи...
3) правим make-файл "sudo mcedit ./Makefile". и меняем:
"
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 31
EXTRAVERSION = .12
"
на
"
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 31
EXTRAVERSION = .13-athlon
"
//эт только пример, но у себя я сделал именно так
4) создаём rpm-какет ядра "sudo make rpm". и можно пойти попить чай, как говорят в таких ситуациях. (на моём Athlon_II_X2_240 это примерно 40 минут).
5) полученное ядро должно находиться в "/usr/src/packagers/RPMS/...". переходим в эту папку и устанавливаем его "sudo rpm -Uvh ./2.6...."
5.1) !!!с исходниками ничего не делаем!!!
6) создаём рамдиск "sudo /sbin/mkinitrd".
7) правим конфиг grub'а "sudo mcedit /boot/grub/menu.lst". как? - тема отдельной статьи!
8 ) если нужны проприетарные дрова на nvidia:
-перезагружаемся и ставим дрова на nvidia "sudo sh ./NV....run -q"
-!!!в случае обновления ядра (ну захотел я пересобрать ядро ещё раз)!!! необходимо выполнить "sudo sh ./NV....run -K"
9) если нужен virtualbox:
-ставим rpm'ку, скачанную с офф. сайта !!!ставим в консоли!!!
-вам будет предложено выполнить "sudo /etc/init.d/vboxdrv setup", выполняем и ждём пока скоплилиться модуль для virtualbox.
-делаем "sudo /etc/init.d/vboxdrv restart"
//!!!ещё!!!! во время конфигурирования ядра необходимо отключить введение отладочной информации!
[ ]Kernel_hacking->Kernel_debugging //убираем галочку
это позволяет сократить:
-размер РПМ-паке раз в 5-6;
-время компиляции ядра раза в полтора-два!
//после компиляции директории "/usr/src/packagers/BUILD" "/usr/src/packagers/BUILDROOT" будут содержать мусор гига на 2 - чистить, можно удалить папки целиком.
//для пересборки ядра может потребоваться приличное дисковое пространство (у меня ушло под это дело около 4 гигов).
Последний раз редактировалось: ruslan89 (Вт Авг 03, 2010 11:04 am), всего редактировалось 3 раз(а) |
|
Вернуться к началу |
|
|
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
|
|
добалю: после данных манипуляций отзывчивость системы заметно возрасла!
Ден Наколаевич, а что с сыллками? как правильно пользоваться "тэгами" движка форума? |
|
Вернуться к началу |
|
|
Konstantin
Завсегдатай
Зарегистрирован: 01.05.2006 Сообщения: 615
|
|
|
|
То, что отзывчивость возрастет, наш уважаемый Дэн написал еще в первой книжке как пруфлинк!!!!!
Эх, были времена лет 7-8 назад: постоянно рвущийся диалап, качающий ванильные исходники, зачитанная до дыр книжка Дэна на столе, ночное красноглазие!!!!
Руслан, а теперь попробуй ядро собрать из-под нового ядра - опять 40 мин или меньше? |
|
Вернуться к началу |
|
|
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
|
|
есть 2 непонятного момента:
1) ...preloadtrace.ko": No such fileor directory... во время загрузки. на "родном" ядре этого нет.
2)
Код: |
ruslan@ruslan-linux:~> ls -lh /boot/
итого 73M
-rw------- 1 root root 512 Дек 21 2009 backup_mbr
lrwxrwxrwx 1 root root 1 Дек 21 2009 boot -> .
-rw-r--r-- 1 root root 1,3K Дек 3 2009 boot.readme
-rw-r--r-- 1 root root 107K Мар 17 23:19 config-2.6.31.12-0.2-default
-rw-r--r-- 1 root root 103K Авг 1 17:33 config-2.6.31.13-athlon-0.2-default
drwxr-xr-x 2 root root 4,0K Авг 1 23:43 grub
lrwxrwxrwx 1 root root 41 Авг 2 11:07 initrd -> /boot/initrd-2.6.31.13-athlon-0.2-default
-rw-r--r-- 1 root root 4,9M Авг 2 09:28 initrd-2.6.31.12-0.2-default
-rw-r--r-- 1 root root 15M Авг 2 09:28 initrd-2.6.31.13-athlon-0.2-default
-rw-r--r-- 1 root root 161K Окт 20 2009 memtest.bin
-rw-r--r-- 1 root root 473K Янв 11 2010 message
-rw-r--r-- 1 root root 475K Мар 17 23:23 symtypes-2.6.31.12-0.2-default.gz
-rw-r--r-- 1 root root 169K Мар 17 23:20 symvers-2.6.31.12-0.2-default.gz
-rw-r--r-- 1 root root 1,4M Мар 17 23:03 System.map-2.6.31.12-0.2-default
-rw-r--r-- 1 root root 1,4M Авг 1 17:33 System.map-2.6.31.13-athlon-0.2-default
-rw-r--r-- 1 root root 4,5M Мар 17 23:19 vmlinux-2.6.31.12-0.2-default.gz
-rwxr-xr-x 1 root root 38M Авг 1 17:26 vmlinux-2.6.31.13-athlon-0.2-default.bz2
lrwxrwxrwx 1 root root 42 Авг 2 11:12 vmlinuz -> /boot/vmlinuz-2.6.31.13-athlon-0.2-default
-rw-r--r-- 1 root root 3,6M Мар 17 23:03 vmlinuz-2.6.31.12-0.2-default
-rw-r--r-- 1 root root 3,2M Авг 1 17:33 vmlinuz-2.6.31.13-athlon-0.2-default
|
полученное ядро больше "родного" в 3 раза и имеет другое "расширение" (очевидно использовался другой алгоритм сжатия). почиму? |
|
Вернуться к началу |
|
|
Konstantin
Завсегдатай
Зарегистрирован: 01.05.2006 Сообщения: 615
|
|
|
|
Собери ядро по существующей родной конфигурации и посмотри размер. Если после твоего сбора он тоже увеличился, то дело в классическом mkinitrd.
У тебя все модули въехали в ядро скорее всего.
я обычно делаю так
cd /usr/src/linux
make mrproper
make menuconfig ( или make oldconfig - старый или подправленный в редакторе конфиг)
make
sudo make modules_install (sudo checkinstall -R make modules_install)
sudo make install (sudo checkinstall -R make install) |
|
Вернуться к началу |
|
|
Anton99
Neo
Зарегистрирован: 26.11.2006 Сообщения: 1676
|
|
|
|
"но для серверов этот вариант не годиться" - почему? |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Цитата: |
Ден Наколаевич, а что с сыллками? как правильно пользоваться "тэгами" движка форума?
|
Не нужны никакие теги - просто вставляй ссылки в текст |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
|
|
Anton99 писал(а): |
"но для серверов этот вариант не годиться" - почему? |
так пишут. |
|
Вернуться к началу |
|
|
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
|
|
Konstantin писал(а): |
Собери ядро по существующей родной конфигурации и посмотри размер. |
именно по родной и собирал.
рам-диски отличаются в размене в 3 раза.
vmlinuz (без расширения, извините за глупый вопрос: чем он отличается от тогоже образа ядра с расширением?) - почти одинаковы
vmlinuz с расширением - больше в 8 раз.
//возможно при компиляции была включена отладочная информация? |
|
Вернуться к началу |
|
|
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
А в этом плане понял. Это трабла phpbb2, некогда исправить |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
ruslan89
Завсегдатай
Зарегистрирован: 09.01.2010 Сообщения: 799
|
|
|
|
!!!ещё!!!! во время конфигурирования ядра необходимо отключить введение отладочной информации!
[ ]Kernel_hacking->Kernel_debugging //убираем галочку
это позволяет сократить:
-размер РПМ-паке раз в 5-6;
-время компиляции ядра раза в полтора-два! |
|
Вернуться к началу |
|
|
|
|