Next Previous Contents

17. Admin

17.1 Как перейти на ядро 2.6? У меня не грузятся модули на ядре 2.6, проблемы ядер 2.6 (QM_MODULES)

Читаем

http://fine.kalinovka.net/?q=node/3

http://www.mojoholder.narod.ru

http://www.fedoranews.org/jorge/howto/howto01.shtml

17.2 Как провести тонкую настройку использования памяти?

Помогут эти статьи:

Описание параметров и значений О выставлении параметров

17.3 Как сделать, чтобы linux на ядре 2.6 не так интенсивно использовал файл подкачки (swap)?

Указать где-нибудь при загрузке (например, в /etc/rc.d/rc.local):

echo 20 > /proc/sys/vm/swappiness

Изменять параметр swappiness также можно через интерфейс /etc/sysctl

Ключ называется vm.swappiness

На машинах, выполняющих, например, кодирование видео, можно порекомендовать значение 0, поскольку во-первых, это более отвечает поведению ядра 2.4, а во-вторых позоляет избежать так называемой пробуксовки, когда постоянно активен процесс своппинга. Единственное исключение - машины с менее чем 128М памяти.

Есть еще ключ vm.vfs_cache_pressure, который рекомендуется повысить хотя бы до 1000

Тем, кому интересно, могут прочитать обсуждение на lkml: http://kerneltrap.org/node/view/3000

А также обсуждения патча Con Kolivas'а по регулированию этого параметра "на лету" http://kerneltrap.org/node/view/1044.

За дополнение спасибо annoynimous.

17.4 Ставлю программу в rpm, а она не ставится, rpm висит или выдает ошибку обращения к базе. Как лечить?

Лечить достаточно просто.

  1. Логинимся под root'ом.
  2. Заходим в /var/lib/rpm и удаляем файлики __db.001, __db.002 и __db.003.
  3. После чего даем команду rpm --rebuilddb

17.5 Как узнать конфигурацию установленного ядра?

Ядра по-умолчанию можно увидеть во всей красе в пакете из дистрибутива.

Также можно поискать в /boot файл конфигурации (нечто вроде config-2.6.9-1.681_FC3.mppe), или (если есть) в файле /proc/config.gz.

17.6 Собрал ядро. Запускаю. Kernel panic: no init found. или Unable to find root fs. Что делать?

Ну вообще данные надписи сами по себе являются руководством к действию. Или ядро не нашло корневой раздел там, где он был указан, или нет поддержки его файловой системы, например.

1-й случай. Смотрим как собрали поддержку корневой файловой системы. Если она собрана модулем, то у вас должен быть создан initrd (и лежать в папке /boot) и прописан в вашем загрузчике. Данный файл должен создаваться на новое ядро ЗАНОВО!

В загрузчике запись об initrd выглядит примерно так для lilo:

/etc/lilo.conf: initrd = /boot/initrd-2.6.3-prep5.img

и так для grub:

initrd /boot/initrd-2.6.3-prep5.img

Дело в том, что в этом файле находятся модули ядра и при загрузке ядро в состоянии обратиться к ним в отличие от модулей, что лежат в /lib и не могут быть подключены, т.к. ядро не видит раздел (потому что нет соответствующего модуля - замкнутый круг).

2-й случай. Тут все несколько сложнее. Дело в параметрах загрузчика. Если вы собираете поддержку корневой файловой системы не модулем, то не нужно передавать ядру параметр root=/ или root=LABEL=/ (кстати, root можно прописать отдельно, а не как параметр, например, так: root = /dev/hda2 ) - все эти вещи нужны системе, чтобы нормально запуститься после установки.

Для grub стоит проверить правильность записи о рутовом разделе, т.е. наличие строчки вроде такой:

root (hd0,1)

Если вы собираете поддержку корневой файловой системы модулем, а эти строчки прописаны, значит скорее всего не прописан initrd (или он старый и в нем нет или не грузится данный модуль).

Общий совет: Если вы не собираетесь таскать систему с винта на винт, проще собрать поддержку корневой файловой системы в ядре и обойтись без указывания корневого раздела (root =) и создания и использования initrd.

17.7 Драйверы под мое устройство есть только под ядро 2.2, а под 2.4 таких же нет, что делать?

Зайдите на http://mcmcc.bat.ru/fedora/#12.1

Примерчик работы того же - http://www.linux.org.ru/view-message.jsp?msgid=318591

