|
||
![]() |
||
(на примере Slackware 9.1, установленное ядро - 2.4.20)
Напоминаю, что пользуясь данным руководством вы берете на себя риск за возможные последствия своих действий. Поэтому, в качестве доброго совета - прежде чем выполнить хоть одну команду - читайте man или документацию по ней - чтобы вы ясно представляли себе к чему может привести выполнение той или иной команды.
(Вначале работаем как обычные пользователи и права администратора не нужны до тех пор - пока будем инсталировать ядро в /boot).
bash-2.05b$ PS1="[\u@\h \w \t \s \# \! \$]\$" [пользователь@localhost.localdomain ~ 13:54:29 bash 3 503 $]$Согласитесь , что так гораздо комфортнее - больше информации.
cd /home/имя пользователя/
mkdir /home/имя пользователя/source/
bzip2 -d linux-2.6.0-test9.tar.bz2.
ls -All /home/имя пользователя/source/ - появились - прекрасно идем дальше.
tar xf inux-2.6.0-test9.tar
ls -All /home/имя пользователя/source/ - появился каталог /linux-2.6.0-test9 - отлично.
o Gnu C 2.95.3 # gcc --version o Gnu make 3.78 # make --version o binutils 2.12 # ld -v o util-linux 2.10o # fdformat --version o module-init-tools 0.9.10 # depmod -V o e2fsprogs 1.29 # tune2fs o jfsutils 1.1.3 # fsck.jfs -V o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs o xfsprogs 2.1.0 # xfs_db -V o pcmcia-cs 3.1.21 # cardmgr -V o quota-tools 3.09 # quota -V o PPP 2.4.0 # pppd --version o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version o nfs-utils 1.0.5 # showmount --version o procps 3.1.13 # ps --version o oprofile 0.5.3 # oprofiled --version
cp ./patch-2.6.0-test10.bz2 /home/имя пользователя/source/patch-2.6.0-test10.bz2 cp ./patch-2.6.0-test11.bz2 /home/имя пользователя/source/patch-2.6.0-test11.bz2 cp ./patch-2.6.1.bz2 /home/имя пользователя/source/patch-2.6.1.bz2
cd /home/имя пользователя/source/linux-2.6.0-test9/.
bzip2 -dc ../patch-2.6.0-test10.bz2 | patch -p1Эта команда распакует архив .bz2 и пропатчует исходные коды ядра патчем, который находится в каталоге чуть выше нашего расположения - это две точки впереди.
bzip2 -dc ../patch-2.6.0-test11.bz2 | patch -p1 и bzip2 -dc ../patch-2.6.1.bz2 | patch -p1.
VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 1 EXTRAVERSION = -myВ результате этого Makefile поймет , что мы хотим собрать ядро с таким именем (ну положим в дальнейшем мы сами назовем ядро как хотим, но вот модули будут инсталироваться именно в этот каталог /lib/modules/2.6.1my, в чем мы в дальнейшем и убедимся).
Кстати, если вы не знаете как найти этот файл Makefile, в который вам надо внести изменения, то сделайте поиск следующим образом:
grep -R "EXTRAVERSION =" /home/имя пользователя/source/и эта программа выберет и покажет вам - в каком файле и в каком контексте встречается то, что вы задали ей найти.
cp -R /home/имя пользователя/source/linux-2.6.0-test9/ /home/имя пользователя/source/linux-2.6.1/Ключ -R нужен, чтобы каталог был переименован рекурсивно, то есть с подкаталогами.
cd /home/имя пользователя/source/ ls -All tar cfv linux-2.6.1.tar /home/имя пользователя/source/linux-2.6.1/ , где linux-2.6.1.tar - имя будущего архива. bzip2 -z linux-2.6.1.tar - и проверим командой ls -All появился ли у нас архив linux-2.6.1.tar.bz2 - да появился - значит все сделано привильно.Далее уберите этот архив куда-нибудь подалее на хранение.
mkdir /home/имя пользователя/source/261/для того , чтобы в дальнейшем в этом каталоге собрать новое ядро.
ls -All /home/имя пользователя/source/ - появился каталог /261.
cd /home/имя пользователя/source/linux-2.6.1/Перешли - отлично. Проверили, где мы сейчас находимся -
ls -all.
make O=/home/имя пользователя/source/261/ menuconfigфразой O=/home/имя пользователя/source/261/ мы задаем программе make путь вывода наших новых - измененных исходных текстов - сейчас разработчики ядра применили такую же технологию сохранения в неприкосновенности исходных текстов как чуть ранее поступили и разработчики gcc-3.2.2 - новое ядро строится не в том же каталоге где находятся исходные файлы, а в новой, вновь созданной директории- в нашем случае это /261).
Если во вновь образованном каталоге нет файла .config то программа попытается сама определить и для этого протестирует вашу систему на предмет какое сейчас ядро вы используете и постарается сама модифицировать свой собственный .config под вашу систему.
Если вы не сильно понимаете во всех этих возможностях нового ядра - сделайте проще но зануднее - сначала соберите ядро лишь бы онл загрузило систему, а далее сверите свой новый .config со срарым с помощью команды diff и внеся необходимые изменения в ваше ядро соберете его еще раз заново.
ls -all /home/имя пользователя/source/261/где добавленная буква "a" покажет нам скрытые файлы - в данном случае наш новый .config.
chmod o+r /home/имя пользователя/source/linux-2.6.1/drivers/char/agp/isoch.c- иначе далее при работе программы make будет выдана ошибка.
make O=/home/имя пользователя/source/261/Это начнется сборка ядра полностью - соберется само ядро и модули к нему. Результат должен быть без ошибок.
cd /home/имя пользователя/source/linux-2.6.1/ ls -all - окей - мы там куда и хотели попасть.
make O=/home/имя пользователя/source/261/ modules_installНачинается процесс установки модулей. В результате этого появится новый каталог /lib/modules/2.6.1my.
cp /home/имя пользователя/source/261/arch/i386/boot/bzImage /boot/vmlinuz-2.6.1my.
cp /home/имя пользователя/source/261/System.map /boot/System.map-2.6.1my.
image="/boot/vmlinuz-2.6.1my" label="2.6.1my" root="/dev/hda7" #или другой раздел жесткого диска, где у вас read-only #установлена СИСТЕМА, а не /boot!!!Далее сохраняем этот файл.
lilo -v #ключ "v" нужен чтобы lilo проверила правильность внесенных нами изменений.Окей - все нормально.
touch 555
find / -newer /home/имя пользователя/source/linux-2.6.1/444 ! -newer \ /home/имя пользователя/source/linux-2.6.1/555 >>/var/log/packages/kernel-modules-2.6.1my.В результате этого программа find найдет все изменившиеся за это время файлы и перенаправит вывод этой информации не на экран, а в файл /var/log/packages/kernel-modules-2.6.1my. Что нам это дает? Мы узнаем какие файли и куда были установлены за период между временем создания двух файлов 444 и 555. (Хотя вы вправе их назвать и по-другому).
man grep man find man mknodили info -
info find info grepи т.д.11
Да, кстати: "А зачем все это нужно,"- скажут некоторые - "можно и без этого нового ядра прожить?" "Согласна",-скажу я в ответ - "можно и в простой хижине жить и питаться простой едой", однако этого что-то не наблюдается. Короче каждый самосовершенствуется по своему: можно посидеть, поболтать с приятелями, попить пивка - глядишь и время незаметно пройдет , ну и далее в том же ключе... Вообщем каждый отрывается, как может. В результате у меня маленькое быстрое ядро, которое еще не разу не упало (хотя некоторые и намекают разное - в статьях в интернете) и вообще - жизнь веселее - особенно с новым KDE, скачанной и установленной с CVS.
Возможно, в дальнейшем я напишу статью и на эту тему - очень интересно все время находишься на острие прогресса, а кроме того - преследовать сугубо утилитарную цель - ознакомление ядра с имеющимися мышкой USB и сканером USB HP3400C. Все нормально работает после настройки совместно ядра и системы (в частности пришлость подключить файловую систему devfs в ядре и настроить кое-какие конфигурационные файлы в системе. Кстати таким же образом у меня уже стоят на копьютере две системы - Slackware 9.1 и RedHat 7.3. При этом загрузка происходит по выбору ядра. При этом раздел /boot и swap у них общие, а сами системы размещены каждая на своем разделе - очень здорово - одну систему испорчу (сделаю что-то не так) зато другая имеется в которую можно зайти и работать в ней до тех пор пока другую не отреставрируешь. А между ними имеется промежуточный (перевалочный) раздел диска для обмена файлами и т.д.
В новом ядре добавлено много новых возможностей в части секретности:
Enable different security models Socket and Networking Security Hooks Default Linux Capabilities Root Plug Supportи криптографического API:
Cryptographic API HMAC support Null algorithms MD4 digest algorithm MD5 digest algorithm SHA1 digest algorithm SHA256 digest algorithm SHA384 and SHA512 digest algorithms DES and Triple DES EDE cipher algorithms Blowfish cipher algorithm Twofish cipher algorithm Serpent cipher algorithm AES cipher algorithms CAST5 (CAST-128) cipher algorithm CAST6 (CAST-256) cipher algorithm Deflate compression algorithm Testing moduleи много чего другого добавлено.
Маленькое дополнение "по просьбам трудящихся" (для просветленных):
boot="/dev/hda3" # здесь мы обосновали "теплое местечко" - "дом" для раздела / boot # а можно установить и в другое место /dev/hda1, /dev/hda2, /dev/hda4, # главное - до 1024 цилиндра (хотя говорят что последние лила и груб - grub # понимают и далее... - не пробовала - сильно много время это все занимает - # переустановка системы и ее настройка. Я имею в виду сложную установку - # с вывертами. prompt lba32 bitmap=/boot/ins64a.bmp # это грузится красивая желтая картинка с пингвином, которая пришла ко # мне с новой lilo, которую я переустановила - очень необычное зрелище. vga=normal timeout="150" # задержка с загрузкой, чтобы пользователь мог выбрать разрые режимы # экрана (да - есть такая примочка, подключенная в одном из ядер, # жаль монитор слабоват, чтобы поддерживать все возможности выбора - # короче становится мелкий шрифт и много информации на экране за один присест) verbose=5 # выводить подробные комментарии при загрузке large-memory # уведомляем лилу, что имеем много памяти image="/boot/vmlinuz-2.4.18-3" # это грузится RedHat 7.3 label="2.4.18-3" root="/dev/hda7" read-only initrd="/boot/initrd-2.4.18-3.img" image="/boot/bzImage-2.4.20" # это грузится ядро от первоначальной label="2.4.20" # установки Slackware 9.0 root="/dev/hda10" read-only image="/boot/vmlinuz-2.6.0-91" # это грузится пробное ядро 2.6.0-test9 label="2.6.0-91" root="/dev/hda10" read-only image="/boot/vmlinuz-2.6.0-92" # это грузится пробное ядро 2.6.0-test9- цельное - без модулей label="2.6.0-92cel" root="/dev/hda10" read-only image="/boot/vmlinuz-2.6.1-debug" # это грузится ядро 2.6.1 с подключенным пунктом CONFIG_EXPERIMENTAL label="2.6.1-debug" root="/dev/hda10" read-only image="/boot/vmlinuz-2.6.1-light" # а это грузится максимально облегченное ядро 2.6.1 с отключенным label="2.6.1-light" # пунктом CONFIG_EXPERIMENTAL root="/dev/hda10" read-onlyПочитайте man lilo.
К вопросу староватости статейки - хотя можно сразу скачать новое ядро: уточняю следующие "принципиальные" моменты: Каждые полгода (приблизительно тащить по 30 мегабайт по dial-up.... Знаете как то жаба душит...
В голове все время счетчик-таймер работает - сколько израсходовал время и сколько еще осталось. Я уже кстати давно заметила - некоторые товарищи, живя в первопрестольной (или в провинции, но сидящие на дармовом инете, в том числе и на работе - так как лично они денег не платят), совсем оторвались от "РЖ" (реальной жизни), где вообще-то все денег стоит. И поэтому эти "товарищи" могут спокойно в любое время "скачать" какие-то 30 мегабайт. А рядовые люди "вынуждены изголяться" со всякими патчами и прочими прибамбасами.
В декабре 2003 года я скачала ядро 2.6.0-test9 и не сразу было время его поставить - так как род моей деятельности весьма далек от компьютеров, статей и ядер. А в январе 2004 года занялась этим. И что вы предлагаете еще тащить по dial-up 30 мегабайт нового ядра - 2.6.1?!
Печально все это. Та же история, между прочим, и в журналах и в книгах. Вообщем по пословице "сытый голодного не разумеет". Извините за резкость, но "ты мне друг, но истина дороже".
Статья взята с сайта OpenNET.
11/02/2004
|