Ubuntu 10. Краткое руководство пользователя

Колисниченко Д. Н.

Часть V

Ubuntu для опытного пользователя

 

 

Пятая часть книги предназначена опытным пользователям. В ней мы будем напрямую (в обычном текстовом редакторе, без использования конфигураторов) изменять некоторые конфигурационные файлы системы, поэтому все, что вы будете делать (даже под моим руководством), вы будете делать на свой страх и риск. Фактор человеческой ошибки никто не исключал. Можете ошибиться вы, когда будете перепечатывать строки конфигурационных файлов из книги, могу ошибиться и я. Так что будьте предельно осторожны!

 

Глава 19

Настройка загрузчика GRUB2

 

19.1. Несколько слов о GRUB2

Загрузчик GRUB (GRand Unified Bootloader) считается более гибким и современным, чем LILO (Linux Loader). Благодаря иной схеме загрузки операционных систем GRUB понимает больше файловых систем, нежели LILO, а именно: FAT/FAT32, ext2, ext3, ReiserFS, XFS, BSDFS и др.

Но время не стоит на месте. В свое время загрузчик GRUB пришел на смену LILO, поскольку последний не поддерживал загрузки с разделов, начинающихся после 1024-го цилиндра. Об этой проблеме знает, наверное, каждый опытный Linux-пользователь — ведь всего несколько лет назад она была актуальной (пока все дистрибутивы не перешли на GRUB). Точно такая же участь постигла и GRUB — на его место пришел GRUB2, умеющий загружаться с разделов файловой системы ext4. А загрузка с ext4-разделов просто необходима современному дистрибутиву.

Дальнейшая разработка GRUB полностью прекращена, к нему выпускаются лишь патчи. Имеется и патч, добавляющий в GRUB загрузку с файловой системы ext4. Я проделал следующий эксперимент. В Ubuntu 9.10 по умолчанию установлен GRUB2. Я его удалил (с сохранением конфигурационных файлов), затем установил GRUB (имеющаяся в составе версии 9.10 версия GRUB как раз поддерживает ext4), создал вручную его конфигурационный файл и перезагрузил систему — она загрузилась без ошибок. Однако учитывая, что будущее все-таки за GRUB2, я вернул его обратно на заслуженное место.

Примечание

На скриншотах GRUB2, приведенных в этой книге, вы можете увидеть надпись GNU GRUB version 1.98. Так что же за версию GRUB мы рассматриваем — 1,98 или все-таки 2? Как выясняется, финальная версия GRUB2 до сих пор не вышла, и никто не знает, когда выйдет, но везде, в том числе и в репозиториях, эта версия называется GRUB2. Разработчики загрузчика специально применили нумерацию 1,98, чтобы показать, что пока это не финальная версия. А разработчики дистрибутивов начали ее активно использовать.

Но GRUB2 — не просто набор патчей для GRUB, это полностью новая разработка, созданная с «нуля». Именно поэтому у GRUB2 совершенно другой формат конфигурационного файла.

Примечание

В Ubuntu GRUB2 используется, начиная с версии 9.10 — не зря я упомянул ее ранее. И в этой версии Ubuntu, и в новой — 10.04 — имеется один небольшой «глюк», связанный с установкой тайм-аута выбора операционной системы. Чуть позже мы решим эту проблему, а пока приступим к рассмотрению конфигурационных файлов GRUB2.

 

19.2. Конфигурационные файлы загрузчика

В листинге 19.1 приведен основной конфигурационный файл GRUB2 — /boot/grub/grub.cfg. Он не поддается редактированию вручную. Для его создания используется утилита /usr/sbm/grub-mkconfig, которая генерирует этот конфигурационный файл на основе шаблонов, хранящихся в каталоге /etc/grub.d, и настроек из файла /etc/default/grub.

Если вы знакомы с синтаксисом bash, то наверняка заметили, что синтаксис grub.cfg уж очень напоминает синтаксис bash-сценариев. Как уже было отмечено ранее, параметры GRUB2 задаются в файле /etc/default/grub, а в файле grub.cfg описываются элементы меню загрузчика.

Рассмотрим описание элемента меню:

В кавычках после команды menuentry находится описание элемента меню — можете заменить этот текст на все, что вам больше понравится (в том числе и на русский текст — используя кодировку UTF-8). Далее следуют команды GRUB. Например, команда insmod ext2 загружает модуль ext2. Обратите внимание — это не модуль ядра Linux! Это модуль GRUB2, находящийся в каталоге /boot/grub (файл ext2.mod).

