Handbook:MIPS/Blocks/Kernel/ru

From Gentoo Wiki
Jump to:navigation Jump to: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 начальный загрузчик ожидает запакованный образ ядра. Прежде чем положить его в /boot/, не забудьте выполнить команду gzip -9 для образа.
root #cp vmlinux /boot/kernel-6.6.21-gentoo

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

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