Linux -сборник рецептов

         

Упомянутые команды выполняют поиск по


Упомянутые команды выполняют поиск по ключевым словам в секциях DESCRIPTION man-страниц. Количество искомых слов может быть произвольным, но чем больше слов, тем больше результатов вы получите, потому что команда поочередно ищет каждое слово.
См. также apropos(1), man(1).


nroff — «обертка» для форматирования man-страниц в groff. groff — программа форматирования документов, позволяющая генерировать документы разных форматов (HTML, .pdf, печатные копии, info-страницы и т.д.) на основе одного исходного файла. См. также mandb(8), locate(1), grep(1), nroff(1), groff(1), zless(1), zcat(1); раздел 1.6.



Хотя некоторые пользователи считают, что механизм перемещения по info-страницам слишком усложнен, с info-страницами все же стоит познакомиться. Хотя работать с info-страницами сложнее, чем с man-страницами, (обычно) они проще для понимания. Освоившись с основными приемами перемещения, вы сможете очень быстро найти нужные сведения.
Существует ряд удобных программ просмотра info-страниц, в том числе pinfo, Konqueror и Yelp. Pinfo работает в консольном режиме, а для Konqueror и Yelp необходима система X. Программа Konqueror особенно удобна для поиска и печати отдельных страниц.
См. также info info.