17.8 Где узнать список параметров, которые можно передать ядру при загрузке?

man bootparam

17.9 Как включить acpi в lilo или grub?

Передать параметр acpi=force. Для систем с Hyper Threading или многопроцессорных лучше передать параметр acpismp=force. Например, для lilo:

image=/boot/vmlinuz-2.4.22-1.2135.2 label=Stable read-only append="hdc=ide-scsi acpi=force"

Для grub

title Fedora Core (2.6.8-1.598) root (hd0,1) kernel /vmlinuz-2.6.8-1.598.2 ro acpi=force

17.10 Как узнать параметры, которые можно передавать модулю?

root@linux# modinfo module_name

17.11 Как устанавливать/загружать модули?

user@linux$ man insmod user@linux$ man modprobe user@linux$ man modules.conf

ну и

depmod -A

Кроме информации о авторе, лицензии и проч., если модуль может принимать некие параметры, они будут описаны строками вида

parm: debug int, description "3c59x debug level (0-6)" parm: ... parm: ...

17.12 Как обновить glibc в rpm-based дистрибутиве?

Обновляем следующие пакеты (версии взяты для примера):

Если вы планируете собирать программы:

Вообще, обычно умные люди делают сначала `rpm -qa | grep glibc`, дабы посмотреть, какие пакеты из glibc у них установлены, а потом уже их обновляют.

После этого, можно смело перегружаться.

Примечание - бывает, что сначала требуется обновить rpm, к rpm вполне возможно потребуется обновление db4 и cpio и точно придется обновлять popt. Например, при обновлении последних glibc под RedHat.

17.13 Можно ли поставить дистрибутив xxx на SATA?

Скорее всего можно, если ядро дистрибутива не ниже 2.4.22

Рекомендуется прочитать статью о том, как поставить ASP Linux на SATA и проверить список поддерживаемого оборудования

17.14 Как найти нужный файл в кучах rpm? (поиск в rpm)

Можно вот так:

user@linux# for i in *.rpm; do rpm -qpl $i | grep /filename >/dev/null 2>&1 && echo $i; done

или (говорят, быстрее)

user@linux# find -name '*.rpm' | xargs rpm -qpil | sed -ne '/^Name/h;/filename/{H;x;p;}' | uniq

17.15 Как установить программу из rpm?

Есть два вида rpm: src.rpm (или srpm) и бинарный rpm (типа i386.rpm, i686.rpm и т.п.).

В первом содержатся исходники и перед тем, как установить такой пакет, программу нужно собрать - т.е. получить бинарный rpm. Об этом написано здесь.

Второй является собранной программой, установить его можно такой командой:

root@localhost# rpm -ihv <verb> Возможно, что программа не установится, сказав, что не хватает зависимостей. Зависимости - это пакеты, требующиеся для работы данного пакета. Если мы считаем, что некоторые функции, реализуемые данными зависимости, нам не нужны (например, для пакета kdepim есть зависимость pilot-link, но мы не будем пытаться использовать связь с КПК), тогда для установки программы мы можем добавить ключ --nodeps. В случае, если пакет обновляется на более свежую версию, тогда команда выглядит так: <verb> root@localhost# rpm -Uhv

Далее читайте man rpm

17.16 Как найти в манах нужную команду по ключевому слову?

Простой пример: user@localhost$ man -k 'disk space'

17.17 Как отформатировать дискету?

Воспрользоваться программой fdformat. Пользователи KDE могут использовать программу KFloppy.

Если в системе используется supermount, могут возникнуть проблемы, поэтому есть еще ряд способов:

17.18 Как создать загрузочную дискету? Как создать спасательную дискету (rescue)?

Загрузочная дискета создается с помощью утилиты mkbootdisk (rawrite.exe под ОС от MS). user@localhost$ mkbootdisk -device /dev/fd0 2.4.21 Соответствующее HOW-TO можно прочитать здесь

http://linuxportal.ru/entry.php/838_0_3_0_C/ - Здесь статья о создании Linux на дискете.

http://injector.sourceforge.net/ - Linux на одной дискетте.

http://www.bootdisk.com/bootdisk.htm - Здесь лежат образы загрузочных дискет для операционных систем MS.

http://www.linuxlots.com/~fawcett/yard/ - Perl-скрипт, создающий спасательную дискету.

