Сборка ядра на 64-х битной системе для 32-х битной

Комментарии:
Для сборки ядра используется скрипт linux32 он создает окружение для корректной сборки.
Формат вызова: linux32 [options] [program [arguments]]
Чтобы сборка происходила в указанном подкаталоге необходимо при make передать параметр O=<directory> причем этот параметр задается во ВСЕХ! операциях make в том числе и mrproper. Конфигурация .config лежит в указанном подкаталоге.
INSTALL_MOD_PATH=<directory> при modules_install устанавливает модули в указанный подкаталог в данном подкаталоге будет создана иерархия <directory>/lib/modules/….

Ниже приводится скрипт автоматизирующий все эти действия и создающий в /tmp/ архив с ядром и модулями kernel_<дата компиляции>.tgz

#!/bin/bash

SOURCE=`pwd`;
BUILD_DIRECTORY="/home/tmp/vacer/kernel"
MOD_PATH="/home/tmp/vacer/modules"
THREADS=8

#/usr/bin/linux32 make O=$BUILD_DIRECTORY mrproper
dialog --msgbox " Kernel source - $SOURCE \n Build Directory - $BUILD_DIRECTORY \n Modules Directory - $MOD_PATH \n Threads - $THREADS " 12 60
dialog --yesno  "Configure?" 7 30
case $? in
  0)
    /usr/bin/linux32 make -j $THREADS O=$BUILD_DIRECTORY nconfig ;;
  1)
    ;;
  255)
    exit ;;
esac
dialog --defaultno --yesno  "Clean?" 7 30
case $? in
  0)
    /usr/bin/linux32 make -j $THREADS O=$BUILD_DIRECTORY clean ;;
  1)
    ;;
  255)
    exit ;;
esac

/usr/bin/linux32 make -j $THREADS O=$BUILD_DIRECTORY
/usr/bin/linux32 make -j $THREADS O=$BUILD_DIRECTORY modules
/usr/bin/linux32 make -j $THREADS O=$BUILD_DIRECTORY modules_install INSTALL_MOD_PATH=$MOD_PATH
mkdir $MOD_PATH/boot
cp $BUILD_DIRECTORY/arch/x86/boot/bzImage $MOD_PATH/boot/vmlinuz
cp $BUILD_DIRECTORY/System.map $MOD_PATH/boot/
cd $MOD_PATH
ARCHIVE=/tmp/kernel_`/usr/bin/date +%Y%m%d%H%M`.tgz
tar -czvf $ARCHIVE lib boot
cd $SOURCE
dialog --msgbox "Build Completed in $ARCHIVE!" 7 60

QR Code
QR Code wiki:buildkernelfo32on64 (generated for current page)