Ответы на вопросы
Авторы: © The Answer Gang
|
Список вопросов
[?] Джэймс, я окончательно запутался. Я заканчиваю root-сеанc (не su) и пытаюсь зайти в систему часа через два. Ввожу свое имя и...И - ничего. Нет строки для ввода пароля! Хорошо, жесткая перезагрузка, все вроде бы нормально, ввожу имя пользователя и - нет строки для ввода пароля. Есть какие-нибудь идеи? [!] Для начала нужно добраться до командной строки. У меня такое подозрение, что повреждены файлы /etc/passwd или /bin/login. Попробуй запустить Линукс, передав ядру параметр init=/bin/sh через загрузчик (LILO, LOADLIN, GRUB - в зависимости от того, что у тебя установлено). Если это не поможет, достань загрузочную дискету или диск. Может помочь http://www.toms.net/rb. После этого убедись в том, что твои файлы /etc/passwd, /etc/group и различные /etc/pam.d в порядке. Если ты их видел раньше, то сразу определишь - все ли нормально с ними. Если у тебя есть резервные копии файлов /etc/passwd и /etc/group, восстанови их куда-нибудь в /tmp и прогони их через diff. Обрати внимание на разницу. Если твоя система базируется на RPM, попробуй команду 'rpm -Va', чтобы проверить целостность /bin/login и других бинарников (если есть полная tar-копия разделов /root и /usr, попробуй 'tar df' или 'tar dzf', чтобы получить информацию о разнице между резервной копией и текущими версиями файлов. Если твоим дистрибутивом является Debian, то также существуется несколько способов проверить целостность системы. Ни один из них не объяснишь так же просто, как "набери в командной строке 'rpm -Va'" (один из тех немногих недостатков apt- и dpkg- систем). Если у тебя есть что-нибудь из этого: debsums, tripwire, aide - попробуй запустить их, однако не расчитывай на чудеса. Существует также вероятность того, что твоя программа /bin/login повреждена, или человек, атаковавший систему, попытался заменить /bin/login (или какой-то другой файл) на испорченный вариант (возможно слинковав ее с какой-нибудь библиотекой, которой у тебя нет или - даже если она и есть - у тебя установлены неправильные права на нее, ну или что-нибудь в этом роде). Разумеется, я бы также просмотрел /var/log/messages и родственные файлы, чтобы проверить - не кроется ли разгадка где-нибудь в этих логах. Запусти fsck на /root. Попробуй запустить /bin/login с загрузочной дискеты. Можно даже заменить /bin/login небольшим скриптом следующего содержания (предварительно переименовав оригинал во что-нибудь типа login.binary): #!/bin/sh ...Затем попробуй войти в систему (если нужно - перезагрузись, либо же просто запусти shell на одной из виртуальных консолей, вписав соответствующую строку в файл /etc/inittab). Твоя проблема достаточно необычна, но попробуй то, что я посоветовал - это, по крайне мере, поможет сузить область поиска при выяснении причин. (С уверенностью могу сказать, что у тебя работают ядро, root filesystem и init. getty работает до такой степени, что можно ввести имя пользователя. Вот, мы уже сузили область поиска до getty и login --- либо getty не удается правильно запустить login, либо у login не получается вывести строку для ввода пароля. Скорей всего, дело в последнем.)
[?]Моя конфигурация: RH 7 - Dell Precision 420, 18 GB SCSI HD @ 10K rpm, 1 CD-ROM, 1 CD-RW, монитор 19", видеокарта Diamond Fire GL1 - с нее и начинается моя проблема. Последняя версия драйвера для моей видео-карточки работает только с ядром 2.2.14. RH 7 использует 2.2.16 - поэтому едиснтвенное решение - перейти на более старую версию, чтобы использовать Gnome и KDE (иначе придется коротать время в консоле, где я сейчас и сижу). (!) [Ben] Интересный вопрос. Первое, что бы я сделал - это поискал в Сети патч для драйвера (или бы связался с автором драйвера), вместо перехода на старое ядро. Шансы на то, что требуется лишь незначительная модификация кода драйвера, достаточно высоки (с другой стороны, может потребоваться коренное изменения кода - однако попытка - не пытка). (?) Да. Помогло. Новое (старое?) ядро уже установлено, но при загрузке обнаруживается только один SCSI хост, вместо трех. Также есть проблема с IDE распознованием...И в итоге я получаю сообщение: "kernel panic: VFS: unable to mount root fs 08:02". В lilo.conf все нормально. (!) [Ben] Так, сообщение "kernel panic" говорит о том, что не найдено устройство, с которого можно было бы загрузиться, и нет загрузочной записи на устройстве 08:02 (если я не ошибаюсь, это значит "устройство с главным номером 8 и дополнительным - 2", другими словами - /dev/sda2, вторая партиця твоего первого SCSI винчестера.) Это оно? (в смысле устройство, с которого загружаешься.) Вопрос по ходу - 'lilo' перезапускалось? Это никогда не помешает, и если что-то, связанное с загрузкой, было изменено - перезапуск просто необходим.) (!) [Mike] Здесь не найдена root-партиция, которую можно примонтировать. Загрузочный сектор - это уже другая история. И, кстати, если уж доходишь до этого места, то значит с ним все нормально. По крайней мере, у нас есть слово "root" в этом сообщении. Когда такое случается у меня, то что-то типа такого загадочного сообщения, как "unable to open initial VC (=virtual console), появляется рядом. Это происходит потому что для отображения строки для ввода имени пользователя нужна виртуальная консоль, который нужно устройство в каталоге /dev, для чего, в свою очередь, необходимо примонтировать root-партицию. (!) [Ben] Если ты не можешь примонтировать root-партицию (да, здесь ты прав - признаю свою ошибку), я не думаю, что каким-то образом можно добраться до строки ввода имени пользователя. Однако справедливо и то, что отсутствующяя или поврежденная директория /dev вызовет сообщение о "VC", так же как и установка "no virtual terminals" в конфигурации ядра. (!) [Ben] Где было взято новое (старое?) ядро. Если это официальное ядро от RedHat - то я удивлен, там обычно не допускают подобных ляпов. У меня точно не было никаких проблем с обнаружением SCSI устройств, но это может быть оттого, что не так много устройств мне приходилось устанавливать. Но у меня не было никаких проблем и с Debian в этом смысле, даже со SCSI-эмуляцией (это то, что я использую дома). Если это какое-то "самодельное" ядро, я бы обязательно проверил его конфигурацию. Да и вообще, я бы не стал использовать "самодельные" ядра при настройке новой системы. И вам тоже не советую. Кстати, вы уверены, что должно быть 3 SCSI хоста, а не 3 SCSI устройства? Между этими понятиями существует разница. Хост-адаптеры являются интерфэйсом между PC и SCSI-устройствами, очень редко (если вообще возможно) на одной системе можно найти 3 хоста. (!) [Mike] Проверьте, на какое именно устройство жалуется система. Посмотрите документацию в Documentation/devices.txt там, где лежат исходники ядра. Блок-устройство 8:2 - это действительно /dev/sda2. (Также можно просмотреть скрипт /dev/MAKEDEV, потому что это скрипт, который создает все остальные файлы устройств. Но это, наверное, будет сложновато. Скрипт тяжело читается.) (!) [Ben] Вариант еще проще - просмотреть через Midnight Commander каталог /dev на предмет наличия там устройства с указанными цифрами. Проще всго это сделать так: ls /dev|grep "8, *2 " (!) [Mike] Да, но учитывая, что каталог /dev на месте и не поврежден. Также обратите внимание на то, что существуют два типа устройств: block-устройство и character-устройство. Диски - это block-устройства. Один и тот главный числовой идентификатор может быть присвоен как какому-то block-устройству, так и character-устройству. (?) А что если просто взять конфиг из 2.2.16 и скопировать его в 2.2.14. Все, кроме видео карточки, работает отлично с 2.2.16. Проблема в том, что я не знаю, где взять этот конфиг из 2.2.16. Что касается 2.2.14 - то здесь все ясно: /usr/src/linux, но где может находиться старый .config? И вообще это разумно поступать таким образом? Это может помочь? Заранее спасибо. (!) [Ben] Я бы сказал, что это не самая удачная идея. Конфигурации и, соответственно, конфигурационные файлы - могут существенно варьироваться в разных версиях ядра. С другой стороны, очень полезным может быть анализ старой конфигурации и попытка воссоздать ее в новой, с учетом всех изменений в форме конфига. На моей системе (Я пользуюсь Debian, но не думаю, что это сильно отличается в других дистрибутивах) конфигурационный файл находится в
"/usr/src/kernel-source- (!) [Mike] Да, это путь по умолчанию, принятый в Линукс. Хотя на самом деле, этот путь может варьироваться в зависимости от вашего желания - главное создать симлинк в /usr/src/linux на новое местоположение файлов, чтобы компилятор знал, где искать файлы заголовков. (Хотя нужно ли это, когда теперь у glibc есть свои собственные файлы загловков ядра?)
(!) [Ben] Удачи в решении проблемы.
[?] Я живу в Южной Африке, как оказалось, здесь достаточно сложно найти кого-нибудь, кто бы мог помочь. Недавно я был у друга, у которого установлен Линукс на компьютере - впечатляет! У меня стоит Windows 2000, работает, конечно, неплохо, но когда дело доходит до профессиональной работы с графикой - Линукс вне конкуренции. Всю прошлую неделю я пытался найти хоть что-нибудь про Линукс и софт под него в Сети, но, к сожалению, безрезультатно... (!) [Mike] На перечисленных ниже сайтах можно найти информацию о том, что такое Линукс, что он может, и где его взять:
(?) Что меня действительно сразило наповал, так это ваши скринсэйверы - radar, bumps (синий факел, перемещающийся в темноте), compass. (!) [Mike] Кто-нибудь в курсе, о чем он говорит? Это что ли стандартные иксовые скринсэйверы (xlockmore), пакет xscreensaver или что-нибудь из KDE или GNOME? Лично я не пользуюсь хранителями экрана. Предпочитаю, чтобы экран просто становился черным и монитор переходил в режим сохранению энергии. А когда охота посмотреть на что-нибудь красивое, запускаю специализированное приложение. Благо, хранители экрана из пакета xscreensavers могут запускаться как простые приложения в отдельных окнах, а не обязательно как скринсэйверы. (!) [Heather] Хранитель экрана 'radar', о котором он говорит, является одной из утилит, которые можно использовать в качестве модуля xscreensaver или же просто запускать как отдельное приложение. Если пользоваться настройками по умолчанию, то он просто выглядит красиво, однако там также реализована возможность настройки параметров (указание хостов вашей сети) через опции в командной строке. Это позволяет сделать более реалистичным ваш "эхолокатор". Некоторые из этих "игрушек" идут в отдельных пакетах и могут быть вообще несвязанными с xscreensaver. GNOME использует фронт-енд к xscreensaver, написанный на GTK. Он позволяет просматривать целый ряд параметров хранителей экранов - описания, дополнительная информация (где можно скачать...Кто знает, может быть это полезно, даже если вы ненавидите GNOME) Это оказалось полезным для меня, когда я пыталась "вычислить", какими модулями не пользоваться. Честно говоря, я не в восторге от идеи совершенно случайного выбора хранителя экрана, потому что некоторые из них просто-напросто выглядят ужасно. Не помню, что используется в KDE. В любом случае, не имеет смысла спрашивать о том, чей это модуль - xscreensacer или xlockmore. Всегда можно найти обе программы, и там -- и там есть действительно красивые хранители экрана, многие из них выпущены под лицензией GPL - так что, при желании, можно портировать их с одной программы на другую. Обе программы могут быть установлены, но запускать сразу можно только одну.
(?) Существует ли возможность изменять все параметры ядра во время установки, примерно так же, как при сборке собственного ядра? (!) [Mike] Я так понимаю, под "во время установки" имелось в виду при каждой загрузке системы, когда можно передать ядру набор параметров, а не во время первоначальной установки Линукс из установочной программы вашего дистрибутива. Так называемые 'compile-time' параметры (типа 'make menuconfig') устанавливать во время загрузки невозможно. Зато есть возможность передавать огромное количество других параметров через строку LILO или же посредством добавления в файл /etc/conf.lilo строки типа: append="myoption1 myoption2=myvalue1,myvalue2" с последующим перезапуском LILO. За более подробной информацией рекомендую обратиться к Bootprompt-HOWTO Некоторые другие параметры могут быть установлены уже при запущенной системе через файловую систему /proc. Например, echo 1 >/proc/sys/net/ipv4/ip_forward активизирует IP-форвардинг. Если вместо 1 поставить 0, произойдет отключение данной функции. Посмотрите документацию, касающююся этих файлов в соовтествующем разделе вашей системы. (Хотя надо признать, что большинство из них недостаточно хорошо документировано). (?) Несмотря на то, что я вдумчиво ознакомился с необходимыми HOWTO, у меня до сих пор не получается заставить работать ядро собственной сборки. Я не имею ничего против того ядра, которое идет в составе RedHat, но мне мы хотелось помимо всего прочего еще иметь такие возможности, как firewalling и IP-маскарадинг, а также удалить ненужные мне установки (типа поддержка PCMCIA и др.). (!) [Mike] Для маскарадинга, нужно собирать ядро с поддержкой IP-forwarding и IP-masquerading. Затем нужно активизировать данные функции в одном из загрузочных скриптов. Например, в моем /etc/init.d/rc.firewall (я пользуюсь Debian) прописано: /sbin/modprobe ip_masq # Нужно исключительно для маскарадинга не-пассивного FTP Попробуйте запустить эти команды вручную, чтобы проверить, работают ли они при текущей сборке ядра. Для обепечения большей безопасности можно составить более сложный набор правил для ipchains (Примечание: для работы ipchains необходимо ядро 2.2.x - я подразумеваю, что именно оно и установлено у вас). (!) [Heather] При установке Debian, инсталлятор задает подобные вопросы, но только для того, чтобы создать список модулей, а не изменить ядро. К тому же подсказки не совсем интуитивно понимаются - лучше всего точно знать то, что хочешь сделать.
|
Copyright © 2000, The Answer Gang. Copying license http://www.linuxgazette.com/copying.html Published in Issue 61 of Linux Gazette, January 2001 |
Вернуться на главную страницу |