Читаем
http://fine.kalinovka.net/index.php?name=PagEd&topictoview=11
http://www.mojoholder.narod.ru
http://www.fedoranews.org/jorge/howto/howto01.shtml
Помогут эти статьи:
Описание параметров и значений О выставлении параметров
Указать где-нибудь при загрузке (например, в /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.
Обычно -
root@linux# ./configure root@linux# make root@linux# make install
Если после любого из пунктов возникли сообщения об ошибках, значит не все вышло так, как хотелось. Можно попробовать `./configure --help` для вывода опций настройки и попробовать использовать некоторые из них.
Поскольку при таком способе установки информация о том, что ставилось и куда, остается только в памяти админа (которая частенько еще какая временная :), лучше для контроля этого процесса использовать checkinstall - http://checkinstall.izto.org, или похожие программы.
После того, как вы ее установите (прочитав документацию) и настроите ее конфиг, на этапе установки программного обеспечения вместо sudo make install будете писать sudo checkinstall. Checkinstall соберет "настоящий" пакет для указанной (tgz, rpm и deb в зависимости от настроек), установит его в систему и поместит в указанный в конфигурационном файле каталог (удобно для централизованного обновления нескольких машин). Удаление установленных таким образом программ осуществляется стандартными средствами дистрибутива, например, removepkg для Slackware.
Также будет полезным прочитать о том, как уменьшить размер бинарных файлов.
A: Это неоднозначный вопрос. Дело в том, что если вы просто собрали программу с помощью
root@linux# ./configure root@linux# make root@linux# make install
то все зависит лишь от того, позаботился ли автор об удалении.
Для того, чтобы удалить программу, нужно зайти в каталог ее исходников, из которого она собиралась, и сделать make uninstall.
Если каталог не сохранился, распакуйте исходники, сделайте ./configure
с теми же параметрами, с которыми собирали программу, и выполните make uninstall
.
А чтобы не полагаться на приличия автора, рекомендуется посмотреть предыдущий вопрос,
Внимание: в rpm-based дистрибутивах собирайте программы из srpm или с использованием spec-файлов (для создания rpm). Не превращайте свою систему в помойку из программ.
Лечить достаточно просто.
/var/lib/rpm
и удаляем файлики __db.001, __db.002 и __db.003.rpm --rebuilddb
Помогаем:
Русское пошаговое описание для новичков
Если у вас rpm-based дистрибутив, тогда прочитайте сначала этот вопрос.
Установите ncurses-devel (ncurses-dev) или как он там называется в вашем дистрибутиве.
Ну вообще данные надписи сами по себе являются руководством к действию. Или ядро не нашло корневой раздел там, где он был указан, или нет поддержки его файловой системы, например.
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.
Зайдите на http://mcmcc.bat.ru/fedora/#12.1
Примерчик работы того же - http://www.linux.org.ru/view-message.jsp?msgid=318591
Вообще было бы неплохо просто сделать man patch
и все стало бы ясно (кстати, сделайте).
А как накладывать патчи на ядро написано в самом README к ядру. Тем не менее.
patch -p1 < my_patch.patch
p1 - уровень. Т.е. я захожу в каталог, где непосредственно находятся нужные мне файлы, копирую туда патч и оттуда запускаю эту команду.
p0 - нулевой уровень вложенности
Это патчи вида mypatch.gz и mypatch.bz2, соответственно:
bzip2 -dc mypatch.bz2 | patch -p0 gzip -cd mypatch.gz | patch -p0
Чтобы убрать патч, нужно добавить в команду patch ключик -R
Пример. Есть ядро версии 2.6.6. Надо получить ядро 2.6.9. Нужно ли накладывать ли patch-2.6.7 и patch-2.6.8? Нужно.
Это ссылка на домашнюю страницу проекта, однако она какая-то мертвая.
Зато очень живая страница товарища Con Kolivas. В своих патчсетах он использует supermount. И все, что он использует, можно по отдельности забрать отсюда.
man bootparam
Передать параметр 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
root@linux# modinfo module_name
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: ...
По умолчанию программы собираются с отладочной информацией. Это, соответственно, увеличивает их размер, но на быстродействие и занимаемую оперативную память не влияет.
Можно собрать программу без отладочной информации, указав
./configure --disable-debug
Удалить секции с отладочной информацией из уже собранной программы можно командой
user@linux# strip progfile
Посмотреть, что вышло можно командой
user@linux# file progfile
она напишет - stripped или not stripped.
Можно сделать более правильно:
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded
Для сборки нужны заголовочные файлы(headers). Во многих дистрибутивах библиотеки(программы) поделены на два пакета - xxx и xxx-devel(rh-based) и xxx-dev(debian).
Соответственно нужно поставить xxx-devel (xxx-dev).
Примечание - в пакетах Slackware всё вместе (ну, кроме xfree86-devel).
Для redhat < 8.0, ASP Linux < 9 и Mandrake -
root@linux# rpm --rebuild название_пакета.src.rpm
Для redhat > 8.0, Fedora Core и ASP Linux = 9 -
root@linux# rpmbuild --rebuild название_пакета.src.rpm
Если вместо ожидаемого результата, на экран выводится список параметров командной строки, нужно установить rpm-devel. Ну а если все получилось, то пакеты будут лежать в /usr/src/название_дистрибутива/BUILD/название_архитектуры_процессора, например
/usr/src/redhat/BUILD/i386.
Порядок действий описан здесь http://www.karubik.de/gig
Есть два варианта. Можно собрать KDE, используя утилиту konstruct.
Можно собрать из исходников. Порядок описан здесь.
Вкратце:
Обновляем следующие пакеты (версии взяты для примера):
Если вы планируете собирать программы:
Вообще, обычно умные люди делают сначала `rpm -qa | grep glibc`, дабы посмотреть, какие пакеты из glibc у них установлены, а потом уже их обновляют.
После этого, можно смело перегружаться.
Примечание - бывает, что сначала требуется обновить rpm, к rpm вполне возможно потребуется обновление db4 и cpio и точно придется обновлять popt. Например, при обновлении последних glibc под RedHat.
Скорее всего можно, если ядро дистрибутива не ниже 2.4.22
Рекомендуется прочитать статью о том, как поставить ASP Linux на SATA и проверить список поддерживаемого оборудования
Можно вот так:
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
Воспользоваться программой mkbootdisk
Воспрользоваться программой fdformat. Пользователи KDE могут использовать программу KFloppy.
Для простой одноранговой сети пример файла настроек samba (/etc/samba/smb.conf) можно скачать здесь.
Из примера должно быть понятно, как сделать доступными свои ресурсы.
Чтобы русские названия файлов отображались правильно, ядро должна быть собрано с определенными параметрами:
File systems -> Network File Systems <M> SMB file system support (to mount Windows shares etc.) [*] Use a default NLS Default Remote NLS Option: "cp866"
Иными словами:
CONFIG_SMB_FS=m CONFIG_SMB_NLS_DEFAULT=y CONFIG_SMB_NLS_REMOTE="cp866"
(проверялось на ядрах серии 2.4.х и 2.6.х)
Далее собираем Samba с поддержкой locales. Для третьей Samba может потребоваться установить libiconv. При этом вторая Samba соберет себе файлы кодовых страниц в /$PREFIX/share/samba/codepages.
Затем в конфигурационном файле samba (для RedHat-подобных систем это /etc/samba/smb.conf) пишем
для samba 2.2.x:
character set = KOI8-R client code page = 866
для samba 3.x.x:
unix charset = KOI8-R display charset = KOI8-R dos charset = 866
Если локаль не koi8-r, а utf8, то в вышеприведенных примерах поменяйте koi8-r на utf8.
Как просмотреть чужие ресурсы Теперь, чтобы получить доступ к ресурсам сети MS Windows, ресурс можно "подмонтировать" (прямо как NFS, только опций больше):
root@linux# mount -t smbfs -o fmask=666,dmask=777,rw,iocharset=koi8-r,codepage=cp866 //winmachine/share /mnt/smb/share
или
user@linux# smbmount //winmachine/share /mnt/smb/share -o iocharset=koi8-r,rw,codepage=cp866,username=your_name,password=your_password
Если ваша локаль не koi8-r, то поставьте в iocharset свою локаль.
Чем можно просмотреть "Сетевое окружение" и смонтировать ресурсы с другой машины смотрите здесь.
Как сделать это из консоли, читайте здесь.
Сначала собираем в ядре поддержку Client VFS (CIFS):
CONFIG_CIFS=m # CONFIG_CIFS_STATS is not set CONFIG_CIFS_XATTR=y CONFIG_CIFS_POSIX=y
Затем нужно обновить samba до версии минимум 3.0.7.
Монтируются ресурсы командой mount.cifs
Воспользоваться программой minicom.
Если под MS Windows мы делаем HyperTerminal->Call->телефон, то в minicom просто набираем ATDP телефон (для импульсных линий) или ATDT телефон (для тоновых).
Протокол подключения называется zmodem.
Выполняем на первой машине:
pppd /dev/ttyS0 115200 local nocrtscts nocdtrcts noxonxoff 192.168.0.1:192.168.0.2 netmask 255.255.255.252 noauth
на второй машине:
pppd /dev/ttyS0 115200 local nocrtscts nocdtrcts noxonxoff 192.168.0.2:192.168.0.1 netmask 255.255.255.252 noauth
Получаем локалку со всеми вытекающими.
Прочитайте об этом - http://www.nixp.ru/cgi-bin/go.pl?q=articles;a=ms_vpn_client, http://fine.kalinovka.net/modules.php?op=modload&name=News&file=article&sid=3
Вот здесь лежат ссылки на статью, сравнивающую функциональность различных VPN-серверов, а также ведущая на небольшие статьи со ссылками на полную документацию к большинству основных дистрибутивов. Не везде документация свежая, но в сочетании с манами по ней можно легко настроить нужное вам решение.
Найти и скачать пакет kernel_ppp_mppe http://sourceforge.net/project/showfiles.php?group_id=44827&package_id=120221&release_id=244156 или патчик в ядро http://www.polbox.com/h/hs001/ (тогда его придется пересобирать).
Узнать, поддерживает ли твой pppd mschap v2. Наверно нет. Наверно стоит сходить на mcmcc.bat.ru - там они вроде патченные. Или опять же скачать патчик.
Добавим в /etc/modules.conf строчку
alias ppp-compress-18 ppp_mppe_mppc
А в /etc/ppp/options.pptpd запишем
lock require-mppe require-mschap-v2
Остальное в меру своей испорченности - у меня (jackill), например, прописан плагин к радиусу.
Далее заходим в наши винды, во вкладку соединения, там выставляем "дополнительные" параметры вместо всяческих типовых и отмечаем mschap v2. Галочку с mschap (который первой версии) убираем, иначе не будет подключаться.
man date
Простой пример
root@linux# date --set 4/13/2004 root@linux# date --set 14:46:27
Довольно просто - берем пакет ntp и устанавливаем себе на машину. В большинстве дистрибутивов (Fedora Core, Mandrake, SuSe) он поставляется сразу.
Список серверов можно взять здесь:
Вообще-то `man lsof`, `man fuser` :)
Например, команда
user@linux# lsof|grep /home
покажет все открытые файлы в каталоге /home. А команда
root@linux# fuser -km /home
Завершит выполнение всех процессов, работающих с файловой сисмемой /home. Будьте внимательны, если /home является не отдельной файловой системой, а частью корневой, то результат может превзойти ваши ожидания :)
По смыслу очень похоже на "Access violation at adress[0000:0000]" и т. д. в другой довольно популярной ОС. Причина - приложение сделало попытку выйти за пределы сегмента.
Если есть исходные коды программы, можно попробовать пересобрать ее, включив отладочную информацию, может повезет узнать больше.
Если есть только бинарник, можно поставить gdb, запустить `gdb program` и в приглашении сказать run
. Если выполнение программы останавливается - пишите next
. Ну и читайте, что пишет.
Будут, но вы должны точно знать, что вы делаете.
Самое большое препятствие при запуске - системный уровень. Однако встречаются такие вещи редко. Например, кардинальное изменение, внесенное в glibc, с которым собраны все программы, сильно измененное ядро.
Самое маленькое, но часто встречающееся препятствие - это нехватка библиотек, а точнее библиотек нужной версии.
Проще всего поставить программу и проверить, будет ли она работать. Если она попросит какие-либо библиотеки, нужно их доставить, причем желательно из своего дистрибутива (в крайнем случае, собрать посвежее те, что нужны).
Если у вас rpm-based дистрибутив, то вы должны быть готовыми к тому, что зависимости не будут выполняться. Дело в том, что почти все дистрибутивы используют свою систему наименования пакетов и, например, пакет a52dec в redhat называется liba52dec в mandrake. Бояться этого не нужно. Максимум, у вас будет ругаться apt (если вы его используете).
В общем случае хватает, чтобы версии требуемых библиотек были приблизительно такими же, как у вас в системе. Например, программы из alt linux легко работают в asp linux или fedora core несмотря на разные версии базовой системной библиотеки glibc.
Нет маршрута по умолчанию или проблема с файрволлом.
Скорее всего это первая проблема. Попробуйте выполнить в консоли
root@linux~:# route add default ppp0
Если все заработало, то поставьте себе эту строчку в /etc/ppp/if-up.local
На всякий случай проверьте скрипт if-up - в старых дистрибутивах иногда отсутствовал вызов if-up.local. Строчка там должна быть примерно такой:
[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local "$@"
Возможно, что у вас в /etc/resolv.conf не прописаны dns-серверы провайдера. Пропишите.
user@linux:~$ /sbin/mii-tol eth0: negotiated 100baseTx-FD, link ok
где link ok - подключен.
root@linux:~# route add -net 10.0.0.0 netmask x.x.x.x dev eth0 root@linux:~# route add -net 192.168.0.0 netmask y.y.y.y dev eth1 root@linux:~# echo "1" > /proc/sys/net/ipv4/ip_forward
Чтобы последняя команда выполнялась на старте, в fedora core нужно выставить 1 на одноименном параметре в /etc/sysctl.conf, а в redhat 7.3 - 9 в /etc/sysconfig/network.
netmask обычно 255.255.255.0
Попробовать воспользоваться how-to для debian http://fssg.st-oskol.ru/doc/how-to/bridging_in_Debian/bridging_in_Debian.html#toc6
Это очень обширная тема, в силу чего я не очень хотел бы помещать такие вопросы тут, но вот кратенько об основном:
#!/bin/bash for table in INPUT OUTPUT FORWARD ; do iptables -P $table DROP done iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p ALL -j ACCEPT
Этими командами мы разрешаем выход в мир с нашей машины и запрещаем все отстальное. Обычно, такой скрипт называется /etc/rc.d/rc.firewall
и запускается из стартовых скриптов (например, /etc/rc.d/rc.local
.
Для более подробного ознакомления с возможностями iptables следует почитать хотя-бы это - http://www.opennet.ru/docs/RUS/iptables/index.html.
Пошаговая инструкция здесь http://www.opennet.ru/base/sys/usb_flash_boot.txt.html
Там же можно узнать об оптимизации вашего линукса для работы с USB-flash.
Обычно грузимся с первого диска. Выбираем помощь. Смотрим, как загрузиться в спасательный режим (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)
Написано об этом здесь.
Кратко процесс можно описать так:
dd if=/dev/hda2 of=~/bootsect.bin count=1
[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"
Вам на ваш любимый сайт
Существует решение от McMCC. Читать и качать отсюда
Компьютер понадобится не самый слабый.
Делается это через DansGuardian. Вот здесь можно взять на эту тему pdf. Описание сделано для Mandrake и потому порядком разбавлено описанием их графических утилит. Но настроить по нему можно, потому что на каждый шаг есть описание того, что нужно делать.
Чтобы сохранились все разрешения и т.п. нужно пользоваться tar'ом. Например, сожмем папку (а у кого и раздел) /usr
и положим архив на другой раздел, смонтированный в /mnt/backup
:
root@localhost# tar cvpjf /mnt/backup/usr.tar.bz2 /usr
Тут существует два пути.
/proc
, /sys
и /tmp
, например:
root@localhost# tar cvpjf /mnt/backup/all.tar.bz2 / --exclude /proc /sys /tmp /var/tmp /usr/tmp /mnt
root@localhost# dd if=/dev/hda of=/dev/hdb bs=10Mи мы перенесем образ на другой винт или
root@localhost# dd if=/dev/hda of=/mnt/backup/myhda.img bs=10Mи тогда образ попадет в файл. Кстати, можно сэкономить место и сделать так:
root@localhost# dd if=/dev/disk | gzip - | dd of=/mnt/backup/myhda.gz
Есть винт такой же, как и тот, с которого копировали, делаем просто
root@localhost# dd if=/mnt/backup/myhda.img of=/dev/disk bs=10M
Если винт больше, то неоднократно советовалось создать на нем раздел примерно одного размера, что и старый винт, после чего восстановить образ на этот раздел. Насколько действенен этот метод, неизвестно.
Ну если вы жесткий диск только купили, пришли домой и решили - пора, то вот отличная статья на http://opennet.ru.
Ну а если вы в целях создания бэкапа, или жесткий диск везти нужно, то читайте предыдущий вопрос.