Команда set root устанавливает загрузочное устройство. Формат имени устройства такой же, как в GRUB. Обратите внимание — несмотря на использование в команде set root формата имени в стиле обычного GRUB, далее используются постоянные имена устройств:

root=UUID=34eaa635-ef0e-4d5c-8b61-3c22c767834b

В современных дистрибутивах в конфигурационных файлах загрузчика имен в стиле /dev/sd** вы больше не встретите, хотя их можно использовать, если вам так удобнее.

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

Теперь рассмотрим файл /etc/default/grub, содержащий параметры GRUB2 (листинг 19.2). Поскольку этот файл вы будете редактировать чаще, чем grub.cfg, то комментарии для большего удобства я перевел на русский язык.

После изменения файла /etc/default/grub не забудьте запустить команду update-grub для обновления файла /boot/grub/grub.cfg.

При редактировании конфигурации GRUB2 нужно придерживаться одной стратегии из двух возможных. Первая заключается в ручном редактировании файла grub.cfg — вы редактируете его вручную и больше не используете других программ вроде grub-mkconfig или update-grub. Вторая стратегия заключается в использовании вспомогательных программ, но тогда не нужно вручную редактировать файл grub.cfg, иначе при последующем изменении файла grub.cfg программами grub-mkconfig и/или update-grub все изменения, внесенные вручную, будут уничтожены.

Небольшая неясность имеется с командами grub-mkconfig и update-grub — когда и какую команду использовать? Конфигурационный файл grub.cfg строится на базе файлов из каталога /etc/grub.d и параметров из файла /etc/default/grub. Если вы изменили только файл /etc/default/grub, достаточно будет команды update-grub. А вот если вы изменили какой-то файл из каталога /etc/grub.d, то нужно вводить обе команды:

sudo grub-mkconfig

sudo update-grub

Надо отметить, что файлы из каталога /etc/grub.d приходится редактировать довольно редко, но все же приходится, чем мы и займемся в следующем разделе и в главе 25, когда будем устанавливать пароль загрузчика GRUB2.

 

19.3. Установка тайм-аута выбора операционной системы. Редактирование параметров ядра Linux

По умолчанию GRUB2 не отображает меню выбора операционной системы. Следовательно, вы не можете ни выбрать другую операционную систему (в том числе и Windows), ни изменить параметры ядра Linux, ни выбрать режим восстановления или режим тестирования памяти. Одним словом, такое поведение загрузчика создает определенные неудобства.

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

GRUB_HIDDEN_TIMEOUT=0

GRUB_HIDDEN_TIMEOUT_QUIET=true

# Таймаут (в секундах)

GRUB_TIMEOUT="10"

Все правильно, но в том случае, если бы GRUB2 в Ubuntu не содержал «глюка»!

Примечание

Вообще, «глюки» — это хорошо. Чем корявее будет Canonical делать свои дистрибутивы, тем больше будет работы у авторов книг и дистрибутивов на базе Ubuntu. Вы думаете, почему я создал свой дистрибутив Denix ( denix.dkws.org.ua )? Нет, не для того, чтобы гордо ткнуть себя в грудь — мол, я тоже могу сделать свой дистрибутив! А для того, чтобы после каждой установки Ubuntu пользователи могли не тратить свое личное время, часами настраивая операционную систему.

Например, чтобы побороть такое неадекватное поведение (а каким его еще назвать, если программа не реагирует на установку параметров из конфигурационного файла) загрузчика, мне пришлось потратить минут 15–20. К своему решению я пришел экспериментальным путем, поэтому не удивлюсь, если на каком-то форуме в Интернете вы найдете другое решение (не исключаю, может быть даже лучшее).

Итак, откройте ваш файл /etc/grub.d/30_os-prober:

sudo nano /etc/grub.d/30_os-prober

Найдите в нем строку:

if ["x${GRUB_HIDDEN_TIMEOUT}" = "x0"]

Далее все значения -1 во фрагменте кода, представленном в листинге 19.3, замените на 1. Строки, которые нуждаются в редактировании, выделены полужирным шрифтом. Изменять значение -1 в остальном коде, выходящем за рамки листинга 19.3, не нужно!

После внесения изменений сохраните файл и введите команды:

sudo grub-mkconfig

sudo update-grub

sudo reboot

Теперь после перезагрузки вы увидите меню GRUB2 (рис. 19.1). Для редактирования параметров ядра, которые передаются Linux, выделите загрузочную метку Linux и нажмите клавишу .

Примечание

Если вы защитили загрузчик от редактирования параметров ядра (как это сделать, будет показано в главе 25), то получите требование ввести имя пользователя и пароль (рис. 19.2), после чего сможете отредактировать загрузочную метку (рис. 19.3).

