L
i n u x P a r k
при поддержке ВебКлуба |
Назад | Оглавление | Вперед |
Замечание. Я рекомендую название подобное 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.number
3. Переместитесь в каталог /boot и создайте символические ссылки vmlinuz
и System.map.
[root@deep linux]# cd /boot
[root@deep /boot]# ln -fs vmlinuz-kernel.version.number
vmlinuz
[root@deep /boot]# ln -fs System.map-kernel.version.number
System.map
Мы должны пересоздать ссылки “vmlinuz” и “System.map” на новую версию ядра. Иначе lilo будет использовать старое ядро.
4. Удалите устаревшие и ненужные файлы из каталога “/boot”, чтобы освободить
место на диске:
[root@deep /boot]# rm -f module-info
[root@deep /boot]# rm -f initrd-2.2.xx.img
“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
[root@deep /]# cp -r /usr/src/linux/include/asm-generic
/usr/src/linux-2.2.14/include
[root@deep /]# cp -r /usr/src/linux/include/asm-i386
/usr/src/linux-2.2.14/include
[root@deep /]# cp -r /usr/src/linux/include/linux
/usr/src/linux-2.2.14/include
[root@deep /]# cp -r /usr/src/linux/include/net
/usr/src/linux-2.2.14/include
[root@deep /]# cp -r /usr/src/linux/include/video
/usr/src/linux-2.2.14/include
[root@deep /]# cp -r /usr/src/linux/include/scsi
/usr/src/linux-2.2.14/include
[root@deep /]# rm -rf /usr/src/linux
[root@deep /]# cd /usr/src
[root@deep src]# ln -s /usr/src/linux-2.2.14
linux
Первое, мы создаем новый каталог “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
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
prompt
timeout=00
restricted
password=somepasswd
image=/boot/vmlinuz-kernel.version.number
#(добавьте здесь имя вашего нового ядра).
label=linux
root=/dev/sda6
read-only
Замечание. Не забудьте удалить строку “initrd=/boot/initrd-2.2.12-20.img”,
так как она нам больше ну нужна.
Шаг 2.
Когда имя нового ядра было внесено в файл “/etc/lilo.conf”, как это
было описано выше, мы должны дать следующие команды, чтобы изменения вступили
в силу:
[root@deep /]# /sbin/lilo -v
LILO version 21, [Copyright 1992-1998
Werner Almesberger
Reading boot sector from /dev/sda
Merging with /boot/boot.b
Boot image: /boot/vmlinuz-2.2.14
Added linux *
/boot/boot.0800 exits – no backup
copy made.
Writing boot sector.
ВАЖНОЕ ЗАМЕЧАНИЕ: Если вы сказали No на вопрос “Unix98 PTY support (CONFIG_UNIX98_PTYS)” во время конфигурирования ядра, то отредактируйте файл “/etc/fstab” и удалите следующую строку:
none /dev/pts devpts gid=5,mode=620 0 0
kmod и другие программы, управляющие модулями, включенные в RPM пакет
“modutils” используют файл “conf.modules”, который находится в каталоге
“/etc”. В этом файле определяется, например, какие Ethernet карты вы имеете
и какие параметры настройки она использует. Так как мы не используем модулей
в нашем новом ядре, мы удаляем файл “conf.modules” и полностью деинсталлируем
пакет “modutils”.
[root@deep /]# rm -f /etc/conf.modules
[root@deep /]# rpm -e --nodeps
modutils
Шаг 2.
Теперь необходимо редактировать файл “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
INITLOG_ARGS= action "Finding module
dependencies" depmod -a default
else
INITLOG_ARGS= action "Finding module
dependencies" depmod -a
fi
fi
должны читаться:
# if [ -L /lib/modules/default
]; then
# INITLOG_ARGS= action "Finding
module dependencies" depmod -a default
# else
# INITLOG_ARGS= action "Finding
module dependencies" depmod -a
# fi
#fi
ЗАМЕЧАНИЕ: Процедура описанная выше связана с пакетом 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
INITLOG_ARGS= action "Finding module
dependencies" depmod -a default
else
INITLOG_ARGS= action "Finding module
dependencies" depmod -a
fi
fi
должны читаться:
# if [ -L /lib/modules/default
]; then
# INITLOG_ARGS= action "Finding
module dependencies" depmod -a default
# else
# INITLOG_ARGS= action "Finding
module dependencies" depmod -a
# fi
#fi
Замечание. Еще раз повторим, вся эта часть (“Удаление программ, файлов
и строк связанных с модулями.”) требуется только если вы ответили No на
вопрос “Enable loadable module support (CONFIG_MODULES)” при конфигурировании
ядра.
Шаг 3.
Когда система перезагрузится и вы подключитесь к серверу, проверьте
версию используемого ядра:
[root@deep /]# uname -a
Linux deep.openna.com 2.2.14 #1
Mon Jan 10 10:40:35 EDT 2000 i686 unknown
[root@deep]#
Поздравляем.
Подключитесь к системе, вставьте новую дискету и выполните следующую
команду:
[root@deep /]# mkbootdisk --device
/dev/fd0 2.2.14
Insert a disk in /dev/fd0. Any
information on the disk will be lost.
Press <Enter> to continue or
^C to abort:
Важное замечание. Программа mkbootdisk запускается только для модульных ядер. Так, что вы не можете использовать ее на монолитном ядре, вместо этого создайте аварийную загрузочную дискету так, как это описано ниже.
Для создания аварийной загрузочной дискеты сделайте следующее:
Шаг 1.
Вставьте дискету и форматируйте ее, используя команду:
[root@deep /]# fdformat /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track.
Total capacity 1440 kB.
Formatting ... done
Verifying ... done
Шаг 2.
Копируйте файл vmlinuz из каталога “/boot” на дискету:
[root@deep /]# cp /boot/vmlinuz
/dev/fd0
cp: overwrite `/dev/fd0'? y
vmlinuz – это символическая ссылка на реальной ядро.
Шаг 3.
Определяем корневой раздел ядра:
[root@deep /]# rdev
/dev/sda12 /
Корневой раздел ядра – это раздел, где находится корневая файловая система.
В этом примере, корневой раздел - “dev/sda12”; на вашей системе это имя
может быть другим.
Шаг 4.
Устанавливаем корневой раздел ядра:
[root@deep /]# rdev /dev/fd0 /dev/sda12
В качестве корневого раздела ядра используется значение полученной на
предыдущем шаге.
Шаг 5.
Маркируем корневой раздел как только для чтения:
[root@deep /]# rdev -R /dev/fd0
1
При инициализации Linux корневая файловая система монтируется только
для чтения. Подобная установка избавит вас от ряда предупреждающих сообщений
и сообщений об ошибках.
Шаг 6.
Вставьте загрузочную дискету в дисковод A: и перезагрузите систему:
[root@deep /]# reboot
Для обновления входов в “/proc” выполните следующие команды:
[root@deep /]# cd /dev [root@deep
/dev]# ./MAKEDEV update
Назад | Оглавление | Вперед |