LINUX.ORG.RU

Слабый компьютер зависает при сетевой загрузке.


0

0

Доброе утро. Создаю терминальную LTSP систему на основе ubuntu 9.10. Загрузка по сети осуществляется при помощи etherboot так как парк компьютеров, которые будут терминалами, очень разношерстный, перепрошивать BIOS и сетевые карты будет очень долго.
Компьютер «мощный», конфигурация которого P-600МГц, 128 МБ оперативной памяти, загружается и все приложения работают без проблем. Если уменьшить количество оперативной памяти с 128 до 64 МБ, то происходит следующее: загружается компьютер по сети, далее, появляется заставка ввода логина и пароля. После ввода логина и пароля происходит загрузка Gnome, но не до конца, в какой-то момент загрузка обрывается, и появляется снова заставка для ввода логина и пароля. После повторного ввода пары логин-пароль ситуация повторяется.
На слабых компьютерах происходит следующее: загружается etherboot, далее появляется логотип ubuntu в середине экрана. Примерно через минуту на клавиатуре начинают моргать светодиоды «caps lock» и «scroll lock». После этого момента, судя по сетевым картам, обмена информацией между ними не происходит. Конфигурация «слабого компьютера»: P-1, 32 МБ.
Первое, что пришло мне на ум, это заменить Gnome на Xfce и после установки обновить ядро и образ ltsp. Все это дело я сделал командами

apt-get remove ubuntu-desktop
apt-get install xubuntu-desktop
ltsp-update-kernels
ltsp-update-image
После выполнения этих команд я перезагрузил сервер, на сервере загрузилась оболочка Xfce. Но на «мощном компьютере» (P-600, 128МБ) загружается Gnome.
Подскажите, как заставить работать ltsp на слабых компьютерах, если на довольно мощном для таких задач компьютер не спавляется?


Скорее всего ubuntu-desktop является метапакетом и не факт, что при его удалении удаляется gnome

vladislav ★★ ()
Ответ на: комментарий от vladislav

Я про другое: почти везде написано, что 32 МБ и 1 пентиума хватает для работы клиентов ltsp. У меня же стабильно работает только на 128 МБ оперативной памяти.

dicos ()

>Примерно через минуту на клавиатуре начинают моргать светодиоды «caps lock» и «scroll lock».
А это не паника ядра ли?

anotheranonymous ()
Ответ на: комментарий от dicos

>Я про другое: почти везде написано, что 32 МБ и 1 пентиума хватает для работы клиентов ltsp.
32мб памяти и 1 пентиума действительно хватает для конфигурации, когда на терминале запускаются только иксы, а гном (или что-то другое) запускается на сервере. У вас, как я понял, гном и xfce выполняются на самом терминале. Тогда на терминале нужен тот объём памяти и тот процессор, которые необходимы для соответствующей DE.
А вот почему кернел-паник у вас возникает - не знаю. Уберите сплешскрин, чтоб было видно, что пишет ядро перед паникой.

Laz ★★★★ ()
Ответ на: комментарий от Laz

Появилась ошибка:

ipconfig: eth0: SIOCGIFINDEX: No such device
ipconfig: no devices to configure
/init: 1:Cant Open /tmp/net-eth0.conf
В интернете пишут, что надо установить драйвера для сетевой карты, но как это сделать я не понимаю.

dicos ()
Ответ на: комментарий от dicos

Посмотрите, какая модель сетевой карты стоит на этом компьютере, и посмотрите, поддерживает ли её linux (уверен, что да). Потом при необходимости пересобрать ядро с её поддержкой.

Laz ★★★★ ()
Ответ на: комментарий от Laz

Сетевая карта, насколько я понял поддерживается, VIA VT86C916 (NE2000 совместимая). Источник, откуда додумал это http://www.redhat.com/mirrors/LDP/HOWTO/Ethernet-HOWTO-4.html
Хочу спросить, есть ли лучший образ пересобрать ядро так, чтобы драйвер от этой карты появился. Нашел инструкции, как обновить ядро. Но вот как добавить во время сборки драйвера — нет.

