2006 г.
Кандидатский минимум начинающего линуксоида
Алексей Федорчук
Принято считать, что для установки Windows знать ничего не нужно, тогда как Linux предъявляет очень высокие требования к начальной подготовке пользователя. Оба эти мнения, мягко говоря, спорные. Пользователю Windows любого рода, впервые устанавливающему эту систему, не худо бы иметь представление по крайней мере о двух вещах - дисковых разделах и файловых системах (или хотя бы знать о существовании FAT разного рода и NTFS). Для пользователя же Windows к этому минимуму добавляется еще и представление о пользовательских аккаунтах. Иначе систему он, конечно, установит, но использование ее будет не самым эффективным. В частности, размещение на одном разделе системы, приложений и пользовательских данных - а именно это и предлагает по умолчанию установщик Windows, - чревато в дальнейшем риском потери последних.
С другой стороны, от пользователя Linux в аналогичной ситуации никаких сверхъестественных познаний не требуется. Более того, современные юзерофильные дистрибутивы теоретически позволяют обойтись вообще без оных - их инсталляторы в силах проделать за него всю работу. Однако некий минимум сведений позволит ему принимать в ходе установки осмысленные решения.
В этой заметке я и решил собрать такой минимум сведений, который желателен пользователю, принявшему решение впервые установить Linux на своей машине. И владение которыми можно рассматривать как минимум для кандидата в линуксоиды. Как и в случае с кандминимумом научным, без этих сведений в обыденной жизни вполне можно обойтись, но наличие некоего набора базовых знаний способно облегчить жизнь пользователя как в ходе установки, так и, особенно, после нее, во время использования системы.
К числу таких базовых сведений я отнес бы представления о:
- дисковой разметке,
- файловых системах,
- файловой иерархии и монтировании,
- пользовательских аккаунтах,
- системной локали.
В круг базовых сведений следует включить также понимание различий между текстовым и графическим режимами - грубо говоря, между консолью и Иксами. Именно эти вопросы и составит предмет настоящей заметки.
Разметка диска - один из самых ответственных моментов в ходе установки Linux. Не потому, что она уж так сложна, а потому, что допущенные в ходе ее ошибки могут быть исправлены только с большим трудом и процесс этот чреват потерей данных. И потому представление о дисковой разметке - краеугольный камень кандидатского минимума будущего линуксоида.
Схема дисковой разметки - это правила дробления диска на разделы. Диски в машинах с архитектурой PC (то есть во всех обычных настольных персоналках) могут быть разделены на четыре физических части - так называемые первичные разделы, Primary Partition (почему именно так - здесь обсуждать неуместно). Один из этих первичных разделов может быть определен как раздел расширенный (Extended Partition). А уж он может далее делиться на логические разделы (Logical Partition) в практически неограниченном количестве (на самом деле ограничение составляет 63 логических раздела).
В Linux (и вообще в Unix-подобных системах) диски и их разделы предстают перед пользователем как файлы особого типа - файлы устройств (это касается и любых других устройств, и вообще в Unix все, что имеется в системе, суть файлы). Их имена этих файлов формируются по определенным правилам. Так, обычные IDE-диски (диски с интерфейсом Parallel ATA) именуются /dev/hda (Master на 1-м IDE-канале), /dev/hdb (Slave на нем же), и так далее (здесь и в последующем /dev - это каталог, предназначенный для специально для хранения файлов устройств, так что собственно имена дисковых устройств - hda, hdb и так далее). Диски с интерфейсом Serial ATA предстают перед системой как SCSI-винчестеры (почему - тайна сия велика есть), и именуются: /dev/sda, /dev/sdb и так далее. Кстати говоря, как SCSI-диски (то есть устройства вида /dev/sd?) будут выглядеть также флэш-драйвы, встроенные и сменные носители цифровых камер и мобильные винчестеры с интерфейсами USB и FireWire.
Дисковые разделы идентифицируются порядковыми номерами. Цифры с 1 по 4 отведены под первичные разделы. Раздел, определенный как расширенный, также имеет соответствующий порядковый номер (например, 2). А логические разделы внутри него нумеруются, начиная с цифры 5. Таким образом, если на мастер-диске первого IDE-канала мы имеем два первичных раздела, второй из которых определен как расширенный и поделен на три логических, соответствующие им файлы устройств будут именоваться так:
- /dev/hda1 - первичный раздел (предположим, под Windows);
- /dev/hda2 - первичный раздел, определенный в качестве расширенного;
- /dev/hda5, /dev/hda6 и /dev/hda7 - логические разделы под файловые системы Linux.
Для первого диска SATA именами файлов устройств разделов будут /dev/sda1, /dev/sda2, /dev/sda5, /dev/sda6 и /dev/sda7, соответственно.
Выше была описана наиболее распространенная (и традиционная для Linux) номенклатура дисковых накопителей и их разделов. Однако в некоторых дистрибутивах пользователь может толкнуться с иной системой их именования, например:
- /dev/ide/host0/bus0/target0/lun0/part1 - первый раздел на первом IDE-диске,
- /dev/ide/host0/bus0/target0/lun0/part2 - второй раздел на нем же,
- /dev/ide/host0/bus0/target0/lun0/part5 - первый логический раздел,
и так далее. Это - номенклатура, принятая в дистрибутивах, использующих так называемую файловую систему устройств - devfs. Она может быть представлена и в менее устрашающем варианте - с обозначением разделов как /dev/discs/disc0/part1, /dev/discs/disc0/part2 и так далее - с тем же значением.
Сама по себе devfs в современных дистрибутивах Linux отмирает, и ее номенклатура устройств встречается ныне как рудимент, поэтому распространяться о ней я не буду. На данном этапе пользователю достаточно знать, что и /dev/ide/host0/bus0/target0/lun0/part1, и /dev/discs/disc0/part1, - это не более чем эквивалент /dev/hda1, далее по аналогии.
Для создания (и удаления) дисковых разделов в Linux предназначена специальная утилита - fdisk. Это - тот жупел, которым из поколения в поколение пугали начинающих пользователей Linux. Хотя на самом деле ничего непреодолимо сложного в ней нет - просто она требует определенной аккуратности. И, кстати говоря, лишь в редких дистрибутивах (например, в Gentoo) она непосредственно используется при установке. Обычно же инсталлятор содержит какое-либо "продвинутое" средство дисковой разметки - от простейшего cfdisk до весьма изощренных DiskDruid, DiskDrake или того безымянного самого по себе инструмента, который используется для дисковой разметки в Debian Installer.
Развитые средства дисковой разметки позволяют обычно не только создать разделы на чистом диске или неразмеченном дисковом пространстве, но и манипулировать с разделами существующими - изменять размер, переносить в другую часть диска, дублировать, причем делать это без потери содержимого. Правда, часто манипулирование разделами возможно не для всех файловых систем, в отношении которых это может понадобиться. И всегда следует помнить - любой сбой в ходе манипулирования разделами (например, по питанию) приведет к безвозвратной потере данных. И потому затевать такие манипуляции без резервирования критически важной информации было бы опрометчиво.
В большинстве инсталляторов процедура разбиения диска на разделы совмещена с созданием на них файловых систем. Однако в принципе это - совсем отдельная процедура, о чем будет говориться в следующем разделе.
Разделы создаются не сами по себе, а для того, чтобы нести на себе некие файловые системы. В отличие от Windows, способной работать только с FAT любого рода и (для линии Windows NT/2000/XP) NTFS, Linux в качестве "родных" (native) поддерживает большое количество их типов: ext2fs, ext3fs, ReiserFS, XFS и JFS (в принципе Linux можно разместить и на разделе с FAT16/FAT32, но это - занятие нездоровое по ряду причин).
Файловая система ext2fs - старейшая из используемых в Linux. Отличается исключительным быстродействием, совместимостью и достаточно надежна для использования на десктопе. Правда, после системных сбоев (например, по питанию) она обязательно должна проходить проверку целостности, что при современных объемах дисков может занять изрядное время.
Файловая система ext3fs представляет собой усовершенствованный вариант предыдущей, и усовершенствование это выражено в так называемом журналировании - специальной записи файловых операций, позволяющей в случае сбоев восстановить файловую систему в целостном состоянии. Поскольку эти действия требуют определенных ресурсов, ext3fs существенно проигрывает в быстродействии своей предшественнице, но зато славится непревзойденной надежностью.
ReiserFS, XFS и JFS - также журналируемые файловые системы, каждая со своими особенностями. Конёк первой - работа с большим количеством маленьких и очень маленьких (в несколько байт) файлов, а таких файлов в любой Unix-системе очень даже много. XFS, напротив, ориентирована на работу с (очень) большими файловыми системами и отдельными файлами мультимедийной направленности, размер которых вполне может составлять не один гигабайт. Ну а JFS, разработка фирмы IBM, - это эпоним журналируемых файловых систем, с нее-то и началось понятие журналирования. Впрочем, никакими другими достоинствами ее Linux-реализация не отмечена, являясь, пожалуй, самой медленной из всего семейства.
В некоторых современных дистрибутивах имеется поддержка файловой системы Reiser4. Это - дальнейшее развитие ReiserFS, представляющее собой уже не только (а может быть, и не столько) файловую систему, а так называемое "пространство имен" (Namespace) для манипулирования дисковыми объектами. Впрочем, официально Reiser4 ядром Linux пока не поддерживается, и не смотря на фантастическое быстродействие, надежность ее вызывает определенные сомнения.
Для создания файловых систем (процесса, именуемого в DOS/Windows форматированием) предназначены специальные утилиты - mkfs.ext2, mkfs.ext3, mkfs.reiserfs, mkfs.xfs и mkfs.jfs, каждая из которых создает соответствующую файловую систему. Кроме того, существует универсальная утилита mkfs: вызванная с соответствующими опциями (какими - описано в man mkfs), она способна создать любую файловую систему из числа поддерживаемых в Linux (включая FAT16/VFAT/FAT32, но не NTFS).
Однако напрямую утилиты эти используются при установке очень редко (разве что в том же Gentoo). Обычно инсталлятор дистрибутива предлагает, создав дисковый раздел, разместить на нем и определенную файловую систему - одну из перечисленных выше (а возможно, и какую-либо еще).
Кроме собственно файловых систем, на одном из дисковых разделов, как правило, размещается еще и так называемое пространство своппинга. Оно предназначено для перемещения на него, при необходимости, содержимого оперативной памяти - например, в случае ее переполнения. Собственно говоря, в Linux существует понятие виртуальной памяти - совокупности физической RAM и пространства своппинга, которые, с точки зрения пользователя, образуют неразрывное единство.
Раздел подкачки создается специальной утилитой - mkswap, после чего нуждается в активации - это делается командой swapon. Впрочем, практически во всех инсталляторах (яркое исключение - опять-таки Gentoo) и то, и другое выполняется прозрачно для пользователя - достаточно соответствующий раздел определить как раздел подкачки.
И, наконец, файловая иерархия. Сколько бы ни было в системе дисковых разделов и файловых систем на них, для пользователя они предстают в качестве логически единой иерархически устроенной файловой системы древовидного облика (правда, дерево это обычно выглядит посталенным с ног на голову). В основании ее лежит корень (root, символически обозначаемый как /
). Обязательными же ветвями являются каталоги - /bin
и /sbin
(место помещения исполняемых файлов общесистемных программ), /etc
(каталог для конфигурационных файлов), /dev
(каталог для файлов устройств, о которых только что шел разговор), /var
и /tmp
(каталоги для всякого рода регулярно изменяемых данных) /usr
- здесь имеют место быть большинство пользовательских программ со всем сопровождающим их инвентарем, типа библиотек и документации), /home
- место пользовательских каталогов для данных.
Перечисленные ветви вовсе не обязаны быть единой частью файловой системы в физическом смысле. Напротив, каталог /home
почти всегда лежит на отдельном дисковом разделе, отдельные физически файловые системы часто составляют и такие ветви, как /usr
, /var
и /tmp
. Возможно и много более дробное разбиение файлового древа, о чем речь пойдет в следующем разделе.
Процесс включения отдельных ветвей файловой системы в единую файловую иерархию называется монтированием. Оно выполняется с помощью специальной команды - mount
, требующей указания имени файла устройства, соответствующего разделу, несущему монтируемую файловую систему, имени каталога, к которому она должна подключаться (так называемой точки монтирования) и, в некоторых случаях, опции, определяющей тип файловой системы. Например, команда
$ mount -t vfat /dev/hda1 /mnt
включит в файловую иерархию Linux, в каталог /mnt, раздел Windows с файловой системой VFAT или FAT32.
Однако на практике инсталлятор и при создании дискового раздела и определения несомой им файловой системы запрашивает и указание на точку монтирования, например, /
, /home
и так далее. И в дальнейшем эти файловые системы монтируются автоматически, в ходе загрузки системы, в соответствие с описанием, содержащемся в специальном файле /etc/fstab
(который тоже создается инсталлятором при первичной установке).
Кроме упомянутой выше опции -t
, определяющей тип файловой системы, команда mount имеет еще массу опций (см. man mount). И "дюже умные" инсталляторы подчас предлагают, кроме создания раздела, файловой системы, определения точки монтирования, еще и включить те или иные из них (о чем поговорим подробнее в следующем разделе).
Как правило, инсталлятор распознает и "чуждые" файловые системы, такие. как FAT любого рода и, в некоторых случаях, NTFS, и также обеспечивает (по умолчанию или после запроса и подтверждения пользователя) их автоматическое монтирование. Правда, доступ к разделам с файловой системой NTFS возможен обычно только в режиме чтения: запись на них требует специального инструментария и считается не вполне безопасной.
Файловые системы, расположенные на сменных носителях (CD, DVD, флэш-драйвы, внешние винчестеры с интерфейсом USB или FireWire, и так далее - вплоть до встроенных и сменных накопителей цифровых камер), при старте системы не монтируются. Этот выполняется по мере надобности - с помощью упомянутой выше команды mount
. Однако инсталляторы, как правило, в силах установить наличие, по крайней мере, CD/DVD-приводов (еще бы, ведь, скорее всего, дистрибутив с них и устанавливается, и создать в /etc/fstab
запись, обеспечивающую монтирование по упрощенной форме, например
$ mount /mnt/cdrom
для монтирования компакта. Для прочих сменных носителей, не монтируемых при старте, но используемых регулярно, соответствующие записи в файл /etc/fstab
часто приходится создавать вручную (раньше это требовалось всегда, но ныне есть и другие механизмы - см. далее). Для каждого сменного устройства это делается отдельной строкой, содержащей следующие поля, разделенные пробелами (в любом количестве) или символами табуляции:
- имя файла устройства или дискового раздела;
- точку монтирования;
- тип файловой системы;
- опции монтирования - для временно используемых файловых систем он должен иметь значение noauto, запрещающее монтирование при загрузке системы, и, скорее всего, user (через запятую), разрешающее монтирование от лица обычного пользователя, по умолчанию это имеет право сделать только root;
- условия провеки и "дампа" - для временно используемых файловых систем тут можно ограничиться нулями.
После этого процедура монтирования сведется к команде mount с одним аргументом - либо точки монтирования, либо имени файла устройства, и необходимости в каких-либо опциях также не возникнет.
Перед выключением машины (или перезагрузкой системы) все задействованные файловые системы должны быть в обязательном порядке размонтированы, что проделывается автоматически при корректном завершении сеанса - командами halt
или reboot
. Однако если в течении рабочего сеанса возникнет потребность, например, сменить компакт в CD-приводе, или извлечь флэш-драйв - размонтирование нужно выполнить явным образом, командой umount
. Которая в любом случае потребует одного аргумента, точки монтирования или имени файла устройства.
Во многих современных дистрибутивах к редактированию файла /etc/fstab
, ручному монтированию и размонтированию устройств приходится обращаться только в исключительных случаях. Корректным монтированием файловых систем при старте системы, как уже говорилось, озаботится программа установки. Что же до сменных носителей - их монтирование обеспечивается механизмом HAL (Hardware Abstration Layer), в результате чего сменные носители монтируются прозрачно для пользователя - сразу же при подключении соответствующего устройства или вставки компакт-диска в привод. Механизм HAL не использует описаний из файла /etc/fstab
, и потому никаких дополнений в него вносить не нужно (более того, они могут лишь помешать).
Правда, отключение сменных носителей при использовании механизма HAL потребует от пользователя некоторых манипуляций. А именно - щелчка правой клавишей на пиктограмме рабочего стола, соответствующего CD/DVD или флэш-драйву (USB-винчестеру), и выбора из появившегося контекстного меню - в первом случае пунктов Отмонтировать и затем Извлечь, во втором - пункта Безопасно извлечь.
Как уже говорилось выше, ошибки при дисковой разметке и создании файловых систем исправимы в дальнейшем с большим трудом (или неисправимы вообще без переустановки системы). И потому при начальной установке системы к этому вопросу следует подойти со всей ответственностью.
Для начала определимся - сколько разделов необходимо для установки Linux? Обязательными считаются два - под корневую файловую систему и под своппинг; именно такая схема разметки предлагается многими инсталляторами по умолчанию. Современные дистрибутивы обычно требуют в типовой установке не менее 2-3 Гбайт дискового пространства - и это без учета пакетов, которые, возможно, придется доустанавливать впоследствии. Так что отвести под Linux 5-7 Гбайт при нынешних объемах дисков будет не внапряг - я последнее время, дабы не ломать голову рассчетами, отдаю под это 10 Гбайт. Что же до раздела подкачки - его размер традиционно определяется равным удвоенному объему оперативной памяти и, опять такие во избежание ломки головы, остановимся на этой величине.
Часто можно услышать мнение, что при типичных современных объемах оперативной памяти (512 Мбайт - 1 Гбайт) раздел подкачки не нужен вообще. Резон в этом есть - при указанных объемах памяти своппинга в штатных ситуациях практически не происходит никогда. Однако возможно, что в последующем вам захочется использовать файловую систему в оперативной памяти - tmpfs - и задействовать ее, например, под промежуточные продукты компиляции. А поскольку оценить потребное под них место весьма трудно (OpenOffice.org, например, желает под это дело несколько гигабайт), возникает риск переполнения файловой системы. Так что повторюсь еще раз: не стоит жмотничать, и лучше отдать под раздел подкачки один-другой гигабайт, нежели потом сожалеть о его отсутствии.
Вернемся, однако, к корню файловой иерархии. Широким жестом отведя под него 5, 7 или даже 10 Гбайт, мы не учли одного: собственно пользовательских данных (а не ради них ли все и затевалось?). А потому, дабы отделить их от системы, под каталог /home
целесообразно выделить собственный раздел. Какой? Вам виднее, сколько данных у вас имеется (и предвидится). Обычно тут руководствуются одним из принципов - сколько нужно, сколько есть или сколько не жалко.
Итак, приходим к выводу о необходимости трех разделов - под корень, под своппинг и под каталог /home
. Однако это не предел дискодробительства: в ряде случаев на отдельные разделы целесообразно вынести такие ветви файлового древа, как /usr
, /var
и /tmp
(причины к тому подробно описаны в книжке Введение в POSIX'ивизм - "бумажный" ее вариант в скором времени выйдет в издательстве БХВ-Петербург под названием "Доступный Unix" - http://bhv.ru/books/book.php?id=14630). В этом случае раздел под корневой каталог можно сделать совсем маленьким (256-512 Мбайт), под /usr
и /var
отвести гигабайт 5 и 3, соответственно, а под /tmp
512-ти мегабайт хватит за глаза - в расчете на то, что в дальнейшем в него можно будет подмонтировать файловую систему в оперативной памяти - tmpfs (в известных мне инсталляторах на стадии установки штатно такой возможности не предусмотрено). Лично мне такая схема представляется почти оптимальной для пользовательского десктопа.
Наконец, при использовании в качестве загрузчика GRUB его разработчиками настоятельно рекомендуется вынести на самостоятельный раздел каталог /boot
- размером 30-50 Мбайт. Впрочем, это имеет смысл только в том случае, если на машине планируется использовать несколько (более двух - Linux и Windows) операционных систем.
В дистрибутивах Source Based, использующих портообразные системы, часто практикуется еще более дробная разметка диска. В частности, в них имеет смысл выносить на отдельные разделы не только само дерево портов, но и каталог для скачиваемых из Сети исходников. В Gentoo это будут /usr/portage
и /usr/portage/distfiles
, в Archlinux - /var/abs
и /var/cache/pacman/src
, соответственно; в общем, это следует уточнять по документации для конкретного дистрибутива. Как и то, сколько места необходимо отвести на дерево портов - раздел под каталог с исходниками если уж создавать, то лучше создать с очень хорошим запасом.
Какие разделы создавать под Linux - первичные или логические? Если ограничиться минимально необходимыми - /
, swap
, /home
, - значения не имеет: три раздела можно сделать и первичными (и еще одна Primary Partition останется про запас - например, для Windows, о чем речь пойдет чуть дальше).
Если же прибегнуть к более дробной схеме разметки - неизбежным становится использование логических разделов в Extended Partition. Причем никаких ограничений тут давно уже - на логических разделах могут лежать и корневая файловая система, и swap, и даже /boot
(не говоря уже о всех прочих). Правда, /boot
разработчики GRUB'а рекомендуют все же помещать на первичный раздел - но, повторяю, это имеет смысл только при множестве установленных на данной машине операционок. Я же, со своей стороны, настоятельно советую задействовать именно первичный раздел под каталог /home
- пусть и слабая, но дополнительная гарантия сохранности пользовательских данных. А поскольку, как завещал нам Козьма Прутков, шутки с данными глупы и неприличны, - ни одной страховой возможностью в их отношении пренебрегать не след, сколь бы призрачной она ни казалась...
Файловые системы... Тут есть немало поводов поломать голову. Если. конечно, не следовать умолчаниям инсталлятора. А он, скорее всего, предложит нынче по умолчанию ext3fs для всех ветвей файлового древа. С этим можно смело соглашаться - это будет вполне разумным (хотя и не идеальным) выбором. Однако при схеме разметки, декларированной выше как (почти) оптимальная, я бы оставил ext3fs только для корня файловой иерархии. А на разделах для прочих ее ветвей - /usr
, /var
, /tmp
, /home
, - создал бы ReiserFS. Хотя в случае с /home
- вопрос обсуждаемый: эта ветвь файлового древа может явить собой пример той самой очень большой файловой системы с очень большими файлами. И тогда для нее целесообразной может оказаться XFS...
В предыдущем разделе вскользь упоминалось, что инсталляторы подчас предлагают, кроме выбора файловой системы и точки ее монтирования, задать также некие опции монтирования. Подавляющее большинство их (а имя им - легион) служат весьма специальным целям, обычному пользователю не интересным. Однако минимум одна опция окажется для него полезной, а именно - noatime. Она запрещает обновлять время последнего доступа к файлам (которое само по себе на десктопе мало для чего нужно), способствуя некоторому повышению быстродействия файловых операций. А для файловой системы ReiserFS, в сочетании со специфичной для нее опцией notail, этот выигрыш становится видимым невооруженным (тестами) взглядом).
Подведу итоги своих долгих рассуждений, сведя их в таблицу того, как представляется мне схема разбиения диска для среднестатистического десктопа (табл. 1).
Таблица 1. Предложение по дисковой разметке и сопутствующим материям.
Каталог |
Размер раздела |
Тип раздела |
Файловая система |
Опции монтирования |
Корень (/) |
256-512 Мбайт |
Первичный, hda1 |
Ext3fs |
noatime |
Swap |
RAM*2 |
Логический, hda5 |
- |
- |
/tmp |
512 Мбайт |
Логический, hda6 |
ReiserFS |
noatime, notail |
/var |
3 Гбайт |
Логический, hda7 |
ReiserFS |
noatime, notail |
/usr |
5 Гбайт |
Логический, hda8 |
ReiserFS |
noatime, notail |
/home |
Сколько нужно |
Первичный, hda3 |
ReiserFS |
noatime, notail |
Только просьба - воспринимать предложенную схему не как догму, а руководство... даже не к действию, а к размышлению: дисковая разметка - процесс творческий, и отношения к себе требует соответствующего.
Все, что было сказано выше касательно разметки дисков, исходило из молчаливого допущения, что Linux устанавливается на чистый диск, причем в качестве единственной операционной системы. Либо - на диск, содержимым которого можно пожертвовать. Либо, наконец, просто на второй физический диск.
Однако, скорее всего, обычная пользовательская машина имеет только один диск, который целиком занят какой-либо операционной системой (и я даже подозреваю, какой), отказаться от которой наш пользователь пока морально не готов. Так что нужно обеспечить место для инсталляции Linux и ее сосуществование с Windows любого рода.
Вторая задача - мультисистемная загрузка с возможностью выбора ОС, - будет решена автоматически в процессе установки. А вот наличием свободного (точнее, неразмеченного) пространства на диске пользователь подчас должен озаботиться сам.
Правда, многие из "продвинутых" инсталляторов на стадии дисковой разметки предлагают изменение размера существующего Windows-раздела, выполняя это без потери данных. Однако такое бывает не всегда. И потому способы ручного высвобождения дискового пространства из под виндовского ига входят в минимум кандидата-линуксоида.
Если на диске установлена файловая система FAT32 (или, тем более, FAT16) - задача решается легко. Для этого в любой дистрибутив Linux входит штатное средство - DOS-программа FIPS
, которая позволяет уменьшить размер раздела FAT16 или FAT32 (но не NTFS).
Перед применением FIPS
требуется дефрагментировать (обязательно!) диск или раздел, подлежащий усекновению, загрузиться в режиме эмуляции DOS, после чего одноименной командой она запускается из командной строки. Затем следует вопрос - отвести ли все свободное место под новый раздел. Разумеется, этого делать не следует, ведь вы сохраняете Windows не для того, чтобы не иметь возможности с ним работать. Тогда вам будет предложено изменить соотношения между старым и новым разделами. Подумав хорошенько (после установки Linux воспользоваться FIPS уже не удастся), вы такое соотношение задаете, после чего подтверждаете выбор (при этом на диск записывается новая таблица разметки) и выходите из программы. Все, у вас существует пустое дисковое пространство, не приписанное пока ни к одной файловой системе, с коим вольно делать все, что угодно.
Мне не известны случаи разрушения данных при использовании программы FIPS. Однако потенциально это процедура опасная (например, при выключении питания по любой причине). И потому перед этим следует озаботиться архивированием хотя бы данных. Впрочем, привычка к регулярному резервному копированию не является вредной ни в какой операционной системе...
Сложнее, если ваш диск несет на себе файловую систему NTFS - против нее FIPS
бессилен. А ведь нынче Windows XP фабрично предустанавливается на новым компьютерах именно поверх этой файловой системы. Конечно, можно воспользоваться коммерческими программами типа Partition Magic или дисковых утилит производства фирмы Acronis. Но это - продукты платные, и покупать их из-за разовой операции смысла не имеет (а воровать, даже программы, как известно, грешно). И потому придется прибегнуть к одному из так называемых дистрибутивов Live CD - Linux-систем, работающих непосредственно с компакт-диска, без установки на винчестер.
Linux располагает инструментом для манипулирования разделами, несущими файловую систему NTFS - это parted, универсальная программа дисковой разметки. Она имеет и графические оболочки - gparted и qparted, очень простые в обращении и интуитивно понятные. Только вот для того, чтобы parted (как и его оболочки) был способен работать с NTFS, требуется еще и наличие пакета ntfstools, который далеко не всегда входит в состав дистрибутивов (в том числе и Live CD). Так что нужно подыскать соответствующий дистрибутив. Из известных мне таковым гарантированно является Knoppix - патриарх "живых" Linux-дистрибутивов.
Knoppix имеет а) удобную графическую среду KDE, пригодную для применения даже начинающим пользователем, б) содержит программу parted и ее графический front-end - qparted, и, наконец, в) содержит необходимый нам пакет ntfstools. Так что тем или иным образом обзаводимся этим дистрибутивом - скачиваем с сайта проекта или с CITKIT.ru или приобретаем через онлайновую службу торговли дисками Citkit'а; часто компакт-диски с Knoppix'ом идут в комплекте с журналами Linux-тематики, такими, как Linuxformat и Chip Linux. К слову сказать, затраты на трафик или покупку в данном случае будут вполне оправданы - Knoppix Live CD может не раз пригодиться "по жизни", например, при аварийно-восстановительных работах после серьезных системных сбоев, от которых не след зарекаться никому, а особенно начинающему пользователю Linux.
Теперь остается только загрузиться с этого Live CD, в графической среде KDE через главное K-меню (аналог кнопки Пуск в Windows) вызвать qparted, в его окне выбрать NTFS-раздел, подлежащий урезанию, и, руководствуясь интуитивно понятными соображениями, урезание это произвести - на столько, насколько нужно.
Раз уж речь зашла о пользовательских данных - возможно, у вас появится искушение использовать в качестве их хранилища уже существующий Windows-раздел. Если он несет на себе FAT любого рода - никаких сложностей не возникнет, Linux прекрасно умеет работать с этой файловой системой и на чтение, и на запись. Хотя при этом будут потеряны многочисленные преимущества нативных файловых систем Linux, как то: надежность, быстродействие, возможности разграничения доступа, и так далее. А вот если Windows-данные лежат на NTFS-разделе - все гораздо сложнее. Штатно Linux позволяет работать с этой файловой системой только в режиме чтения. Конечно, ядро Linux можно пересобрать и так, чтобы оно было способно записывать на NTFS-разделы, но а) запись эта до сих пор считается не вполне безопасной, и б) пересборка ядра - не то занятие, с которого следует начинать знакомство с Linux (хотя пользователи моего поколения именно с этого обычно и начинали). Так что лучше все-таки не жадничать, и предусмотреть для будущей инсталляции Linux место под собственные данные.
Таким образом, при использовании двух ОС на одной машине схема дисковой разметки из таблицы 1 приоритет следующий вид (табл. 2).
Таблица 2. Схема дисковой разметки при наличии двух ОС
Каталог |
Размер раздела |
Тип раздела |
Файловая система |
Опции монтирования |
Раздел для Windows |
Сколько можно |
Первичный, hda1 |
NTFS или FAT32 |
- |
Корень (/) |
256-512 Мбайт |
Первичный, hda2 |
Ext3fs |
noatime |
Swap |
RAM*2 |
Логический, hda5 |
- |
- |
/tmp |
512 Мбайт |
Логический, hda6 |
ReiserFS |
noatime, notail |
/var |
3 Гбайт |
Логический, hda7 |
ReiserFS |
noatime, notail |
/usr |
5 Гбайт |
Логический, hda8 |
ReiserFS |
noatime, notail |
/home |
Сколько нужно |
Первичный, hda4 |
ReiserFS |
noatime, notail |
Обращаю внимание - тут нам и пригодился еще один первичный раздел, не использованный в схеме таблицы 1.
Далее, пользователю хорошо бы иметь представление об учетных записях пользователей (иначе говоря, пользовательских аккаунтах). Linux - система многопользовательская, и на одной машине могут одновременно работать несколько пользователей. Для чего они должны авторизоваться - то есть ввести свое уникальное имя пользователя (логин) и подтверждение аутентичности - пароль. Разумеется, на настольной, особенно домашней, персоналке все эти пользователи физически представляют одно лицо - себя, любимого. Так, у меня на домашней машине, как правило, существует два пользователя - от лица одного я выполняю свою обычную работу (например, сочиняю эти строки), вторая же учетная запись предназначена для всякого рода экспериментов.
Каждый пользователь получает в свое распоряжение собственный домашний каталог (один из подкаталогов /home
, имеющий вид /home/username
), в отношении которого располагает всей полнотой прав - право на чтение, запись, исполнение файлов (тех, которые в принципе могут исполняться). В отношении же каталогов других пользователей его права, обычно, ограничены только возможностью чтения и, может быть, исполнения. Также и прав на изменение общесистемных каталогов пользователи не имеют.
За одним-единственным исключением - в системе имеется, как правило, пользователь с логином root (не путать с корневым каталогом), по русски называемый обычно суперпользователем или администратором. Он обладает правами на изменение всех файлов и каталогов системы, в том числе и общесистемных. Именно от лица суперпользователя следует производить настройку системы и устанавливать всякие дополнительные программы.
Аккаунт администратора системы почти в обязательном порядке создается на стадии начальной установки системы - для этого инсталлятор предлагает ввести пароль суперпользователя в специальной строке (панели) и затем повторить его для проверки. Обратим внимание - в целях обеспечения безопасности от классового врага, подглядывающего из-за спины, ни в первом, ни во втором случае вводимые символы пароля на экране не отображаются.
Вслед за этим инсталлятор обычно предлагает создать учетную запись обычного пользователя. Здесь от пользователя требуется задать уникальное учетное имя, иногда - свое реальное имя (оно может быть любым - с паспортными данными система не сверяется) и опять-таки дважды повторить пароль. Обычно на стадии первичной установки создается единственный пользовательский аккаунт, но некоторые инсталляторы позволяют создать произвольное их число.
При входе в систему, как уже было сказано, от пользователя потребуется зарегистрироваться - то есть в ответ на приглашение login ввести свое учетное имя и затем, в ответ на приглашение password, подтвердить его паролем. Авторизация может происходить в текстовом режиме или посредством специальных графических программ. В последнем случае перед ним открываются еще некоторые дополнительные возможности - например, выбрать рабочее окружение для данного сеанса, оконный менеджер или интегрированную графическую среду (о чем будет речь в последнем разделе).
При входе в систему вольно авторизоваться как самим собой (то есть обычным пользователем), так и администратором. Однако следует свято придерживаться правила: не выполнять от лица последнего обычную работу (выход в Интернет, обработку текстов, чтение почты и так далее). Аккаунт суперпользователя предназначен исключительно для действий по настройке системы, установки и удаления программ, и так далее. Вся текущая работа должна производиться после регистрации обычным пользователем. Для единичных же действий, требующих привилегий администратора, существует несколько методов временного получения таковых.
В последнее время в ряде дистрибутивов появляется тенденция вообще отказываться от создания учетной записи суперпользователя на стадии инсталляции (типичным примером выступает семейство дистрибутивов Ubuntu). Конечно, его можно создать или при специальном режиме установки, или впоследствии, но идеологически правильным в таких системах будет именно временное получение суперпользовательских прав для выполнения тех или иных административных действий. Что не только способствует общей безопасности системы, но и снижает риск ее случайного повреждения вследствие ошибок пользователя.
Понятие, необходимое пользователю, существующему за пределами США с ее английским американским языком, - есть понятие локали. Локаль (locale) - это совокупность языково-культурных особенностей, таких, как страна, язык, набор символов, формат представления чисел, даты и времени, денежной единицы. Для пользователя самыми важными локально-зависимыми параметрами оказываются страна, язык и набор символов. Так, страна Россия (RU) подразумевает русский же язык (ru; это не так очевидно, как кажется - страна Украина кроме украинской же локали имеет также и русскоязычную), но многие наборы символов (charset, называемые также кодировками): KOI8-R, CP866, CP1251, ISO8859-5 и еще несколько полузабытых. Такое положение сложилось исторически и не влекло за собой ничего кроме путаницы. И потому в последнее время на роль универсальной, отменяющей кодировки, локали претендует UTF8. Правда, пока желаемой унификации с ее помощью не достигнуто.
Linux - явление интернациональное, и практически все современные его дистрибутивы теоретически поддерживают все возможные в современном мире локали, в том числе и основные русские. Обычно локализация системы выполняется в начале установки и часто сводится к выбору языка, что влечет за собой не только русификацию меню программы инсталляции, но и принудительную установку всех остальных локально-зависимых параметров, в том числе и набора символов (таковым обычно сейчас выступает UTF8). Однако в ряде дистрибутивов возможно независимое определение языка, страны и набора символов. В отношении последнего пользователю, таким образом, предоставляются варианты выбора, практически всегда включающие KOI8-R и UTF8, иногда также CP1251 и другие.
Установки правильной локали недостаточно для полной русификации системы. Это требует также подключения кириллических шрифтов и раскладок клавиатуры с поддержкой кириллицы, а также переключателя с латиницы на кириллицу. Соответствующие действия обычно выполняются инсталляторами. Причем в одних случаях они распространяются и на текстовый, и на графический режим, в иных же - только на последний. И тогда дело кириллизации консоли предоставляется самому пользователю. Как именно - распространяться не буду, на сей счет существует немерянное количество руководств.
И последнее, о чем следует знать, - это о текстовом (консольном) и графическом режимах работы. Ибо непонимание их отличий является источником множества недоразумений, связанных, например, с поддержкой видеокарт, различием клавиатурных раскладок в консоли и в Иксах, и так далее.
Так вот, Linux изначально предназначался для работы в текстовом режиме. В коем и поддерживает все видеокарты, соответствующие стандарту VESA - то есть все, изготовленные человечеством за последние полтора десятка лет. Правда, в ядре его есть и поддержка собственно графического режима - через так называемый линейный кадровый буфер(frame buffer). Однако программ, использующих такой режим, очень немного.
Основным же способом вывода графики в Linux является оконная система X (X Window System) или, в просторечии, Иксы. Это - не часть Linux'а, а именно самостоятельная система, предназначенная для работы поверх любых Unix-подобных операционок (и не только их). Тем не менее, она стандартно входит во все дистрибутивы Linux общего назначения, за исключением специализированных (например, сугубо серверных). И часто устанавливается по умолчанию.
Установить Иксы мало - их нужно еще и должным образом настроить. В понятие это входит определение видеокарты, характеристик монитора, мыши, установка экранного разрешения, и так далее. С большинством вопросов, касающихся распознавания "железа", успешно справляются инсталляторы юзерофильных дистрибутивов, и соответствующие параметры устанавливаются автоматически (хотя тут часто допустимы и ручные коррективы). А вот доведение до конца локализации предоставляется пользователю: он может указать желаемую клавиатурную раскладку (например, русскую), ее вариант (в современных условиях обычно winkeys - для Windows-маркированных клавиатур), переключатель с латиницы на кириллицу, и так далее.
В некоторых дистрибутивах (Gentoo, Archlinux) автоматическая настройка Иксов при первичной инсталляции не предусмотрена. В этом случае пользователю придется выполнить ее самому. Впрочем, современные средства автоконфигурирования в Иксах делают этот процесс не очень сложным, хотя и требующим ручной доводки (в отношении экранных шрифтов и клавиатурных раскладок).
Однако и настройкой Иксов дело не заканчивается. Так как сама по себе оконная система X не способна выполнить никакие пользовательские задачи. Для этого она требует специальной программы - менеджера окон или интегрированной рабочей среды (так называемого пользовательского десктопа). Выбор таковых развитые инсталляторы также предоставляют пользователю.
И, наконец, последнее. Традиционный способ авторизации в Linux - задание логина и пароля в текстовом режиме. После чего Иксы можно (и обычно - нужно) запустить вручную специальной командой. Однако возможна и автоматическая загрузка Иксов при старте системы - и сейчас в юзерофильных дистрибутивах именно это, как правило, и практикуется. В этом случае авторизация происходит посредством специальной программы - десктоп-менеджера. Который, помимо всего прочего, позволяет обычно выбрать менеджер окон или интегрированную среду.
Вот и все, что, по моему мнению, необходимо знать кандидату в линуксоиды перед установкой своего первого дистрибутива. Возможно, я упустил какие-то важные для начинающего ведения. И поэтому буду признателен за соответствующие дополнения, коррективы и вообще комментарии. Высказать их можно как по почте, так и в специальном топике форума POSIX.ru.