|
Previous Next Table of Contents 7. Некоторые ловушки7.1 make cleanЕсли новое ядро делает какие-то странные вещи после текущего его
обновления, то есть большая вероятность, что вы забыли выполнить 7.2 Большие или медленные ядраЕсли ваше ядро поглощает достаточное количество памяти, слишком большое и/или просто долго компилирует, даже когда вы заставили ваш новый 786DX6/440 работать с ним, то вы вероятно получили набор ненужных вам вещей (драйверов устройств, файловых систем и т.п.). Если вы не используете их, то не настраивайте их, потому, что это занимает память машины. Наиболее очевидный симптом раздутия ядра, это интенсивное свапирование памяти на диск и с диска; если ваш диск создает шум и он не один из старых винчестеров Fujitsu Eagles, чей звук напоминал звук выключаемого двигателя реактивного самолета, то посмотрите в конфигурацию ядра. Вы можете узнать сколько оперативной памяти занимает ядро взяв общее
количество памяти на машине и вычтя из него количество ``общей памяти'' в
файле
Моя машина с процессором 386 (которая была настроена с меньшим количество опций) выдает следующее:
Если у вас просто получается большое ядро, но система не позволяет вам
это, то вы можете попытаться выполнить ` 7.3 Ядро не компилируетсяЕсли ядро не компилируется, то скорее всего произошел сбой при
накладывании заплатки или ваши исходные тексты были повреждены каким-либо
образом. У вас также может быть неправильная версия gcc или также может
быть повреждена (например включаемые файлы могут быть с
ошибками). Убедитесь, что символические ссылки, которые описывает Linus в
файле или возможно вы компилируете ядро 1.2.x при помощи ELF компилятора (gcc
2.6.3 и выше). Если вы получили набор ошибок типа
AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include Затем заново выполните В редких случаях gcc может не работать из-за аппаратных проблем. Сообщение об ошибке будет примерно такое ``xxx exited with signal 15'' и это в общем будет выглядеть очень загадочно. Я вероятно не должен был здесь это упоминать, за исключением того что это со мной однажды случилось -- у меня была испорченная кэш-память и компилятор время от времени не работал. Попробуйте сначала переставить gcc, если у вас есть такая проблема. ВЫ должны стать подозрительным только если ваше ядро нормально компилируется с отключенным внешним кэшем, с уменьшенным количество оперативной памяти и т.п. Это имеет склонность беспокоить людей, когда они предполагают, что их
оборудование не в порядке. Хорошо, я не буду делать это. Об этом существует
FAQ -- он находится на 7.4 Не видно чтобы новая версия ядра грузиласьВы не запустили LILO, или он не настроен правильно. Одна вещь которая
случилось однажды со мной это была проблема в файле конфигурации; там
говорилось ` 7.5 Вы забыли запустить LILO, или система просто не грузитсяОххх! Лучшая вещь, которую вы можете сделать в этом случае это
загрузиться с дискеты подготовить другой загрузочный диск (такой какой
должна сделать команда ` В следующем примере, Идея заключается в том, что если есть работающее ядро, то можно использовать его для создания нового загрузочного гибкого диска. Другой вариант, который может работать лучше (а может и не работать, это зависит от конкретного метода которым вы сломали свою систему) обсуждается дальше после примера. С начала загрузимся с комбинации загрузочного/корневого дисков или спасательного (rescue) диска, и смонтируем файловую систему, которая содержит работающее ядро:
mkdir /mnt mount -t ext2 /dev/hda3 /mnt Если
/mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot Поместите отформатированную дискету в привод ``A:'' (только не загрузочную дискету и не дискету с корневой файловой системой!), и перебросьте ядро на дискету и настройте его на вашу корневую файловую систему:
cd /mnt/src/linux/arch/i386/boot dd if=zImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1 перейдите в
cd / umount /mnt Теперь вы должны иметь возможность перезагрузить ваш компьютер как обычно с созданной дискеты. Не забудьте перезапустить lilo (или выполнить то, что вы сделали не правильно) после перезагрузки! Как было упомянуто выше, существует другая общая альтернатива. Если у вас
к счастью имеется рабочее ядро находящееся на разделе Используя LILO с большими дисками (больше чем 1024 цилиндра) может вызвать проблемы. Смотрите LILO mini-HOWTO или документацию для помощи в этом случае. 7.6 Ядро сообщает `warning: bdflush not running (предупреждение bdflush не запущен)'Это может быть серьезной проблемой. Начиная с ядер после 1.0 (примерно
20 апреля 1994), программа названная ` 7.7 Выводятся сообщения о неопределенных символах и не компилируетсяУ вас вероятнее всего ELF компилятор (gcc 2.6.3 и выше) и исходные
тексты ядра 1.2.x (или более раннего). Обычное исправление заключается в
добавлении этих трех строк в начало файла AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include Это заставит выполнять компиляцию ядра 1.2.x с библиотеками a.out. 7.8 Я не могу заставить работать мой привод IDE/ATAPI CD-ROMДостаточно странно, но много людей не могут заставить работать свои устройства ATAPI, потому что существуют некоторые вещи, который могут быть сделаны неправильно. Если ваш CD-ROM единственное устройство на отдельном интерфейсе IDE, то оно должно быть выставлено как ``master'' или ``single''. Предположительно это наиболее общая ошибка. Creative Labs (для некоторых) поместил интерфейс IDE на свои звуковые карты. Однако это приводит к интересной проблеме, заключающейся в том, что некоторые люди имеют только один интерфейс, много имеют два IDE интерфейса, встроенных в материнские платы (обычно на IRQ15), так что общая практика в том, чтобы сделать интерфейс на soundblaster третим IDE портом (IRQ11). Это вызывает проблему с linux в том, что в версиях 1.2.x не поддерживается третий IDE интерфейс (эта поддержка началась где-то в серии 1.3.x, но это было для разработчиков, помните об этом, и не был автоматической пробы). Для того чтобы заставить это работать у вас есть несколько возможностей. Если вы уже имеете второй IDE порт, то существует вероятность, что вы не используете его или у вас не два устройства на нем. Уберите привод ATAPI со звуковой карты и поместите его на второй интерфейс. Затем вы можете запретить интерфейс на звуковой карте, что сохранит вам IRQ. Если у вас нет второго интерфейса, то переключите интерфейс на звуковой карте (только не часть работающую со звуком) на использование IRQ15, как второй интерфейс. Это должно работать. Если по некоторым причинам ваше устройство должно быть на так называемом
``третьем'' интерфейсе, или в случае других проблем возьмите ядро версии
1.3.x (например ядро 1.3.57 имеет такую поддержку), и прочитайте файл
7.9 Ядро сообщает странные вещи об устаревших запросах маршрутизацииВозьмите новую версию программы 7.10 Firewalling не работает в 1.2.0Обновите ядро по крайней мере до версии 1.2.1. 7.11 ``Not a compressed kernel Image file (Не является файлом сжатогообраза ядра)''Не используйте файл 7.12 Проблемы с консолью после обновления до 1.3.xИзмените слово 7.13 Не могу скомпилировать некоторые вещи после обновления ядраИсходные тексты ядра linux включают некоторое количество заголовочных
файлов (файлов, чьи имена заканчиваются на
#include <linux/xyzzy.h> Обычно существует ссылка, названная
blah# tar zxvpf linux.x.y.z.tar.gz linux/include Замечание: `` 7.14 Увеличение предельных значенийСледующие несколько показательных команд могут быть полезны для тех кто не знает как увеличить некоторые программные предельные значения The following few example commands may be helpful to those wondering how to increase certain soft limits imposed by the kernel:
echo 4096 > /proc/sys/kernel/file-max echo 12288 > /proc/sys/kernel/inode-max echo 300 400 500 > /proc/sys/vm/freepages |
|||||||||||||||||
With any suggestions or questions please feel free to contact us |