Во все основные дистрибутивы Linux входит поддержка CUPS (Common Unix Printing System). CUPS поддерживает команды как System V (lp), так и Беркли (lpr). В настоящем разделе использованы команды Беркли. Вот их аналоги для System V:
$ man -t finger | lp
Вывод на сетевой принтер:
$ man -t finger | lp -d printername См. также
man(1), lpr(1), lp(1); глава 14; CUPS Software Users Manual (http://localhost:631/documentation.html).



Во все основные дистрибутивы Linux входит поддержка CUPS (Common Unix Printing System). CUPS поддерживает команды как System V (lp), так и Беркли (lpr). В настоящем разделе использованы команды Беркли; далее приводятся их аналоги для System V.
Печать info-страницы:
$ info finger | lp
Печать info-страницы с параметрами форматирования lp:
$ info finger | lp -о cpi=12 -о page-left=54 -о page-right=54 \ -о page-top=54 -о page-bottom=54


Если просто ввести команду man bash > bash.txt, результат будет выглядеть убого. Команда col -b приводит распечатку в порядок, убирает из нее лишние переводы строк и символы Backspace. Это особенно важно для перевода man-страниц в текстовый формат, в man-страницах часто встречаются символы Backspace, которые затем отображаются в текстовых файлах в виде пустых квадратов или повторяющихся символов.
См. также col(1).



Самой распространенной проблемой с RPM является «кошмар RPM», то есть бесконечная цепочка неразрешенных зависимостей. Вот некоторые рекомендации по ее предотвращению:
  • не оставляйте неразрешенные зависимости. Они не исчезнут сами по себе, а лишь будут скрываться во тьме и расти со временем;
  • качество пакетов RPM не гарантировано. Любой желающий может слепить пакет и отправить его для распространения. По возможности старайтесь выбирать пакеты RPM, построенные специально для вашего дистрибутива и платформы. PLD (Polished Linux Distribution) строит качественные пакеты RPM для всех систем на базе х86;
  • когда потребуется построить программу по исходным текстам, используйте утилиту CheckInstall. CheckInstall генерирует пакеты для Red Hat, Debian и Slackware, поэтому вы получаете дистрибутив со всеми преимуществами непосредственной компиляции и системы управления пакетами (см. раздел 4.5).
См. также rpm(8); RPM.org (http://www.rpm.org/); Maximum RPM (http://www.rpm.org/max-rpm/index.html).



Вместо ключа -i (установка, install) может использоваться ключ -U (обновление, Upgrade). При этом может выполняться как обновление, так и установка пакета; команда работает в обоих случаях. Ключ -U заменяет старый пакет. Если вы хотите установить несколько версий одного пакета (скажем, gcc) или несколько разных ядер, не используйте ключ -U — только -i. См. также
rpm(8); RPM.org (http://rpm.org); Maximum RPM (http://www.rpm.org/max_rmp/index.html).


Если RPM сообщает, что удалить пакет невозможно, потому что от него зависят другие пакеты, вам придется либо удалить остальные пакеты, либо оставить пакет в системе. В некоторых случаях (например, при замене Sendmail) зависимости приходится разрывать. Новая почтовая программа — Postfix, Exim или qmail —
2.5. Получение информации об установленных пакетах разрешит зависимости Sendmail, но сначала Sendmal нужно удалить, а это неизбежно приведет к нарушению всех зависимостей.
См. также rpm(8); Maximum RPM (http://www.rpm.org/max-rpm/index.html).


Для поиска документации к конкретному приложению также можно воспользоваться сценарием finddoc из раздела 1.11.
См. также rpm(8); раздел 1.11; Maximum PRM (http://www.rpm.org/max-rpm/index.html).
2.7. Поиск недавно установленных пакетов


Любую информацию о конкретных пакетах можно получить до их загрузки из таких архивов RPM, как http://freshrpms.net, http://rpmfind.net или http://rpm.pbone.net.
См. также rpm(8); Maximum PRM (http://www.rpm.org/max-rpm/index.html); FreshRPMs (http://freshrpms.net/); rpmfind (http://rpmfnd.net); rpm.pbone (http://rpm.pbone.net).



Если список получится слишком длинным, передайте его less или head: rpm -qa --last|head. См. также
rpm(8); Maximum PRM (http://www.rpm.org/max-rpm/index.html).


Необходимость в перестройке базы данных RPM возникает редко, но вреда эта операция не принесет. При любом внесении серьезных изменений в систему будет неплохо перестроить базу данных RPM. При сравнении размеров /var/lib/rpm/packages до и после запуска rpm --rebuilddb иногда можно заметить некоторое уменьшение, поскольку в процессе перестройки из базы данных исключаются неиспользуемые части.
См. также rpm(8); Maximum PRM (http://www.rpm.org/max-rpm/index.html).
2.9. Отслеживание библиотек в системах на базе RPM


Где найти необходимые пакеты? Начните с домашней страницы той программы, которую вы пытаетесь переустановить. Обязательно прочтите всю имеющуюся документацию.
Сейчас появилось множество разных дистрибутивов на базе RPM, поэтому постарайтесь раздобыть пакеты, построенные для вашей конкретной системы. Вот некоторые из крупнейших общедоступных архивов RPM:
  • FreshRPMs - http://freshrpms.net;
  • rpmfind - http://rpmfind.net;
  • rpm.phone - http://rpm.phone.net.


В вашей системе исходные тексты могут храниться в другом каталоге. В Fedora 1, как и в некоторых ранних версиях используется каталог /usr/src/redhat/RPMS/. В других поставках используется каталог /usr/src/RPM/RPMS. Разберитесь, и вы найдете нужный каталог.
Построение пакетов по исходным текстам не избавляет от «кошмара RPM». Оно всего лишь гарантирует двоичную совместимость с системными библиоте-
2.12. Настройка параметров сборки SRPM ками и оптимизацию RPM для архитектуры вашей системы. Соблюдение зависимостей придется обеспечивать вручную, а это далеко не так просто, как кажется.
Обратите внимание: rpmbuild и rpm — два отдельных пакета. См. также
rpmbuild(8), rpm(8); RPM.org (http://rpm.org/); Maximum PRM (http://www.rpm.org/max-rpm/index.html).



Где найти список параметров? Перейдите в каталог SOURCES и распакуйте архив с исходными текстами:
# cd /usr/src/redhat/SOURCES # tar xzvf samba-3.0.0.tar.bz2
Как упоминалось в разделе 2.11, в вашей системе может использоваться другой каталог исходных текстов.



FreshRPMs — хороший источник качественных пакетов. Зеркала yum находятся по адресу http://ayo.freshrpms.net. Ваш пакет yum из FreshRPMs будет заранее настроен на использование архивов FreshRPMs. Не забудьте установить ключ GPG:
# rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt
Включение gpgcheck=1 в файл yum.conf и импортирование ключей гарантирует автоматическую проверку сигнатур пакетов. Этот простой, удобный способ гарантирует, что устанавливаемые пакеты не подвергались злонамеренным модификациям или искажениям в процессе пересылки. См. также
yum(8), yum.conf(5); домашняя страница yum (http://linux.duke.edu/projects/yum/); зеркала yum на сайте FreshRPMs (http://ayo.freshrpms.net).



Сетевой этикет предписывает по возможности пользоваться зеркалами, чтобы не перегружать главный сайт по адресу http://fedora.redhat.com. См. также
yum(8), yum.conf(5); домашняя страница yum (http://linux.duke.edu/projects/yum/); зеркала yum на сайте FreshRPMs (http://ayo.freshrpms.net); Fedora Mirror List (http://www.fedora.us/wiki/FedoraMirrorList).



Одна из самых замечательных особенностей Yum состоит в том, что программа хорошо интегрируется с существующими системами. Yum читает готовую базу данных RPM и создает новый список пакетов, после чего ей можно пользоваться.
См. также yum(8), yum.conf(5); домашняя страница yum (http://linux.duke.edu/projects/yum/); зеркала yum на сайте FreshRPMs (http://ayo.freshrpms.net); Fedora Mirror List (http://www.fedora.us/wiki/FedoraMirrorList).



Yum также удаляет пакеты, которые перестали быть необходимыми. См. также yum(8), yum.conf(5); домашняя страница yum (http://linux.duke.edu/projects/yum/).



Ту же самую информацию можно получить посредством запросов RPM, но при помощи yum это делается чуть удобнее.
См. также yum(8), yum.conf(5); домашняя страница yum (http://linux.duke.edu/projects/yum/).



Локальный кэш пакетов и заголовков рекомендуется периодически обновлять. Это предотвратит появление труднообъяснимых ошибок, а при установке и обновлении будут использоваться обновленные пакеты.
См. также yum(8), yum.conf(5); домашняя страница yum (http://Linux.duke.edu/projects/yum/).


При наличии нескольких источников apt- get всегда использует самую новую версию пакета. Список начинается с наиболее предпочтительных источников, поскольку apt-get обрабатывает список от начала к концу.
Редактирование файла sources.list — абсолютно законный, простой способ управления установкой программ. Занесите в файл все записи, которые вы когда-либо планируете использовать, и закомментируйте строки, не задействованные в конкретной установке.
В список sources.list рекомендуется включить официальные зеркала Debian, чтобы снять нагрузку с серверов Debian.org. Полный список официальных зеркал находится по адресу http://www.debian.org/mirror/.
ВНИМАНИЕ Заплатки безопасности распространяются только с адреса http://www.debian.org/security/ и не копируются на зеркалах. См. также
sources.list(5); официальный список зеркал Debian (http://www.debian.org/mirror/); страница поиска пакетов Debian (http://www.debian.org/distrib/packages).



apt- get всегда выбирает из всех доступных источников новейшие версии устанавливаемых пакетов. Мир Linux быстро развивается, поэтому самая свежая информация всегда находится в Интернете. Чтобы выполнить принудительную установку программы с компакт-диска, закомментируйте все остальные строки в файле sources.list.
ПРИМЕЧАНИЕ Не забывайте выполнять команду apt-get update при каждом изменении файла sources.list. См. также
apt-cdrom(8), apt-get(8); Debian on CD, архивы ISO (http://www.debian.org/CD/http-ftp/).


Для определения имен пакетов используйте страницу поиска Debian по адресу http://www.debian.org/distrib/packages/. Имена пакетов Debian часто отличаются от своих аналогов из RPM. Например, программа CyrusSASL оформляется в пакет sasl-2.x.rpm, а в Debian она разбивается на несколько пакетов с именами libsasl-*.
Не забудьте выполнить команду apt-get update после изменения /etc/apt/sources.list и периодически запускайте ее, чтобы получать обновленную информацию из архивов пакетов.
apt-get загружает и устанавливает (а при необходимости и удаляет) все пакеты, необходимые для разрешения всех зависимостей.
См. также apt-get(8); локальная документация (/usr/share/doc/Debian/apt-howto).

Построение пакетов . deb по исходным текстам чаще всего выполняется с целью использования пакетов из тестовой или нестабильной версии в стабильной. Перекомпиляция настраивает зависимости для стабильной версии.
Если потребуется установить программу, отсутствующую в архивах Debian, постройте .deb при помощи CheckInstall — утилиты, создающей пакеты RPM, .deb и Slackware (см. раздел 4.5).
См. также apt-get(8), dpkg-source(1); локальная документация (/usr/share/doc/Debian/apt-howto); раздел 4.5.
3.8. Обновление системы Debian


Команды обновления отдельных пакетов не существует. Команда apt-get install всегда устанавливает последнюю версию пакета.
См. также apt-get(8); локальная документация (/usr/share/doc/Debian/apt-howto).



Чтобы флаг - u применялся по умолчанию, отредактируйте (или создайте) файл /etc/apt/apt.conf.
// Всегда перечислять обновляемые пакеты // и запрашивать подтверждение у пользователя APT::Get::Show-Upgraded "true";
Перед каждым выполнением команды apt-get dist-upgrade сначала выполните команду apt-get upgrade, чтобы снизить вероятность ошибок при выполнении dist-upgrade. См. также
apt-get(8); локальная документация (/usr/share/doc/Debian/apt-howto).



В какой- то момент Sarge повышается до статуса стабильной версии, a Woody «уходит на покой». Когда это произойдет, обновите свою систему так, как описано в настоящем разделе.
См. также apt-get(8); локальная документация (/usr/share/doc/Debian/apt-howto).



Сопровождение смешанной системы требует осторожности, особенно если в качестве базовой версии используется Woody. По мере «старения» Woody могут возникнуть проблемы двоичной совместимости с Sarge/Sid. Различия между ключевыми системными файлами (такими как libc и gcc) могут стать настолько серьезными, что пакеты Sarge/Sid не будут устанавливаться в Woody. Если это произойдет, попробуйте построить пакеты по исходным текстам (см. раздел 3.6).
См. также apt.conf(5), sources.list(5); страница поиска пакетов Debian (http://www.debian.org/distrib/packages).



Таблица, выводимая командой dpkg -l, выглядит довольно загадочно, поэтому я приведу расшифровку.
$ dpkg -l gnome* Desired=Unknown/Instal1/Remove/Purge/Hoid | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-============================================================== pn gnome <none> (no description available) un gnome-about <none> (no description available) ii gnome-applets 2.4.2- 1 Various applets for GNOME 2 panel rc gnome-bin 1.4.2-18 Miscellaneous binaries used by GNOME
В строке pn gnome поднимитесь от буквы p наверх по «стрелке». Она приведет вас к строке Desired=Unknown/InstaU/Remove/Purge/Hold с расшифровками первого символа (Purge в данном случае).
От следующего столбца, n, стрелка ведет к строке Status. По ней можно определить, что символ n означает Not/Installed.
В третьем столбце отображается код ошибки. В нашем случае он пуст (и хорошо). Как указано в конце строки, любые символы верхнего регистра в столбцах Status и Err ни к чему хорошему не приведут.
Получаем: пакет gnome когда-то был установлен в системе, но потом он был удален.
Код un означает, что пакет никогда не устанавливался.
Код ii означает, что пакет установлен.
Код rc означает, что пакет был установлен, а затем удален, но после него остались конфигурационные файлы. Состав этих файлов определяется легко:
$ dpkg -L gnome-bin /etc/logcheck/ignore.d.server/gnome-bin /etc/logcheck/ignore.d.workstation/gnome-bin

Кэш пакетов запросто может занимать десятки, если не сотни мегабайт. Загляните в /var/cache/apt/archives и проверьте сами. Чтобы сэкономить место на диске, создайте локальный кэш пакетов в своей сети (см. раздел 3.14).
3.13. Разрешение конфликтов зависимостей в Debian См. также dpkg(8), apt_cache(8), apt-get(8); локальная документация (/usr/share/doc/Debian/ apt-howto); The Debian Reference Manual (http://qref.sourceforge.net/).



В «монолитных» системах подобные конфликты версий встречаются редко. Пользователи смешанных систем сталкиваются с ними чаще. Чтобы предотвратить их, будьте чрезвычайно осмотрительны при выборе устанавливаемых программ — при первой установке Debian потратьте немного времени и выберите каждый необходимый пакет.
См. также dpkg(8), apt-get(8); Debian User's List с архивами (http://lists.debian.org/debian-user/).



Большинству параметров в файле /etc/apt-proxy/apt-proxy.conf, кроме источников пакетов, можно оставить значения по умолчанию. Исключение составляет частота «обновлений», определяющая периодичность загрузки списка пакетов. По умолчанию соответствующая секция выглядит так:
# Максимальная частота обновлений (в минутах) # Высокие значения снижают нагрузку. BACKENDFREQ=240
Я обычно устанавливаю значение этого параметра равным 1440; ежедневной проверки вполне достаточно. Действительно важные события происходят не так часто. Проверку следует производить хотя бы раз в день главным образом для своевременной установки обновлений безопасности.
См. также apt-proxy(8), apt-proxy.conf(5); официальный список зеркал Debian (http://www. debian.org/mirror/); домашняя страница apt-proxy (http://apt-proxy.sourceforge.net/).



Команды ping и traceroute помогут определить, какие зеркала обладают минимальным временем отклика. Дело в том, что географическая близость еще не гарантирует быстрого отклика.
Указание трех источников обеспечивает необходимую избыточность, apt-proxy опрашивает их по порядку: если первый источник не отвечает, опрашивается второй и т.д.
См. также apt-proxy(8), apt-proxy.conf(5), apt-proxy-import(8); официальный списокзеркал Debian (http://www.debian.org/mirror/); домашняя страница apt-proxy (http://apt-proxy.sourceforge.net/).



Большинство дистрибутивов Linux включает установку Core Development Tools или что-нибудь в этом роде, поэтому вам не придется отлавливать программы и устанавливать их по отдельности.
Требования, специфические для конкретной программы, перечисляются в документации. Поищите в архиве с исходными текстами файлы README, INSTALL и другую документацию. Прочитайте все от начала и до конца. При запуске конфигурационный сценарий проверяет наличие в системе всех обязательных элементов. Если какой-либо из этих элементов отсутствует, сценарий завершается с кодом ошибки и сообщает, что необходимо сделать.



Совместное использование find и grep позволяет исключить каталоги, не входящие в конечный список. Ключ grep -v включает подробный вывод. Параметр –e означает «исключить следующий каталог».
Мы исключаем каталоги /proc и /tmp, потому что они содержат временные данные и постоянно меняются. Файлы в каталоге /dev находятся под управлением системы, поэтому их тоже можно исключить. Исключение каталогов также является важной мерой безопасности — при ручном удалении программ по списку diff содержимое каталогов /proc, /tmp и /dev ни в коем случае не должно изменяться. См. также
grep(1), find(1), diff(1).



Описанная в этом разделе процедура считается стандартным способом удаления программ, построенных по исходным текстам. Тем не менее не все авторы программ следуют общепринятым правилам. Обязательно просмотрите всю документацию к программе.
Прежде всего обратите внимание на параметры конфигурации. Некоторые программы (такие, как Apache) поддерживают десятки параметров компиляции. Для обеспечения безопасности откомпилируйте поддержку только тех возможностей, которые будут реально использоваться. Это особенно важно для серверов, доступ к которым осуществляется из непроверенных сетей (скажем, почтовых и веб-серверов).
Аргументы в пользу компиляции программ по исходным текстам:
  • вы можете включить поддержку тех возможностей, которые вам необходимы;
  • оптимизация программ для конкретной архитектуры;
  • полный контроль над ходом установки.
Впрочем, есть и недостатки:
  • возможные проблемы с обновлением и удалением;
  • до «кошмара зависимостей» рукой подать;
  • на компиляцию большой программы может потребоваться несколько часов.



В каталоге doc- pak программа CheckInstall размещает файлы README и прочую документацию программы. Если не создать каталог doc-pak, CheckInstall спросит, хотите ли вы создать каталог документации по умолчанию. Если ответить отрицательно, пакет останется без документации.
CheckInstall использует «родную» систему управления пакетами: RPM в Red Hat, installpkg в Slackware, apt в Debian. Чтобы удалить пакет CheckInstall, воспользуйтесь программой управления пакетами своей системы.
CheckInstall поддерживает любые сценарии установки. Пример:
# checkinstall -D make installpackages # checkinstall -R make modules_insta11 # checkinstall -S install.sh # checkinstall -D setup
Не забудьте изучить файл README устанавливаемой программы, а также прочую прилагаемую документацию. Не все пакеты с исходными текстами следуют традиционной процедуре configure-make-make install. В отдельных случаях используются другие сценарии установки, как в приведенном выше примере.
CheckInstall еще не позволяет создать пакет без его автоматической установки. Вероятно, эта возможность появится в будущих версиях.
См. также Домашняя страница CheckInstall (http://asic-linux.com.mx/~izto/checkinstall/news.php).


Программа lspci получает часть данных от шины PCI, а затем добавляет к ним дополнительную информацию из внутренней базы данных /usr/share/misc/pci.ids. Даже существует специальная команда для обновления этого файла:
# update-pelids
Если к системе подключено устройство, не распознаваемое lspci (скажем, очень старое и экзотическое устройство ISA), вам придется открыть корпус и посмотреть, что это такое. Также можно попробовать запустить dmesg (см. раздел 5.3).
См. также lspci(8).



Программа dmesg всегда выводит обновленную информацию даже при частой смене оборудования (например, при подключении и отключении устройств USB).
См. также dmesg(8).



Как упоминалось выше, для чтения данных из /proc следует использовать только cat и утилиты, предназначенные специально для этой цели. Программы постраничного вывода типа less или more выводят другие данные, потому что они читают /proc заново с каждой страницей. Также не рекомендуется использовать текстовый редактор или любую программу с возможностью записи, чтобы не создавать риска повреждения системы.



По выходным данным fdisk также можно узнать, какой тип файловой системы находится на любом разделе. В рассмотренном примере используются два разных типа файловых систем Windows (HPFS/NTFS, FAT32) и расширенный раздел Windows, в котором были построены файловые системы Linux и раздел виртуальной памяти. См. также
fdisk(8).



В Joe используется много трехклавишных команд. Каретка (^) обозначает клавишу Ctrl. Нажмите первые две клавиши вместе (например, Ctrl+K), затем отпустите их и нажмите третью клавишу. Далее перечислены базовые команды вызова справки:
  • JOE и RJOE:
  • ^К Н . — включение/отключение режима вывода справки;
  • Esc . — перебор справочных экранов, Esc , — перебор в обратном направлении.
  • Jpico:
    • ^G . — включение/отключение режима вывода справки;
    • Esc . — перебор справочных экранов, Esc , — перебор в обратном направлении.
  • Jmacs:
    • ^Х Н . — включение/отключение режима вывода справки;
    • ^Х . — перебор справочных экранов, ^Х , — перебор в обратном направлении.
  • Jstar:
    • ^J H . — включение/отключение режима вывода справки;
    • Esc . — перебор справочных экранов, Esc , — перебор в обратном направлении.
    См. также joe(1).


    Одна из приятных особенностей JOE заключается в том, что программа работает с копией исходного файла. Оригинал сохраняется в виде резервной копии (впрочем, эта возможность тоже настраивается и ее можно отключить в .joerc).
    См. также joe(1); раздел 6.4.
    6.5. Копирование текста между файлами в JOE


    Сохранение всех изменений в отдельном файле окажет вам неоценимую помощь. Учтите, что .joercprefs не замещает .joerc — параметры, явно включенные или отключенные в .joerc, сохраняют свое состояние, что бы ни говорилось в .joercprefs. Однако параметры .joerc, начинающиеся с пробела, игнорируются и потому могут включаться и отключаться в .joercprefs. См. также
    joe(1).



    Файл ~/. joerc очень велик; возможно, вам будет удобнее отобразить только неактивные параметры. Чтобы отобрать их, воспользуйтесь командой фильтрации JOE:
    ^K / $ grep '^[space]]'
    Теперь вы сразу увидите неактивные команды и сможете скопировать те из них, которые хотите активировать, в файл ~/.joercprefs. Вы также можете отобразить только активные параметры:
    $ grep '^[^[:space:]]'
    Команда ^K X сохраняет ~/.joercprefs и завершает работу. Теперь изменения хранятся отдельно от основного файла, что упрощает их дальнейшее отслеживание и редактирование.
    См. также joe(1).



    Некоторые полезные команды, выполняемые с блоками текста:
    • ^K B, ^K K — пометка/снятие пометки с начала и конца блока;
    • ^K M - перемещение блока в текущую позицию курсора;
    • ^K C — копирование блока в текущую позицию курсора;


    Хотя JOE не обладает собственной поддержкой мыши, вы можете копировать и вставлять данные из других приложений мышью в сеансах X. Это функция тер-
    6.9. Быстрое изучение Vim минала, а не JOE. Используйте классический метод Unix: выделите текст мышью, а затем щелкните средней кнопкой мыши. Комбинации клавиш ^V и ^C имеют другой смысл в JOE.
    См. также joe(1).



    Возможно, из учебного курса вы узнаете все команды, которые вам когда-либо понадобятся. За дополнительной информацией о миллионах возможностей Vim обратитесь к превосходному руководству пользователя Брэма Муленаара (Bram Moolenaar), автора Vim. Руководство включено во внутреннюю справочную систему Vim, а также существует в нескольких электронных версиях по адресу http://vimdoc.sourceforge.net (HTML для поиска, PDF и HTML для печати).
    Чтобы вызвать руководство пользователя в Vim, введите команду
    :help
    Клавиши управления курсором используются для перебора оглавления, а комбинация ^] открывает главу.
    Вы также можете сразу перейти к конкретной теме:
    :help quickref :help tutor :help usr_06.txt
    Поиск по критерию с выводом списка вариантов:
    :help vimrc
    Вместо Enter нажмите ^D. Результат будет выглядеть примерно так:
    :help vimrc vimrc vimrc-intro system-vimrc _gvimrc vimrc vimrc-filetype gvimrc :mkvimrc _vimrc vimrc-example.vim .gvimrc

    Сокращения могут использоваться для автоматического исправления орфографии (раздел 6.6) — просто определите свои стандартные ошибки в виде сокращений. Этот прием лучше всего подходит для исправления опечаток (например, teh вместо the).
    См. также Справочная система vim (:help map.txt); раздел 6.12.
    6.11. Привязка команд к клавишам


    Самыми безопасными для привязки являются клавиши F2-F12 и Shift+F2-F12. Но на практике они обычно быстро заканчиваются. Комбинации «запятая+буква»,


    Во время чтения документации Vim его гибкость и колоссальные возможности настройки производят огромный эффект. Начните с самого начала, как показано ниже, и не обращайте внимания на хитроумные возможности «для фанатов» до тех пор, пока они вам не потребуются.
    6.13. Быстрое перемещение в Vim В следующем примере файла ~/.vimrc продемонстрированы три важных возможности Vim: настройка параметров запуска, сокращений и клавиатурных привязок. Апостроф является признаком строки комментария.
    ''''''''''''''''''''''''''''''''''''''''''''''' '' Персональный файл vimrc. создан 4/22/2004 '' ''''''''''''''''''''''''''''''''''''''''''''''' '' Отключение режима совместимости с vi '' для использования всех возможностей Vim set nocompatible '' 4 пробела на позицию табуляции set tabstop=4 '' Расширенные возможности забоя set backspacedndent.eol.start '' Выделение синтаксиса включено по умолчанию syntax on '' Автоматическое определение типа файла '' для выделения синтаксиса. filetype plugin indent on ''''''''''''''''''''''''''''''''''''''''''''''' '' Сокращения '' ''''''''''''''''''''''''''''''''''''''''''''''' :ab Qu Carl a Has Gone Fishing, Back Much Later :ab Co Copyright (c) 2004 Carla Schroder all rights reserved :ab Em carla@bratgrrl.com :ab Wb http://tuxcomputing.com ''''''''''''''''''''''''''''''''''''''''''''''' '' Добавление тегов HTML в режиме вставки '' ''''''''''''''''''''''''''''''''''''''''''''''' :map! .ah <A href=""> :map! .a </A> :map! .b <B><Esc>ea</B><Esc>a :map! .i <I><Esc>ea</I><Esc>a :map! .l <LI><Esc>ea</LI><Esc>a
    Все изменения, внесенные в ~/.vimrc, вступают в силу при следующем запуске Vim. См. также
    vim(1); справочная система vim (:help vimrc, :help usr_05.txt, :help ab).



    Файлы сеансов рекомендуется хранить в отдельном каталоге, чтобы их можно было легко найти при необходимости.
    См. также Справочная система vim (:help session, :help usr_08.txt).



    Далее приводится упрощенный пример выходных данных :version. Знаком «+» помечены включенные возможности, а знаком «-» — отключенные. По этим данным можно легко определить, придется ли вам перекомпилировать Vim, чтобы использовать нужную возможность.
    :version VIM - Vi IMproved 6.2 (2003 Jun 1. compiled Apr 1 2004 23:39:33) Included patches: 1-298. 300-426


    В Red Hat, Fedora, Mandrake и Slackware смена уровня выполнения является одним из способов закрытия сеанса X, так как на уровне 3 загружается текстовая



    В Debian стандартные уровни выполнения 2-5 не отличаются друг от друга; они загружают либо текстовую консоль, либо графическую программу входа в систему в зависимости от того, что было выбрано во время установки. Уровень выполнения 2 используется в Debian по умолчанию. Изменение конфигурации уровней выполнения Debian рассматривается в разделе 7.5.
    См. также inittab(5); раздел 7.5.



    Другие способы завершения сеансов X лучше подходят для «зависания» X. Любой пользователь может ввести команду «xkill» нажатием клавиш Ctrl+Alt+Backspace.
    В графических программах входа в систему (xdm, kdm или gdm) пользователь root может прервать работу программы. Это автоматически прервет работу всех пользователей:
    # /etc/init.d/gdm stop См. также
    Раздел «Введение» настоящей главы; раздел 7.3; раздел 7.6.



    Помните, что update-rc.d работает с именами сценариев в /etc/init.d. Для тестирования команд update-rc.d используется ключ -n:
    # update-rc.d -f -n kdm remove
    При необходимости можно удалить сценарии из init.d при помощи ключа remove:
    # update-rc.d --purge kdm remove
    Но обычно лучше оставить их на случай, если они понадобятся в будущем.
    См. также update-rc.d(8).



    В Gnome используется экранный менеджер gdm, в X — xdm, а в KDE — kdm. Довольно часто встречаются системы, в которых установлены все три программы. xdm обладает минимальной функциональностью; в сущности, программа всего лишь предоставляет графическое окно входа. И kdm, и gdm поддерживают ряд дополнительных возможностей входа и завершения работы, включая меню для выбора оконного менеджера.



    Утилита chkconfig берет начальный приоритет и уровень выполнения из стартового сценария программы. Например, в файле /etc/rc.d/init.d/cups присутствует следующий фрагмент:
    # Информация Linux chkconfig # chkconfig 2345 90 10
    Он означает, что chkconfig запускается на уровнях 2, 3, 4 и 5, с приоритетом 90 для запуска и приоритетом 10 для остановки. Конечно, вы можете изменить эти параметры по своему усмотрению. Либо отредактируйте исходный сценарий из init.d, либо просто переименуйте ссылки:
    # mv /etc/rc.d/rc3.d/S90cups /etc/rc.d/rc3.d/S45cups См. также
    chkconfig(8); The Red Hat Customization Guide (http://www.redhat.com/docs/manuaLs/ linux/).



    Этот способ настройки чуть более трудоемок, но ничего страшного не происходит — вы просто создаете «мягкие» ссылки. Помните, что для каждой запускаемой службы также необходимо создать записи, которые будут останавливать ее на всех уровнях выполнения, на которых она не должна работать. Кроме того, некоторые службы на уровнях 0, 1 и 6 «убивать» не следует, поскольку это важные системные службы, создаваемые Linux. Сохраните информацию о таких службах, прежде чем вносить какие-либо изменения:
    $ ls /etc/rc0.d /etc/rc1.d /etc/rc6.d > original-runlevels.txt
    На уровнях 2-5 можно делать все, что угодно, но будьте внимательны и не испортите другие уровни.
    См. также ln(1).


    Для любой программы, имеющей стартовый сценарий, рекомендуется использовать сценарий вместо запуска двоичного файла программы, потому что в сцена-
    7.10. Выключение компьютера или перезагрузка Linux рии реализована обработка ошибок и проверка файлов, а также все необходимые условные проверки.



    Помните, что процесс выключения всегда должен быть контролируемым. Всем компьютерам, в том числе и машинам с системой Linux, приходится проделать немалый объем работы, чтобы питание можно было безопасно выключить. Система должна завершить работу служб, демонтировать файловые системы и сбросить буферы на диск.
    Команды shutdown, poweroff и halt выполняются только привилегированным пользователем root. Ограничение выглядит довольно глупо, потому что у любого оконного менеджера и среды настольной системы имеется собственное меню выключения, а любой пользователь, находящийся поблизости от компьютера, может нажать кнопку питания. Но такова жизнь, и с этим приходится смириться. Возможный выход — предоставить ограниченные привилегии для выполнения команд выключения командой sudo. Другое решение основано на создании специальной группы пользователей, которым разрешено выключение.
    См. также shutdown(8), poweroff(8); раздел 8.20; раздел 8.21.


    Если файл /etc/shutdown. allow не существует, создайте его.
    7.12. Автоматическое выключение компьютера См. также shutdown(8).



    Файл /etc/ crontab идеально подходит для планировки простых заданий. Обратите внимание: в файле имеется поле имени, поэтому любой пользователь может создавать в нем свои записи. Тем не менее редактирование файла /etc/crontab разрешается только пользователю root.
    Другой способ основан на использовании команды crontab:
    # crontab -u root -e
    Команда открывает файл crontab для пользователя root; отредактируйте и сохраните его. Не пытайтесь задать имя файла — в процессе редактирования файл является временным, а его имя автоматически задается crontab при сохранении. Файл сохраняется в каталоге /var/spool/cron/crontabs.
    См. также cron(8), crontab(1), crontab(5).



    Схемы нумерации (вроде представленного ранее примера «Trainers/Coaches/Players») хорошо подходят для небольшой и относительно статичной пользовательской базы. В больших организациях с частыми изменениями они приносят больше вреда, чем пользы. В таких ситуациях лучше направить усилия на правильное распределение пользователей по группам и своевременное внесение изменений.
    Как всегда, между дистрибутивами существуют мелкие, но любопытные различия. Коды UID и GID во всех версиях Linux лежат в интервале от 0 до 65534.
    Debian:
    • 0-99 — системные учетные записи;
    • 100-999 — установленные пользователем программы и демоны (Postfix, Fetchmail, gdm, dictd и т.д.);
    • 1000-29999 — учетные записи обычных пользователей;
    • 30000-65533 — согласно документации Debian, коды зарезервированы, но при желании вы можете их использовать;
    • 65534 — пользователь nobody, учетная запись без прав и разрешений.
    Red Hat:
    • 0-499 — коды зарезервированы для системного использования;
    • 500-60000 — обычные пользователи;
    • 65534 — пользователь nobody, учетная запись без прав и разрешений.
    В других дистрибутивах используются аналогичные схемы нумерации. Экспериментируйте с диапазонами, зарезервированными для учетных записей обычных пользователей, но не трогайте системные диапазоны.
    См. также awk(1); раздел 8.17; Debian Policy Manual, глава 9.2.2 (http://www.debian.org/doc/debian-policy/); Red Hat Linux Reference Pocket Guide (http://www.redhat.com/docs/manuals/linux/).



    Ключи команды id:
    • -u — вывод только кодов UID;
    • -g — вывод только кодов GID;
    • -gn — вывод имени первичной группы пользователя вместо GID.
    См. также


    useradd, в отличие от своего родственника adduser, прекрасно работает в сценариях (например, в сценарии mass_useradd из раздела 8.17).
    Поля комментария также известны под названием данных GECOS. Данные GECOS состоят из пяти полей, разделенных запятыми. Если вы собираетесь использовать поле комментария, включите все четыре запятые, даже если значения соответствующих атрибутов не указываются. В долгосрочной перспективе это окупится, особенно при выполнении серийных операций и при поиске. Традиционно в данные GECOS входит полное имя, номер комнаты, рабочий телефон, домашний телефон и прочее (произвольная информация). Полное имя используется многими внешними программами — в частности, почтовыми серверами, однако другие поля можно использовать так, как вы сочтете нужным. Например, они позволяют организовать произвольное деление пользователей на группы и их сортировку (см. раздел 8.19).
    GECOS — пыльный пережиток прошлого, оставшийся с очень древних времен; сокращение означает «General Electric Compliant Operating System». За полной информацией обращайтесь к Файлу жаргона.
    См. также useradd(8); Файл жаргона (http://www.catb.org/~esr/jargon/).



    Полное имя является единственным важным атрибутом информации о пользователе. Оно необходимо любой внешней программе, работающей с /etc/passwd, например, почтовому серверу. И хотите — верьте, хотите — нет, но в большинстве версий Linux по-прежнему продолжает существовать finger:
    $ finger anitab Login: anitab Name: Directory: /home/anitab Shell: /bin/bash On since Sun May 30 08:46 (PDT) on ttyl 10 hours 55 minutes idle (messages off) No mail. No plan. Phone 555-5555 Office Fooo
    Другие поля могут содержать произвольную информацию. В частности, они могут использоваться для хранения заметок или группировки.
    Пользователь может сменить свой номер комнаты и рабочий телефон командой chfn, но изменить полное имя и поле «прочее» ему не удастся.
    См. также adduser(8), adduser.conf(5), finger(1).


    Постарайтесь обойтись без изменения имени пользователя и кода UID, поскольку такое изменение будет иметь общесистемные последствия. Если изменение все же неизбежно, не забудьте отыскать все файлы, принадлежащие пользователю, смените имя в домашнем каталоге пользователя и обновите данные о принадлежности к группам.
    8.7. Удаление пользователя Если заменить ключ -exec на -ok, команда find будет запрашивать подтверждение каждого изменения:
    # find / -uid 1050 -ok chown -v 1200 {} \;
    Трудно переоценить удобство такого применения find. Ключ -exec или -ok приказывает find выполнить следующую команду. Последовательность {} заменяется именем текущего файла. Точка с запятой указывает, где завершается команда chown, а символ \ «экранирует» точку с запятой, чтобы она не была обработана командным процессором.
    См. также usermod(8), chfn(1); Файл жаргона (http://www.catb.org/~esr/jargon/).



    Правила удаления учетной записи — дело тонкое. Если вы работаете в своей домашней системе, делайте, что хотите. В коммерческих системах заранее изучите политику своей компании. Всегда полезно сначала заблокировать учетную запись работника и создать резервную копию принадлежащих ему файлов.
    См. также userdel(8), find(1); раздел 8.9.



    Традиционный метод поиска процессов, принадлежащих пользователю, основан на использовании команды ps:
    $ ps U 1007
    или
    $ ps U foober 3936 ? S 0:00 xchat 3987 ? S 0:00 /usr/lib/galeon-bin 4209 ? S 0:00 kdeinit: kio_file file /tmp/ksocket-carla/klauncherkF21rc.slave-
    После этого процессы приходится убивать по одному:
    # kill 3936 # kill 3987 # kill 4209 См. также
    slay(1), kill(1).



    Еще один способ заблокировать учетную запись — вставить восклицательный знак в начало поля пароля в файле /etc/shadow:
    foobar:!$l$wiD1Qr34$mitGZA76MSYCY04AHIYl:12466:0:99999:7:: :
    Также можно заменить х в поле пароля в файле /etc/passwd звездочкой (*):
    foober:*:1025:1025:Foober Smith..,:/home/foober:/bin/bash
    Наконец, можно лишить пользователя доступа к командному процессору:
    # usermod -s /bin/false foober
    И все же лучше всего придерживаться варианта с passwd -l и -u.
    См. также passwd(1), passwd(5).



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


    Рекомендуется использовать логически последовательную схему нумерации групп. С точки зрения Linux это несущественно, но зато такая схема избавит вас от многих хлопот. В Red Hat номера системных групп лежат в диапазоне 0-499, а в Debian — в диапазоне 100-999. За дополнительной информацией о схемах нумерации обращайтесь к разделу «Комментарии» в разделе 8.2.
    См. также groupadd(8).
    8.13. Создание системного пользователя


    Многие демоны и процессы, которым необходима системная учетная запись, по умолчанию используют nobody, но все больше приложений требует создания собственной уникальной учетной записи. Старайтесь использовать уникальную учетную запись там, где это возможно, потому что это повышает уровень безопасности системы. Учетная запись nobody чаще всего становится объектом хакерских атак, поэтому собирать разнообразные процессы и демонов в единую цель для атаки не стоит.
    См. также adduser(8), adduser.conf(5), useradd(8).



    Для решения задачи также можно воспользоваться командами adduser и usermod, но будьте осторожны: adduser позволяет за один вызов включить пользователя только в одну группу, а команда usermod, позволяющая перечислить несколько групп, стирает прежние данные о принадлежности пользователя к группам.
    См. также adduser(8), usermod(8).



    Программа pwck проверяет логическую целостность файлов /etc/passwd и /etc/shadow. Она последовательно анализирует записи и проверяет, что каждая запись содержит:
    • правильное количество полей;
    • уникальное имя пользователя;
    • действительные идентификаторы пользователя и группы;
    • действительную первичную группу;
    • действительный домашний каталог;
    • действительный командный процессор.
    pwck сообщает обо всех записях, не имеющих пароля. Мне очень нравится формулировка в man-странице: «Проверки правильности количества полей и уникальности имени пользователя являются фатальными». Нечего сказать, хорошая реклама! Но не волнуйтесь — вы в полной безопасности, и вызов pwck ничему не повредит.
    Когда pwck обнаруживает ошибку, вы можете либо удалить учетную запись, либо проигнорировать ее. Во втором случае pwck прекращает работу и не проверяет новые строки (за одним исключением: обнаружив повторяющееся имя, программа продолжит проверку даже в том случае, если вы не удалите учетную запись).
    Программа grpck анализирует файлы /etc/group и /etc/gshadow и проверяет, что каждая запись содержит:
    • правильное количество полей;
    • уникальное имя группы;
    • действительный список членов и администраторов.
    См. также pwck(8), grpck(8).



    В сценариях используются стандартные средства Shadow Suite, поэтому они легко настраиваются посредством регулировки параметров утилит, задействованных в их работе.
    Файл выходных данных выглядит так:
    dawns shabaefi 1002 nikitah gohbinga 1003 rubst ahtoohaa 1004
    В файл /etc/passwd добавляются записи вида
    dawns:x:1002:1002:Dawn Mari Schroder,,123-4567,trainers:/home/dawns:/bin/bash nikitah:x:1003:1003:Nikita Horse,,123-4567,equine:/home/nikitah:/bin/bash rubst:x:1004:1004:Rubs The Cat.101,,234-5678,,test:/home/rubst:/bin/bash
    Листинг 8.1. Программа mass_useradd
    #!/bin/sh ## ## Использование: ## sh mass_useradd < inputfile >> new-passwords.txt ## PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:$PATH # Чтение строки входных данных. # Формат входного файла:
    продолжение ==>



    Ключ - n тестирует команду без ее фактического выполнения:
    # ./masspasswd -v -g -n usergroup generating password for dawns teivuphu generating password for nikitah kohfahsh 2 password(s) reset - see /root/mass_passwd/mass_passwd.log
    Пароли остаются прежними; выполнение команды в этом режиме всего лишь проверяет параметры перед внесением изменений.
    См. также Раздел 8.17.



    Команда su позволяет переключиться на любую учетную запись, пароль которой вам известен.
    Дефис после su существенно влияет на результат выполнения команды. Без дефиса команда сохраняет старую системную конфигурацию и переменные окружения — командный процессор, редактор по умолчанию, пути и umask. См. также


    Команда sudo также может применяться для запуска пользователями сценариев (например, сценариев архивации). Будьте очень осторожны со сценариями, а также с командами, предоставляющими доступ к командному процессору или запускающими



    Включите следующую строку в сценарий mass_useradd, после строки chmod, чтобы квота пользователя vhenson автоматически применялась для всех новых пользователей:
    /usr/sbin/edquota -p vhenson $username
    Команду add user можно настроить на автоматическое назначение квот для новых пользователей. Отредактируйте файл adduser.conf:
    QUOTAUSER="vhenson"
    А теперь плохие новости: Quota сейчас находится в переходной фазе. Код Quota в ядрах версий 2.2 и 2.4 устарел и не подходит для современных версий Quota. Если в ваш дистрибутив включена «заплатка» ядра — считайте, вам повезло. Впрочем, вы сможете быть полностью уверены в этом лишь после того, как установите и настроите Quota и назначите квоту пользователю. Если дистрибутив не содержит готовые к запуску версии Quota, вероятно, вам придется устанавливать целую серию «заплаток» ядра. Подробные инструкции приведены в документе «Quota mini-HOWTO».



    Файловые разрешения вычисляются по табл. 9.2. Просуммируйте нужные значения для каждого типа пользователей, а затем перечислите их в порядке следования в таблице: владелец, группа, прочие. Специальные биты рассматриваются в разделе 9.7.
    Таблица 9.2. Вычисление файловых разрешений
    Специальные биты Разрешение Владелец Группа Прочие
    setuid 4 Чтение 4 4 4
    setuid 2 Запись 2 2 2
    setuid 1 Исполнение 1 1 1
    См. также
    info chmod.



    Символическая запись chmod порой бывает довольно сложной. Следующий пример стирает все существующие разрешения и приводит их в исходное состояние:
    $ chmod -v a=,u-rwx,g=rx,o=r сценарий
    То же самое можно сделать командой chmod 754.
    Символическая форма записи также называется мнемонической:
    • r — чтение (Read);
    • w — запись (Write);
    • х — исполнение (Execute);
    • X — файл должен уже обладать разрешениям исполнения или быть каталогом;
    • s —назначение идентификатора пользователя или группы при исполнении — опасно! Не используйте с исполняемыми файлами (по крайней мере, если вы не до конца представляете, что делаете);
    • t — бит закрепления;
    • u - владелец файла;
    • g — группа, которой принадлежит файл;
    • o — прочие пользователи;
    • + — добавление новых разрешений к действующим;
    • = — замена действующих разрешений;
    • - — сброс разрешений.
    См. также
    info chmod; раздел 9.7.


    Рядовые пользователи могут только вносить изменения в принадлежащие им файлы и не могут передать право владения файлом другому пользователю. Тем не менее пользователи могут изменять принадлежность к группам (при условии, что они принадлежат как к исходной, так и к итоговой группе). См. также
    info chown.


    У статических битов есть еще одно применение. Давным-давно установка этого бита для исполняемого файла приводила к тому, что файл оставался в памяти после завершения его выполнения. В доисторическую эпоху Unix с примитивным управлением памятью и слабосильным оборудованием это ускоряло запуск программ. В наши дни об этом можно не думать. См. также
    info chmod; раздел 9.2. 9.8. Назначение разрешений по умолчанию с использованием маски umask


    В табл. 9. 4 показано, как составить маску umask для любой комбинации разрешений.
    Таблица 9.4. Все значения umask
    Umask Разрешения файлов Разрешения каталогов
    7 Нет Нет
    6 Нет Исполнение
    5 Запись Запись
    4 Запись Запись и исполнение
    3 Чтение Чтение
    2 Чтение Чтение и исполнение
    1 Чтение и запись Чтение и запись
    0 Чтение и запись Чтение—запись—исполнение



    Ошибка umount « Device is busy» чаще всего возникает из-за наличия открытого окна терминала, в котором смонтированное устройство является текущим рабочим каталогом:
    carla@windbag:/floppy$
    Очень важно, чтобы диск был демонтирован перед отключением. Это позволяет системе завершить операции записи и обеспечить корректное отключение. В более новых версиях Linux указывать тип файловой системы не обязательно, поскольку команда mount автоматически распознает типы файловых систем. См. также
    mount(8); раздел 9.10.



    Каждому запоминающему устройству соответствует блочное устройство в каталоге /dev. Имена устройств определяются способом физического подключения.
    Примеры:
    • /dev/hda — первичное устройство на IDE0 (весь диск);
    • /dev/hdb — вторичное устройство на IDE0 (весь диск);
    • /dev/fd0 — флоппи-дисковод на контроллере 0, устройство 0;
    • /dev/fd1 — флоппи-дисковод на контроллере 0, устройство 1;
    • /dev/sda — первый диск SCSI (весь диск);
    • /dev/sdb — второй диск SCSI (весь диск).

    Имена запоминающих устройств в Linux формируются по следующей схеме:
    • /dev/fd* — флоппи-дисководы;
    • /dev/hd* — дисководы IDE;
    • /dev/sd* — дисководы SCSI;
    • /dev/sd* — запоминающие устройства USB;
    • /dev/hd* - дисководы CD/DVD-ROM с интерфейсом IDE/ATAPI;
    • /dev/sd* - дисководы CD/DVD-R/RW с интерфейсом IDE/ATAPI;
    • /dev/sd*,/dev/hd* или /dev/XXXx4 — Zip-дисководы.

    Устройствам IDE и USB, использующим подсистему эмуляции SCSI, иногда присваиваются имена /dev/sr*, которые представляют собой символические ссылки на /dev/sd*.
    Если в вашей системе установлены исходные тексты ядра, поищите определения имен /dev в файле devices.txt. См. также
    Глава 5; официальный список имен /dev (http://www.lanana.org/docs/device-list/devices.txt или файл devices.txt в каталоге /usr/src/* вашей системы).


    Команда touch обычно используется в сценариях для создания новых файлов, а также для заполнения каталогов файлами с целью тестирования. См. также
    mkdir(1), touch(1).


    Команда rm -rf / стирает всю корневую файловую систему. Некоторые личности предлагают новичкам выполнить ее, считая это забавной шуткой.
    Хотя обычно говорят «rm удаляет файлы», в действительности команда не удаляет файлы, а только отсоединяет их от i-узлов. Файл по-настоящему удаляется лишь после удаления всех жестких ссылок, указывающих на него, и перезаписи данных на диске. Рядовые пользователи могут удалять командой rm любые файлы в любых подкаталогах, доступных для них, но с каталогами дело обстоит иначе: команда rm удаляет только каталоги, принадлежащие данному пользователю.
    Команда touch на самом деле предназначена для изменения временных пометок файла. Ее применение для создания новых файлов может рассматриваться как неожиданный побочный эффект.
    Для удаления каталогов также существует команда rmdir. Эта команда отказывается удалять каталоги, содержащие какие-либо данные. На первых порах это помогает, но со временем начинает раздражать; многие программы создают файлы, не отображаемые в нормальных списках (имена файлов, начинающиеся с точки, обычно игнорируются; чтобы включить их в вывод, следует выполнить команду ls -a). Соответственно, при попытке выполнения rmdir команда скажет, что в каталоге еще остались файлы. Вероятно, со временем вы перейдете на команду rm -r. См. также
    touch(1),rm(1).


    В графических файловых оболочках (таких, как Nautilus, Konqueror, Midnight Commander, Gentoo File Manager, gmc и Rox Filer) операции переименования и копирования обычно выполняются быстрее и проще. См. также

    Команда Linux fdisk предназначена только для создания томов Linux. Для томов Windows следует использовать команду fdisk из MS-DOS. Далее приводится список часто используемых команд fdisk:
    • m — вывод справки;
    • р — отображение текущей таблицы разделов;
    • d — удаление раздела;
    • n — создание нового раздела;
    • w — запись таблицы разделов на диск;
    • l — отображение списка типов файловых систем;
    • q — завершение работы fdisk без внесения каких-либо изменений.
    9.17. Создание файловой системы в новом разделе См. также
    fdisk(8).


    Команда mke2fs предназначена для создания файловых систем Ext2/3. Она является частью пакета e2fsprogs, загружаемого с сайта http://e2fsprogs.sourceforge.net.
    Команда mkreiserfs входит в поставку ReiserFS и является частью reiserfsprogs. Ее можно загрузить по адресу http://www.namesys.com.
    Команда mkfs.jfs входит в семейство jfsutils (http://www-124.ibm.com/jfs/).
    Команда mkfs.xfs входит в семейство xfsprogs (http://oss.sgi.com/project/xfs). См. также
    Раздел «Введение» настоящей главы; JFS (http://www-124.ibm.com/jfs/); XFS (http://oss.sgi.com/project/xfs); ReiserFS (http://www.namesys.com/); Ext2/3 (http://e2fsprogs.sourceforge.net/ext2.html).


    В документации часто рекомендуется разместить исходные тексты ядра и дерево сборки в каталоге /usr/src/linux, но делать этого не следует. В файле README ядра прямо сказано: «НЕ ИСПОЛЬЗУЙТЕ область /usr/src/linux! Она содержит (обычно неполный) набор заголовков, используемых библиотечными заголовками ядра. Заголовки должны соответствовать библиотеке и не зависеть от текущей версии ядра». Также не стоит злоупотреблять правами root и использовать каталог, требующий доступа root. Ядро может строиться где угодно, даже на полностью изолированном компьютере.


    Описанная процедура настраивает новое ядро «с нуля». Команда make oldconfig не подходит, потому что она не изменяет старую конфигурацию, а позволяет только добавить в нее новые возможности.
    Типичное базовое ядро занимает около 1-3 Мбайт (в сжатом виде). Некоторые администраторы предпочитают усекать свое ядро до абсолютного минимума. На сервере, особенно доступном из Интернета, по соображениям безопасности стоит использовать как можно более компактное ядро. Впрочем, на настольных



    На сайтах http://lwn.net и http://kernetlrap. org публикуется самая свежая информация о новостях, изменениях, усовершенствованиях и Задачах в области ядра Linux. См. также
    Раздел «Введение» настоящей главы; электронная справка в программе настройки ядра; раздел 10.2.


    Для запуска xconfig вам понадобится Qt, qt-devel и X. Также можно использовать программу menuconfig.
    Команда make без параметров заменяет make dep, make bzimage и make modules.



    Не пытайтесь использовать старый файл .config от версии 2.4 — ядра сильно различаются, и у вас будет много проблем.
    Команда make без параметров заменяет make dep, make bzlmage и make modules. См. также
    Документация в дереве сборки ядра; раздел «Введение» настоящей главы; раздел 10.2.


    Заплатки ядра существуют в нескольких разновидностях. Заплатки rc (Release Candidates) находятся в одном шаге от включения в стабильное ядро, а кандидаты pre (PreRelease) — в двух шагах. Если вам не терпится использовать новую возможность, но вы не хотите ждать новой стабильной версии, устанавливайте заплатки rc и pre.
    Официальные версии ядра на сайте Kernel.org хорошо протестированы и готовы к эксплуатации. Версии с четными номерами являются стабильными, а версии с нечетными номерами находятся в процессе разработки. Ядро Linux активно поддерживается вплоть до версии 2.0, а в архивах можно найти все версии ядра до первых версий Linux. См. также
    patch(1); Kernel Newbies (http://kernelnewbies.org); Kernel.org (http://kernel.org).


    Обязательно прочитайте man- страницу mkinitrd, поскольку состав параметров может зависеть от дистрибутива.
    Ничто не мешает вам встроить драйвер SCSI в базовое ядро; использование initrd не является обязательным.



    Программа mkboot входит в пакет debianutils.
    Не забудьте защитить дискету от записи, сдвинув вверх небольшую защелку. Всегда проверяйте загрузочные диски, прежде чем откладывать их для хранения. Диск должен храниться вместе с той системой, для которой он был создан. См. также
    mkboot(8).


    Не забудьте защитить дискету от записи, сдвинув вверх небольшую защелку. Всегда проверяйте загрузочные диски, прежде чем откладывать их для хранения. Диск должен храниться вместе с той системой, для которой он был создан. См. также
    mkbootdisk(8).



    Для выполнения команды cdrecord необходимы привилегии root. Чаще всего для того, чтобы пользователи могли использовать cdrecord, в системе создается группа cdrecord.
    В документации иногда встречается запись вида dev=1,0
    Начальный 0 для нулевой шины SCSI часто не указывается. И все же проще ввести лишнюю цифру и не оставить ни малейшей неоднозначности. В ядре 2.6 отдельно задавать код устройства не нужно. В командной строке достаточно передать имя /dev:
    $ cdrecord dev=/dev/hdc <команды> См. также
    cdrecord(1).



    В Debian данные конфигурации модулей хранятся в файлах /etc/modules и /etc/modutils/idecd_opts. Включите в /etc/modules строку
    ide-scsi Затем включите в /etc/modutils/idecd_opts строку
    options ide-cd ignore="hdb hdc"
    Для ядра 2.6 никакие особые действия не нужны, достаточно указать в командной строке имя /dev:
    $ cdrecord dev=/dev/hdc <команды> См. также
    grub(8), lilo(8).


    В представленном решении все команды выполняются пользователем root. Это сделано для простоты, потому что команды mount, mkisofs и cdrecord требуют привилегий root. Чтобы пользователи могли выполнять команду mount, используйте sudo. Для выполнения команд mkisofs и cdrecord создайте группу cdrecord. Назначьте ее владельцем mkisofs и cdrecord и включите пользователей в группу cdrecord.
    Помните, что в ядре 2.6 эмуляция IDE-SCSI не нужна, поэтому в командной строке cdrecord можно просто указать имя /dev:
    # cdrecord dev=/dev/hdc <команды>
    В этих нескольких командах выполняется довольно большая работа. Команда mkisofs берет все файлы и упаковывает их в один большой файл .iso. Если вам когда-либо доводилось загружать дистрибутив Linux для записи на компакт-диск, он был упакован в виде файла .iso. Это часто создает проблемы для новичков, которые не понимают, почему они получили один гигантский файл вместо дерева каталогов с файлами Linux.
    Рассмотрим командную строку mkisofs более подробно:
    # mkisofs -J -r -v -V data_disk -о data.iso /disk_data
    Ключи:
    • -J — использование схемы имен Joliet для совместимости с Windows;
    • -r — использование схемы имен Rock Ridge для совместимости с Unix/Linux. Все файлы доступны для чтения для всех пользователей;
    • -v — расширенный вывод;
    • -V data_disk — определение идентификатора тома (data_disk). Это то самое имя диска, которое отображается в Проводнике Windows и в команде file - < /dev/scd* (о том, как определить имена /dev, рассказано в разделе 9.12);
    • -o data.iso /disk_data — имя нового образа .iso и файлы, выбранные для упаковки в .iso (в данном случае все содержимое /disk_data). Обратите внимание: корневой каталог /disk-data не копируется, только его содержимое.

    Монтирование .iso перед записью диска является простейшей страховкой. Если вы видите все свои файлы — можно переходить к записи. Если нет, значит, при формировании файла .iso была допущена ошибка и его придется построить заново. Проверка .iso осуществляется так:
    # mkdir /test-iso # mount -t iso9660 -o ro,loop data.iso /test-iso
    Откройте каталог /test-iso и проверьте свои файлы.
    Параметры команды mount:
    • -t iso9660 — тип файловой системы. Компакт-диски с данными всегда относятся к типу iso9660 (кроме udf, но в этом случае вам не придется создавать образ .iso);
    11.5. Формирование файловых деревьев на компакт-дисках с данными
    • -o ro,loop data.iso — параметры монтирования data.iso: доступ только для чтения, с использованием файловой системы, внедренной в файл;
    • /test-iso — каталог, созданный как точка монтирования.

    После завершения проверки .iso можно записать файл на диск.
    # cdrecord -v -eject dev=0,1,0 data.iso
    Параметры команды:
    • -v — расширенный вывод;
    • -eject — извлечение диска после записи (не обязательно);
    • -dev=0,1,0 — адрес SCSI устройства записи компакт-дисков;
    • data.iso — имя файла .iso, который содержит файлы, записываемые на диск.

    Команда cdrecord по умолчанию записывает данные на максимальной скорости, поддерживаемой устройством и диском. При возникновении ошибок попробуйте снизить скорость записи:
    # cdrecord -v -eject speed=4 dev=0,1,0 data.iso
    Современные записывающие устройства поддерживают высокую скорость записи (20Х и выше), но многие диски CD-R/CD-RW ограничиваются гораздо более низкими скоростями. Как правило, команда cdrecord автоматически подбирает оптимальную скорость записи. См. также
    cdrecord(1), mount(8), mkisofs(8); раздел 9.12; раздел 11.2.

    Как говорилось выше, ядро 2.6 не нуждается в эмуляции IDE-SCSI — просто используйте имя /dev:
    # cdrecord dev=/dev/hdc <команды>
    Не забудьте, что объем созданного временного файла равен объему копируемого диска. 11.7. Стирание диска CD-RW Команда dd производит побайтовое копирование файла. Ее параметры:
    • if — входной файл (источник);
    • /dev/scd0 — имя устройства (см. раздел 11.3). Монтирование диска не обязательно;
    • of - выходной файл (приемник);
    • /tmp/diskfile.iso — временная копия исходного файла на жестком диске. Присвойте ей любое имя по своему усмотрению, но сохраните расширение .iso. Параметры cdrecord остаются теми же, что и в разделе 11.4, но к ним добавляются два новых параметра:
    • fs=8m — размер циклического буфера: чем больше, тем лучше... до определенной степени. Помните, что перебои приводят к фатальным последствиям; параметр fs=8m создает буфер, объем которого достаточен для продолжения записи даже в том случае, если пересылка данных по каким-то причинам замедлится. Если 8 Мбайт недостаточно, вероятно, вам стоит подумать о модернизации своего компьютера. С другой стороны, значение больше 8 Мбайт не обязательно лучше, потому что операционная система может тратить время на перезагрузку таблиц MMU (Memory Management Unit). Значение по умолчанию равно 4 Мбайт.
    • -dummy — замечательная функция тестового прогона перед записью на диск. Дисковод выполняет все операции с выключенным лазером, что дает пользователю возможность обнаружить ошибки до того, как они будут перенесены на диск.
    См. также
    cdrecord(1), dd(1); раздел 11.4.



    Стирание на уровне дорожек не поддерживается большинством дисководов. Стирание дорожек или сеансов в произвольной последовательности также невозможно — необходимо начать с конца и постепенно продвигаться к началу. Если при использовании какого-либо значения параметра blank будет получено сообщение об ошибке, попробуйте добавить ключ -force:
    $ cdrecord blank=track -force
    Но скорее всего, диск был поврежден и его лучше выбросить.
    Чтобы получить список всех режимов стирания, выполните команду
    $ cdrecord blank=help
    Помните, что CD-RW имеет ограниченный цикл жизни, а количество операций перезаписи не бесконечно. Точное значение зависит от производителя и качества диска, но диск должен выдержать как минимум 100 операций перезаписи, прежде чем он станет ненадежным. См. также
    cdrecord(1).


    Компакт-диски записываются по сеансам. В каждом сеансе задействовано определенное количество секторов диска, На односеансовом диске присутствует вводная запись, одно оглавление, данные и выводная запись, присутствие которой фиксирует диск и не позволяет записать на него что-либо еще. Команда mkisofs позволяет связать несколько сеансов на многосеансовом диске. Для этого нужно знать номера начального и конечного секторов каждого сеанса. Рассмотрим параметры команды:
    $ mkisofs -о second-image.iso -J -r -V Session2 -C `cdrecord dev=0,1,0 -msinfo` \ -M 0,1,0 /path-to-new-files
    • -о second-image.iso — имя нового файла .iso (выбирается произвольно);
    • -J — схема имен Joliet для совместимости с Windows (не обязательно);
    • -r — схема имен Rock Ridge для совместимости с Unix/Linux, с открытием общего доступа к файлам для чтения. Параметр обязателен для создания многосеансовых дисков;
    • -C `cdrecord dev=0,l,0 -msinfo` — ключ -С существует под несколькими именами: CD+, CDExtra, last_sess_start, next_sess_start. Он указывает mkisofs на конечную точку последнего сеанса и начальную точку следующего сеанса. Обратные апострофы приказывают командному процессору найти и использовать значения автоматически. Их также молено сгенерировать вручную:

    cdrecord dev=0,l,0 -msinfo 12968,20172
  • -М 0,1,0 — параметр -М должен использоваться с -С. Он определяет адрес шины SCSI устройства записи CD;
  • /путь_к_новым_файлам — список файлов (или каталог), включаемых в новый файл .iso. См. также

  • cdrecord(1), mkisofs(8).


    mkisofs использует спецификацию El Torito для создания загрузочного образа, который «обманывает» PC и заставляет его думать, что он видит загрузочную дискету. См. также
    mkisofs(8).


    Описанный способ хорошо подходит для проведения архивации «на скорую руку» или перемещения большого количества файлов, но не используйте его для регулярной архивации. Если хотя бы один фрагмент будет испорчен, восстановить данные будет довольно трудно (особенно из сжатых файлов).
    О проведении масштабной архивации рассказано в главе 16.
    split(1), tar(1), cat(1); глава 16.

    В последнее время появляется все больше дистрибутивов Linux в виде файлов .iso, размеры которых предназначены для записи на DVD, и это вполне естественно — некоторые дистрибутивы занимают 8 и более компакт-дисков.
    Команда growisofs заменяет cdrecord и обеспечивает интерфейс к mkisofs, так что вы сможете использовать знакомые параметры mkisofs с двумя исключениями:
    • не используйте параметр -o для указания выходного файла, потому что growisofs пишет непосредственно на DVD;
    • не используйте параметр -C, так как growisofs определяет начальную и конечную точки дорожек самостоятельно.

    Ключ -dvd-compat обеспечивает совместимость с большинством существующих дисководов DVD.
    Ключ -udf добавляет ограниченную поддержку UDF. На момент написания книги пакетная запись еще не была надежно реализована в ядре Linux. В принципе ее можно исключить, хотя ее включение «на всякий случай» обойдется всего в несколько битов метаданных,
    Утилиты dvd+rw-tools существуют в виде пакетов RPM, пакетов Debian и в формате .tar. В архиве .tar также имеется файл spec на тот случай, если вам захочется создать собственный пакет RPM.
    Форматировать новые диски DVD-RW не обязательно, потому что, начиная с версии 5.10, growisofs делает это автоматически при добавлении файлов на DVD.
    Чтобы узнать номер версии, выполните команду
    $ growisofs --version
    Программа supermount должна обеспечивать возможность вставки и извлечения дисков (например, дискет) без ввода команд mount и unmount. Она появилась в Red Hat, SuSE и других дистрибутивах, где обычно включается по умолчанию.
    Чтобы временно отключить supermount, выполните команду
    # /usr/sbin/supermount -i disable
    Повторное включение производится с параметром -i enable. К сожалению, supermount работает не очень надежно, поэтому, возможно, ее лучше отключить вообще. Для этого удалите записи supermount и /etc/fstab. Если вы предпочитаете перестраховаться, удалите пакет magicdev:
    # rpm -q magicdev 11.12. Запись аудиодиска для стандартных проигрывателей В Debian это делается командой
    # apt-get remove magic-dev См. также
    Домашняя страница dvd+rw-tools (http://fly.chalmers.se/~appro/linux/DVD+RW).



    Новые версии sox вроде бы должны поддерживать формат .mp3, но на практике это не всегда так. Выполните команду sox -h и посмотрите, какие форматы поддерживает команда. Если ваша конкретная версия sox не поддерживает .mp3, используйте mpgl23 и sox:
    $ mpgl23 -b 10000 -s filename.mp3 | sox -t raw -r 44100 -s -w -c 2 -filename.wav
    Параметры:
    • -b 10000 — размер буфера в байтах;
    • -s — перенаправление результата в стандартный вывод (вместо попытки воспроизведения файла);
    • sox -t raw -r 44100 -s -w -c 2 — описание формата .cdr с явным указанием спецификаций. Диск не может содержать более 99 дорожек. Впрочем, чтобы па одном диске поместилось 99 песен, эти песни должны быть совсем короткими.

    Если музыкальные файлы уже хранятся в формате .wav, вероятно, вам не придется преобразовывать их. Тем не менее не все файлы .wav имеют правильную структуру для записи на диск; в таких случаях команда cdrecord остановится и выдаст сообщение об ошибке. Преобразуйте неправильный файл .wav в .cdr при помощи sox, а затем снова преобразуйте .cdr в .wav.
    Форматы .wav и .flac обеспечивают наивысшее качество из всех форматов цифрового аудио. Всегда начинайте с них, если существует такая возможность, а потом преобразуйте их в другие форматы по мере необходимости. Чаще всего это делается для экономии места, поскольку файлы .wav и .flac очень велики. Файл .ogg обычно занимает около 1/10 объема файла .wav.
    Ogg Vorbis — открытая и не защищенная патентами технология кодирования аудиоинформации. Она не связана с лицензионными отчислениями или другими ограничениями, присущими запатентованным, закрытым форматам типа MP3.
    Формат .ogg обеспечивает хорошее качество звука при сжатии данных с потерями. Под «потерями» имеется в виду, что часть информации пропадает для уменьшения размера файла.
    MP3 — другой качественный формат сжатия с потерями. Это запатентованный, закрытый формат, поэтому его использование ограничено, код закрыт, а исполнители и распространители должны платить лицензионные отчисления. Компания «Thomson and Fraunhofer», которой принадлежат права на формат MP3, включают в него поддержку DRM (Digital Rights Management, а проще говоря, ограничение копирования). См. также
    cdrecord(1), sox(1), normalize(1).


    Всегда проверяйте диски аварийного восстановления перед тем, как их использовать.
    GRUB использует собственную схему нумерации разделов; отсчет начинается с 0, а не с 1. Диски IDE и SCSI обозначаются hd, а флоппи-дисководы обозначаются fd.
    Таблица разделов Linux:
    • 1-4-первичныеразделы;
    • 5 и выше — расширенные разделы.

    В GRUB она принимает следующий вид:
    • 0-3 — первичные разделы;
    • 4 и выше — расширенные разделы

    Дополнительные диски обозначаются hd1, hd2 и т. д. Таким образом, hd0,3 — то же самое, что /dev/hda4, а hd1,5 соответствует /dev/hdb6. См. также
    Раздел «Введение» настоящей главы; раздел 12.7; раздел 12.9; The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.


    При выполнении трех команд, о которых говорилось ранее, происходит следующее:
    grub> root (hd0.0) Назначение корневого устройства grub> setup (hd0) Установка GRUB в MBR grub> quit Выход из GRUB
    12.4. Установка GRUB сценарием grub-install См. также
    Раздел 12.7; раздел 12.9; The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.


    Вероятно, update- grub не создаст полный файл menu.lst в системе с альтернативной загрузкой, но по крайней мере вы сможете загрузить операционную систему Linux. После этого в menu.lst можно будет добавить записи других операционных систем. См. также
    grub-install(5); info grub; The Grub Manual (http://www.gnu.org/software/manual/ grub.html).


    В большинстве современных дистрибутивов Linux GRUB устанавливается по умолчанию. Проследите за тем, чтобы ваши дистрибутивы не установили LILO.
    QTParted — превосходная графическая утилита для создания, удаления, перемещения и изменения размеров дисковых разделов. Программа QTParted включена в Knoppix, поэтому при желании вы можете настроить разделы перед установкой Linux. Изменения также можно внести после установки, даже если раздел уже содержит данные. Разумеется, сначала необходимо создать резервную копию всех данных. QTParted хорошо справляется со своей работой, но изменение таблицы разделов чревато неприятностями.
    Размещение /swap в автономном разделе повышает быстродействие системы; кроме того, такой раздел может использоваться совместно разными системами при альтернативной загрузке. Выделение /home в автономный раздел позволит вам использовать содержимое в разных экземплярах Linux, а также проводить установку и удаление систем без восстановления данных из архива.
    Linux позволяет создать на диске IDE до 63 разделов: 3 первичных раздела и 4 раздел, содержащий до 60 логических разделов в одном расширенном разделе. Диски SCSI ограничиваются 15 разделами: 3 первичных и 12 логических в одном расширенном разделе. См. также
    fdisk(8); глава 13; домашняя страница QTParted (http://qtparted.sourceforge.net).

    Программа установки Libranet автоматически находит существующие разделы виртуальной памяти, поэтому выбирать их во время установки не нужно.
    Вы можете отредактировать файл menu.lst в любом из новых экземпляров Linux. Просто смонтируйте загрузочный раздел:
    # mkdir /bootpartition # mount /dev/hda1 /bootpartition # vim /bootpartition/boot/grub/menu.lst
    В этом проявляются некоторые преимущества использования загрузочного
    раздела — вы всегда знаете, где он находится, а его содержимое надежно изолировано от корневых файловых систем.
    Вероятно, разбиение диска на разделы является самой важной частью построения системы с альтернативной загрузкой. На физическом жестком диске могут существовать только четыре первичных раздела, поэтому старайтесь по возможности использовать логические разделы; в противном случае разделы быстро кончатся. См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub. 12.7. Определение параметров загрузки в командной консоли GRUB

    Если вы не уверены в том, что в системе использовались стандартные схемы выбора имен ядра, запросите у GRUB все содержимое /boot. Введите строку kernel /boot и нажмите клавишу Tab:
    grub> kernel /boot/<tab> System.map System.map-2.4.21 System.map-2.6.3 boot grub config-2.4.21 config-2.6.3 splash.xpm.gz vmlinuz vmlinuz-2.4.21 kernel-of-truth-2.6.3
    Похоже, мы обнаружили ядро 2.6 со странным именем kernel-of-truth-2.6.3. Несмотря на глупое имя, оно может работать точно так же, как его родственники с более вменяемыми именами.
    Автоматическое расширение имен клавишей Tab позволяет легко проводить поиск в целых файловых системах. Эта возможность особенно полезна для исследования незнакомых систем, потому что вы можете начать с корня:
    grub> root (hd0,6) grub> find /<tab> Possible files are bin dev etc lib mnt opt tmp sys var usr boot home proc sbin root cdrom floppy initrd
    Однако это открывает большую брешь в системе безопасности, так как любой пользователь, имеющий доступ к консоли GRUB, сможет прочитать любой файл в системе командой cat:
    grub> cat /root/secretpersonalstuff.txt grub> cat /etc/shadow
    В разделе 12.14 рассказано, как закрыть эту брешь посредством парольной защиты GRUB.
    Команда GRUB находит корневые устройства и ядра независимо от того, где они находятся. Допустим, в системе установлены два жестких диска IDE. На втором диске корневая файловая система Linux установлена в каталоге /dev/hdb5. Загрузка производится следующим образом:
    grub> root (hd1.4) grub> kernel /boot/vmlinuz-2.4.21 ro root=/dev/hdb5 grub> boot
    В незнакомой системе можно поручить GRUB поиск всех установленных жестких дисков:
    grub> root (hd<tab> Possible disks are: hd0 hd1 См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub. 12.8. Настройка загрузочного раздела


    Запутались? Помните, что и имя раздела не является именем каталога, потому что раздел — не каталог, а точке монтирования можно присвоить любое имя. GRUB ничего не знает о точках монтирования — загрузчик читает файловые системы до того, как они будут смонтированы-. Таким образом, если в загрузочном разделе не существует каталога /boot, GRUB не увидит /boot/grub, а только /grub. Хотя наличие каталога /boot не является строго обязательным, соблюдение этих правил существенно упростит вашу жизнь. См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.

    Запомните, что корневое устройство, заданное строкой
    root (hd0.0)
    определяет местонахождение каталога /boot, а в обозначении hd0, 0 используется собственная система нумерации разделов GRUB. В строке
    kernel /boot/vmlinuz-2.4.22-1 root=/dev/hda2 ro
    параметр root определяет корневую файловую систему с использованием dev-имени ядра. См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.
    12.10. Настройка menu.lst


    Определения глобальных параметров конфигурации:
    • default 0 — определение загрузочной строфы по умолчанию. Строфы нумеруются последовательно, начиная с 0, поэтому обозначение default 0 соответствует первой строфе;
    • timeout 5 — промежуток времени, по истечении которого загружается запись по умолчанию;
    • color cyan/blue white/blue — цветовая схема загрузочного меню GRUB. Первая часть (cyan/blue) определяет цвет текста и фона, а вторая (white/blue) — цвета выделенных строк текста. Список цветов приведен в руководстве GRUB и в описании info grub;
    • splashimage(hd0.0)/boot/splash.xpm.gz; foreground bbbbbb; background 000000 — заставку, входящую в ваш дистрибутив, можно заменить любым изображением по вашему выбору (см. раздел 12.16). Параметр splashimage задает путь к изображению. Также необходимо задать цвет текста и фона для отображения шрифтов с использованием стандартных шестнадцатеричных цветовых кодов HTML.

    Параметру default также можно присвоить значение saved. При использовании default saved также необходимо включить в загрузочные строфы строку savedefault:
    title Libranet GNU/Linux, kernel 2.4.21 root (hd0.0) kernel /boot/vmlinuz-2.4.21 root=/dev/hda1 savedefault
    В этом случае последняя строфа, использованная при загрузке, по умолчанию будет использоваться при следующей загрузке. Во многих дистрибутивах строка savedefault включается в загрузочные строфы, но параметр default saved отсутствует, поэтому механизм не работает. См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub; раздел 12.6.


    Последние три параметра строки стоит рассмотреть подробнее:
    • rootnotverify — не пытаться читать или монтировать раздел;
    • makeactive — установить флаг загрузочного раздела (необходимо для Windows);
    • chainloader +1 — ссылка на загрузчик операционных систем, не поддерживаемых GRUB напрямую (Windows относится к их числу).

    Существует более простой способ организации совместной работы Windows 95/98/ ME с Linux: сначала установите Windows 95/98/ME, а затем добавьте Linux. В этом случае программа установки автоматически запишет GRUB в MBR и создаст запись для Windows в меню GRUB. См. также
    Microsoft Knowledge Base Article 217210: «How to Multiple Boot Windows XP, Windows 2000, Windows NT, Windows 95, Windows 98, Windows ME, and MSDOS»; раздел 9.16; The Grub Manual (http://www.gnu.org/software/manual/grub.htmL).


    Если потребуется организовать альтернативную загрузку нескольких версий Windows, начните с самой старой и устанавливайте их по порядку, вплоть до самой новой. При этом вы можете установить только один экземпляр Windows 95/98/ ME, потому что эти системы, в отличие от Windows NT/2000/XP, не поддерживают альтернативную загрузку.
    Для всех версий Windows можно использовать один первичный раздел, разделив его на несколько логических разделов. Для создания разделов и их форматирования следует использовать программу установки Windows NT/2000/XP; не используйте программу Linux fdisk. См. также
    Microsoft Knowledge Base Article 217210: «How to Multiple Boot Windows XP, Windows 2000, Windows NT, Windows 95, Windows 98, Windows ME, and MSDOS»; The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub; раздел 12.13.


    Флоппи-дисководы постепенно исчезают с компьютеров, особенно с портативных. Даже в ноутбуках, заменяющих настольные компьютеры, вместо флоппидисковода часто устанавливается комбинированный дисковод CD-ROM/DVDROM/CD-R/RW. См. также
    Домашняя страница Knoppix (http://www.knopper.net); The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.


    Разрешения на доступ к файлам являются атрибутами файловой системы. GRUB работает вне файловых систем, поэтому каждый, кто имеет доступ к командной консоли GRUB, сможет прочитать любой файл в системе.
    Даже если вы потеряете пароль GRUB, это еще не катастрофа. Загрузите систему с диска аварийного восстановления и отредактируйте файл menu.lst. В этом проявляется старый принцип безопасности в Unix: «При наличии физического доступа к компьютеру с ним можно сделать все, что угодно». См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.


    Пароли GRUB и строка lock особенно полезны на общих рабочих станциях — например, в учебных залах, лабораториях и на рабочих местах. Тем не менее любой пользователь, обладающий физическим доступом к компьютеру, сможет использовать загрузочный диск аварийного восстановления и получить неограниченный доступ. Чтобы этого не произошло, можно запретить использование аварийных дисков в программе настройки BIOS, но не забывайте, сколько существует различных загрузочных устройств: дискеты, компакт-диски, устройства USB, Jaz/Zip, Ethernet Wake-on-LAN, SuperDisk... и наверное, это еще не все. Завершив настройку, установите пароль на вход в BIOS. См. также
    The Grub Manual (http://www.gnu.org/software/manual/grub.html); info grub.

    Семейство ImageMagick состоит из нескольких утилит командной строки:
    • animate
    • composite
    12.17. Загрузка Linux с использованием LILO
    • conjure
    • convert
    • display
    • identify
    • import
    • mogrify
    • montage

    Отдельной команды imagemagick не существует. За подробностями обращайтесь к imagemagick(1).
    Попробуйте провести поиск в Google по словам «grub splashimage». Вы найдете всевозможные галереи графических изображений, а также рекомендации и полезные приемы по их созданию. См. также
    imagemagick(1), gzip(1), info grub; The Grub Manual (http://www.gnu.org/software/manual/grub.html).


    Команда liloconfig хорошо подходит для создания базового файла lilo.conf; после этого файл проще и удобнее редактировать вручную. При каждом изменении /etc/lilo.conf необходимо запускать LILO, чтобы внести изменения в MBR:
    # /sbin/lilo -v
    Параметр -v определяет уровень детализации вывода, а его значения лежат в интервале от 1 до 5:
    # /sbin/lilo -v5 См. также
    lilo(8), lilo.conf(5); /usr/doc/lilo или /usr/share/doc/lilo; «The Large Disk Howto» на tldp.org.


    Когда в системе установлено несколько версий Windows, загрузчик Windows всегда относится к первой из них. Таким образом, если в /dev/hda1 установлена система Windows 95, а в /dev/hda2 — Windows 2000, в LILO все равно включается ссылка на /dev/hda1. См. также
    lilo(8), lilo.conf(5); /usr/doc/lilo или /usr/share/doc/lilo; Microsoft Knowledge Base Article 217210: «How to Multiple Boot Windows XP, Windows 2000, Windows NT, Windows 95, Windows 98, Windows ME, and MS-DOS».


    В мире Linux существует огромное количество всевозможных загрузочных дисков. Если вам удастся загрузить систему, вы сможете исправить любые ошибки. Обязательно проверьте установочные диски своего дистрибутива, потому что на них часто имеются средства аварийного восстановления, приспособленные для вашего дистрибутива, в том числе и утилиты для переустановки загрузчика. См. также
    lilо(8), lilo.conf(5); /usr/doc/lilo или /usr/share/doc/lilo.


    Для обеспечения дополнительной безопасности на стадии загрузки заблокируйте все внешние загрузочные устройства в программе настройки BIOS и установите пароль на вход в BIOS. Решение не идеально, но по крайней мере, рядовые пользователи не смогут испортить вашу работу. См. также
    lilo(8), lilo.conf(5); /usr/doc/lilo или /usr/share/doc/lilo,.


    Команда dd выполняет побайтовое копирование. Поддержка файловых систем ей не нужна, поэтому она может использоваться для копирования блочных устройств (например, /dev/hda).
    Если в вашей системе отсутствует флоппи-дисковод, испорченную запись MBR можно восстановить при помощи диска Knoppix (см. раздел 12.13). См. также
    dd(1), mke2fs(8); раздел 12.13.

    Содержание раздела