Handbook:MIPS/Blocks/Kernel/ru

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Handbook:MIPS/Blocks/Kernel and the translation is 100% complete.


Подготовка конфигурации

Важно
На некоторых системах (Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2 и O2) необходимо 64-битное ядро для загрузки. Для таких систем установите sys-devel/kgcc64, чтобы собрать кросс-компилятор для построения 64-битных ядер.

Многие из поддерживаемых систем имеют примерные файлы .configs, скрытые в исходных кодах ядра. Не все системы имеют конфигурацию распространяемую таким образом. Те, которые имеют, могут быть сконфигурированы командами, показанными в таблице ниже.

Система Команда конфигурации
Сервера Cobalt make cobalt_defconfig
Indy, Indigo2 (R4k), Challenge S make ip22_defconfig
Origin 200/2000 make ip27_defconfig
Indigo2 Impact (R10k) make ip28_defconfig
O2 make ip32_defconfig

Все образы для установки Gentoo включают в себя конфигурацию ядра как часть образа. Конфигурация находится в /proc/config.gz. Во многих случаях данный файл можно использовать. Лучше, если ваши исходные коды ядра почти совпадают с ядром, которое в настоящее время работает. Чтобы распаковать данный файл, просто пропустите его через zcat, как показано ниже.

root #zcat /proc/config.gz > .config
Важно
Данная конфигурация ядра настроена для образа netboot. Поэтому она будет ожидать, что где-то рядом находится образ корневой файловой системы, либо как каталог для initramfs, либо устройство-петля для initrd. Когда вы запустите make menuconfig, не забудьте зайти в General Setup и выключить опции для initramfs.

Настройка конфигурации

Как только вы нашли конфигурацию, скачайте ее в каталог с вашим исходным кодом ядра, и переименуйте ее в .config. Далее вы можете запустить make oldconfig чтобы обновить конфигурацию, и получить возможность изменить ее до компиляции.

root #cd /usr/src/linux
root #cp /path/to/example-config .config
root #make oldconfig

Пока просто нажмите ENTER (также известная как Return) на каждую подсказку, чтобы выбрать опцию по умолчанию...

root #make menuconfig
Важно
В разделе Kernel Hacking есть опция, названная "Are You Using A Cross Compiler?". Она сообщает ядру, что нужно добавить "mips-linux-" (либо mipsel-linux ... и так далее) к командам gcc и as при компиляции ядра. Это нужно выключить, даже если вы и правда делаете кросс-компиляцию. Вместо этого, если вам нужно вызвать кросс-компилятор, укажите префикс, используя переменную CRROSS_COMPILE, как показано в следующем разделе.
Важно
Существует известная ошибка с JFS и ALSA на системах Octane, когда ALSA не работает. Из-за недостаточной стабильности JFS на MIPS, рекомендуется пока не использовать JFS.

Компиляция и установка

Теперь, когда ядро настроено, настало время его скомпилировать и установить. Выйдите из настройки и запустите процесс компиляции:

Заметка
На 64-битных машинах вам нужно указать CROSS_COMPILE=mips64-unknown-linux-gnu- (или mips64el-... на системе little-endian) для использования 64-битного компилятора.

Обычная компиляция:

root #make vmlinux modules modules_install

При кросс-компиляции на целевой системе измените mips64-unknown-linux-gnu- так, как вам необходимо:

root #make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-

При компиляции на другой системе, например, x86, используйте следующие команды для компиляции ядра и установки модулей в отдельный каталог, который потом можно передать на целевую систему.

root #make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
root #make modules_install INSTALL_MOD_PATH=/куда_нибудь
Важно
При компиляции 64-битного ядра для Indy, Indigo2 (R4k), Challenge S и O2, используйте цель vmlinux.32 вместо vmlinux. В противном случае ваша система не сможет загрузиться. Это для того, чтобы обойти PROM, который не понимает формат ELF64.
root #make vmlinux.32
Заметка
Возможно включить параллельную сборку, используя make -jX, где X это число параллельных задач, которые может запустить процесс сборки. Это похоже на инструкции, которые были даны ранее относительно файла /etc/portage/make.conf в части переменной MAKEOPTS.

Данная команда создаст vmlinux.32 - который будет вашим конечным ядром

По завершении компиляции ядра, скопируйте образ ядра в каталог /boot:

Заметка
На серверах Cobalt, начальный загрузчик ожидает увидеть запакованный образ ядра. Помните, что нужно выполнить gzip -9 для образа, прежде чем положить его в /boot/.
root #cp vmlinux /boot/kernel-3.16.5-gentoo

Для серверов Cobalt сожмите образ ядра:

root #gzip -9v /boot/kernel-3.16.5-gentoo