dicos ()
Ответ на: комментарий от dicos

Судя по информации по ссылке, для работы сетевушки нужен драйвер ne. В убунте он собран модулем и, видимо, просто не включён в initramfs, загружаемый терминалом. Посмотрите, есть ли в нём модуль для ядра и, если нет, перегенерите initramfs нужным образом.

Laz ★★★★ ()

На прежней работе было ~30 терминальных машин сначала под собственноручно сделанным окружением затем перевел на ltsp.
Машины действительно были от P-166 с 32Mb
Крутилось все это на стареньком ASPL.

dicos совершенно прав насчет запуска только X-сервера на стороне клиента.
Для этих целей 32/64M вполне достаточно.
По поводу настройки серверной части посмотрите в сторону XDMCP.
Будут вопросы по этому, пишите, раскажу более подробно.

По поводу кернел паник, со старыми компами, точнее их сетевухами, иногда бывают проблемы. Чтобы не париться старался ставить rtl8139.
Некоторые сетевухи тормозили при работе по нфс, приходилось передавать дополнительные опции ядру для уменьшения размера nfs-пакетов.

chief77 ()
Ответ на: комментарий от chief77

> dicos совершенно прав насчет запуска только X-сервера на стороне клиента. ...
извините, не досмотрел, должно быть:
Laz совершенно прав насчет запуска только X-сервера на стороне клиента. ...

chief77 ()
Ответ на: комментарий от chief77

Вычитал, что для поддержки карт NE2000 нужно дописать строки в файл dhcpd.conf

option option-128     e4:45:74:68:00:00;
option option-129     "NIC=ne IO=0x300";
При перезапуске сервер dhcp ругается на то, что нет таких опций (unknown option dhcp.option-128). Ниже привожу содержимое файла /etc/ltsp/dhcpd.conf
authoritative;

subnet 192.168.8.0 netmask 255.255.255.0 {
    range 192.168.8.2 192.168.8.254;
    option domain-name-servers 192.168.8.1;
    option broadcast-address 192.168.8.255;
    option routers 192.168.8.1;
    option subnet-mask 255.255.255.0;
    option root-path "/opt/ltsp/i386";

    option option-128     e4:45:74:68:00:00;       # NOT a mac address
    option option-129     "NIC=ne IO=0x300";

    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i386/pxelinux.0";
    } else {
        filename "/ltsp/i386/nbi.img";
    }
}
Что я делаю не так?

dicos ()
Ответ на: комментарий от dicos

Поставил PCI карту, сетевая карта определяется, но загрузка происходит до следующего момента:

mountall: mount /cow [301] terminated with status 1
[92.727588] Out of memory. Kill process 334 (dbus-deamon) score a child
[92.72798] killed process 334 (dbus-deamon)
[364.490259] NFO: task udevd: 430 blocked for more than 2050 conds
[264.490482] "echo 0 > proc/sys/kernel/hung/task_timeout_secs disables this message"
[365.813583] Out of memory: kill process 523 (rsyslogd) score 8329 are child
[365.814049] killed process 523 (syslogd)
Памяти на компьютере 32 мегабайта, процессор пентиум 133. Стоит сказать, что на этом компьютере подключен винтчестер, с файловой системой FAT32. Есть ли идеи, как преодолеть это безобразие? Готов сменить операционную систему, откатиться на более старую систему. Главное, чтобы у меня работал терминальный режим.

dicos ()
Ответ на: комментарий от dicos

Допишите в dhcpd.conf следующие строки:

option option-128 code 128 = string;
option option-129 code 129 = text;

Laz ★★★★ ()
Ответ на: комментарий от dicos

Вам нужно поубирать ненужные сервисы из загрузки. dbus-daemon точно не нужен, syslog не особо нужен (в случае каких-то проблем можно включить, а так нафик его). Уверен, там куча всего ненужного запускается.

Laz ★★★★ ()
Ответ на: комментарий от Laz