В данном случае дополнительные параметры нужно вводить после параметра splash (строка параметров начинается после служебного слова linux). Кстати, если у вас проблемы с запуском Linux, то, чтобы увидеть больше диагностических сообщений, параметры quiet и splash лучше вообще удалить. Для возврата обратно в меню GRUB2, нажмите клавишу , а для загрузки выбранной операционной системы — +.

Какие параметры ядра указать? Параметров ядра очень много, поэтому в табл. 19.1 собраны самые полезные.

 

19.4. Загрузка с ISO-образов

Предположим, вы скачали ISO-образ новой версии Ubuntu, но у вас нет «болванки», чтобы записать на нее образ и загрузиться с полученного диска. Могу вас обрадовать: «болванка» вам для этого не понадобится — GRUB2 умеет использовать ISO-образы в качестве загрузочных устройств. Просто пропишите ISO-образ в конфигурационном файле GRUB2 и перезагрузите компьютер. Новая загрузочная метка появится в меню GRUB2, и, если ее выбрать, система загрузится с ISO-образа.

Итак, создайте в каталоге /boot подкаталог iso (название, сами понимаете, может быть любым), загрузите в него ISO-образ дистрибутива. Теперь вам осталось лишь отредактировать конфигурационный файл /boot/grub/grub.cfg, добавив в него вот такую загрузочную запись (выделенный полужирным шрифтом текст нужно записать в одну строку):

menuentry "Ubuntu LiveCD" {

loopback loop /boot/iso/ubuntu.iso

linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/Ubuntu.iso noeject noprompt —

initrd (loop)/casper/initrd.lz

}

Перезагружаемся и выбираем пункт меню Ubuntu LiveCD.

 

Глава 20

Служебные программы

 

20.1. Анализатор использования диска

Вместо консольной (текстовой) утилиты df (см. разд. 21.6.1) для анализа использования диска можно использовать графическую программу Приложения | Стандартные, Анализатор использования дисков (рис. 20.1). Программа эта удобнее не только тем, что показывает графическую диаграмму, она может просканировать всю файловую систему и показать, сколько места на диске занимает та или иная папка. Для этого нажмите кнопку с изображением жесткого диска на панели инструментов, и вы увидите объем каждой папки файловой системы (рис. 20.2).

Самая первая кнопка на панели инструментов — Сканировать домашнюю папку — позволяет просканировать ваш домашний каталог, а правее кнопки с изображением жесткого диска находятся две кнопки, позволяющие просканировать произвольную папку и удаленную папку.

Используя информацию анализатора дисков, вы можете определить, в какой папке имеются лишние файлы. Из рис. 20.2 видно, что каталог /var/cache занимает 453 Мбайт — это многовато для домашнего компьютера. Оказывается, 387 Мбайт из них занимает каталог /var/cache/apt/archives/archives (рис. 20.3).

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