17.19 Как из консоли установить дату/время?

man date

Простой пример

root@linux# date --set 4/13/2004 root@linux# date --set 14:46:27

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

17.20 Как узнать, какое приложение заблокировало файл/директорию/раздел?

Вообще-то `man lsof`, `man fuser` :)

Например, команда

user@linux# lsof|grep /home

покажет все открытые файлы в каталоге /home. А команда

root@linux# fuser -km /home

Завершит выполнение всех процессов, работающих с файловой сисмемой /home. Будьте внимательны, если /home является не отдельной файловой системой, а частью корневой, то результат может превзойти ваши ожидания :)

17.21 Что это за ошибка - "Segmentation fault"?

По смыслу очень похоже на "Access violation at adress[0000:0000]" и т. д. в другой довольно популярной ОС. Причина - приложение сделало попытку выйти за пределы сегмента.

Если есть исходные коды программы, можно попробовать пересобрать ее, включив отладочную информацию, может повезет узнать больше.

Если есть только бинарник, можно поставить gdb, запустить `gdb program` и в приглашении сказать run. Если выполнение программы останавливается - пишите next. Ну и читайте, что пишет.

17.22 Будут ли работать бинарные пакеты из другого дистрибутива?

Будут, но вы должны точно знать, что вы делаете.

Самое большое препятствие при запуске - системный уровень. Однако встречаются такие вещи редко. Например, кардинальное изменение, внесенное в glibc, с которым собраны все программы, сильно измененное ядро.

Самое маленькое, но часто встречающееся препятствие - это нехватка библиотек, а точнее библиотек нужной версии.

Проще всего поставить программу и проверить, будет ли она работать. Если она попросит какие-либо библиотеки, нужно их доставить, причем желательно из своего дистрибутива (в крайнем случае, собрать посвежее те, что нужны).

Если у вас rpm-based дистрибутив, то вы должны быть готовыми к тому, что зависимости не будут выполняться. Дело в том, что почти все дистрибутивы используют свою систему наименования пакетов и, например, пакет a52dec в redhat называется liba52dec в mandrake. Бояться этого не нужно. Максимум, у вас будет ругаться apt (если вы его используете).

В общем случае хватает, чтобы версии требуемых библиотек были приблизительно такими же, как у вас в системе. Например, программы из alt linux легко работают в asp linux или fedora core несмотря на разные версии базовой системной библиотеки glibc.

17.23 Как поместить linux на USB-flash?

Пошаговая инструкция здесь http://www.opennet.ru/base/sys/usb_flash_boot.txt.html

Там же можно узнать об оптимизации вашего linux для работы с USB-flash.

В этом ответе вы можете прочитать, где взять готовый для работы с usb-flash дистрибутив linux.

Ваша материнская плата должна поддерживать загрузку с flash-карты.

17.24 Поставил MS Windows (98, ME), как теперь вернуть загрузку Linux? Как восстановить загрузчик?

Обычно грузимся с первого диска. Выбираем помощь. Смотрим, как загрузиться в спасательный режим (rescue mode). Для redhat, например, нужно в строке boot: набрать linux rescue. После загрузки читаем что пишется. ВНИМАТЕЛЬНО. Может быть у вас такой хороший дистрибутив, что нашел ваш корневой раздел и примонтировал его куда-нибудь (например, в /mnt/sysimage).

Подсказка: Если этого не произошло, заходим в /mnt и монтируем свой корневой раздел в любую пустую папку (я думаю, вы знаете, где у вас корневой раздел). Например, mount /dev/hda2 /mnt/sysimage.

После чего выполняем chroot /mnt/sysimage. (Еще раз - если корневой раздел примонтирован сюда).

Теперь вспомним, какой у нас загрузчик - grub или lilo (у любителей экзотики может стоять Anacronis OS Selector).

Для lilo:

Если у нас и раньше стоял MS Windows (и вы его просто переставили), тогда просто выполняем lilo и перегружаемся. Если раньше MS Windows не стоял, запускаем mc, открываем файл /etc/lilo.conf, добавляем нечто вроде

other=/dev/hda1 optional label=Windows

/dev/hda1 - это раздел с MS Windows. Указываете свой (см. соответствующий вопрос).

Сохраняем файл. А дальше, естественно, выполняем lilo.

Для grub:

Если у нас раньше стоял MS Windows (и вы его просто переставили), тогда выполняем grub, а затем в его консоли пишем:

grub> root (hd0,0) grub> setup (hd0) grub> quit

где hd0 - ваш диск. Первой строчкой мы указываем раздел, где размещается /boot, второй устанавливаем загрузчик в MBR, а третьей - выходим из консоли загрузчика.

Если они не стояли, добавляем в файл /etc/grub.conf (или /boot/grub/grub.conf) такие строчки:

title Windows rootnoverify (hd0,4) chainloader +1

В данном примере MS Windows находится на 5-м разделе, /dev/hda5

А дальше точно так же выполняем grub и в появившейся консоли загрузчика пишем:

grub> root (hd0,0) (Specify where your /boot partition resides) grub> setup (hd0) (Install GRUB in the MBR) grub> quit (Exit the GRUB shell)

17.25 У меня windows 2000/XP установлен на NTFS и grub его не грузит, что делать? У меня Windows находится на втором/третьем и т.п. разделе или установлен на другом диске (который не является первым) и grub его не грузит, что делать?

Много нервов у всех отнял этот вопрос. Ответы в большинстве своем невнятные. Пришлось ставить себе Windows (jackill), да еще и на NTFS и проверять что происходит.

В результате чтения документации и экспериментов удалось узнать то, что Grub прекрасно грузит Windows, установленный на NTFS, потому что он не обращается к разделу, а передает управлению загрузчику Windows.

Секрет в другом - Windows 98/ME/2000 (насчет XP не в курсе) и DOS не умеют грузиться со второго раздела или с жесткого диска, не являющегося первым.

Чтобы они смогли загрузиться, нужно их обмануть. Это возможно, если они при загрузке используют BIOS для определения винтов. Скорее всего это и ваша система.

Теперь следите: у меня два жестких диска, стоящие мастерами - в терминах Linux это hda и hdc.

В терминах grub это нулевой и первый диск. Не второй, обратите внимание! Нумерация идет подряд.

На hda у меня стоит Linux и загрузочный раздел /boot первый - т.е. hda1 или, в терминах grub, hd0,0. Соответственно hdc отдан под Windows 2000.

Пишем в grub следующее:

title Windows rootnoverify (hd1,0) map (hd0) (hd1) map (hd1) (hd0) makeactive chainloader +1

Что мы сделали? Мы поменяли в BIOS диски местами - передали, что hd0 у нас теперь hd1, а hd1 - hd0. Теперь будет грузиться. Может не сработать с некоторыми scsi-дисками, для которых ОС использует специальный драйвер.

17.26 Как прописать linux в NT Loader?

Написано об этом здесь.

Если у вас windows стоит на файловой системе fat32, то делаем так:

  1. Ставите lilo в первый сектор раздела /boot (например, /dev/hda2).
  2. Монтируете диск C:\ (каталог /mnt/c уже должен существовать) root@localhost# mount -f vfat /dev/hda1 /mnt/c
  3. Копируете загрузочный сектор: dd if=/dev/hda1 of=/mnt/c/bootsect.bin count=1 bs=512
  4. Исправляете c:\boot.ini примерно следующим образом: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect c:\bootsect.bin="Linux"

Если у вас MS Windows установлен на файловой системе ntfs, то придется загрузочный сектор записать на жесткий диск и считать специальными утилитами в случае если это ext2, ext3 или reiserfs 3, считать специальными утилитами, или же сделать проще - записать его на дискету.

17.27 Как удалить linux и его загрузчик?

Вам на ваш любимый сайт

17.28 Как прикрутить проверку архивов rar3 к Clamav?

Существует решение от McMCC. Читать и качать отсюда

17.29 Как прикрутить Clamav к Squid? Как сделать проверку того, что пользователи качают к себе на компьютер?

Компьютер понадобится не самый слабый.

Делается это через DansGuardian. Вот здесь можно взять на эту тему pdf. Описание сделано для Mandrake и потому порядком разбавлено описанием их графических утилит. Но настроить по нему можно, потому что на каждый шаг есть описание того, что нужно делать.

17.30 Как и чем забэкапить раздел или папку и сохранить права и симлинки?

Чтобы сохранились все разрешения и т.п. нужно пользоваться tar'ом. Например, сожмем папку (а у кого и раздел) /usr и положим архив на другой раздел, смонтированный в /mnt/backup:

root@localhost# tar cvpjf /mnt/backup/usr.tar.bz2 /usr

