Назад | Оглавление | Вперед |
В это главе Ядро Linux Создание аварийных загрузочных дискет Безопасность ядра Компиляция ядра Инсталляция нового ядра Удаление программ, файлов и строк связанных с модулями Создание новой аварийной дискеты Создание аварийного загрузочного флоппи-диска Обновление “/dev” входов |
/img height=150 alt="" src="pic/10.jpg" width=207 border=0> |
1. Копируйте “/usr/src/linux/arch/i386/boot/bzImage” из дерева исходных кодов ядра в каталог “/boot” и дайте ему новое имя.
[root@deep linux]# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-kernel.version.numberЗамечание. Я рекомендую название подобное vmlinuz-2.2.14, потому что если вы хотите создать новый спасательный или загрузочные диски при помощи mkbootdisk, то она требует некоторой точности, например vmlinuz-2.2.14 вместо vmlinuz-2.2.14.a
2. Копируйте “/usr/src/linux/System.map” из дерева исходных кодов ядра в каталог “/boot” и дайте ему новое имя.
[root@deep linux]# cp /usr/src/linux/System.map /boot/System.map-kernel.version.number3. Переместитесь в каталог /boot и создайте символические ссылки vmlinuz и System.map.
[root@deep linux]# cd /bootМы должны пересоздать ссылки “vmlinuz” и “System.map” на новую версию ядра. Иначе lilo будет использовать старое ядро.
4. Удалите устаревшие и ненужные файлы из каталога “/boot”, чтобы освободить место на диске:
[root@deep /boot]# rm -f module-info“module-info” это ссылка на каталог с модулями к старому ядру. Так как мы инсталлируем новое ядро, мы не нуждаемся в потерянных ссылках. Файл “initrd-2.2.xx” содержит инициализационный образ RAM диска, который выступает как система пока не будут доступны диски. Этот файл будет существовать и будет инсталлирован в ходе установки сервера, если вы имеете SCSI диск. Все необходимые драйвера сейчас встроены в ваше монолитное ядро, поэтому спокойно удаляйте этот файл.
5. Создайте новый каталог, который будет содержать все необходимые заголовочные файлы, связанные с ядром, которые будут нужны в дальнейшем при компиляции нового программного обеспечения.
Помните, что мы должны создать три символические ссылки в “/usr/include”, которые являются точками входа в заголовочные файлы ядра Linux. Каталог “/usr/include” содержит все заголовочные файлы вашей системы, которые нужны для компиляции новых программ. Ссылки asm, linux и scsi используются когда программам нужно знать некоторые функции времени компиляции ядра инсталлированного на вашей системе. Программы вызывают другие заголовочные файлы из каталога “include” когда им нужна специальная информация, зависимости и т.д.
[root@deep /]# mkdir -p /usr/src/linux-2.2.14/includeПервое, мы создаем новый каталог “linux-2.2.14”, базирующийся на версии ядра, которое мы инсталлируем для более легкой интерпретации, затем мы копируем туда каталоги asm-generic, asm-i386, linux, net, video, и scsi из “/usr/linux/include”. После этого мы удаляем каталог в котором компилировали новое ядро и создаем в “/usr/src” ссылку “linux”, указывающую на “linux-2.2.14”. Последний шаг позволяет сэкономить место на диске. Ядро в разархивированном виде занимает около 75M, а каталоги “include” – 3M.
6. В заключении нам необходимо редактировать файл “/etc/lilo.conf”, чтобы сделать новое ядро, загружаемым по уолчанию.
Шаг 1.Редактируем файл lilo.conf (vi /etc/lilo.conf) и делаем соответствующие изменения в линии “image=/boot/”:
[root@deep /]# vi /etc/lilo.confЗамечание. Не забудьте удалить строку “initrd=/boot/initrd-2.2.12-20.img”, так как она нам больше ну нужна.
Шаг 2.Когда имя нового ядра было внесено в файл “/etc/lilo.conf”, как это было описано выше, мы должны дать следующие команды, чтобы изменения вступили в силу:
[root@deep /]# /sbin/lilo -vВАЖНОЕ ЗАМЕЧАНИЕ: Если вы сказали No на вопрос “Unix98 PTY support (CONFIG_UNIX98_PTYS)” во время конфигурирования ядра, то отредактируйте файл “/etc/fstab” и удалите следующую строку:
none /dev/pts devpts gid=5,mode=620 0 0
Когда вы инсталлируете Linux в первый раз (как это делали мы) у вас устанавливается модульное ядро. Это означает, что каждый элемент или функция, которые нам нужны, существует в виде модуля и контролируется демоном ядра, который называется kmod. Он автоматически загружает модули и функции в память, когда это нужно, и выгружает их, когда необходимости в них отпадает.
Шаг 1.kmod и другие программы, управляющие модулями, включенные в RPM пакет “modutils” используют файл “conf.modules”, который находится в каталоге “/etc”. В этом файле определяется, например, какие Ethernet карты вы имеете и какие параметры настройки она использует. Так как мы не используем модулей в нашем новом ядре, мы удаляем файл “conf.modules” и полностью деинсталлируем пакет “modutils”.
[root@deep /]# rm -f /etc/conf.modulesТеперь необходимо редактировать файл “rc.sysinit” и закомментировать все строки, в которых упоминается “depmod -a”, вставив в их начало символ “#”. Это нужно потому, что при загрузке система читает скрипт “rc.sysinit” для поиска модульных зависимостей.
Под Red Hat Linux 6.1
Комментируем строку 260 в rc.sysinit file (vi +260 /etc/rc.d/rc.sysinit):
if [ -x /sbin/depmod -a -n "$USEMODULES" ]; thenдолжна читаться:
#if [ -x /sbin/depmod -a -n "$USEMODULES" ]; thenКомментируем строки с 272 по 277 в rc.sysinit file (vi +272 /etc/rc.d/rc.sysinit):
if [ -L /lib/modules/default ]; thenдолжны читаться:
# if [ -L /lib/modules/default ]; thenЗАМЕЧАНИЕ: Процедура описанная выше связана с пакетом initscripts-4_70-1 package дистрибутива Red Hat Linux 6.1.
Под Red Hat Linux 6.2
Комментируем строку 243 в rc.sysinit file (vi +243 /etc/rc.d/rc.sysinit):
if [ -x /sbin/depmod -a -n "$USEMODULES" ]; thenдолжна читаться:
#if [ -x /sbin/depmod -a -n "$USEMODULES" ]; thenКомментируем строки с 255 по 260 в rc.sysinit file (vi +255 /etc/rc.d/rc.sysinit):
if [ -L /lib/modules/default ]; thenдолжны читаться:
# if [ -L /lib/modules/default ]; thenЗамечание. Еще раз повторим, вся эта часть (“Удаление программ, файлов и строк связанных с модулями.”) требуется только если вы ответили No на вопрос “Enable loadable module support (CONFIG_MODULES)” при конфигурировании ядра.
Шаг 3.Когда система перезагрузится и вы подключитесь к серверу, проверьте версию используемого ядра:
[root@deep /]# uname -aПоздравляем.
После перезагрузки сервера, вы должны получить систему с новым ядром. Теоретически, в этот момент, вам надо создать новую “спасательную” дискету с новым ядром. Что бы сделать это сделайте следующее:
Подключитесь к системе, вставьте новую дискету и выполните следующую команду:
[root@deep /]# mkbootdisk --device /dev/fd0 2.2.14Важное замечание. Программа mkbootdisk запускается только для модульных ядер. Так, что вы не можете использовать ее на монолитном ядре, вместо этого создайте аварийную загрузочную дискету так, как это описано ниже.
Так как создать спасательную дискету можно только с модульными ядрами, мы должны найти другой путь загрузки системы с дискеты если ядро на жестком диске испорчено. Это возможно с помощью аварийной загрузочной дискеты. Вы должны создать ее немедленно после первой удачной загрузки системы и подключения к ней как root.
Для создания аварийной загрузочной дискеты сделайте следующее:
Шаг 1.Вставьте дискету и форматируйте ее, используя команду:
[root@deep /]# fdformat /dev/fd0H1440Копируйте файл vmlinuz из каталога “/boot” на дискету:
[root@deep /]# cp /boot/vmlinuz /dev/fd0vmlinuz – это символическая ссылка на реальной ядро.
Шаг 3.Определяем корневой раздел ядра:
[root@deep /]# rdevКорневой раздел ядра – это раздел, где находится корневая файловая система. В этом примере, корневой раздел - “dev/sda12”; на вашей системе это имя может быть другим.
Шаг 4.Устанавливаем корневой раздел ядра:
[root@deep /]# rdev /dev/fd0 /dev/sda12В качестве корневого раздела ядра используется значение полученной на предыдущем шаге.
Шаг 5.Маркируем корневой раздел как только для чтения:
[root@deep /]# rdev -R /dev/fd0 1При инициализации Linux корневая файловая система монтируется только для чтения. Подобная установка избавит вас от ряда предупреждающих сообщений и сообщений об ошибках.
Шаг 6.Вставьте загрузочную дискету в дисковод A: и перезагрузите систему:
[root@deep /]# rebootЕсли вы добавили новое устройство в вашу систему или провели крупное обновление ядра (например, из версии 2.2.9 к 2.2.15), то необходимо обновить ваши входы в “/proc” для предотвращения проблем с потерянными устройствами. Мы можем решить эту задачу при помощи скрипта MAKEDEV. Он сканирует каталог “/proc”, где все устройства связываются с драйверами ядра. Специальная опция “update” позволяет утилите MAKEDEV создать новые
устройства, которые вы сконфигурировали в вашем ядре и удалить ненужные.Для обновления входов в “/proc” выполните следующие команды:
[root@deep /]# cd /dev [root@deep /dev]# ./MAKEDEV updateНазад | Оглавление | Вперед |