sudo rm /var/cache/apt/archives/*.deb

 

20.2. Системный монитор

Аналогично, для команды top в GNOME также есть графический аналог. Правда, возможности системного монитора (Система | Администрирование) значительно шире, чем у консольной команды top.

На вкладке Система (рис. 20.4) выводится общая информация о системе: версия дистрибутива, имя компьютера, тип процессора, объем оперативной памяти и т. д.

Вкладка Процессы (рис. 20.5) как раз и является аналогом top — она выводит запущенные процессы. Чтобы завершить тот или иной процесс (например, если он завис), нужно его выделить и нажать кнопку Завершить процесс.

На вкладке Ресурсы (рис. 20.6) выводится информация об использовании процессора, оперативной памяти и сети. Ubuntu довольно экономно использует системные ресурсы, посмотрите — использовано всего 219 Мбайт оперативной памяти.

Вкладка Файловые системы содержит информацию о смонтированных файловых системах. Из рис. 20.7 видно, что смонтирована корневая файловая система (/dev/sda1), флешка (/dev/sdb 1) и компакт-диск с дистрибутивом Ubuntu (Zdev/srQ).

 

20.3. Программа bum

Ранее в Ubuntu имелась программа Службы (в программной группе Система | Администрирование), позволяющая включать/отключать системные сервисы. В современных версиях Ubuntu такой программы нет. Зато можно установить программу Boot-Up Manager, которая даже лучше, чем имевшаяся программа Службы. Для установки программы откройте терминал и введите команду:

sudo apt-get install bum

Нужно отметить, что в отличие от других дистрибутивов, где по умолчанию включаются практически все установленные сервисы, в Ubuntu включаются лишь самые необходимые, поэтому вы не будете часто запускать bum (рис. 20.8), но знать о его существовании полезно.

 

Глава 21

Работа с консолью Linux

 

21.1. Консоль

Настоящий линуксоид должен уметь работать в консоли. Когда система Linux появилась, для диалога с ней существовала только консоль — командная строка, о графическом интерфейсе не было и речи. Знаете, почему UNIX и Linux отталкивали обычных пользователей? Потому что не было хорошего графического интерфейса. Поэтому в Linux работали одни профессионалы. Сейчас все изменилось — в Linux очень удобный графический интерфейс, который с удовольствием используют и профессионалы (дождались наконец-то!), забывая о командной строке. Наш дистрибутив вообще ориентирован на работу в графическом режиме, а в официальных руководствах, которые можно найти в Интернете, о консоли вообще не упоминается. А ведь она есть! В этой главе мы поговорим о том, как правильно работать в консоли. Совсем необязательно работать полностью в текстовом режиме, вы можете использовать материал данной главы для эффективной работы с терминалом — эмулятором консоли.

Обычные пользователи в консоль ни ногой — даже принципиально, мол, зачем в DOS возвращаться? Под «DOS» имеется в виду командная строка Linux. Да, ее вид не очень дружелюбен, но стоит вам поработать в консоли, и вы поймете все ее преимущества. Начнем с того, что командная строка Linux намного удобнее командной строки DOS — об этом мы еще поговорим. В консоли можно выполнять те же операции, что и в графическом режиме, причем все намного быстрее. Хотите бороздить просторы Интернета? Пожалуйста, но без картинок. Не так красиво, но зато сэкономите трафик. А на обмен электронными сообщениями это никак не влияет. В консоли также можно работать и с документами, правда, о графике тоже можно забыть. На старых компьютерах консоль позволяет эффективно использовать их ресурсы. Да, в графическом режиме на стареньком «Пентиуме» не поработаешь, зато в текстовом режиме его можно быстро превратить в очень полезный для всей сети компьютер — шлюз, через который его более мощные собратья будут получать доступ к Интернету.

Для переключения между консолями используются комбинации клавиш +, где n — от 1 до 6. Для переключения в графический режим служит комбинация клавиш +. Чтобы вернуться из графического режима в консоль используется комбинация клавиш ++, где n — номер нужной вам консоли.

Работа в консоли заключается во вводе нужной команды. Вы вводите команду (например, создания каталога, просмотра файла, вызова редактора и т. д.) и нажимаете клавишу . Команда содержит, как минимум, имя запускаемой программы. Кроме имени программы команда может содержать параметры, которые будут переданы программе, а также символы перенаправления ввода/вывода (об этом чуть позже). Естественно, вам нужно знать имя программы, а также параметры, которые нужно ей передать. Если вы помните название программы, а назначение параметров забыли, вспомнить поможет команда man. Man — это справочная система Linux. В ней есть информация о каждой программе, которая установлена в системе. Откуда система знает все обо всех программах? Разработчики программ под Linux договорились, что вместе с программой будет поставляться специальный man-файл — файл справочной системы. Понятно, если разработчик не добросовестный, он может и не создать файл справочной системы, но это случается очень редко. Чтобы получить справку по какой-нибудь программе, нужно ввести команду:

man имя_программы

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

Вам не хочется писать (даже с автодополнением) длинные команды? Тогда можно создать псевдонимы команд. Для этого в файл. bash_profile добавьте строки вида:

alias псевдоним= 'команда'

Например,

alias cfg-net='system-config-network'

Для того чтобы изменения вступили в силу, выйдите из консоли (команда logout) и заново зарегистрируйтесь.

Пожалуй, для полноценной работы с консолью вам нужно знать еще одну команду — clear. Данная команда очищает консоль (терминал). Очень полезная команда, особенно, когда вы хотите все начать с «чистого листа».

Иногда бывает полезно результаты одной программы перенаправить другой программе или записать в файл. Предположим, что есть команда cmd, которая выводит очень много информации, — вы ее просто не успеваете прочитать. Тогда вывод этой программы можно перенаправить программе-просмотрщику, например, программе less, которая с помощью клавиш и позволяет организовать просмотр длинного, как лимузин, фрагмента текста. На практике в роли команды cmd может выступить программа cat, которая используется для просмотра текстовых файлов. Если файл содержит текст, не умещающийся на одном экране, целесообразно перенаправить его программе less для комфортного просмотра. Делается это так:

cat big_file.txt | less

Вы хотите сохранить вывод программы в файл, чтобы передать потом кому-то по электронной почте? Тогда вам нужно с помощью символа > указать программе имя будущего файла:

команда > файл

Например,

dmesg > kernel.txt

Данная команда перенаправляет результаты работы программы dmesg, выводящей загрузочные сообщения ядра, в файл kemel.txt. При отсутствии файла kemel.txt он будет создан, при наличии — перезаписан. Если вы не хотите, чтобы kemel.txt был перезаписан, нужно использовать два символа >>:

dmesg >> kernel.txt

В этом случае вывод программы dmesg будет дописан в конец файла kemel.txt.

 

21.2. Команды

poweroff, halt, reboot, shutdown

С помощью меню GNOME можно легко завершить работу системы. Спрашивается, зачем нужно знать дополнительные команды для завершения работы системы? Хотя бы для того, чтобы настроить вашу систему на автоматическое выключение. Скажем, в 23:00. С помощью меню GNOME это сделать невозможно — кому-то ведь нужно будет вызвать команду меню. А вот с помощью упомянутых в этом разделе консольных команд задуманное воплотимо.

Команда reboot используется для перезагрузки системы. Для завершения работы системы служат команды halt и poweroff. Первая команда завершает работу системы, но не выключает ее питание. Вы увидите сообщение System is halted, свидетельствующее о возможности выключения питания. Данная команда предназначена для старых компьютеров, не поддерживающих расширенное управление питанием. Вторая (poweroff) завершает работу системы и выключает ее питание.

Самой «продвинутой» командой является команда shutdown — она позволяет завершить работу системы, перезагрузить систему, указать время завершения работы. Предположим, вы хотите уйти пораньше, но компьютер нужно выключить в 19:30 — вдруг некоторые пользователи задержались на работе, а вы выключите сервер — получится некрасиво. Вам поможет команда shutdown:

# shutdown — h 19:30 [сообщение]

Сообщение можно и не указывать — все равно Windows-пользователи его не увидят.

Если нужно завершить работу системы прямо сейчас, вместо времени укажите now:

# shutdown — h now

Для перезагрузки системы используется опция — r:

# shutdown — r now

Далее мы рассмотрим полезные команды Linux, которые пригодятся каждому пользователю.

 

21.3. Общие команды

 

21.3.1. Команда

arch

— вывод архитектуры компьютера

Команда arch поможет узнать тип аппаратной платформы, например: i386, i586, i686 и др.

Пример использования:

$ arch

i686

 

21.3.2. Команда

clear

— очистка экрана

Команда clear очищает экран при работе в консоли (терминале).

Пример использования:

$ clear

 

21.3.3. Команда

date

Команда date используется для вывода текущей даты. Эта команда может применяться также для установки даты, если запущена от имени администратора.

Пример использования:

$ date

# date 1705101707

Первая команда выводит дату, а вторая — устанавливает дату (при условии, что команда запущена от имени root) 17 мая (1705) 2010 года (10) и время 17:07. Как видите, установка даты осуществляется в формате ddMMyyhhmm (dd — число, MM — месяц, yy — год, hh — часы, mm — минуты).

Команда date может вывести дату в указанном вами формате. Для изучения форматов даты введите команду man date.

 

21.3.4. Команда

echo

Команда echo выводит текстовую строку, указанную в качестве аргумента, например:

$ echo "Hello world!"

Hello world!

Обычно данная команда используется в сценариях командного интерпретатора для вывода сообщений на экран.

 

21.3.5. Команда

exit

— выход из системы

Для завершения сеанса работы в системе (при условии, что вы работаете в консоли) нужно использовать команду exit. Если не завершить сеанс работы, кто угодно сможет работать в системе под вашим именем (понятно, что во время вашего отсутствия за компьютером).

 

21.3.6. Команда

man

— вывод справки

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

 

21.3.7. Команда

passwd

— изменение пароля

С этой командой мы уже знакомы. Она обеспечивает изменение пароля пользователя, который ее запустил. Суперпользователь root имеет право изменить пароль любого пользователя:

# passwd имя_пользователя

 

21.3.8. Команда

uptime

— информация о работе системы

Команда uptime (рис. 21.1) выводит статистическую информацию о работе системы: сколько времени прошло с момента последней перезагрузки (собственно, это и есть время «uptime»), сколько пользователей в данный момент подключено к системе и среднюю загрузку системы за последние 1, 5 и 15 минут.

 

21.3.9. Команда

users

— информация о пользователях

Команда выводит информацию о пользователях, подключенных к системе в данный момент. Из рис. 21.2 видно, что пользователь denis подключился к системе двумя способами: вошел и в консоли, и в графическом режиме (или по FTP, ssh, telnet — способы подключения к системе могут быть разные).

 

21.3.10. Команды

w, who

и

whoami

— информация о пользователях