Ключевые слова:kernel, upgrade, linux, install, redhat, (найти похожие документы)
From: polachok <http://www.polachok.narod.ru>
Date: Mon, 28 Feb 2004 14:31:37 +0000 (UTC)
Subject: Миграция RedHat 9 на Linux ядро 2.6
Оригинал: http://www.polachok.narod.ru/articles/migrate26.html
Миграция на Linux 2.6
Перевод: polachok
Примечание: мой первый перевод, извините за ужасный стиль.
Введение
Я потратил целый день переводя свой Red Hat 9 на ядро 2.6. Этот
документ не претендует на полноценность, здесь решены только те
проблемы, которые были меня. Вот они: sysfs, QM_MODULES, rpm,
module-init-tools, Hotplug, Wireless, linux-wlan-ng, prism2_pci, USB,
sound, realplay, VMware, и ACPI и APM.
Это инфа не полная. Пожалуйста присылайте комментарии, исправления и
т.д.. Мое мыло в конце страницы.
Также посмотри HowTo Upgrade To The 2.6 Kernel на
http://kerneltrap.org/node/view/799
Хард / Софт
У меня IBM ThinkPad T30. Я делал все это с ядром версии 2.6.0-test2,
но я думаю это подойдет и для 2.6.0-test3, 2.6.0-test4, 2.6.0-test5,
2.6.0-test6, 2.6.0-test7, 2.6.0-test8, 2.6.0-test9, 2.6.0-test10.
Вот мой файл конфигурации ядра (http://thomer.com/linux/.config).
Ядро 2.6.0-test{2,3,4,5,6,7,8,9,10}
Если ты получаешь ошибки прерываний во время запуска ядра, попробуй
откомпилтровать его с помощью GCC 2.95.3.
RPM (and realplay)
rpm перестает работать на ядре 2.6. Сначала он ничего не делает,
апотом выводит сообщение:
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable(11)
error: cannot open Packages database in /var/lib/rpm no packages
Ты можешь профиксить этот баг вот так:
export LD_ASSUME_KERNEL=2.2.5
(или эквивалент в твоей оболочке) а затем запустив rpm снова. Stephane
Raimbault говорит что ты можешть также скачать и использовать
последнюю версию rpm (ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.2.x),
но я не проверял.
У меня была такая же проблема с realplay, она исправляется также.
Вот что Penelope Fudd сказал об этой проблеме:
Оригинальная glibc из RH9 c багом, обновленная glibc - нет:
ftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-2.3.2-27.9.i386.rpm
А после этого надо обновить еще:
ftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-common-2.3.2-27.9.i386.rpmftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-devel-2.3.2-27.9.i386.rpmftp://ftp.rpmfind.net/linux/redhat/updates/9/en/os/i386/glibc-utils-2.3.2-27.9.i386.rpm
Я попытался сделать это командой rpm -Uvh glibc*, но это не сработало. Я набрал
rpm -e <старая версия> и rpm -Uvh --force
<новая>. Это работало.
Modutils / module-init-tools
Тебе нужны новые modprobe, insmod, rmmod, и тд. Если их не будет,
будут ошибки типа "QM_MODULES: Function not implemented.'' Скачай
последнюю версию module-init-tools
(ftp://ftp.kernel.org/pub/linux/kernel/people/rusty/modules/ ).
Прочти README. I запусти:
./configure --prefix=/
make moveold
make
make install
Теперь переведи /etc/modules.conf в /etc/modprobe.conf с помощью
./generate-modprobe.conf который входит в состав module-init-tools:
./generate-modprobe.conf /etc/modprobe.conf
Обрати внимание на результат, особенно конец файла.
Вот моя копия /etc/modprobe.conf (http://thomer.com/linux/modprobe.conf).
Hotplug
Hotplug нужен для подключения беспроводных устройств. Включи
CONFIG_HOTPLUG в конфигурации ядра. Затем замени все строки
"/proc/ksyms'' на "/proc/kallsyms'' в /etc/rc.sysinit.
Вот моя копия /etc/rc.sysinit (http://thomer.com/linux/rc.sysinit).
Файловая система Sysfs
Step 1:
Создай /sys.
Step 2:
Где строка:
mount -f /proc
в/etc/rc.sysinit, добавь:
mount -f /sys
на следующей строке.
Step 3:
Где строка:
action $"Mounting proc filesystem: " mount -n -t proc /proc /proc
в /etc/rc.sysinit, добавь:
action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
на следующей строке.
Step 4:
Добавь:
none /sys sysfs defaults 0 0
в /etc/fstab.
Step 5:
В функции halt_get_remaining в файле /etc/init.d/halt, измени
awk '$2 ~ /^\/$|^\/proc|^\/dev/{next}
на
awk '$2 ~ /^\/$|^\/proc|^\/sys|^\/dev/{next}
Вот моя копия /etc/rc.sysinit (http://thomer.com/linux/rc.sysinit).
А это моя копия /etc/init.d/halt (http://thomer.com/linux/halt).
USB
Названия модулей USB различны. Это затрагивает и /etc/modprobe.conf
(посмотри на "usb-controller'') и на, /etc/rc.sysinit. Я переименовал
все "keybdev'' в "usbkbd'' и "mousedev'' в "usbmouse''. Также, я
заменил все "/proc/bus/usb'' на "/sys/bus/usb''. (Также сделай это в
/etc/init.d/halt.)
Посмотри на "needusbstorage'' в /etc/rc.sysinit. Я изменил эту секцию
на:
needusbstorage=
if [ $usb = "1" ]; then
needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/n
ull`
action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
action $"Initializing USB keyboard: " modprobe usbkbd 2> /dev/null
action $"Initializing USB mouse: " modprobe usbmouse 2> /dev/null
fi
Вот моя копия /etc/rc.sysinit (http://thomer.com/linux/rc.sysinit).
Беспроводные устройства (linux-wlan-ng, prism2_pci)
Я использую драйвер linux-wlan-ng prism2_pci, которому нужен hotplug
для работы.Я использовал версию 0.1.16-pre9, но перешел на 0.2.1-pre9.
Скрипт /etc/wlan/shared содержит ошибкиr. Вот моя копия
/etc/wlan/shared (http://thomer.com/linux/shared). Она содержит исправления.
Воспользуйся diff если хочешь узнать что я изменил. Я полагаю что остальные
файлы /etc/wlan могут остаться без изменений.
Звук
IBM ThinkPad T30 поставляется со звуковой картой Intel 810 + ac97.
Теперь модуль называеся "snd-intel8x0''. Вот секция моего
/etc/modprobe.conf.
alias char-major-14 soundcore
alias sound-slot-0 snd-intel8x0
alias snd-card-0 snd-intel8x0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
install sound-slot-0 /sbin/modprobe --ignore-install sound-slot-0 && \
{ /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1; /bin/true; }
remove sound-slot-0 { /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1;\
/bin/true; }; /sbin/modprobe -r --ignore-remove sound-slot-0
Вот моя копия /etc/modprobe.conf (http://thomer.com/linux/modprobe.conf)
VMware
Сначала замени все "/proc/ksyms'' на "/proc/kallsyms'' в
/usr/bin/vmware-config.pl.
Запуск vmware-config.pl даст ошибки компиляции. Разархивируй vmnet.tar
в /usr/lib/vmware/modules/source. Получится папка vmnet-only. В ней
отредактируй bridge.c. На 368-й строке измени:
atomic_add(skb->truesize, &sk->wmem_alloc);
на:
atomic_add(skb->truesize, &sk->sk_wmem_alloc);
и также, на 618-й и 817-й ситроках, измени protinfo на sk_protinfo.
Затем заархивируй эту папку vmnet-only, заменив старый vmnet.tar, и
перезапусти vmware-config.pl. Проверь что vmware-config.pl тот же
компилятор, каким ты откомпилировал ядро. Я использовал GCC 2.95, но
возможно тебе повезет с GCC 3 {Мне повезло --прим. polachok}.
Jose Luis Domingo Lopez (спасибо!) написал мне следующее:
[...]
Последние изменения в task_struct сделали компиляцию сетевого модуля vmware
невозможной. Исправить это просто: разархивируй vmmon.tar, открой
vmmon-only/linux/driver.c и замени все: current->uid,
current->euid, current->fsuid, current->egid, current->gid and
current->fsgid
на
current->__uid, current->__euid, current->__fsuid,
current->__egid, current->__gid and current->__fsgid, respectively.
PS1: это изменение есть в tast_struct с ядра 2.6.0-test6-mm1, но этого нет в 2.6.0-test6.
PS2: ядро и модули VMware откомпилированы gcc 3.2.3 из Debian Sid
Nick Atkins написал мне мыло в котором отметил, что можно запустить
vmware-config.pl для ядра 2.6 и GCC 3.x. Файл есть на
http://ftp.cvut.cz/vmware/. Он сказал что последний тарбол (типа
vmware-any-any-updateXX.tar.gz) должен быть разархивирован и запущен
вместо vmware-config.pl. Я не пробовал. (Спасибо Jose Luis Domingo
Lopez за советы.)
Слово об ACPI и APM
BIOS у ThinkPad T30's сломанный, это затрагивает ACPI. Можно скачать
обновления с IBM'ского сайта. Однажды я попробовал, ACPI заработало,
но только частично. И я решил вернуться к APM, т.к. уровень зарядки
батарей отображался неверно
RPM-ки
Попробуй вот эти kernel 2.6 RPMs. Я сам не пробовал, но они
выглядят многообещающе. http://people.redhat.com/arjanv/2.5/RPMS.kernel/
Я
Это моя любимая часть. Меня зовут Thomer M. Gil, я студент Computer
Science в MIT. У меня есть проблемы с р-р-речью (http://www.thomer.com/misc/stutter.html) и
домашняя страница (http://www.thomer.com).
Эта страница была создана 9 Августа, 2003.
Последние изменения 2 Декабря, 2003.
Мое мыло [my first name]@[my last name].com.
Мое имя Thomer, моя фамилия Gil.
Перевод: polachok, 16.01.04
(c) Polachok, 2003.