17.31 Как перенести установленный linux с одного винта на другой? Как создать образ установленного linux?

Тут существует два пути.

Сожмем в архив все нужные нам файлы, сохраняя права (tar)

Используем dd

Есть винт такой же, как и тот, с которого копировали, делаем просто root@localhost# dd if=/mnt/backup/myhda.img of=/dev/disk bs=10M

Если винт больше, то неоднократно советовалось создать на нем раздел примерно одного размера, что и старый винт, после чего восстановить образ на этот раздел. Насколько действенен этот метод, неизвестно.

Вместо tar в вышеприведенном способе многие рекомендуют использовать cpio.

17.32 Как перенести установленный linux на новый жесткий диск?

Ну если вы жесткий диск только купили, пришли домой и решили - пора, то вот отличная статья на http://opennet.ru.

Ну а если вы в целях создания бэкапа, или жесткий диск везти нужно, то читайте предыдущий вопрос.

17.33 Как открыть лоток привода cd-rom, если он "подвис" на плохом диске?

Дайте команду echo 0 > /proc/sys/dev/cdrom/lock и потом смело открывайте привод. Должно получиться.

17.34 Как убить zombie-процесс? Zombie занимает ресурсы?

В состоянии "зомби" процесс не имеет образа в RAM, но информация о нем сохраняется в таблице процессов. Он не поедает ресурсы, но теоретически могут кончится PID'ы.

Напрямую зомби не убить, нужно уничтожить родительский процесс, тогда зомби умрет вместе с ним.

Увидеть родителя можно в столбце PPID после команды

ps -axl

Подробнее: http://cad.narod.ru/methods/os_unix/unibas/process.html

17.35 Как добавить вложение (attachment) в письмо из скрипта?

user@linux~:$ mail -a filename.to.attache user@linux~:$ mutt email@address -a filename.to.attache -s "Subject of email" < file.containing.message.body.txt user@linux~:$ gzip -c filename.to.attache | uuencode filename.to.attache.gz | mail -s "Subject of email" email@address

Здесь filename.to.attache - файл-вложение, file.containing.message.body.txt - файл с телом сообщения.

17.36 Как примонтировать hard USB/flash-карту?

Если в ядре включена поддержка SCSI и USB (в частности, USB Mass Storage), то в общем случае хватит команды: root@localhost# mount /dev/sda1 /mnt/your_location -t vfat

vfat - название файловой fat32, которая используется в большинстве устройств, your_location - ваша папка.

Чтобы узнать как не монтировать из-под рута, читайте следующий вопрос.

А если что-то пошло не так, вам поможет эта статья - http://linuxportal.ru/entry.php/17_0_3_0_C

17.37 Как сделать, чтобы flash монтировалась не из под рута?

Добавить в fstab строчку вида

/dev/sda1 /mnt/flash auto users,noauto,rw,iocharset=koi8-r 0 0

или привести свою к этому виду. В iocharset укажите свою локаль.

Можно сделать совсем красиво, установив себе usbmount

17.38 После перехода с с ядра 2.4.x на 2.6.x. не монтируется флешка. При убирании поддержки USB 2.0 (EHCI) все работает, но на версии 1.1. Что делать?

В файл /etc/modprobe.conf добавьте строчку: options usbcore old_scheme_first=y

17.39 Как слить фотографии с цифрового фотоаппарата с интерфейсом USB?

Многие цифровые фотоаппараты представляются системе как USB Flash

17.40 Мой фотоаппарат не является USB Mass Storage, что делать?

Попробуйте разобраться, какой протокол обмена он использует. Возможно, этот протокол поддерживается gphoto2. Gphoto2 - это набор текстовых утилит, но есть программы с графическим интерфейсом, которые с ним работают - Digikam и gtkam.

К примеру фотокамеры Canon используют протокол PTP (Picture Transfer Protocol), можно выбрать либо конкретную модель Canon, либо, при отсутствии нужной модели, просто указать USB PTP Class Camera.

17.41 Как перенаправить записи журналов syslog на другую машину?

Добавьте в /etc/syslog.conf строчку: *.* @имя.вашей.машины

17.42 Как сделать, чтобы при пропадании питания UPS отключал комп, а при появлении питания, снова включал?

http://www.opennet.ru/base/sys/smart_ups_nut.txt.html


Next Previous Contents