LOR-FAQ-Admin
Материал из Викиучебника
|
||
|
[править] ЯДРО
[править] О версиях ядра Linux
[править] bk
bk - это снимки (snapshot) дерева разработки Линуса. Они делаются раз в день, если не ошибаюсь (может два). Идеально для тестирования, но использовать в работе ядра -bk не рекомендуется.
[править] 2.6.x.y
Ветка 2.6.x.y (aka -stable) содержит в себе исправления обнаруженных ошибок в стабильных 2.6.x, которые реально вызывают проблемы. Конкретные исправления конкретных ошибок. Фактически, это must have.
Эта ветка в чём-то схожа с -hf (hotfix), которую ведет Вилли Торреу (если не ошибаюсь) для 2.4.x.
2.6.x.y не содержит в себе никакой новой функциональности. Это только исправления ошибок. Здесь промежуточные (2.6.x.y1-2.6.x.y2) патчи настолько мизерные, что их публикуют целиком в LKML, ну а я их размещаю так же, целиком, на osrc.info.
[править] rc / pre
Вот тут все хуже. В ветке 2.4.x Марсело Тосатти поддерживает строгий порядок - "-pre" это предварительные версии, которые включают в себя изменения и новшества относительно предыдущей стабильной версии и которые войдут в следующий стабильный релиз. Что здесь важно - "-pre" у Марсело означает недостаточно оттестированные релизы, предназначенные именно для целей тестирования. А вот "-rc" уже являются стабилизированными и оттестированными "-pre", которые совсем-совсем скоро станут новыми официальными релизами. Как правило, последний -rc отличается от финальной версии только изменением двух строчек в Makefile, говорящих, что это и есть уже 2.4.x.
Но это все в 2.4, у Марсело. С Линусом и 2.6 все сложнее. :) Линус в последнее время вообще перестал выпускать -pre версии, полагая, что таким образом -rc оттестирует большее количество народа и к финальному релизу все ошибки будут устранены. Однако ж, теперь рекомендовать ставить -rc на рабочие машины становится сложно, поскольку стабильными они не являются. То есть, на самом деле, являются, но где-то в районе -rc{2,3,4,5}, все решает тот момент, когда Линус скажет что-нибудь вроде:
I'd _really_ like to calm down for a final 2.6.11 now, so please note anything really important I missed, but keep the rest pending. And give this a good testing..
Вот тут-то и можно начинать использовать -rc более плотно. Проблема в том, что сей знак распространяется не очень далеко за пределы LKML и люди либо боятся тестировать -rc вообще и потом кричат, когда финальный релиз содержит ошибки, либо сгоряча хватают первый попавшийся -rc{1,2} и потом кричат, что у них ничего не работает и переходят в категорию первых. На osrc.info я такие вещи указываю, так что буде желание узнать, а стоит ли брать патч на тестирование - заглядывайте.
[править] mm
Существует отличная ветка Эндрю Мортона - "-mm". Сия ветка собирает в себя все возможные патчи, которые есть в природе (потому говорят, что она содержит "wild patches"), там они варятся, тестируются и потом плавно переходят в основную ветку Линуса. Сегодня очень многое попадает к Линусу именно через фильтр -mm. Посему ветка экспериментальная, тестировать хорошо, постоянно использовать - должны быть причины. Впрочем, поддержка ReiserFS4 и FUSE - причины достаточные. :)
http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/
К ветке Эндрю Мортона существует ещё один набор патчей - "-jedi". Он призван исправить ошибки в -mm (а -mm ядро может запросто даже не скомпилироваться).
ftp://ftp.c9x.org/pub/linux-kernel/
[править] ck
Существует отличная ветка Кона Коливаса - "-ck". Там включены патчи к диспетчерам процессора и ввода/вывода, обещается улучшенная отзывчивость системы. Ветка достаточно стабильная, несмотря на то, что сам Кон рекомендует употребить коньяка перед загрузкой такого ядра. ;) Ядро 2.6.11-ck2 у меня сейчас работает на одной машине - вполне неплохо. uptime у неё уже скоро неделя будет, немного, но для домашней машины тоже показатель. Чисто субъективно, с этим ядром при параллельной компиляции меньше дергается музыка (на Celeron 488 c 96 МБ памяти, иксами и KDE в придачу).
http://ck.kolivas.org/patches/2.6/
[править] ac
Существует ветка Алана Кокса - "-ac". Исправления плюс дополнения для некоторых железок. Насколько я понял, это ядро используется как базовое для Fedora и RHEL.
http://kernel.org/pub/linux/kernel/people/alan/linux-2.6/
[править] as
Ветка Андреса Саломона "-as" призвана стабилизировать ядро. Испольуется как база для ядер Debian. Правда, с появлением 2.6.x.y несколько теряет свою актуальность и, возможно, скоро прекратит свое существование.
http://www.acm.cs.rpi.edu/~dilinger/patches/
[править] tiny
Существует ещё одна интересная ветка "-tiny". Она нацелена на уменьшение занимаемого ядром дискового пространства и, самое главное, памяти. Также в ней содержатся некоторые функции, полезные для ограниченных в ресурсах систем, таких как встраиваемые системы, старые 386-е и наладонные компьютеры. На мой взгляд - прекрасный хакерский патч, которому место в официальной ветке (хотя бы частично, что касается конфигурации). Он делает доступными некоторые штуки, например, с ним можно вырубить поддержку режима V86 в ядре и сэкономить аж целых 6 КБ. :)
[править] realtime-preempt
Есть ещё расширения реального времени для Linux:
http://redhat.com/~mingo/realtime-preempt/
Естественно, это далеко не все доступные патчи/ветки. А вообще - тестируйте, люди, ядра! Хотя бы -rc'шки. Просто скачать, пропатчить, скомпилировать, потестировать, в случае неудачи - написать отч0т согласно документу "REPORTING-BUGS", лежащему в исходниках. Потом меньше проблем будет с официальным релизом у всех.
По материалам [1]
[править] Как перейти на ядро 2.6? У меня не грузятся модули на ядре 2.6, проблемы ядер 2.6 (QM_MODULES)
[править] Как сделать, чтобы 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.
А также обсуждение патча Con Kolivas'а по регулированию этого параметра "на лету".
[править] Как узнать конфигурацию установленного ядра?
Ядра по-умолчанию можно увидеть во всей красе в пакете из дистрибутива.
Также можно поискать в /boot файл конфигурации (нечто вроде config-2.6.9-1.681_FC3.mppe), или (если есть) в файле /proc/config.gz.
[править] Помогите собрать ядро
Помогаем:
Русское пошаговое описание для новичков
Если у вас rpm-based дистрибутив, тогда прочитайте сначала этот вопрос.
[править]
Установите ncurses-devel (ncurses-dev) или как он там называется в вашем дистрибутиве.
[править] Собрал ядро. Запускаю. 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.
[править] Где узнать список параметров, которые можно передать ядру при загрузке?
man bootparam
[править] Как узнать параметры, которые можно передавать модулю?
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: ...
[править] Драйверы под мое устройство есть только под ядро 2.2, а под 2.4 таких же нет, что делать?
Зайдите на http://mcmcc.bat.ru/fedora/#12.1
Примерчик работы того же - http://www.linux.org.ru/view-message.jsp?msgid=318591
[править] Как провести тонкую настройку использования памяти?
Помогут эти статьи:
Описание параметров и значений О выставлении параметров
[править] ЗАГРУЗКА ЛИНУКС
[править] Поставил MS Windows (98, ME), как теперь вернуть загрузку Linux? Как восстановить загрузчик?
Обычно грузимся с первого диска. Выбираем помощь. Смотрим, как загрузиться в спасательный режим (rescue mode). Для redhat, например, нужно в строке boot: набрать linux rescue. После загрузки читаем что пишется. ВНИМАТЕЛЬНО. Может быть у вас такой хороший дистрибутив, что нашёл ваш корневой раздел и примонтировал его куда-нибудь (например, в /mnt/sysimage).
Подсказка: Если этого не произошло, заходим в /mnt и монтируем свой корневой раздел в любую пустую папку (я думаю, вы знаете, где у вас корневой раздел). Например, mount /dev/hda2 /mnt/sysimage.
После чего выполняем chroot /mnt/sysimage. (Ещё раз - если корневой раздел примонтирован сюда).
Теперь вспомним, какой у нас загрузчик - grub или lilo (у любителей экзотики может стоять Acronis 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)
[править] Как прописать linux в NT Loader?
Написано об этом здесь.
Если у вас windows стоит на файловой системе fat32, то делаем так:
- Ставите lilo в первый сектор раздела /boot (например, /dev/hda2).
- Монтируете диск C:\ (каталог /mnt/c уже должен существовать) root@localhost# mount -f vfat /dev/hda1 /mnt/c
- Копируете загрузочный сектор: dd if=/dev/hda1 of=/mnt/c/bootsect.bin count=1 bs=512
- Исправляете 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, считать специальными утилитами, или же сделать проще - записать его на дискету.
[править] Как удалить GNU/Linux и его загрузчик?
Вам на ваш любимый сайт
[править] Как настроить бездисковую загрузку?
Тема довольно объёмная. Чтобы не играть в глухой телефон, лучше прочитайте вот это:
http://ltsp.org/, http://ltsp.ru/
http://thinstation.sourceforge.net/wiki/index.php/ThIndex
[править] Как создать загрузочную дискету?
Воспользоваться программой mkbootdisk
[править] УСТАНОВКА / УДАЛЕНИЕ ПРИЛОЖЕНИЙ
[править] Как собрать/удалить программу из исходников?
Обычно для установки нужно выполнить:
root@linux# ./configure root@linux# make root@linux# make install
Если после любого из пунктов возникли сообщения об ошибках, значит не все вышло так, как хотелось. Можно попробовать `./configure --help` для вывода опций настройки и попробовать использовать некоторые из них.
Поскольку при таком способе установки информация о том, что ставилось и куда, остается только в памяти админа (которая частенько ещё какая временная :), лучше для контроля этого процесса использовать вместо "make install" checkinstall - http://checkinstall.izto.org, или похожие программы.
После того, как вы её установите (прочитав документацию) и настроите её конфиг, на этапе установки программного обеспечения вместо sudo make install будете писать sudo checkinstall. Checkinstall соберет "настоящий" пакет для указанной (tgz, rpm и deb в зависимости от настроек), установит его в систему и поместит в указанный в конфигурационном файле каталог (удобно для централизованного обновления нескольких машин). Удаление установленных таким образом программ осуществляется стандартными средствами дистрибутива, например, removepkg для Slackware.
Также будет полезным прочитать о том, как уменьшить размер бинарных файлов.
Если вы пренебрегли нашим советом и собрали и поставили программу не используя специальных утилит (или своего менеджера пакетов), тогда нужно заново распаковать исходники (ведь вы после сборки наверняка удалили папку, в которой собирали программу), сконфигурировать её с теми же параметрами (напрягайте память), но вместо make install сделать make uninstall. Если повезет, то все удалится.
[править] Как удалить программу, собранную из исходников?
Это неоднозначный вопрос. Дело в том, что если вы просто собрали программу с помощью
root@linux# ./configure root@linux# make root@linux# make install
то все зависит лишь от того, позаботился ли автор об удалении.
Для того, чтобы удалить программу, нужно зайти в каталог её исходников, из которого она собиралась, и сделать make uninstall.
Если каталог не сохранился, распакуйте исходники, сделайте ./configure с теми же параметрами, с которыми собирали программу, и выполните make uninstall.
А чтобы не полагаться на приличия автора, рекомендуется посмотреть предыдущий вопрос,
Внимание: в rpm-based дистрибутивах собирайте программы из srpm или с использованием spec-файлов (для создания rpm). Не превращайте свою систему в помойку из программ.
[править] Ставлю программу в rpm, а она не ставится, rpm висит или выдает ошибку обращения к базе. Как лечить?
Лечить достаточно просто.
- Логинимся под root'ом.
- Заходим в
/var/lib/rpmи удаляем файлики __db.001, __db.002 и __db.003. - После чего даем команду
rpm --rebuilddb
[править] Как накладывать патчи? Как накладывать патчи на ядро? (patch, diff)? Как убирать патчи?
Вообще было бы неплохо просто сделать 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? Нужно.
[править] Где взять патч на SUPERMOUNT?
Это ссылка на домашнюю страницу проекта, однако она какая-то мертвая.
Зато очень живая страница товарища Con Kolivas. В своих патчсетах он использует supermount. И все, что он использует, можно по отдельности забрать отсюда.
[править] Как включить 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
[править] Почему после сборки через `./configure; make; make install` у программ получается большой размер?
По умолчанию программы собираются с отладочной информацией. Это, соответственно, увеличивает их размер, но на быстродействие и занимаемую оперативную память не влияет.
Можно собрать программу без отладочной информации, указав
./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
[править] Что делать если configure говорит, что xxx не установлен, а на самом деле он установлен?
Для сборки нужны заголовочные файлы(headers). Во многих дистрибутивах библиотеки(программы) поделены на два пакета - xxx и xxx-devel(rh-based) и xxx-dev(debian).
Соответственно нужно поставить xxx-devel (xxx-dev).
Примечание - в пакетах Slackware всё вместе (ну, кроме xfree86-devel).
[править] Какой командой собираются rpm из src.rpm (srpm)?
Для 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.
[править] Как правильно собрать Gnome из исходников?
Порядок действий описан здесь http://www.karubik.de/gig
[править] Как собрать KDE из исходников?
Есть два варианта. Можно собрать KDE, используя утилиту konstruct.
Можно собрать из исходников. Порядок описан здесь.
Вкратце:
- Проверяете требования к собираемой вами версии на www.kde.org
- Собираете в такой последовательности:
-
- arts
- kdelibs
- kdebase
- kdepim (если хотите получить kmail)
- Далее можно собирать как угодно (если обратного не требует пакет)
[править] Как обновить glibc в rpm-based дистрибутиве?
Обновляем следующие пакеты (версии взяты для примера):
- glibc-2.3.2-27.9.i386.rpm
- glibc-utils-2.3.2-27.9.i386.rpm (а вы как думали, без утилит?)
- glibc-common-2.3.2-27.9.i386.rpm (люблю, когда locales есть и time-zones)
- glibc-profile-2.3.2-27.9.i386.rpm (он вам нужен?)
Если вы планируете собирать программы:
- glibc-devel-2.3.2-27.9.i386.rpm
- glibc-kernelheaders-2.4-8.10.i386.rpm
Вообще, обычно умные люди делают сначала `rpm -qa | grep glibc`, дабы посмотреть, какие пакеты из glibc у них установлены, а потом уже их обновляют.
После этого, можно смело перегружаться.
Примечание - бывает, что сначала требуется обновить rpm, к rpm вполне возможно потребуется обновление db4 и cpio и точно придется обновлять popt. Например, при обновлении последних glibc под RedHat.
[править] Можно ли поставить дистрибутив xxx на SATA?
Скорее всего можно, если ядро дистрибутива не ниже 2.4.22
Рекомендуется прочитать статью о том, как поставить ASP Linux на SATA и проверить список поддерживаемого оборудования
[править] Как найти нужный файл в кучах rpm?
Можно вот так:
for i in *.rpm; do rpm -qpl $i | grep /filename >/dev/null 2>&1 && echo $i; done
или (говорят, быстрее)
find -name '*.rpm' | xargs rpm -qpil | sed -ne '/^Name/h;/filename/{H;x;p;}' | uniq
[править] Будут ли работать бинарные пакеты из другого дистрибутива?
Будут, но вы должны точно знать, что вы делаете.
Самое большое препятствие при запуске - системный уровень. Однако встречаются такие вещи редко. Например, кардинальное изменение, внесенное в glibc, с которым собраны все программы, сильно измененное ядро.
Самое маленькое, но часто встречающееся препятствие - это нехватка библиотек, а точнее библиотек нужной версии.
Проще всего поставить программу и проверить, будет ли она работать. Если она попросит какие-либо библиотеки, нужно их доставить, причем желательно из своего дистрибутива (в крайнем случае, собрать посвежее те, что нужны).
Если у вас rpm-based дистрибутив, то вы должны быть готовыми к тому, что зависимости не будут выполняться. Дело в том, что почти все дистрибутивы используют свою систему наименования пакетов и, например, пакет a52dec в redhat называется liba52dec в mandrake. Бояться этого не нужно. Максимум, у вас будет ругаться apt (если вы его используете).
В общем случае хватает, чтобы версии требуемых библиотек были приблизительно такими же, как у вас в системе. Например, программы из alt linux легко работают в asp linux или fedora core несмотря на разные версии базовой системной библиотеки glibc.
[править] СЕТЬ
[править] Как настроить samba? Как сделать, чтобы в ресурсах samba были видны русские буквы?
[править] Настройка samba
Для простой одноранговой сети пример файла настроек samba (/etc/samba/smb.conf) можно скачать здесь.
Из примера должно быть понятно, как сделать доступными свои ресурсы.
[править] Русский язык
Чтобы русские названия файлов отображались правильно, ядро должна быть собрано с определенными параметрами:
File systems -> Network File Systems 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 свою локаль.
Чем можно просмотреть "Сетевое окружение" и смонтировать ресурсы с другой машины смотрите здесь.
Как сделать это из консоли, читайте здесь.
[править] Не получается смонтировать ресурсы сервера MS Windows 2003 в домене. Что делать?
Сначала собираем в ядре поддержку 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
[править] Как соединить MS Windows (hyperterminal) и GNU/Linux по телефонной линии?
Воспользоваться программой minicom.
Если под MS Windows мы делаем HyperTerminal->Call->телефон, то в minicom просто набираем ATDP телефон (для импульсных линий) или ATDT телефон (для тоновых).
Протокол подключения называется zmodem.
[править] Как соединить два компьютера через com-порты?
Выполняем на первой машине:
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
Получаем локалку со всеми вытекающими.
[править] Как соединить два компьютера через lpt-порты?
Нужно использовать PLIP (в ядре должна быть поддержка).
Как именно - читайте PLIP-HOWTO.
[править] Как настроить подключение к Microsoft VPN Server?
Прочитайте об этом - 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?
Вот здесь лежат ссылки на статью, сравнивающую функциональность различных VPN-серверов, а также ведущая на небольшие статьи со ссылками на полную документацию к большинству основных дистрибутивов. Не везде документация свежая, но в сочетании с манами по ней можно легко настроить нужное вам решение.
[править] Как настроить шифрование в pptp, если сам он уже работает?
Найти и скачать пакет 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. Наверно нет. Наверно стоит сходить на http://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 (который первой версии) убираем, иначе не будет подключаться.
[править] Есть компьютер, подключенный к интернету и в нем есть сетевая карта. Есть вторая машина. Как бы на нее интернет подключить?
Я так понимаю, сделать это надо быстро, но неизвестно как и что. Отлично. Нам нужно найти rc.firewall-strong. Проще всего искать в http://www.google.ru по словосочетанию "FWVER=0.80" (эта версия уже держится около полугода без особых модификаций).
Я его нашёл, например, здесь: http://www.aerospacesoftware.com/firewall-howto.html.
Версия 0.75 содержится в Linux IP Masquerading How-To.
Качаем этот файл, называем его rc.firewall и кладем в /etc/rc.d/,
Далее пользуясь комментариями исправляем (интерфейсы - вдруг ppp0 потребуется вместо eth0, включаем/выключаем DHCP, смотрим надо ли включать ip_dynaddr), запускаем.
Затем на второй машине прописываем машину с интернетом как gateway (см. как это делается в вашем дистрибутиве), в /etc/resolv.conf прописываете адреса DNS-серверов провайдера. Все.
Если машина под управлением MS Windows, выставляете все настройки в "Настройке сети".
[править] Как ограничить скорость прохождения трафика?
В общем и целом, это довольно сложная тема и если применять соответствующие утилиты без относительного понимания, лучше точно не будет.
Ограничивать скорость прохождения трафика можно и с помощью iptables (при использовании Patch-o-matic расширений, например).
Или с помощью таких программ, как rshaper for linux-2.4 rshaper for linux-2.6(пример настройки).
Кроме того, в Squid имеется механизм ограничения скорости web-трафика.
Но гораздо большие возможности дает использование утилит пакета iproute2 - http://developer.osdl.org/dev/iproute2/.
Документация по использованию iproute2: Linux Advanced Routing & Traffic Control HOWTO, перевод на русский.
Повесть о Linux и управлении трафиком - http://gazette.linux.ru.net/rus/articles/taleLinuxTC.html
OpenNet iproute2 info - http://www.opennet.ru/keywords/iproute2.html
Кроме того, для упрощения использования возможностей по управлению трафиком, были написаны множество скриптов, самые популярные из которых - CBQ.init ( http://sourceforge.net/projects/cbqinit/) и HTB.init ( http://uf.kadan.cz/htb/). Хотя они и обладают рядом недостатков (например, нет возможности обслуживать динамические интерфейсы - ppp+), все же они довольно удобны для решения простых задач.
Кстати, не используйте CBQ.init - дисциплина обработки очереди HTB была разработана на замену CBQ, является более функциональной и удобной в использовании.
[править] Подключаюсь к интернету по модему. Соединение проходит, но ни один браузер не может ничего открыть. Что делать?
Возможные проблемы:
- Нет маршрута по умолчанию
- Ядро не воспринимает динамические адреса
- Не указаны адреса dns-серверов провайдера
- Проблема с файрволлом
Решить все, кроме последнего пункта, довольно просто:
- Попробуйте выполнить в консоли 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 "$@" - Попробуйте выполнить в консоли echo "1" > /proc/sys/net/ipv4/ip_dynaddr Разрешение на динамические адреса должно присутствовать в обязательном порядке (если вы не подключаетесь к частной линии и адрес не задан у вас статически). Поэтому поставьте себе эту строчку в
/etc/rc.d/rc.local(или аналогичный файл, стартующий при запуске системы). Для дистрибутивов fedora core 2 или 3 вместо этого добавьте в/etc/sysctl.confстрочкуnet.ipv4.ip_dynaddr = 1. - Для указания адресов dns-серверов нужно зайти в файл
/etc/resolv.confи прописать их туда примерно в такой форме (пример для МТУ-Интел): nameserver 195.34.32.11 nameserver 195.34.32.10 - Проблемы с firewall'ом нужно решать в частном порядке, методом внимательного прочтения iptables-tutorial. Отмечу только, что обычно стандартные брандмауэры обычно позволяют выходить в интернет.
[править] Как узнать, подключен ли сетевой кабель?
user@linux:~$ /sbin/mii-tool eth0: negotiated 100baseTx-FD, link ok
где link ok - подключен.
[править] Как добавить несколько IP-адресов на интерфейс?
root@localhost:~# ifconfig eth0:any_alias 1.2.3.4 root@localhost:~# ip addr add dev eth0 1.2.3.4
[править] eth0 смотрит, к примеру, в сеть 10.0.0.0, eth1 смотрит в 192.168.0.0. Как создать маршрут, чтобы машины из сети 192* видели сеть 10*?
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
[править] Как мне защитить свою домашнюю машину под управлением ОС Linux от атак из интернета и из локальной сети?
Это очень обширная тема, в силу чего я не очень хотел бы помещать такие вопросы тут, но вот кратенько об основном:
#!/bin/bash for table in INPUT OUTPUT FORWARD ; do iptables -P $table DROP done iptables -F iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -p ALL -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.
После того, как вы прочитали хотя бы порядок прохождения пакетов в linux при использовании iptables, можете попробовать графические интерфейсы для настройки iptables.
И уж точно не повредит прочтение документов из раздела Security.
[править] Как собрать socks-cap с помощью gcc-3.3.x и выше?
Придется наложить патч:
--- socks5/lib/confutil.c.orig 2004-11-05 20:05:57.582886240 +0300
+++ socks5/lib/confutil.c 2004-11-05 20:00:07.250144912 +0300
@@ -1156,7 +1156,7 @@
*cnt = j;
*intfc = pintfc;
- free(ibuf);
+ if(ibuf) free(ibuf); //check McMCC
#else
strcpy(pintfc[j].name, ibuf[i].ifr_name);
pintfc[j].up = lsLookupIntfc(s, NET_STAT, &ibuf[i]);
[править] РАЗНОЕ
[править] Как отформатировать дискету?
Воспрользоваться программой fdformat. Пользователи KDE могут использовать программу KFloppy.
[править] Как из консоли установить дату/время?
man date
Простой пример
date --set 4/13/2004 date --set 14:46:27
если в сети есть сервер времени ntp, например с ip 192.168.0.1
ntpdate 192.168.0.1
[править] Хочу синхронизировать время с серверами времени в интернете. Как это сделать?
Довольно просто - берем пакет ntp и устанавливаем себе на машину. В большинстве дистрибутивов (Fedora Core, Mandrake, SuSe) он поставляется сразу.
Список серверов можно взять здесь:
- http://ntp.isc.org/bin/view/Servers/StratumOneTimeServers
- http://ntp.isc.org/bin/view/Servers/StratumTwoTimeServers
[править] Как узнать, какое приложение заблокировало файл/директорию/раздел?
Вообще-то `man lsof`, `man fuser` :)
Например, команда
user@linux# lsof|grep /home
покажет все открытые файлы в каталоге /home. А команда
root@linux# fuser -km /home
Завершит выполнение всех процессов, работающих с файловой сисмемой /home. Будьте внимательны, если /home является не отдельной файловой системой, а частью корневой, то результат может превзойти ваши ожидания :)
[править] Как открыть лоток привода cd-rom, если он "подвис" на плохом диске?
Дайте команду echo 0 > /proc/sys/dev/cdrom/lock и потом смело открывайте привод. Должно получиться.
[править] Как убить zombie-процесс? Zombie занимает ресурсы?
В состоянии "зомби" процесс не имеет образа в RAM, но информация о нём сохраняется в таблице процессов. Он не поедает ресурсы, но теоретически могут кончится PID'ы.
Напрямую зомби не убить, нужно уничтожить родительский процесс, тогда зомби умрет вместе с ним.
Увидеть родителя можно в столбце PPID после команды
ps -axl
[править] Что это за ошибка - "Segmentation fault"?
По смыслу очень похоже на "Access violation at adress[0000:0000]" и т. д. в другой довольно популярной ОС. Причина - приложение сделало попытку выйти за пределы сегмента.
Если есть исходные коды программы, можно попробовать пересобрать её, включив отладочную информацию, может повезет узнать больше.
Если есть только бинарник, можно поставить gdb, запустить `gdb program` и в приглашении сказать run. Если выполнение программы останавливается - пишите next. Ну и читайте, что пишет.
[править] Как поместить linux на USB-flash?
Пошаговая инструкция. Там же можно узнать об оптимизации вашего linux для работы с USB-flash.
[править] Как прикрутить проверку архивов rar3 к Clamav?
Существует решение от McMCC. Читать и качать отсюда
[править] Как прикрутить Clamav к Squid? Как сделать проверку того, что пользователи качают к себе на компьютер?
Компьютер понадобится не самый слабый.
Делается это через DansGuardian. Вот здесь можно взять на эту тему pdf. Описание сделано для Mandrake и потому порядком разбавлено описанием их графических утилит. Но настроить по нему можно, потому что на каждый шаг есть описание того, что нужно делать.
[править] Как и чем забэкапить раздел или папку и сохранить права и симлинки?
Чтобы сохранились все разрешения и т.п. нужно пользоваться tar'ом. Например, сожмем папку (а у кого и раздел) /usr и положим архив на другой раздел, смонтированный в /mnt/backup:
root@localhost# tar cvpjf /mnt/backup/usr.tar.bz2 /usr
[править] Как перенести установленный GNU/Linux с одного винта на другой? Как создать образ установленного GNU/Linux?
Тут существует два пути.
[править] Сожмем в архив все нужные нам файлы, сохраняя права (tar)
- Грузимся со спасательного диска.
- Бэкапим весь корень (/) за исключением некоторых папок
/proc,/sysи/tmp, например: root@localhost# tar cvpjf /mnt/backup/all.tar.bz2 / --exclude /proc /sys /tmp /var/tmp /usr/tmp /mnt - Создаем на новом винте нужные нам разделы, создаем на них нужную файловую систему и распаковываем архив.
- Восстанавливаем загрузчик
[править] Используем dd
- Грузимся со спасательного диска.
- Далее создаем образ винта (если надо) или каждого раздела в отдельности. 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
Если винт больше, то неоднократно советовалось создать на нём раздел примерно одного размера, что и старый винт, после чего восстановить образ на этот раздел. Насколько действенен этот метод, неизвестно.
[править] Как перенести установленный linux на новый жесткий диск?
Ну если вы жесткий диск только купили, пришли домой и решили - пора, то вот отличная статья на
Ну а если вы в целях создания бэкапа, или жесткий диск везти нужно, то читайте предыдущий вопрос.
[править] Как добавить вложение (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 - файл с телом сообщения.
при помощи скрипта аналогичного:
#!/usr/bin/perl
#прога посылает письмо с прикреплённым файлом указанным в первом аргументе командной строки
#само письмо читается с stdin
# путь к sendmail
$mailprog = "/usr/sbin/sendmail";
# путь к файлу с указанием имени файла
$attach_file = $ARGV[0];
# имя файла
chomp ($filename = `basename $attach_file`);
# MIME-граница для разделения различных частей MIME-сообщения.
# Просто уникальная строка
$boundary = "ABRACADARBRA".time;
# получатель
$to = 'dest@a-teleport.com';
# отправитель
$from = 'cvv@cvv.zp.ua';
# Имя отправителя
$name = "cvv";
# тема сообщения
$subject = 'my_subject';
# текстовое сообщение, помещается в тело письма
$message = `cat`;
open (MAIL, "|$mailprog -t");
print MAIL <<END;
From: $name<$from>
To: $to
Subject: $subject
X-mail-agent: cvv mailer
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="$boundary"
--$boundary
Content-Type: text/plain; charset=koi8-u
Content-Transfer-Encoding: 8bit
$message
--$boundary
Content-Type: application/octet-stream; name="$filename"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$filename"
END
# кодируем присоединенный файл по стандарту Base64.
# Для этого вызываем подпрограмму base64_encode_file с именем файла.
$binary_encoded_data = &base64_encode_file($attach_file);
# Вставляем закодированное содержимое файла
print MAIL <<END;
$binary_encoded_data
--$boundary--
.
END
close MAIL;
#ну и подпрограмма кодирования base 64
sub base64_encode_file {
local($file) = $_[0];
local($encoded, $line) = ;
local($len, $bytes, $pad) = 0;
open (DATA, "<$file");
while ($bytes = read(DATA, $line, 45)) {
$len += $bytes;
$encoded .= substr(pack('u', $line), 1);
chop($encoded);
}
$encoded =~ tr| -_`|A-Za-z0-9+/A|;
$pad = (3 - ($len % 3)) % 3;
substr($encoded, -$pad, $pad) = '=' x $pad;
$encoded =~ s/(.{76})/$1\n/g;
return($encoded);
}