Форум: Полезно
Тема: Ръчно обновяване на ядрото
Автор: nikolavp

Мнение от nikolavp пуснато на Октомври 06 2007, 16:05
Може би доста от вас ползват дистрибуции, който не предоставят прекомпилирани ядра, или пък сте от тези, които ползват такива дистрибуции, но си имате собствено(custom ядро), поради специален hardware или пък за по - добра производителност. Този скрипт е за вас. Той автоматизира компилиране/обновяване на ядрото от по - стара версия към сегашната свалена. Първо ще покажа скриптчето, а после ще обясня как се ползва
Код: 
#!/bin/bash
LOADER_ROOT_PARTITION="hd0,6"
KERNEL_PARAMETERS="root=/dev/hda7 vga=0x315 quiet"
if [[ -d /usr/src/linux ]];then
       echo "Cleaning the old sources"
else
       echo "You don't have a symbolic link or a directory /usr/src/linux and the ###### depends on that"
       exit 3
fi
#Get the VERSION from the symbolic link
VERSION=$(readlink /usr/src/linux)
#Entering the sources dir
cd /usr/src/linux
make mrproper
if [[ -f /proc/config.gz ]];then
       zcat /proc/config.gz > ./.config
else
       "There isn't /proc/config.gz and the ###### depend on it"
       eixt 3
fi
#If you want to edit the old options, comment "make oldconfig" and uncomment "make menuconfig"
###############################################################################
#make menuconfig
make oldconfig
make -j2
make modules_install
mv /usr/src/linux/arch/i386/boot/bzImage /boot/"${VERSION%/}"
#Making the menu.lst configuration; some version of grub have grub.conf instead so you can change it if
#there isn't a symbolic link(there should be).
#TODO: Make a sed hack that edit the default parameter and put the new section as default
#section_number=$(grep title /boot/grub/menu.lst | wc -l)
echo "" >> /boot/grub/menu.lst
echo "title=${VERSION%/}" >> /boot/grub/menu.lst
echo "root(${LOADER_ROOT_PARTITION})" >> /boot/grub/menu.lst
echo "kernel /boot/${VERSION%/} ${KERNEL_PARAMETERS}" >> /boot/grub/menu.lst
Скрипта работи само за grub за момента, тъй като нямам лило да го тествам. Нещата, които трябва да промените са LOADER_ROOT_PARTITION и KERNEL_PARAMETERS.

Първата променлива трябва да съдържа партицията/дяла, на който се намира имиджа на ядрото(така наречения /boot дял);използва се начина на броене на груб - така /dev/hda1 за груб се явява hd0,0;/dev/hda2 - hd0,1 /dev/hda3 - hd0,2 т.н. (демек се започва от нулата). KERNEL_PARAMETERS съдържа параметри за ядрото, които искате да поставите, не забравяйте да посочите главния (/) дял с root=""

Скрипта иска /proc/config.gz и ще се оплаче ако не го намери, тази възможност се намира в
Код: 
 -> General setup
              -> Kernel .config support (IKCONFIG [=y])

Също ще трябва да направите символна връзка от сорсовете към /usr/src/linux . Това става с командата
Код: 
ln -sf "директория със сорсовете" /usr/src/linux

Ако искате да промените нещо, което не харесвате в сегашната си конфигурация коментирайте реда
Код: 
make oldconfig
и откоментирайте
Код: 
make menuconfig


P.S. Скрипта трябва да е изпълним (демек chmod +x "името-с-което-сте-го-запазили) :)


This work is licensed under a
< http://creativecommons.org/licenses/by-nc-sa/2.5/bg/ >

Мнение от altoas пуснато на Февруари 25 2008, 17:05
пич, пиши за кое дистро го компилираш това ядро!
едно е дебиан, друго е ред хат и сусе!
и като пускаш скрипт за компилиране на ядро, поне обясни малко в к'во представлява това компилиране в подробности, не просто да си постнеш скрипта и толкова. то и аз имам скриптове за моята система ама на твоята и бъкел няма да направят!
а и не съм съгласен с краят на скрипта ти за добавяне на ядрото в груб менюто. поне за дебиан можеш да го направиш с update-initramfs. а boot part. да го изтеглиш от груб листа с прост cut и grep.


Powered by ikonforums 1.0.0 © 2006 ikonforums