From: Анигина Галина Николаевна <gavianz@aport2000.ru>
Newsgroups: email
Date: Mon, 16 Jan 2004 14:31:37 +0000 (UTC)
Subject: Установка ядра linux-2.6.1 (вместо 2.4.x)
Установка ядра linux-2.6.1
(на Slackware 9.1, установленное ядро - 2.4.20)
(Напоминаю, что пользуясь данным руководством вы берете на себя риск за
возможные последствия своих действий). Поэтому в качестве доброго совета
- прежде чем выполнить хоть одну команду - читайте man или документацию
по ней - чтобы вы ясно представляли себе к чему может привести
выполнение той или иной команды.
(Вначале работаем как обычные пользователи и права администратора не
нужны до тех пор - пока будем инсталировать ядро в /boot).
1. Сделайте себе более полный вывод информации - где вы сейчас
находитесь, кто вы и так далее следующим образом -
bash-2.05b$ PS1="[u@h w t s # ! $]$"
[пользователь@localhost.localdomain ~ 13:54:29 bash 3 503 $]$
Согласитесь , что так гораздо комфортнее - больше информации.
2. Для сохранности создаем где-то каталог /save и в него копируем два
каталога: /boot и /lib.
3. Переходим в каталог в котором мы хотим создать новый каталог
(source), в котором мы будем собирать новое ядро
cd /home/имя пользователя/
4. Создаем новый каталог -
mkdir /home/имя пользователя/source/
7. Просматриваем наш каталог - появились ли там файлы:
ls -All /home/имя пользователя/source/ - появились - прекрасно идем дальше.
8. Разбираем один неразъемный файл на отдельные файлики:
tar xf inux-2.6.0-test9.tar.
9. Просматриваем наш каталог - появились ли там файлы:
ls -All /home/имя пользователя/source/ - появился каталог /linux-2.6.0-test9 - отлично.
10. Заходим в этот новый каталог - cd /home/имя пользователя/source/linux-2.6.0-test9/.
11. Читаем README, Changes и другие файлы объясняющие процедуру сдорки и
настройки ядра.
12. Сверяем что мы имеем в системе и что нам надо проапгрейдить по
следующей таблице из файла "Changes" в комплекте ядра.
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
13. Обновляем что у нас не соответствует требуемому (это отдельная
большая тема, особенно с module-init-tools).
14. Ставим патчи на ядро , поднимая его номер при этом до 2.6.1
следующим образом:
15. Копируем патчи в каталог /home/имя пользователя/source/ (при этом
предполагается что вы находитесь в каталоге где лежат эти самые патчи,
скаченные из интернета с сайта http://www.kernel.org):
16. Далее патчуем ядро этими патчами , для этого заходим в каталог с
исходным ядром:
cd /home/имя пользователя/source/linux-2.6.0-test9/.
17. Делаем так:
bzip2 -dc ../patch-2.6.0-test10.bz2 | patch -p1
- то есть эта команда распакует архив .bz2 и пропатчует исходные
коды ядра патчем, который находится в каталоге чуть выше нашего
расположения - это две точки впереди.
18. И аналогично далее:
bzip2 -dc ../patch-2.6.0-test11.bz2 | patch -p1 и bzip2 -dc ../patch-2.6.1.bz2 | patch -p1.
19. Отлично теперь мы имеем исходные тексты ядра с уровнем 2.6.1.
20. Делаем небольшую корректировку - любым редактором исправляем
Makefile в исходном каталоге с ядром таким образом
В результате этого Makefile поймет , что ты хочешь собрать ядро с таким
именем (ну положим в дальнейшем мы сами назовем ядро как хотим, но вот
мудули будут инсталироваться именно в этот каталог /lib/modules/2.6.1my,
в чем мы в дальнейшем и убедимся.
Кстати, если вы не знаете как найти этот файл Makefile, в который вам
надо внести изменения, то сделайте поиск следующим образом:
и эта программа выберет и покажет вам - в каком файле и в каком
контексте встречается то, что вы задали ей найти.
21. Переименовываем каталог из /home/имя
пользователя/source/linux-2.6.0-test9/ в /home/имя пользователя/source/linux-2.6.1/
cp -R /home/имя пользователя/source/linux-2.6.0-test9/ /home/имя пользователя/source/linux-2.6.1/
- ключ -R нужен чтобы каталог был переименован рекурсивно, то есть с подкаталогами.
22. Для будущего сохраним их в архив - чтобы в дальшейшем более не
проделывать эту процедуру еще раз:
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 - да появился - значит все сделано привильно.
Далее уберите этот архив куда-нибудь подалее на хранение.
23. Создаем новый каталог -
mkdir /home/имя пользователя/source/261/
для того , чтобы в дальнейшем в этом каталоге собрать новое ядро.
24.Просматриваем наш каталог - появились ли там файлы: ls -All /home/имя
пользователя/source/ - появился каталог /261.
25. Это были все подготовительные работы а теперь пришло время заняться
собственно сборкой и настройкой ядра. Переходм в каталог с исходными
текстами уже нового ядра 2.6.1 (если вы находитесь сейчас в другом
месте. Это можно проверить командой ls -all)
cd /home/имя пользователя/source/linux-2.6.1/
- перешли - отлично. Проверили - где мы сейчас находимся - ls -all.
26. Начинаем маковать:
make O=/home/имя пользователя/source/261/ menuconfig
фразой O=/home/имя пользователя/source/261/ мы задаем программе make путь
вывода наших новых - измененных исходных текстов - сейчас разработчики
ядра применили такую же технологию сохранения в неприкосновенности
исходных текстов как чуть ранее поступили и разработчики
gcc-3.2.2 - новое ядро строится не в том же каталоге где находятся
исходные файлы, а в новой, вновь созданной директории- в нашем случае это /261).
27. В графической оболочке ядра выбираем те компоненты, что нам нужны и
выходим через кнопку exit из графической оболочки - при этом мы
соглашаемся сохранить наше новую конфигурацию. Если в вашем каталоге нет
файла .config (ф изначально это так - так как мы сами только что создали
этот каталог, то перед тем как запустить эту строку можно туда
скопировать ваш собственный .config от предыдущей сборки. Программа
поймет что вы ей дали свой .config и будет работать уже с ним - толь
добавятся новый возможности - и вам нужно будет их выбрать или отвергнуть.
Если во вновь образованном каталоге нет файла .config то программа
попытается сама определить и для этого протестирует вашу систему на
предмет какое сейчас ядро вы используете и постарается сама
модифицировать свой собственный .config под вашу систему.
Если вы не сильно понимаете во всех этих возможностях нового ядра -
сделайте проще но зануднее - сначала соберите ядро лишь бы онл загрузило
систему, а далее сверите свой новый .config со срарым с помощью команды
diff и внеся необходимые изменения в ваше ядро соберете его еще раз
заново.
28. Подводим итог - сейчас у нас появился .config в каталоге /261. Мы
можем убедиться в этом командой
ls -all /home/имя пользователя/source/261/
- где добавленная буква "a" покажет нам скрытые файлы - в данном случае наш новый .config.
29. У одного файла там надо изменить права - дать право на чтение другим -
chmod o+r /home/имя пользователя/source/linux-2.6.1/drivers/char/agp/isoch.c
- иначе далее при работе программы make будет выдана ошибка.
30. Делаем далее так -
make O=/home/имя пользователя/source/261/
Это начнется сборка ядра полностью - соберется само ядро и модули к
нему. Результат должен быть без ошибок.
31. Начинаем инсталлировать новое ядро и модули в систему и делаем это
следующим образом (спасибо Зубкову С.В. и его книге "Linux - Русские
версии" издательства ДМК г.Москва, 2000 год издания, откуда я почерпнула
способ учитывать вновь установленных программ в свою систему, если их
ставишь из .tar.gz, .tar.bz2, то есть из исходников).
32. Теперь нам надо зайти в систему рутом через su для установки ядра. - Зашли - прекрасно.
33. touch 444 (создаем файл нулевой длины. В данном случае нас не
интересует сам файл - нам нужен только "временной репер" - то есть
временная зацепка - проще говоря нам нужно то обстоятельство что этот
файл создан ДО начала инсталяции программы - ядра в данном случае)
Обратите внимание - что с той минуты как вы создали временной репер 444
вы НЕ ДОЛЖНЫ ДЕЛАТЬ ничего другого кроме как того, что касается напрямую
инсталяции ядра - иначе потом появится мусор в вашем файле конроля
установленных программ.
34. Несмотря на то, что когда заходишь в рута через su в оболочке bash
ты сразу оказываешься в том каталоге, где был до этого пользователь, для
чистоты "сохранения истории команд рута" мы "переходим" в каталог с
исходными текстами:
cd /home/имя пользователя/source/linux-2.6.1/
ls -all - окей - мы там куда и хотели попасть.
35. Сначала инсталлируем модули:
make O=/home/имя пользователя/source/261/ modules_install
- начинается процесс установки модулей. В результате этого появится новый
каталог /lib/modules/2.6.1my.
36. Смотрим ls -all /lib/modules/2.6.1my - все отлично - инсталированы модули.
38. Копируем файл с распределением нового ядра в памяти
cp /home/имя пользователя/source/261/System.map /boot/System.map-2.6.1my.
39. Любым простым редактором редактируем /etc/lilo.conf, чтобы в нем
было следующее:
image="/boot/vmlinuz-2.6.1my"
label="2.6.1my"
root="/dev/hda7" #или другой раздел жесткого диска, где у вас
read-only #установлена СИСТЕМА, а не /boot!!!
Далее сохраняем этот файл.
40. Далее делаем очень важное - после внесения изменений мы вновь
инициализируем программу lilo:
lilo -v #ключ "v" нужен чтобы lilo проверила правильность внесенных нами изменений.
Окей - все нормально.
41. Создаем второй временной репер
touch 555
42. Объявляем поиск всех файлов, которые подверглись модификации или
инсталяции за период между временем создания файла 444 и файла 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. (Хотя вы вправе их назвать и по другому).
43. Далее выходим из рута и делаем перезагрузку системы. Если вам
повезет - то с первого раза ядро загрузит систему нормально и далее вы
можете его настраивать, а если не - тоже не беда- так как у вас до этого
было другое ядро и, надеюсь вы были благоразумны и не удалили его из
/boot - грузимся с него.
44. Далее через diff сверяем .config - что было и что стало, вносим
изменения в новое ядро, компилируем, инсталлируем, фиксируем что
установилось и перегружаемся. По всем имеющимся вопросам читаем
документацию, которая поставляется в комплекте с ядром - там отлично
описывается как и что.
Будем надеяться что у вас все получится отлично- у меня все получилось
окей. Читайте manы - по программам, которые вам не понятны. Например
man grep
man find
man mknod
или info -
info find
info grep
и т.д.
Да кстати - а зачем все это нужно скажут некоторые - можно и без этого
нового ядра прожить - согласна скажу я в ответ - можно и в простой хижине
жить и питаться простой едой, однако этого что то не наблюдается. Короче
каждый самосовершенствуется по своему: можно посидеть, поболтать с
приятелями, попить пивка - глядишь и время незаметно пройдет , ну и
далее в том же ключе... Вообщем каждый отрывается, кто как может. В
результате у меня маленькое быстрое ядро, которое еще не разу не упало
(хотя некоторые и намекают разное - в статьях в интернете) и вообще -
жизнь веселее - особенно с новой KDE, скачанной и установленной с CVS.
Возможно в дальнейшем я напишу статью и на эту тему - очень интересно -
все время находишься на острие прогресса, а кроме того - преследуешь
сугубо утилитарную цель - ознакомление ядра с имеющимися мышкой USB и
сканером USB HP3400C. Все нормально работает после настройки совместно -
ядра и системы (в частности пришлость подключить файловую систему devfs
в ядре и настроить кое-какие конфигурационные файлы в системе. Кстати
так им же образом у меня уже стоят на копьютере две системы - Slackware
9.1 и RedHat 7.3. При этом загрузка происходит по выбору ядра. При этом
раздел /boot и swap у них общие, а сами системы размещены каждая на
своем разделе - очень здорово - одну систему испорчу (сделаю что-то не
так) зато другая имеется в которую можно зайти и работать в ней до тех
пор пока другую не отреставрируешь. А между ними имеется промежуточный
(перевалочный) раздел диска для обмена файлами и т.д.
В новом ядре добавлено много новых возможностей в части секретности:
Enable different security models
Socket and Networking Security Hooks
efault 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
и много чего другого добавлено.
Маленькое дополнение "по просьбам трудящихся":)))
(для просветленных)
1. Сохраняем где-то (на всякий случай) файл /etc/lilo.conf.
2. Добавляем в оригинальный файл /etc/lilo.conf дополнительную загрузку вновь
собранного ядра (см. п.39).
3. В результате наш /etc/lilo.conf должен выглядеть следующим образом
(примерно, так как в вашем случае будет иначе)
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.
4. Далее - см. выше по тексту.
5. Примечание: несколько загрузок - это на всякий случай - если одно ядро не
загрузит систему,
то другое, не другое, так третье и так далее - то есть это механизм резервной
загрузки - чтобы
попасть наконец то в свою систему.
--------------
К вопросу староватости статейки - хотя можно сразу скачать новое ядро: уточняю
следующие "принципиальные" моменты:
Каждые полгода (приблизительно тащить по 30 мег по dial-up.... Знаете как то
жаба душит...
В голове все время счетчик-таймер работает - сколько израсходовал время
и сколько еще осталось. Я уже кстати давно заметила - некоторые
товарищи, живя в первопрестольной (или в провинции, но сидящие на
дармовом инете, в том числе и на работе - так как лично они денег не
платят),совсем оторвались от "РЖ" (реальной жизни), где вообще-то все
денег стоит. И поэтому эти "товарищи" могут спокойно в любое время
"скачать" какие-то 30 мег. А рядовые люди "вынуждены изголяться" со
всякими патчами и прочими прибамбасами.
В декабре 2003 года я скачала ядро 2.6.0-test9 и не сразу было время его
поставить - так как род моей деятельности весьма далек от компьютеров,
статей и ядер. А в январе 2004 года занялась этим. И что вы
предлагаете еще тащить по dial-up 30 мег нового ядра - 2.6.1!!! :(((
Печально все это. Та же история, между прочим, и в журналах и в книгах.
Вообщем по пословице "сытый голодного не разумеет". Извините за
резкость, но "ты мне друг, но истина дороже".