Компилирование ядра 2.6.0 на slackware
Из чистого любопытства я попытался скомпилировать ядро 2.6.0 на своей машине Slackware.
root@darkstar:/home/linux-2.6.0# uname -a
Linux darkstar 2.6.37.6-smp #2 SMP Sat Apr 9 23:39:07 CDT 2011 i686 Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz GenuineIntel GNU/Linux
Когда я пытаюсь скомпилировать, я получаю:
root@darkstar:/home/linux-2.6.0# make menuconfig
HOSTCC scripts/fixdep
scripts/fixdep.c: In function 'traps':
scripts/fixdep.c:359:2: warning: dereferencing type-punned pointer will break strict-aliasing rules
scripts/fixdep.c:361:4: warning: dereferencing type-punned pointer will break strict-aliasing rules
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91:21: error: static declaration of 'current_menu' follows non-static declaration
scripts/kconfig/lkc.h:63:21: note: previous declaration of 'current_menu' was here
make[1]: *** [scripts/kconfig/mconf.o] Error 1
make: *** [menuconfig] Error 2
Некоторые намеки на то, что я делаю не так? Спасибо!
2 ответа
Как вы делаете это, чтобы начать с?
Обычно вы скачиваете последнее ядро с сайта kernel.org, копируете tarball в /usr/src, а затем:
1. tar -zxvvf linux-2.6.xxxx.tar.gz
2. ln -nsf linux-2.6.xxxx linux # ie: Update the "/usr/src/linux" symbolic link to
# point to the new kernel source directory
3. make menuconfig # or make xconfig
4. make modules # Build the kernel modules
5. make modules_install # Install the previously built modules for the
# new kernel
6. make bzImage # Create the boot image
На этом этапе НЕ запускайте make install
, Большинство гидов говорят, чтобы сделать это, но это НЕПРАВИЛЬНО! Вместо этого скопируйте только что созданный файл bzImage в /boot (то есть: find -name bzImage /usr/src/linux
, затем cp
в /boot
), затем отредактируйте файл конфигурации LILO /etc/lilo.conf
и когда закончите, запустите lilo
), затем перезагрузите вашу систему (то есть: init 6
или же shutdown -r now
) и попробуйте новое ядро.
Весь смысл пропустить make install
шаг состоит в том, что он перезаписывает / заменяет существующее ядро. Шаги, которые я описал выше, позволяют установить и запустить новое ядро и имеющееся ядро параллельно. Если новое ядро сломано или вы упустили важный вариант, вы все равно можете вернуться к существующему стабильному / рабочему ядру без необходимости загрузки / восстановления CD/DVD.
Если я хорошо помню, я думаю, что вам не хватает библиотек ncurses. Это необходимо для создания интерфейса с помощью menuconfig.
Попробуйте сделать make xconfig из сеанса X и посмотрите, работает ли он.
если это так, то ncurses libs определенно отсутствуют.
проверить с:
ls /var/log/packages/ncurses*
чтобы увидеть, если установлен