Спасибо, bind перестал ругаться на ошибку, но ошибка с сетевой картой NE2000 осталась.

dicos ()
Ответ на: комментарий от Laz

>Вам нужно поубирать ненужные сервисы из загрузки. dbus-daemon точно не нужен, syslog не особо нужен (в случае каких-то проблем можно включить, а так нафик его). Уверен, там куча всего ненужного запускается.

Как я понял, узнать, что ненужного запущено в системе можно командой ps -aux, далее узнать за что отвечает каждый демон. Если его услуги мне не нужны, то его отключаю командой update-rc.d «имя_демона» remove. Я правильно ли понял алгоритм?

dicos ()
Ответ на: комментарий от dicos

На самом деле можно просто посмотреть список файлов в каталоге /etc/rc2.d/ и поубирать то, что не нужно. Но вообще, ваш вариант тоже правильный.

Laz ★★★★ ()
Ответ на: комментарий от Laz

На самом деле можно просто посмотреть список файлов в каталоге /etc/rc2.d/ и поубирать то, что не нужно. Но вообще, ваш вариант тоже правильный.

Вот, что у меня осталось в каталоге /etc/rc2.d

root@terminal:/etc/rc2.d# ls
README
S20kerneloops
S20samba
S20winbind
S50cups
S70dns-clean
S99acpi-support
S99rc.local
S16ssh
S20nbd-server
S20speech-dispatcher
S25mdadm
S50proftpd
S70pppd-dns
S99grub-common
S20dkms_autoinstaller
S20openbsd-inetd
S20tftpd-hpa
S40dhcp3-server
S50rsync
S90binfmt-support
S99ondemand


Вот, что у меня в каталоге /opt/ltsp/i386/etc/rc2.d
root@terminal:/opt/ltsp/i386/etc/rc2.d# ls
K99ondemand
K99rc.local
README
S25ltsp-client-core

Полный список процессов, которые запущены в системе я привел здесь

Каким образом запретить запуск ненужных мне приложений/демонов, которые запускаются не из каталогов /etc/rc*.d? Например bluetooth.

dicos ()
Ответ на: комментарий от dicos

Полный список процессов, которые запущены в системе я привел здесь

Это процессы запущенные на терминалке или на сервере?
Если на терминалке, то много лишнего.
Новые версии убунты используют систему upstart для загрузки.
Конфиги загружаемых служб находятся в /etc/init/*.conf
Можно переименовать ненужные файлы например в *.disabled чтобы не запускалось во время загрузки.
Все это естественно надо делать на образе ltsp (/opt/ltsp/i386/etc/init в Вашем случае).

chief77 ()
Ответ на: комментарий от chief77

Я загрузился по сети с компьютера, у которого установлено 128 МБ оперативной памяти. В меню «Система--Параметры--Запускаемые_приложения» я убрал с загрузки компоненты, которые показались мне лишними. После перезагрузки сервера заново загрузился с тонкого клиента, и список всех процессов, вывел на эту страницу http://govnokod.com/2713 . Сам сервер называется «terminal», пользователь, под которым выполнен вход также зовут «terminal».

Я не очень понимаю, как определить, без какого процесса можно обойтись, а какой процесс очень даже нужен. Например выше было сказано, что демон dbus-deamon не нужен, но я вычитал по man-у, что он предназначен для передачи между процессами информации. Есть ли какие-нибудь источники, где на понятном языке изложено описание процессов, запущенных в линуксе?

dicos ()
Ответ на: комментарий от dicos

Если я правильно понял, список процессов которые Вы выложили, это процессы запущенные на сервере, а не на клиенте.

Чтобы посмотреть список запущенных процессов нужно залогиниться в текстовой консоле на клиенте (переключится с помощью alt-ctrl-f1 например), но не уверен что там будет какой-то активный пользователь, возможно придется его добавить на образе системы или хотя бы прописать корректный пароль для root (/opt/ltsp/i386/etc/passwd|shadow).

Покажите хотя бы какие есть файлы в /opt/ltsp/i386/etc/init/

chief77 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.