Основы работы в ОС Linux

         

Что надо знать до начала компиляции


Пожалуй, самое первое, к чему нужно быть готовым, приступая к компиляции ядра, - это то, что процедура эта длительная. Так что не рассчитывайте скомпилировать ядро "между делом", в свободную минутку. Заранее планируйте, что потратите на это несколько часов, иначе вы будете вынуждены прервать процедуру посредине.

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

В-третьих, ядро версии 2.4.2 даже в архивированном (программой bzip2) виде занимает более 20 Мбайт, а после разархивации объем исходных текстов превышает 108 Мбайт. Еще столько же может потребоваться для промежуточного tar-архива, так что надо иметь не менее 250 Мбайт свободного места. Поэтому прежде чем приступить к компиляции, позаботьтесь о том, чтобы места на диске было достаточно.

В-четвертых, приготовьтесь отвечать на те вопросы, которые программа задаст вам в процессе конфигурирования ядра (а их около 500). Перевод всех этих вопросов, относящийся к версии 2.0.x ядра, можно найти в файле Configure.help, который находится по адресу http://nevod.perm.su/service/linux/doc/kernel/Configure.help.

Этот файл можно использовать и для более поздних версий, поскольку в основном вопросы, задаваемые при конфигурации, одинаковы, только появляются некоторые дополнительные в связи с появлением в ядре новых возможностей. Лучше всего скачать этот файл, распечатать его и использовать этот перевод в процессе конфигурирования ядра (см. ниже шаг 3). Если вы не смогли скачать этот файл, то после развертывания исходников ядра (см. ниже) вы найдете файл Configure.help в подкаталоге linux/Documentation. Имеет смысл просмотреть его (а лучше - распечатать) до начала конфигурирования, даже если вы не очень хорошо владеете английским.

На этом предварительные предупреждения сделаны, и я перехожу к изложению пошаговых инструкций по компиляции и установке нового ядра. В дальнейшем предполагается, что все описываемые действия выполняются с правами суперпользователя root, и что домашним каталогом является каталог /root.



Что такое ядро и когда его надо менять


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

Работа по совершенствованию ядра Linux ведется международным сообществом разработчиков постоянно, и регулярно появляются новые версии ядра. Естественно, что пользователи хотят иметь последнюю (или, по крайней мере, одну из последних) версий ядра ОС и рано или поздно вы приходите к выводу о том, что пора обновить ядро.

Можно задать вопрос: "В каких случаях это необходимо?". Действительно, если система неплохо работает со старым ядром, то стоит ли заниматься его обновлением? Основными причинами, приводящими к выводу о необходимости обновления ядра, являются:

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

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



Компиляция ядра


Вот мы и добрались до основного этапа - собственно компиляции ядра. На этом этапе Ваше участие сводится только к запуску команды make bzImage, которая служит для создания сжатого образа ядра. Снова по экрану бегут непонятные сообщения (которые просто не успеваешь воспринять). О том, что процесс компиляции завершился без ошибок, вы можете судить по появлению сообщений примерно такого вида (естественно, я привожу те сообщения, которые были выданы в процессе компиляции ядра на моем компьютере):

Root device is (3,5) Boot sector 512 bytes. Setup is 2360 bytes. System is 887 kB make[1]: Выход из каталог '/opt/kernel/2.4.2/linux/arch/i386/boot'

И в текущем каталоге должны появиться файлы System.map и vmlinux. Кроме того, в подкаталогах каталога linux тоже появляется масса новых файлов (в том числе и .o-файлы, которые упоминались выше, как мешающие повторному проведению компиляции ядра в том же каталоге).

На этом собственно компиляция ядра и заканчивается. В дополнение приведу еще три замечания из документации к ядру.

Если в качестве загрузчика вы используете LILO, то после компиляции можно выполнить команду make install, однако рекомендуется вначале проверить (и подкорректировать) конфигурационный файл LILO.Хотя такое событие и очень маловероятно, но если ваша система не может загружать ядро в формате bzImage, вы можете скомпилировать его как zImage. Однако, надо иметь в виду, что поддержка zImage будет в ближайшем будущем отменена, поэтому разработчики предлагают тем, у кого возникнут проблемы с загрузкой ядра в формате bzImage сообщить об этом (приложив детальное описание конфигурации) в список рассылки linux-kernel и Питеру Анвину (H.Peter Anvin, hpa+linux@zytor.com).И, наконец, если вы вдруг захотите создать загрузочный диск (без корневой файловой системы или LILO), вставьте дискету в дисковод A: и дайте команду make bzdisk.



Компиляция модулей


Если вы сконфигурировали какие-то драйверы как отдельные модули (выбирали при конфигурации вариант "m" при ответе на некоторые вопросы), то вы теперь должны еще выполнить команду make modules, а затем еще команду make modules_install. В файле Documentation/modules.txt можно найти дополнительную информацию по этому поводу, а также объяснение того, как использовать модули.

В завершение этапа компиляции стоит выполнить еще команду make clean, чтобы удалить образующиеся в процессе компиляции промежуточные объектные файлы (файлы с расширением .o).



Конфигурирование будущего ядра


Следующий этап заключается в конфигурировании будущего ядра. Если вы при установке обновленных версий ПО покинули каталог linux, то вернитесь в него (например, с помощью команды cd ~/linux).

Примечание



В некоторых случаях перед началом конфигурирования ядра необходимо выполнить команду make mrproper. Необходимо это бывает тогда, когда этот каталог уже использовался для компиляции ядра и надо удалить следы былых, может быть ошибочных, действий, в частности, ранее созданные файлы с расширением .o.

Собственно конфигурирование выполняется командой make config. Конфигурация в этом случае будет производиться в текстовом режиме. Процедура конфигурации будет заключаться в том, что вы должны будете последовательно ответить на серию вопросов о том, какое значение присвоить определенному параметру. На каждый вопрос предлагается обычно несколько вариантов ответа. Допустимые варианты ответа предлагаются в виде символов, заключенных в квадратные скобки. Я думаю, что смысл символов "y" и "n" пояснять не требуется. Пояснения требуют символы "?" и "m".

Символ "?" присутствует среди возможных вариантов ответа на любой вопрос и позволяет получить подсказку (конечно, по-английски). Эти подсказки и составляют содержание файла Configure.help, который упоминался выше, и перевод которого (даже не в последней версии) я очень рекомендую вам иметь под рукой.

Если вы выбираете вариант "m", это означает, что драйвер соответствующего устройства будет сконфигурирован (и впоследствии скомпилирован) в виде отдельного подключаемого модуля.

Один из вариантов ответа на каждый вопрос представлен большой буквой, что означает, что он выбирается по умолчанию (когда вы не задаете явно свой вариант выбора, а просто нажимаете клавишу <Enter>).

В процессе конфигурации ядра следует иметь в виду следующее:

включение в ядро драйвера любого устройства делает его больше и, более того, добавление ненужных драйверов в ядро может привести к проблемам, когда ядро будет пытаться обратиться к несуществующему устройству;если задать тип процессора ("Processor type") выше, чем 386, то ядро не будет работать на 386-х процессорах. Ядро обнаружит это при загрузке и откажется работать;ядро, скомпилированное с опцией эмуляции математического сопроцессора, все равно будет использовать сопроцессор, если он имеется. Функция эмуляции никогда не будет использоваться в этом случае. Правда, ядро в этом случае будет чуть больше, но зато будет работать на любых компьютерах, независимо от того, имеется ли на них сопроцессор;некоторые вопросы помечены указаниями "development", "experimental" или "debugging", которые указывают на то, что соответствующая функция или драйвер включены в ядро в виде эксперимента. Включение этих функций в ядро может сделать ядро не только больше, но и нанести ущерб стабильности его работы. Так что на такие вопросы лучше ответить "n", если, конечно, вы не ставите своей целью провести тестирование этих новых доработок в ядре;если вы компилируете ядро для использования на своем персональном компьютере, то поддержка мультипроцессорной обработки (Symmetric multi-processing support) вам, скорее всего, не нужна.


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

В заключение данного раздела замечу, что вместо make config можно использовать два альтернативных варианта команды конфигурации: make menuconfig и make xconfig. Эти команды отличаются от make config тем, что предоставляют пользователю возможность вместо ответа на вопросы производить выбор вариантов из предлагаемых меню. Команда make menuconfig работает в текстовом режиме, а make xconfig - в графическом. На рис. 17.1 представлен вид окна, которое появляется при запуске команды make xconfig.


увеличить изображение
Рис. 17.1.  Основное меню программы make xconfig


Нумерация версий ядра


Прежде, чем браться за обновление ядра вы должны четко представлять себе, что за версию вы собираетесь установить. В первую очередь необходимо иметь в виду, что разработчики ядра поддерживают две ветки ядра: стабильную и экспериментальную. Все новшества, вносимые в ядро, вначале появляются в экспериментальных версиях. И только после того, как сообщество разработчиков и добровольных тестировщиков опробует эти новшества, они переносятся в так называемую стабильную версию.

Версии ядра принято нумеровать тремя цифрами, разделенными точками, например, 2.4.8, при этом четная вторая цифра в номере ядра обозначает стабильные версии ядра, а нечетная - экспериментальные версии. Так что принимая решение об установке новой версии ядра вы должны продумать ответ на вопрос, хотите ли вы участвовать в выявлении возможных ошибок в нестабильной версии или предпочитаете работать с уже оттестированным ядром.

Как заявил Линус Торвальдс в одном из своих интервью, он предпочитает как раз заниматься экспериментальной веткой, разрабатывать код, работающий с новыми устройствами. Основным координатором разработки стабильной ветки является в настоящее время Алан Кокс, регулярно выпускающий обновленные версии или "заплатки" к стабильным версиям ядра1).



Обновление программного обеспечения


Если вы владеете английским, то неплохо просмотреть файл README в каталоге linux и файлы Changes и Configure.help в подкаталоге linux/Documentation. Впрочем, тем кто не владеет английским, тоже необходимо заглянуть по крайней мере в файл linux/Documentation/Changes. Дело в том, что в этом файле приведен состав программного обеспечения, необходимого для компиляции нового ядра.

В приводимой ниже табл. 17.1 показан его состав для случая ядра 2.4.2.

Таблица 17.1. ПО, необходимое для компиляции нового ядра

ПрограммаВерсияКак определить версию
Gnu C2.91.66gcc --version
Gnu make3.77make --version
Binutils2.9.1.0.25ld -v
util-linux2.10ocodefdformat --version
Modutils2.4.2/sbin/insmod -V
e2fsprogs1.19/sbin/tune2fs
Reiserfsprogs3.x.0breiserfsck 2>&1|grep reiserfsprogs
pcmcia-cs3.1.21cardmgr -V
PPP2.4.0pppd --version
isdn4k-utils3.1pre1isdnctrl 2>&1|grep version

Приведенные в правой колонке команды позволяют произвести проверку того, что необходимый пакет имеется, и имеет соответствующую версию (более новые версии не возбраняются). Не все перечисленные в этой таблице пакеты безусловно необходимы для компиляции ядра: если в Вашей системе нет PCMCIA-карт (PC Card), например, то вам не нужен и пакет pcmcia-cs. Я посчитал ненужными последние 4 пакета (reiserfs и pcmcia у меня нет, а удаленный дозвон и соединение по isdn я не использую), а для остальных пакетов нашел на rpmfind.net последние версии и установил их. Все указанные пакеты установились из rpm-файлов без проблем.

Примечание

Совет для "чайников" вроде меня: используйте команду rpm -Uhv paket_name, а не rpm -i paket_name.



Получение и разархивация ядра


Исходные тексты новой версии ядра можно скачать с сайта ftp.kernel.org. Как уже было сказано, bzip2-архив исходных кодов ядра версии 2.4.2 имеет объем более 20 Мбайт, так что скачать его - тоже еще проблема. Но перекачивать исходные тексты необходимо только в том случае, если вы желаете установить новую версию ядра. Если же вы просто хотите перекомпилировать существующее ядро (скажем, из-за того, что необходимо обеспечить поддержку какого-то протокола или нового оборудования), то можно обойтись и без перекачки пакета из Интернета, поскольку с дистрибутивами обычно поставляются и исходные коды (на втором диске или просто в подкаталоге SRPM). Кроме того, даже если вы захотели скомпилировать ядро новой версии, существует возможность сократить объем информации, которую необходимо скачивать из Интернета, но об этом мы поговорим в последнем разделе данной лекции. А пока будем предполагать, что вы тем или иным способом получили полный пакет исходных кодов ядра.

Поместите архив в каталог, в котором вы имеете достаточные права, например, в ваш домашний каталог. Не используйте каталог /usr/src/linux для разархивации исходников! Этот каталог содержит (обычно неполный) набор заголовочных файлов (kernel headers), которые используются заголовочными файлами библиотек (the library header files). Они должны соответствовать установленным в системе библиотекам, поэтому не стоит заранее вносить путаницу в эти файлы.

Распакуйте архив командой:

[root]# bzip2 -d linux-2.4.XX.tar.gz | tar xvf -

(где "XX" надо заменить на номер версии ядра, у меня была просто 2). Если вы скачали архив, сжатый программой gzip, то, естественно, команда будет иметь вид:

[root]# gunzip linux-2.4.XX.tar.gz | tar xvf -

Можно также воспользоваться следующим вариантом команды:

[root]# tar xvzf linux-2.4.2.tar.gz

В результате в текущем каталоге появится новая директория linux. Сделайте ее текущей с помощью команды cd.



Проверки


Документация, поставляемая вместе с ядром, советует после завершения конфигурации выполнить два действия:

Заглянуть в файл Makefile, чтобы вручную поправить некоторые значения.Дать команду make dep для установки зависимостей.

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



Установка ядра


После этого остается сделать последний шаг - установить ядро и перезагрузиться. Для установки ядра вы должны иметь права суперпользователя. (Хотя в начале лекции и было сказано, что для компиляции ядра надо иметь права суперпользователя, однако все предыдущие шаги можно было выполнить и от имени обычного пользователя. Не стоит работать от имени суперпользователя без необходимости!)

Разработчики рекомендуют вначале сохранить где-нибудь копию старого ядра на случай, если что-то пойдет не так, как задумано. Эта рекомендация особенно актуальна для случая, если вы ставите ядро из нестабильной ветки, поскольку такие версии могут содержать неотлаженный код. Кроме самого ядра надо сделать backup-копии модулей, соответствующих ядру. Если вы устанавливаете новое ядро с тем же самым номером версии, что и у работающего в Вашей системе ядра, сделайте резервную копию всего каталога с модулями перед выполнением команды make modules_install.

Для того, чтобы иметь возможность загружать новое ядро, копию образа ядра (которая после компиляции создана в виде файла .../linux/arch/i386/boot/bzImage) необходимо поместить туда, где у вас расположены загружаемые ядра (обычно это каталог /boot).

Скопируйте в каталог /boot три файла: файлы System.map и vmlinux, появившиеся в каталоге ...linux, и файл .../linux/arch/i386/boot/bzImage. Я при копировании добавил к их именам номер версии ядра, превратив их, соответственно, в System.map-2.4.2, vmlinux-2.4.2 и vmlinuz-2.4.2, чтобы не путать с теми ядрами, которые уже были в системе ранее. Переименовывать bzImage в vmlinuz в принципе не обязательно, потому что образ ядра может иметь как то, так и другое имя, и обычно располагается либо в корневом каталоге (/), либо в каталоге /boot.

Далее нам осталось только обеспечить загрузку нового ядра с помощью lilo. Для этого надо вначале подкорректировать файл /etc/lilo.conf. Ваш файл /etc/lilo.conf может иметь примерно такой вид:

boot = /dev/hda2 compact delay = 50 root = current image = /boot/vmlinuz-2.2.11-4bc label = linux read-only other = /dev/hda1 table = /dev/hda label = dos


Начиная со строки image, идут секции конфигурационного файла, соответствующие разным операционным системам, которые должны загружаться по выбору пользователя. В каждой такой секции имеется строка label. В этой строке записывается имя, которое вводится в ответ на приглашение LILO и служит для выбора пользователем загружаемой ОС.

Скопируйте секцию image и замените в новой секции название образа ядра и метку. Файл /etc/lilo.conf примет следующий вид:

boot = /dev/hda2 compact delay = 50 root = current image = /boot/vmlinuz-2.2.11-4bc label = linux read-only image = /boot/vmlinuz-2.4.2 label = linux-2.4.2 read-only other = /dev/hda1 table = /dev/hda label = dos

После того, как вы откорректировали файл /etc/lilo.conf, необходимо выполнить команду /sbin/lilo, чтобы изменения вступили в силу. Эта команда (которая в руководстве называется map-installer) обновляет карту загрузки системы. Прежде, чем запускать /sbin/lilo для модификации загрузочных процедур, выполните эту команду с параметром -t. При этом будет выполнена вся процедура инсталляции загрузчика, кроме изменения map-файла и записи модифицированного загрузочного сектора, т. е. выполнен тест нового варианта. Если добавить еще опцию -v, это позволит убедиться в том, что сделанные Вами изменения разумны.

Не стоит полностью убирать возможность загрузки предыдущей, работающей версии ядра, тем более, что это никак не мешает загрузке нового ядра, ведь LILO обеспечивает многовариантную загрузку.

Все! После переустановки LILO командами

[root]# /sbin/lilo -t -v [root]# /sbin/lilo

Вы можете перезагрузить компьютер и выбрать при загрузке новое ядро.


Установка нового ядра из rpm-пакета


Честно сказать, я довольно долгое время не решался браться за обновление ядра, поскольку первая из предпринятых мною попыток оказалась неудачной, причем до того неудачной, что мне пришлось полностью переустановить систему. Я тогда пытался установить ядро из исходных текстов. Но однажды я наткнулся в новостях на сообщение о том, что выпущен rpm-пакет с ядром 2.2.16-1. Поскольку мой опыт работы с rpm-пакетами был вполне положительным, я решился попытаться еще раз, и попытка эта оказалась вполне успешной!

Итак, вначале рассмотрим установку нового ядра, откомпилированного кем-то и представленного в виде rpm-пакета. Естественно, что первым делом надо скачать rpm-пакет с новым ядром. Если вы не ставите своей целью тестирование новшеств в ядре, то ищите rpm-пакет со стабильной версией, т. е. с четной второй цифрой в номере версии ядра (номер версии указывается в названии пакета). Я скачал ядро версии 2.2.16-1 с сервера http://rufus.w3.org/linux/RPM/.

Скачав ядро, запустите команду

[root]# rpm -i kernel-2.2.16-1.i386.rpm

По этой команде программа rpm установит в каталог /boot четыре файла: System.map-x.y.z-a, vmlinux-x.y.z-a, vmlinuz-x.y.z-a и module-info-x.y.z-a (где x.y.z-a - это номер версии нового ядра), создаст каталог /lib/modules/x.y.z-a, в котором разместит модули нового ядра, а также установит скрипт /sbin/installkernel.

Если у вас есть такое желание, вы можете предварительно (или потом) выполнить команду

[root]# rpm -qpl kernel-2.2.16-1.i386.rpm

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

Я после установки пакета с ядром решился сразу запустить скрипт /sbin/installkernel. Скрипт завис, его пришлось снимать комбинацией клавиш <Ctrl>+<C>. Тогда я стал разбираться с тем, что делает этот скрипт. Вот его полный текст:

#------------------- начало скрипта ------------------ #! /bin/sh # /sbin/installkernel - written by tyson@rwii.com # INSTALL_PATH=/boot KERNEL_VERSION=$1 BOOTIMAGE=$2 MAPFILE=$3 if [ -f $INSTALL_PATH/vmlinuz-$KERNEL_VERSION ]; then mv $INSTALL_PATH/vmlinuz-$KERNEL_VERSION \ $INSTALL_PATH/vmlinuz.old; fi if [ -f $INSTALL_PATH/System.map-$KERNEL_VERSION ]; then mv $INSTALL_PATH/System.map-$KERNEL_VERSION \ $INSTALL_PATH/System.map.old; fi cat $BOOTIMAGE > $INSTALL_PATH/vmlinuz-$KERNEL_VERSION cp $MAPFILE $INSTALL_PATH/System.map-$KERNEL_VERSION ln -fs vmlinuz-$KERNEL_VERSION $INSTALL_PATH/vmlinuz ln -fs System.map-$KERNEL_VERSION $INSTALL_PATH/System.map if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi #------------------- конец скрипта ------------------


Как видите, скрипту требуются некоторые параметры, а я запускал его без аргументов. Однако, поскольку программа rpm уже разместила в /boot файлы vmlinux-2.2.16-1, vmlinuz-2.2.16-1 и System.map-2.2.16-1, а также создала ссылки с именами vmlinuz и System.map, я решил, что осталось только перезапустить lilo. Но прежде чем запускать lilo, я подредактировал файл /etc/lilo.conf, добавив туда секцию с указанием на ядро 2.2.16 (просто скопировал секцию с меткой linux, после чего подправил строки image и label). Причем новую секцию поставил первой. Вот что у меня получилось (добавленные мной строки выделены жирным шрифтом):

#------------------- начало файла /etc/lilo.conf ----------- boot=/dev/hdb1 map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.2.16-1 label=linux-2.2.16 root=/dev/hdb1 read-only image=/boot/vmlinuz-2.2.11-4bc label=linux root=/dev/hdb1 read-only other=/dev/hda1 label=dos table=/dev/hda #------------------- конец файла /etc/lilo.conf ------------

Обратите внимание на то, что в данном случае Linux грузится со второго диска, поскольку на первом диске стоит Windows NT, и в качестве загрузчика используется NT Loader.

После этого я запустил команду /sbin/lilo, причем вначале с параметрами -t -v, чтобы посмотреть, что она будет делать, а только потом уже - без параметров, для реального исполнения. Когда команда отработала, я перезагрузился, однако на этапе загрузки система зависла, выведя строку LIL-. Пришлось воспользоваться загрузочной дискетой (заготовленной еще при установке системы) и выполнить команду

[root]# dd if=/dev/hdb1 of=/mnt/hda1/bootsect.lnx bs=512 count=1

Все правильно, команда lilo меняет загрузочный сектор, а я забыл "подсунуть" загрузчику его обновленный вариант.

Еще раз перезагружаюсь, и с радостью вижу сообщение о том, что загрузилось ядро 2.2.16-1.

Если у вас LILO является основным загрузчиком (установлен в MBR первого диска), то последнюю операцию (копирование загрузочного сектора в файл) выполнять, конечно, не нужно.


Зачем вообще нужно компилировать ядро?


Как было сказано в начале данного раздела, основная функция ядра состоит в том, чтобы обеспечить взаимодействие с аппаратурой компьютера. Обслуживание некоторых составляющих аппаратного обеспечения (таких, как память, например) напрямую встроено в ядро. Для тех частей аппаратуры, которые могут быть нестандартными, имеются драйверы устройств, которые обеспечивают взаимодействие ОС с аппаратурой. Большинство пользователей компьютеров с ОС Windows знакомы с понятием драйвера хотя бы потому, что после установки нового оборудования они вынуждены устанавливать и программные драйверы для этого оборудования. Только после этого становится возможным использовать вновь установленную аппаратную составляющую. В терминологии, принятой в Linux, драйвера называются "модулями". Таким образом, поддержка аппаратных устройств может быть обеспечена двумя способами: либо путем встраивания такой поддержки в ядро, либо путем использования соответствующего модуля (драйвера).

Компании, которые выпускают дистрибутивы Linux (такие как RedHat, Caldera, Debian и т. д.) вынуждены встраивать в ядро поддержку как можно более широкого спектра устройств, потому что они не могут заранее знать, какие устройства (модели устройств) будут установлены на компьютере конкретного пользователя. Поддержка в ядре широкого спектра устройств облегчает установку и поддержку системы для покупателей, избавляя их от ненужных сложностей.

Как результат, ядро, поставляемое в составе дистрибутива, скорее всего содержит код для поддержки устройств, которых никогда не будет на Вашем конкретном компьютере. С другой стороны, если у вас есть устройство, которое не поддерживается стандартным ядром, у вас может появиться обоснованное желание встроить поддержку этого устройства в ядро. Оптимизация ядра под конкретный набор аппаратных устройств ускоряет загрузку системы и экономит память.

Пользователи Linux имеют возможность или скомпилировать ядро с поддержкой всех устройств, имеющихся на конкретном компьютере, или скомпилировать ядро, поддерживающее минимальный набор оборудования, и загружать модули для поддержки остальных устройств. Если поддержка всего оборудования осуществляется в ядре, то такое ядро называется "монолитным". Ядро, скомпилированное таким образом, что поддержка части оборудования осуществляется с использованием модулей (драйверов), называется "модульным".

Какой тип ядра вам выбрать при компиляции? Однозначного ответа на это вопрос дать нельзя. Если вы не имеете привычки менять аппаратную конфигурацию компьютера, тогда вам лучше встроить поддержку всех имеющихся компонентов в ядро. Необходимо только иметь в виду, что чем больше устройств поддерживаются непосредственно ядром, тем больше его объем. А поскольку ядро полностью загружается в оперативную память, повышаются требования к объему памяти. На медленных компьютерах из-за большого размера ядра может снизиться общая производительность. Если же вы часто меняете конфигурацию компьютера (например, у вас имеются съемные жесткие диски или другие временно подключаемые устройства), то, вероятно, имеет смысл использовать для управления ими подключаемые модули, которые загружаются в память только при необходимости (экономя тем самым системные ресурсы). Таким образом, в самом общем случае поддержка некоторой части устройств должна быть встроена в ядро, а остальные устройства должны поддерживаться за счет использования загружаемых модулей.

Кроме желания иметь ядро, оптимизированное для вашей системы, необходимость перекомпилировать ядро может быть вызвана обнаружением каких-то ошибок в старой версии ядра, в частности таких, которые представляют угрозы с точки зрения безопасности (когда еще появится rpm-пакет с исправленной версией ядра?).

Я был вынужден заниматься установкой ядра из исходных кодов потому, что система виртуальных машин VMware отказалась работать с установленным у меня ядром 2.2.16, сообщив, что эта версия ядра не поддерживает работу с CDROM из VMware, и предложив мне либо установить более позднюю версию ядра, либо вернуться к версии 2.2.15. Попытки установить новую версию ядра из rpm-пакетов тоже не решили проблему, потому что конфигурационный скрипт VMware сообщал, что ему не хватает header-файлов. Установка пакетов kernel-headers (полностью соответствующих ядру) тоже не привела к успеху, вот и пришлось сделать попытку установить ядро из исходных текстов.

Надо сказать, что к тому времени мой опыт установки программного обеспечения для Linux из исходников был очень ограничен. Поэтому приступал я к этой процедуре только под давлением обстоятельств (очень хотелось запускать MS Office под Linux, не прибегая к перезагрузке компьютера). Приводимый ниже текст является как раз описанием того, что я тогда делал. Поскольку мой эксперимент оказался удачным, я могу со спокойной совестью утверждать: ничего такого, что оказалось бы не под силу начинающему пользователю, в компиляции ядра из исходных кодов нет.

Я экспериментировал на версии 2.2.16-22 из свежеустановленного дистрибутива ASPLinux Release Candidate 3 и устанавливал ядро версии 2.4.2. Поэтому все примеры в данной лекции приводятся для случая, когда система уже работает на ядре версии 2.2.x и вы пришли к решению установить ядро версии 2.4.x.



В заключение этой лекции необходимо


В заключение этой лекции необходимо привести несколько коротких замечаний.
Если вы уже компилировали ядро из исходных кодов, то перекачивать полный текст исходников нет необходимости, можно провести обновления ядра через так называемые патчи (patch). Но, поскольку сам я таких операций не производил, рассказать об этом способе не берусь.
В документации к ядру говорится, что команду make config пропускать ни в коем случае нельзя, даже если вы провели самые незначительные обновления в исходных кодах.
Если вы хотите провести перекомпиляцию установленного ядра с минимальными трудозатратами, то вместо make config можно воспользоваться командой make oldconfig, которая задаст вам только вопросы, касающиеся тех параметров, которые вы хотите изменить. Но, насколько я понимаю, ее можно использовать только в том случае, если вы уже проводили установку ядра из исходников в своей системе, поскольку эта команда использует существующий файл ./.config. В этом файле сохраняются все ответы на вопросы, которые были вам заданы при выполнении команды make config. При проведении повторной процедуры конфигурирования ядра командой make oldconfig используется тот ответ на каждый вопрос, который сохранен в файле ./.config. Если же в этом файле нет готового ответа (не задано значение соответствующего параметра), программа конфигурирования будет ждать ответа пользователя. А готового ответа не оказывается в этом файле в двух случаях:
если устанавливается обновленная версия ядра, в которой появился новый параметр;если вы закомментировали или удалили строку, соответствующую данному параметру, из файла ./.config.
Поэтому, если вы хотите просто перекомпилировать ядро, чтобы, например, вынести какие-то драйверы в отдельные модули, удалите соответствующие строки из файла ./.config и воспользуйтесь командой make oldconfig вместо make config.

Четыре варианта организации сетевых служб в системе VMware


Каждая виртуальная машина, которую вы создаете, может иметь свою независимую конфигурацию сетевых служб. Существует 4 возможных варианта конфигурации:

Без подключения к сети (No networking).Host-only networking.Bridged networking.Custom networking.

Конфигурация "No networking" просто означает, что виртуальная машина работает сама по себе, не имея возможности взаимодействовать с операционной системой базового компьютера или другими компьютерами (включая виртуальные компьютеры, работающие на том же базовом). Этот вариант стоит рассматривать только в том случае, когда виртуальная машина будет использоваться, например, в целях тестирования ПО или для обеспечения безопасности хранимой на ней информации. Такая конфигурация задается очень просто - достаточно при конфигурировании виртуальной машины не подключать сетевой адаптер (либо отключить его впоследствии).

Вариант "Host-only networking" означает, что виртуальный компьютер сможет взаимодействовать с операционной системой базового компьютера и любым виртуальным компьютером, запущенным на базовом компьютере, и тоже имеющим сетевые возможности. Но виртуальный компьютер в такой конфигурации не сможет взаимодействовать с системами, находящимися вне базового компьютера (если только не используется proxy-сервер, запущенный на базовом компьютере). Создается как бы частная виртуальная сеть, которая состоит из базового компьютера и всех запущенных на нем виртуальных (в частности, одного виртуального). Обычно все хосты такой сети используют стек протоколов TCP/IP, хотя жесткого требования использовать именно его нет. Но какие бы протоколы ни использовались, каждый компьютер в такой сети должен иметь свой адрес. Адреса могут назначаться "статически" или "динамически". В последнем случае используются такие протоколы, как DHCP (Dynamic Host Configuration Protocol).

Если вариант "Host-only networking" задействуется при инсталляции системы VMware, на базовом компьютере по умолчанию запускается DHCP-сервер. Этот сервер используется для поддержки протокола DHCP только для виртуальных компьютеров, подключаемых к виртуальной сети через интерфейс vmnet1. Операционные системы виртуальных компьютеров, в которых задана опция использования DHCP, при загрузке получают IP-адрес автоматически, без какой-либо дополнительной настройки. Операционные системы Windows по умолчанию обычно подключают использование динамически назначаемых адресов.

Если в настройках операционной системы не задано использование протокола DHCP, то в системе необходимо явно прописать "статический IP-адрес". Этот вариант адресации имеет смысл применять в том случае, когда вы хотите, чтобы виртуальные машины могли обращаться друг к другу по именам, а не по IP-адресам. Но в таком случае вы должны поддерживать базу данных соответствий имен и IP-адресов на каждом компьютере или запустить на базовом компьютере сервер имен (DNS). В документации фирмы VMware рекомендуется применять статическую IP-адресацию (или сконфигурировать DHCP-сервер так, чтобы виртуальной машине всегда назначался один и тот же IP-адрес) в том случае, если вы намереваетесь использовать виртуальный компьютер в течение длительного периода времени. Если же вы устанавливаете его не надолго, используйте DHCP и предоставьте ему возможность распределять IP-адреса.

Отметим, что обычно (в соответствии с принятыми в Интернете соглашениями) IP-адреса для виртуальных сетей распределяются следующим образом:

Таблица 18.2. Распределение IP-адресов

ДиапазонИспользуется дляПример
<net>.1*Базовый компьютер192.168.0.1
<net>.2 - <net>.127Статические адреса192.168.0.1 - 192.168.0.127
<net>.128 - <net>.254Распределяемые через DHCP192.168.0.128 - 192.169.0.254
<net>.255Широковещательный запрос192.168.0.255
*здесь <net> - это сетевая часть адреса, выбранная для виртуальной сети
<

Каждая виртуальная машина, которую вы создаете, может иметь свою независимую конфигурацию сетевых служб. Существует 4 возможных варианта конфигурации:

Без подключения к сети (No networking).Host-only networking.Bridged networking.Custom networking.

Конфигурация "No networking" просто означает, что виртуальная машина работает сама по себе, не имея возможности взаимодействовать с операционной системой базового компьютера или другими компьютерами (включая виртуальные компьютеры, работающие на том же базовом). Этот вариант стоит рассматривать только в том случае, когда виртуальная машина будет использоваться, например, в целях тестирования ПО или для обеспечения безопасности хранимой на ней информации. Такая конфигурация задается очень просто - достаточно при конфигурировании виртуальной машины не подключать сетевой адаптер (либо отключить его впоследствии).

Вариант "Host-only networking" означает, что виртуальный компьютер сможет взаимодействовать с операционной системой базового компьютера и любым виртуальным компьютером, запущенным на базовом компьютере, и тоже имеющим сетевые возможности. Но виртуальный компьютер в такой конфигурации не сможет взаимодействовать с системами, находящимися вне базового компьютера (если только не используется proxy-сервер, запущенный на базовом компьютере). Создается как бы частная виртуальная сеть, которая состоит из базового компьютера и всех запущенных на нем виртуальных (в частности, одного виртуального). Обычно все хосты такой сети используют стек протоколов TCP/IP, хотя жесткого требования использовать именно его нет. Но какие бы протоколы ни использовались, каждый компьютер в такой сети должен иметь свой адрес. Адреса могут назначаться "статически" или "динамически". В последнем случае используются такие протоколы, как DHCP (Dynamic Host Configuration Protocol).

Если вариант "Host-only networking" задействуется при инсталляции системы VMware, на базовом компьютере по умолчанию запускается DHCP-сервер. Этот сервер используется для поддержки протокола DHCP только для виртуальных компьютеров, подключаемых к виртуальной сети через интерфейс vmnet1. Операционные системы виртуальных компьютеров, в которых задана опция использования DHCP, при загрузке получают IP-адрес автоматически, без какой-либо дополнительной настройки. Операционные системы Windows по умолчанию обычно подключают использование динамически назначаемых адресов.

Если в настройках операционной системы не задано использование протокола DHCP, то в системе необходимо явно прописать "статический IP-адрес". Этот вариант адресации имеет смысл применять в том случае, когда вы хотите, чтобы виртуальные машины могли обращаться друг к другу по именам, а не по IP-адресам. Но в таком случае вы должны поддерживать базу данных соответствий имен и IP-адресов на каждом компьютере или запустить на базовом компьютере сервер имен (DNS). В документации фирмы VMware рекомендуется применять статическую IP-адресацию (или сконфигурировать DHCP-сервер так, чтобы виртуальной машине всегда назначался один и тот же IP-адрес) в том случае, если вы намереваетесь использовать виртуальный компьютер в течение длительного периода времени. Если же вы устанавливаете его не надолго, используйте DHCP и предоставьте ему возможность распределять IP-адреса.

Отметим, что обычно (в соответствии с принятыми в Интернете соглашениями) IP-адреса для виртуальных сетей распределяются следующим образом:

Таблица 18.2. Распределение IP-адресов

ДиапазонИспользуется дляПример
<net>.1*Базовый компьютер192.168.0.1
<net>.2 - <net>.127Статические адреса192.168.0.1 - 192.168.0.127
<net>.128 - <net>.254Распределяемые через DHCP192.168.0.128 - 192.169.0.254
<net>.255Широковещательный запрос192.168.0.255
*здесь <net> - это сетевая часть адреса, выбранная для виртуальной сети
<


Вариант "Host- only networking" можно использовать, когда сам базовый компьютер не подключен ни к какой сети, или когда вы хотите изолировать виртуальный компьютер от внешних (по отношению к базовому) систем. Такая конфигурация аналогична случаю, когда некая фирма или корпорация соединяет свою внутреннюю сеть с Интернетом через файерволл или прокси-сервер. Чтобы сконфигурировать виртуальную машину для работы в данном варианте, надо подключить к виртуальному компьютеру сетевой адаптер (виртуальный) и выбрать для него тип подключения "Host-only networking". О некоторых необходимых действиях по настройке конфигурации для этого варианта мы поговорим чуть позже.

Вариант "Bridged networking" означает, что виртуальная машина будет подключаться к локальной сети, используя реальную Ethernet-плату Вашего основного компьютера, которая выполняет функции "моста" между виртуальной машиной и реальной физической сетью. Это позволяет виртуальному компьютеру выглядеть со стороны реальной сети как полнофункциональный хост. Назначение сетевых адресов в этом случае осуществляется в соответствии с правилами, принятыми в реальной локальной сети. Вы можете подключаться по протоколу DHCP, либо получить у администратора сети статический IP-адрес.

Виртуальная машина, подключенная по этому варианту, может использовать любые сетевые сервисы, предоставляемые в локальной сети, к которой она подключена: принтеры, файл-серверы маршрутизаторы и т. д. Точно так же и она может предоставить в сеть какие-то из своих ресурсов. Это наиболее часто используемая конфигурация сетевых служб виртуального компьютера. Для того, чтобы настроить данный вариант сетевой конфигурации, вам необходимо установить сетевой адаптер и выбрать для него тип подключения "bridged". В операционной системе виртуального компьютера надо будет произвести настройку сетевых служб.

Вариант "Custom networking" означает, что ваш виртуальный компьютер будет иметь возможность использовать как реально существующее Ethernet-соединение вашего основного компьютера, так и виртуальную сеть (т. е. этот вариант можно было бы обозначить как "Bridged and Host-only Networking"). Этот вариант предоставляет широкие возможности по построению сети из виртуальных компьютеров. Например, можно организовать виртуальную частную сеть из виртуальных компьютеров, размещающихся на нескольких физических хостах реальной сети. Однако, как указывается в фирменной документации, настройка таких сетей требует хорошего понимания принципов построения локальных сетей и умения применять эти принципы на практике, так что может быть рекомендована только для опытных пользователей. Более того, процедуры настройки этого варианта в фирменной документации практически не описаны. Поэтому далее будут рассматриваться только два варианта: "Host-only" и "Bridged networking".



Вариант "Host- only networking" можно использовать, когда сам базовый компьютер не подключен ни к какой сети, или когда вы хотите изолировать виртуальный компьютер от внешних (по отношению к базовому) систем. Такая конфигурация аналогична случаю, когда некая фирма или корпорация соединяет свою внутреннюю сеть с Интернетом через файерволл или прокси-сервер. Чтобы сконфигурировать виртуальную машину для работы в данном варианте, надо подключить к виртуальному компьютеру сетевой адаптер (виртуальный) и выбрать для него тип подключения "Host-only networking". О некоторых необходимых действиях по настройке конфигурации для этого варианта мы поговорим чуть позже.

Вариант "Bridged networking" означает, что виртуальная машина будет подключаться к локальной сети, используя реальную Ethernet-плату Вашего основного компьютера, которая выполняет функции "моста" между виртуальной машиной и реальной физической сетью. Это позволяет виртуальному компьютеру выглядеть со стороны реальной сети как полнофункциональный хост. Назначение сетевых адресов в этом случае осуществляется в соответствии с правилами, принятыми в реальной локальной сети. Вы можете подключаться по протоколу DHCP, либо получить у администратора сети статический IP-адрес.

Виртуальная машина, подключенная по этому варианту, может использовать любые сетевые сервисы, предоставляемые в локальной сети, к которой она подключена: принтеры, файл-серверы маршрутизаторы и т. д. Точно так же и она может предоставить в сеть какие-то из своих ресурсов. Это наиболее часто используемая конфигурация сетевых служб виртуального компьютера. Для того, чтобы настроить данный вариант сетевой конфигурации, вам необходимо установить сетевой адаптер и выбрать для него тип подключения "bridged". В операционной системе виртуального компьютера надо будет произвести настройку сетевых служб.

Вариант "Custom networking" означает, что ваш виртуальный компьютер будет иметь возможность использовать как реально существующее Ethernet-соединение вашего основного компьютера, так и виртуальную сеть (т. е. этот вариант можно было бы обозначить как "Bridged and Host-only Networking"). Этот вариант предоставляет широкие возможности по построению сети из виртуальных компьютеров. Например, можно организовать виртуальную частную сеть из виртуальных компьютеров, размещающихся на нескольких физических хостах реальной сети. Однако, как указывается в фирменной документации, настройка таких сетей требует хорошего понимания принципов построения локальных сетей и умения применять эти принципы на практике, так что может быть рекомендована только для опытных пользователей. Более того, процедуры настройки этого варианта в фирменной документации практически не описаны. Поэтому далее будут рассматриваться только два варианта: "Host-only" и "Bridged networking".


Что такое "виртуальный компьютер"


Виртуальный компьютер - специальная программа, запускаемая в ОС Linux и моделирующая физический компьютер на основе процессора Intel x86. Монитором виртуального компьютера является окно графической оболочки X Window, в которое производится вывод информации. На рис. 18.1 видно, как выглядит Windows NT 4.0, работающая на виртуальном компьютере, запущенном из ОС Linux.

Примечание

Надо сразу сказать, что отдельная версия системы виртуальных машин разработана фирмой VMware и для того случая, когда базовой ОС является Windows NT/2000, так что можно и Linux запускать в окне графической оболочки Windows. Однако этот вариант здесь не рассматривается.


увеличить изображение
Рис. 18.1.  Windows NT 4.0, запущенная на виртуальном компьютере с базовой ОС Linux (щелкните по рисунку для просмотра)

Виртуальный компьютер "строится" из следующего набора виртуальных устройств:

виртуальные IDE и SCSI жесткие диски;виртуальный CD-ROM;стандартный дисковод гибких дисков;контроллер жестких IDE-дисков Intel 82371 PCI Bus Master, поддерживающий два первичных (primary) и два вторичных (secondary) IDE-диска;адаптер SCSI-дисков, совместимый с BusLogic BT-958;стандартный PCI графический адаптер;стандартная 101/102-клавишная клавиатура, PS/2-совместимая мышь;сетевая карта AMD PCNET Family Ethernet adapter (PCI-ISA);последовательные порты COM1-COM4;параллельные порты LPT1-LPT2;звуковая карта, совместимая с Sound Blaster 16.

Этот набор виртуальных устройств отличается от набора устройств реального компьютера, на котором запускается виртуальная машина (за исключением некоторых устройств, например, процессора и клавиатуры), и не зависит от последнего. Если операционная система устанавливается непосредственно внутри виртуального компьютера, то в процессе установки все эти устройства определяются корректно. При "включении питания" виртуального компьютера (что делается с помощью специальной кнопки Power On/Off в меню программы-эмулятора), видно, как BIOS осуществляет тестирование "аппаратной части" и даже, как и на физическом компьютере, можно войти в программу Setup, чтобы задать или изменить настройки BIOS. На виртуальный компьютер можно установить любую операционную систему и работать с ней обычным образом.

Естественно, что две ОС, одновременно работающие на одном физическом компьютере, так или иначе борются за реальные ресурсы базового компьютера, а поэтому требования к нему достаточно высоки. Фирма-разработчик формулирует эти требования следующим образом:

Pentium II 266MHz или выше, с ОЗУ как минимум 64 Mбайт;видео-адаптер, поддерживаемый сервером XFree86 (для получения всех преимуществ полноэкранного режима);в качестве базовой операционной системы может использоваться ОС Linux с ядром 2.0.32 или выше, библиотекой glibc версии от glibc2 до glibc6 (с glibc1 не работает), для SMP-систем ядро должно быть версии 2.2.0 или выше;для VMware необходим X-сервер, причем рекомендуется XFree86-3.3.4 или выше.



Доступ к дискам виртуального компьютера из ОС базового


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

Если на базовом компьютере установлен пакет Samba, то отдельные каталоги на дисках виртуального компьютера vmware, работающего под Windows, можно монтировать в файловой системе Linux на базовом компьютере примерно такой командой

[user]$ /usr/sbin/smbmount //vmware/public /mnt/vm1 -U user1

(Подробнее см. документацию по Samba или страницу man smbmount).

Рис. 18.11 иллюстрирует эту возможность. На нем показан каталог на диске виртуального компьютера, смонтированный в файловую систему Linux. При этом в виртуальном компьютере запущен MS Word, о чем свидетельствует наличие временных файлов, создаваемых этой программой. А сам каталог в данном случае просматривается из Linux при помощи браузера Konqueror.


увеличить изображение
Рис. 18.11.  Ресурс виртуального компьютера смонтирован в каталог /mnt/vm в ОС базового компьютера (просмотр через Konqueror)



Файл описания физического диска


Чтобы система VMware могла получить доступ к физическим дискам, для каждого из таких дисков должен быть создан небольшой файл, содержащий некоторые данные, необходимые виртуальной машине для получения доступа к разделам данного диска. В документации на VMware такой файл называют "Safe Raw Disk", мы будем называть его файлом описания физического диска. Вот типичный пример такого файла для компьютера, на котором установлены ОС Windows NT и Linux:

DEVICE /dev/hda # Partition type: MBR RDONLY 0 62 # Partition type: HPFS/NTFS ACCESS 63 8193149 # Partition type: Linux swap NO_ACCESS 8193150 8466254

Как видите, этот файл содержит информацию о разделах диска, типе файловой системы в каждом разделе (правда, только в строке комментария) и правах доступа к разделу. Эту информацию можно представить в виде табл. 18.1.

Таблица 18.1. Информация из файла описания диска

Тип разделаРазмещение (сектора)Access Rights
Загрузочная записьС 0 по 62 включительноRead-Only
NTFS или FATС 63 по 8193149 включительноRead-Write
Linux swapС 8193150 по 8466254 включительноНет доступа

Если операционная система, запущенная на виртуальном компьютере, попытается произвести операции чтения или записи в сектора, доступ к которым запрещен в таком файле описания физического диска, система VMware выдаст пользователю диалоговое окно, в котором потребует подтвердить правомочность данной операции или отказаться от ее выполнения.

Подключение физического диска к виртуальному компьютеру. Имея в виду только что сказанное, можно приступить к подключению физического диска к виртуальному компьютеру, для чего надо выполнить следующие действия.

Добавьте пользователя, от имени которого будете запускать систему VMware, в группу disk (это делается путем редактирования файла /etc/group суперпользователем).Убедитесь в том, что подключаемый физический диск не смонтирован в файловой системе базового компьютера.Чтобы создать файл описания физического диска, запустите систему VMware, выберите нужную конфигурацию (но не включайте питание виртуального компьютера) и откройте меню Settings| Configuration Editor, после чего щелкните по значку "+" слева от указания на IDE- или SCSI-диски.Найдите строку, в которой указано, что соответствующий диск не установлен ("Not installed"), и установите на нее подсветку (курсор). Предположим, например, что вы выбрали строку "P-S Not Installed" среди IDE-дисков. Значит виртуальная машина будет считать, что данный физический диск подключен как второй диск (slave) к первому контроллеру (primary IDE controller). Соответственно, если в группе SCSI-дисков найдется строка "SCSI 0:1 Not Installed", то для виртуального компьютера такой диск будет иметь номер 1 на SCSI-контроллере. Если строки "Not Installed" не найдется, то к Вашему виртуальному компьютеру подключено уже 4 IDE-диска (или, соответственно, 7 SCSI-дисков), т. е. достигнут предел. В таком случае удаляйте какой-нибудь диск, пользуясь кнопкой Remove.В поле Device Type установите (выберите) значение Raw Disk.В поле Name введите имя для файла описания физического устройства (например, raw_hda.dsk).Щелкните по кнопке Create Raw Disk.В появившейся строке ввода укажите имя физического диска (не раздела, а именно диска, например, /dev/hda для IDE-диска или /dev/sda для SCSI).Появится новое окно, в котором выведен список разделов, имеющихся на данном физическом диске. Для каждого раздела укажите права доступа, которые будет иметь в данном разделе виртуальная машина. Для каждого раздела нужно выбрать один из следующих вариантов задания прав: No Access - виртуальный компьютер не будет иметь возможности ни читать, ни писать в данный раздел. Этот вариант выбирают только в том случае, если необходимо проконтролировать попытки (несанкционированного) обращения к данному разделу.Read/Write - виртуальный компьютер будет иметь возможность и читать, и производить запись в данный раздел. Эту опцию выбирают только для тех разделов, которые содержат файловые системы, "родные" для операционной системы виртуального компьютера.Read-Only - виртуальный компьютер будет иметь возможность только читать из данного раздела. Выбирайте это вариант для всех остальных разделов на диске.Щелкните по кнопке Save. В некоторых случаях после этого может появиться окно, сообщающее, что два раздела на диске пересекаются (имеют общие сектора) и, следовательно, для них должны быть заданы одинаковые права доступа. Такого вообще-то быть не должно (и эту ситуацию необходимо как-то исправлять), но если все же такое окно появится, вы можете задать одинаковые права для обоих разделов и снова щелкнуть по кнопке Save. Файл описания физического диска будет записан в каталог, где хранятся остальные файлы Вашей виртуальной машины (что-то вроде /home/user1/vmware/nt4/).Щелкните по кнопке Install для того, чтобы присоединить выбранный физический диск к виртуальному компьютеру. Как и в случае виртуального диска, вы можете задать для физического диска один из трех возможных режимов работы: "с записью" ("Persistent"), "без записи" ("Nonpersistent") или "с отложенной записью" ("Undoable").

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

Если в последующем вам почему-либо потребуется отключить физический диск от виртуального компьютера (например, для того, чтобы смонтировать его в файловой системе базового компьютера), откройте Редактор конфигурации (Settings | Configuration Editor) и щелкните по экранной кнопке Remove на вкладке, соответствующей данному диску. На этой же вкладке имеется кнопка Edit Raw Disk..., с помощью которой можно откорректировать права доступа к разделам диска, определяемые файлом физического диска. Обратиться к этой опции вам придется в тех случаях, когда вы, скажем, заменили физический диск в компьютере или модифицировали разбиение его на разделы.



Инсталляция системы виртуальных машин


Для установки необходимо сначала скачать ПО с сайта компании VMware, а также получить лицензию на его использование. Можно, конечно, купить лицензию (стоимость ее около 300 долларов), однако можно пользоваться и временной (30-дневной) лицензией, тем более, что компания пока что позволяет без ограничений обновлять ее. Неудобство, конечно, но терпимое2). После регистрации вы получаете сообщение, что лицензия отправлена по почте, и в ожидании запускаете перекачку файла vmware-x.y.z-nnn.i386.rpm (где x.y.z - номер версии, а nnn - номер релиза). После этого надо выполнить следующие действия:

Для инсталляции системы виртуальных машин надо иметь права пользователя root, поэтому запускаем терминальное окно и выполняем команду su.Производим установку rpm-пакета rpm -Uhv vmware-x.y.z-nnn.i386.rpm

(где vmware-x.y.z-nnn.i386.rpm - имя файла, который вы скачали).

Запускаем конфигурационный скрипт /usr/bin/vmware-config.pl.

Замечание

Этот скрипт можно будет использовать для того, чтобы заново сконфигурировать VMware каждый раз, когда происходит замена или обновление ядра. Переустанавливать VMware при этом нет необходимости. При выполнении скрипта на экране появляется ряд вопросов, некоторые ответы на которые можно найти в http://rus-linux.net/book/vmware1.htm, http://dhls.agava.ru/vmware.html. Отмечу только два момента. Первый момент касается используемого ядра. Я натолкнулся на это затруднение, когда ставил VMware на систему с ядром 2.2.16. К сожалению, в этой версии ядра имеется какая-то особенность, препятствующая нормальной работе системы виртуальных машин, поэтому пришлось поменять ядро на более позднюю версию. Однако если вы установите новое ядро не из исходных текстов, а из rpm-пакета (при инсталляции Linux из дистрибутива Red Hat и его клонов тоже происходит установка ядра из такого пакета), то в системе может не оказаться файлов заголовков ядра. А один из вопросов, задаваемых скриптом /usr/bin/vmware-config.pl, касается местонахождения файлов заголовков, соответствующих запущенной версии ядра. Необходимые файлы можно установить (переключившись во второй терминал) из пакета kernel-headers-x.y.z.i386.rpm (соответствующей установленному у вас ядру) и указать правильный путь к ним (этот путь можно узнать, просмотрев вывод команды rpm -qpl kernel-headers-x.y.z.i386.rpm).

После завершения работы скрипта можно покинуть shell, запущенный от имени root.

Инсталляция собственно системы виртуальных машин завершена, однако надо еще установить лицензию, создать собственно виртуальный компьютер, установить на нем ОС и пакет VMware Tools.



Использование прямого доступа к памяти


Windows 95 OSR2 и более поздние версии обладают возможностью использования прямого доступа к памяти (Direct Memory Access - DMA) при обращении к IDE-дискам. Однако эта опция не часто используется по умолчанию, хотя ее применение в виртуальном компьютере может дать существенный прирост производительности. Для того чтобы задействовать режим DMA в Windows 95/98 на виртуальном компьютере, запустите Панель управления и выберите меню Система; в появившемся окне Свойства: Система выберите вкладку Устройства, найдите пункт Дисковые накопители и раскройте список, щелкнув по значку "+". Затем последовательно для каждого подключенного IDE-диска поставьте отметку (галочку) рядом с надписью "DMA", после чего перезапустите ОС. Не забудьте задействовать режим DMA в базовой ОС Linux. О том, как это делается, было подробно рассказано в лекции 9.

В результате этих усилий VMware и все запускаемые в виртуальном компьютере приложения будут работать быстрее.



Как устранить "утечку" пакетов из виртуальной сети в реальную


Все системы, поддерживающие протоколы TCP/IP, обычно обладают способностью отправлять дальше те IP-пакеты, которые предназначены не им (forwarding). Поэтому, если созданная нами виртуальная сеть подключена к реальной сети, в последней может существенно повыситься трафик. Но это происходит только в том случае, когда в системах, входящих в виртуальную сеть, не отключена функция форвардинга. По умолчанию эта функция в большинстве систем отключается, но все же стоит этот момент проверить, чтобы не перегружать реальную сеть. Причем соответствующую настройку необходимо сделать как в ОС базового компьютера, так и в ОС виртуальных компьютеров.

В ОС Linux запрет форвардинга осуществляется путем записи "0" в специальный файл /proc/sys/net/ipv4/ip_forward; это можно сделать, например, командой

[root] # echo 0 >/proc/sys/net/ipv4/ip_forward



Копирование и вставка


Если на виртуальной машине установлен пакет VMware Tools, имеется возможность осуществлять операции копирования и вставки между приложениями, запущенными в виртуальной машине и на базовом компьютере, а также между двумя виртуальными машинами.



Назначение MAC-адресов для виртуальных компьютеров


Когда "включается питание" виртуального компьютера, система VMware автоматически назначает ему MAC-адрес (уникальный адрес физического устройства, используемый на канальном уровне для управления доступом к устройствам). Система гарантирует, что виртуальным машинам будут присвоены уникальные MAC-адреса в рамках одного базового компьютера. Но не гарантируется, что при каждом запуске виртуального компьютера ему будет назначаться один и тот же MAC-адрес. Точно так же система не может обеспечить (хотя и пытается это сделать) назначение уникальных адресов для виртуальных компьютеров, запускаемых на нескольких базовых компьютерах в одной физической сети.

Если вы хотите, чтобы виртуальный компьютер всегда получал один и тот же MAC-адрес или хотите добиться полной уникальности назначаемых адресов, вы можете назначать их "вручную", а не автоматически. Для этого надо добавить в конфигурационный файл виртуального компьютера строку следующего вида:

ethernet0.address = 00:50:56:XX:YY:ZZ

где 'XX' - шестнадцатеричное значение из интервала 00h-3Fh, 'YY' и 'ZZ' - шестнадцатеричные значения из интервала 00h - FFh (система VMware не позволяет использовать произвольные адреса, так что надо поддерживаться именно такого формата).

Заметим, что если вы, придерживаясь указанного формата, присвоите фиксированный адрес только некоторым виртуальным компьютерам в сети (а другие будут получать адреса динамически), конфликтов между адресами, назначенными "вручную", и адресами, назначенными автоматически, возникнуть не должно.



Немного о быстродействии


Поскольку система VMware является эмулятором, естественно возникает мысль о том, что прикладные программы будут на ней работать медленнее, чем на физическом компьютере, однако опыт показывает, что если дополнительное замедление и есть, оно так невелико, что практически незаметно. Более того, я провел серию тестов с помощью программы Sandra SiSoft, результаты которых меня просто поразили. Некоторые тесты показывают, что быстродействие виртуального компьютера с NT 4.0 по некоторым параметрам выше, чем быстродействие базового компьютера, работающего под той же ОС непосредственно. Конечно, быстродействие существенно зависит от ресурсов базового компьютера. Я начинал осваивать систему VMware на компьютере с ОЗУ 64 Мбайт и процессором 233 МГц, где все в общем-то работало, но замедление работы ОС на виртуальной машине было очень заметно. Сейчас я использую базовый компьютер с процессором Pentium III 733 MHz и 128 Мбайт ОЗУ. Память я поделил между двумя ОС поровну и замедление в быстродействии уже незаметно. Именно объем оперативной памяти является самым критичным параметром для использования системы виртуальных машин. Судя по моему опыту, 64 Мбайт физического ОЗУ все же мало, а при 128 уже можно работать достаточно комфортно.



Необходимые меры предосторожности


Прежде чем описывать процедуры подключения физического диска к виртуальному компьютеру, надо рассказать о некоторых опасностях, которые тут нас подстерегают. В документации, размещенной на сайте фирмы VMware, имеется следующее предостережение:

"Поддержка работы с физическими дисками является продвинутой особенностью (an advanced feature) системы VMware и может использоваться только пользователями, которые уже знакомы с продуктом. А чтобы познакомиться с продуктом, вы должны, как минимум, создать и сконфигурировать виртуальную машину с виртуальным диском и установить на нее операционную систему. Что касается загрузки ранее установленной на физический диск операционной системы в виртуальный компьютер, то она может не работать для некоторых конфигураций аппаратного обеспечения и операционной системы".

Это не означает, что подключение к виртуальной машине реальных дисков в принципе невозможно. Просто надо делать такое подключение корректно, с соблюдением некоторых мер предосторожности.

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

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

Если вам необходимо осуществить обмен данными между базовым и виртуальным компьютерами, можно подключать один и тот же диск к этим компьютерам поочередно. Для этого придется вначале смонтировать раздел в базовой ОС Linux, перенести на него необходимые данные, размонтировать диск, запустить VMware и виртуальный компьютер, скопировать данные на виртуальный диск, выключить VMware и снова отдать диск базовой ОС. Альтернативой такому очевидно неудобному способу переноса данных является использование сетевых возможностей ОС, таких как протоколы Samba или NFS, для переноса данных из одного компьютера в другой. Эти возможности будут рассмотрены в следующем разделе, а пока давайте научимся подключать физический диск (или раздел на таком диске) к уже созданному виртуальному компьютеру в качестве второго жесткого диска.



О первоисточниках


Единственным источником информации при написании этой лекции (а также статей [П20.7, П20.8]) были материалы с сайта фирмы VMware (http://www.vmware.com). Русскоязычных публикаций о системе VMware пока практически нет, кроме двух статей автора [П20.7] и [П20.8] (содержание которых практически совпадает с содержанием настоящей лекции) и статьи А. Ерижокова http://dhls.agava.ru/vmware.html. Дополнительную информацию на русском языке можно найти на сайтах http://rus-linux.net/book/vmware1.htm, http://dhls.agava.ru/vmware.html. Если вас заинтересовала система виртуальных машин, - установите ее и экспериментируйте, она стоит того, чтобы потратить на нее время.



О применении системы VMware


В рамках данной книги не нашли отражения ответы на многие вопросы, связанные с установкой, конфигурированием и работой системы виртуальных машин, в частности процедуры подключения к виртуальному компьютеру периферийных устройств (принтеры, модемы, ZIP-дисководы и т. д.). Однако, на мой взгляд, эти вопросы не являются актуальными для тех, кто ориентируется на переход от работы под Windows к преимущественному использованию Linux. Действительно, различные периферийные устройства, наверное, легче и проще подключить к физическому компьютеру, чем к виртуальному. После этого доступ к таким устройствам, как принтер или дисковод Zip от Iomega, можно получить через сеть как это было показано раньше. А что касается выхода в Интернет через модем, то все средства для этого (программы доступа к сети по телефонным каналам, браузеры и системы просмотра электронной почты) имеются и в Linux, так что нет никакой необходимости организовывать такой доступ через виртуальный компьютер.

Единственная серьезная причина, по которой для пользователя Linux становится необходимым применение ОС от Microsoft и, соответственно, системы виртуальных машин, - это необходимость обмениваться файлами с приверженцами Windows, которые пока что составляют большинство пользователей компьютеров вообще. Именно для обработки файлов в форматах, разработанных фирмой Microsoft, приходится запускать VMware. Но именно эта система позволяет осуществить постепенный переход на использование Linux, так как позволяет, с одной стороны, продолжать использовать весь набор привычного ПО, освоенного пользователем Windows, и, с другой стороны, постепенно осваивать свободные аналоги этого ПО, разработанные для Linux.



Первый сеанс работы на виртуальном компьютере


Запускать систему VMware можно двумя способами. Первый заключается в том, что открывается окно терминала, и вводится команда vmware &. Второй способ (в KDE) - в главном меню KDE выбирается команда Запустить программу: (горячие клавиши - <Alt>+<F2>) и в появившемся окне вводится команда vmware. Независимо от способа запуска вы увидите диалоговое окно выбора конфигурации виртуального компьютера, представленное на рис. 18.4.


Рис. 18.4.  Окно выбора конфигурации

Поскольку у вас пока создан только один виртуальный компьютер, то достаточно подсветить строку с именем единственного конфигурационного файла, а затем надо "включить питание" кнопкой Power On главного окна программы VMware.

Дальше все будет происходить так, как и при загрузке выбранной ОС на обычном компьютере. В частности, если есть желание посмотреть или изменить установки BIOS виртуального компьютера, то надо успеть вовремя нажать клавишу <F2>, чтобы попасть в меню BIOS.

Первое, о чем надо помнить при работе с виртуальной машиной - это способ выхода из окна виртуальной машины комбинацией клавиш <Ctrl>+<Alt>+<Esc>, что особенно полезно при работе в полноэкранном режиме ВМ. В этот режим можно переключиться с помощью кнопки Full Screen на панели VMware. В этом случае будет полная иллюзия того, что физический компьютер работает под управлением Windows и только "волшебная" комбинация клавиш <Ctrl>+<Alt>+<Esc> может вернуть вас к действительности.

Следующим этапом работы на "новом компьютере" будет установка необходимого ПО внутри виртуальной машины, которая осуществляется точно так же, как и на обычном компьютере.

Запустите виртуальную машину. На всякий случай проверьте, что виртуальная машина имеет доступ к дисководу CD-ROM или дисководу гибких дисков (в зависимости от того, какой из них потребуется в процессе инсталляции). Для этого можно воспользоваться командой Devices главного меню системы VMware.

Вставьте установочный диск в соответствующий дисковод и запустите программу установки. Как это сделать, я здесь не буду объяснять, надеюсь, что вы имеете некоторые навыки работы с той операционной системой, которую собираетесь запускать на ВМ.

После инсталляции ОС я установил на своем виртуальном компьютере MS Office и еще ряд программ, с которыми привык работать в старой системе. Сделайте то же самое и начинайте работать!



Подключение физических дисков к виртуальному компьютеру


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



Подключение физического диска к виртуальному компьютеру


Итак, мы имеем виртуальный компьютер, на котором работает ОС Windows (в одном из ее вариантов), запускаемая с виртуального диска C:. И, предположим, у нас имеется раздел жесткого диска (пусть, для определенности, это будет раздел /dev/hda2), который был отформатирован в той же ОС от Microsoft (в FAT, FAT32 или NTFS, в зависимости от варианта ОС). Естественно, возникает желание получить доступ к этому разделу из виртуального компьютера. Попытаемся подключить этот раздел в качестве диска D: виртуального компьютера. Но прежде, чем описывать конкретные процедуры подключения, дадим некоторые предварительные сведения.



Права доступа к дискам


Жесткие диски, к которым вы хотите получить доступ из виртуального компьютера (и, в частности, диски, с которых происходит запуск операционных систем, как это будет описано в далее), должны быть доступны как по чтению, так и по записи для пользователей, запускающих систему VMware. В большинстве дистрибутивов Linux физические диски (такие как /dev/hda, /dev/hdb) принадлежат группе disk. Если это так, то можно просто добавить пользователей системы VMware в эту группу. Можно также просто поменять владельца устройства. Пожалуйста, тщательно продумайте вопросы безопасности при выборе способа предоставления доступа к дискам. Самый простой и вполне приемлемый на персональном компьютере способ заключается в том, чтобы дать пользователям системы VMware доступ ко всем физическим устройствам /dev/hd[abcd], к которым надо обращаться из виртуальных машин, а в вопросах разграничении доступа положиться на конфигурационные файлы VMware.



Подключение к существующей локальной сети в варианте "Bridged networking"


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

В таком случае нужно сконфигурировать сетевые службы системы VMware в варианте "Bridged networking", получить у администратора сети реальный IP-адрес, маску сети, адреса серверов DNS и WINS, и настроить сетевые службы ОС на виртуальном компьютере с использованием этих адресов. Пример такой настройки приведен на рис. 18.8, а на рис. 18.9 показано, как выглядит "Сетевое окружение" в случае реализации этого варианта для небольшой сети, состоящей из двух физических компьютеров (Kos3 и Linux). На компьютере Linux запущена система VMware и виртуальный компьютер Vmware, подключенный к физической сети по рассматриваемому варианту. Из рисунка видно, что компьютер Vmware показывается как полноправный участник сети и получает доступ к дискам базового компьютера (поскольку снимок сделан в окне экрана виртуального компьютера).


Рис. 18.9.  Доступ к диску базового компьютера через "Сетевое окружение"

Необходимо отметить одну особенность настройки сетевых средств на виртуальном компьютере, проявляющуюся тогда, когда ОС виртуального компьютера загружается с физического диска. Особенность состоит в том, что в этом случае обязательно надо создать отдельный профиль оборудования для загрузки ОС Windows в виртуальном компьютере, в которой отключить реальную сетевую карту Ethernet, как это было сказано раньше. В противном случае у вас могут возникнуть трудности с подключением адаптера AMD PCNET PCI для Ethernet, который должен работать в виртуальном компьютере. Впрочем, то же самое верно и для других вариантов, так что не забывайте создавать отдельный профиль оборудования для запуска на виртуальном компьютере.



Создание сети на изолированном компьютере


В качестве следующего примера рассмотрим создание виртуальной сети на изолированном (скажем, домашнем) компьютере. При конфигурировании системы VMware в этом случае надо выбрать вариант "Host-only networking", для чего на вопрос конфигурационного скрипта vmware-config.pl "Do you want this script to automatically configure your system to allow your virtual machines to access the host file system?" надо ответить "Yes". При этом будет установлен Samba-сервер vmware-smbd (а также необходимый для его работы демон vmware-nmbd) и будет организован их запуск при загрузке ОС Linux. Конфигурационный файл для такого сервера располагается не в каталоге /etc/samba, как для стандартного сервера Samba, а в каталоге /etc/vmware/vmnet1/smb, хотя и называется по-прежнему smb.conf. О том, как его настроить, вы можете узнать в документации по Samba или из man-страницы (man 5 smb.conf), поскольку он строится точно так же, как файл smb.conf для стандартного сервера Samba.

Естественно, что необходимо настроить сетевые службы в ОС Linux базового компьютера и на виртуальном компьютере. IP-адреса можно задать произвольным образом. Поскольку в такой сети будет работать только несколько компьютеров (в простейшем случае - всего два), то сервер DHCP запускать не имеет смысла, проще прописать все компьютеры и их адреса в файле /etc/hosts.

Рис. 18.10 иллюстрирует именно такой вариант работы виртуального компьютера. На рисунке показано, что весь диск базового компьютера подключен как сетевой диск G: к виртуальному компьютеру, причем в окне проводника Windows отображается вся структура каталогов Linux.


увеличить изображение
Рис. 18.10.  Диск базового компьютера смонтирован как диск G: в ОС виртуального компьютера

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



Приостановка и мгновенное восстановление состояния ВМ


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

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

Для сохранения состояния ВМ требуется:

Вернутся в режим работы в окне (комбинация клавиш <Ctrl>+<Alt>+<Esc>).Щелкнуть по клавише Suspend на панели VMware.

После этого можно безопасно выйти из системы VMware через команду меню File | Exit.


Рис. 18.5.  Виртуальная машина приостановлена

Для возврата в состояние до приостановки:

Запустить VMware и выбрать ту виртуальную машину, работу которой приостановили.Щелкнуть по кнопке Resume на панели VMware.

Все приложения, с которыми вы работали в момент приостановки ВМ, снова запустятся, причем окажутся в том самом состоянии, какое было в момент остановки.



Снова о предосторожностях


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

Еще одна неприятность, с которой можно столкнуться, связана с тем, что в Linux не все изменения сразу запоминаются на диске. Например, попытки сохранить файл, созданный одной из Linux-программ, в каталоге, который находится на примонтированном Windows-диске виртуального компьютера, могут в некоторых ситуациях (в частности, при выключении виртуального компьютера) привести к неприятным последствиям, вплоть до разрушения файловой системы.



Соединение виртуальной и физической сети


Теперь предположим, что вы решили создать несколько виртуальных компьютеров на одном базовом, объединить их в виртуальную сеть, и соединить ее с реальной сетью. При этом сетевая часть IP-адреса виртуальной сети отличается от сетевой части адреса реальной сети. В этом случае система VMware снова конфигурируется по варианту "Host-only networking". Только теперь необходимо указать Samba-серверу, что он должен обслуживать как интерфейс с реальной сетью (или даже несколько таких интерфейсов), так и виртуальный интерфейс vmnet1, на который работает виртуальная сеть. Делается такое указание путем корректировки строки "interfaces" в файле /etc/smb.conf. Она должна принять следующий вид:

interfaces = <физические сети> <виртуальная сеть>.1/24

где <физические сети> - это список обслуживаемых физических сетей, а <виртуальная сеть> - это сетевая часть адреса, назначенного для виртуальной сети. Предположим для примера, что базовый компьютер имеет в реальной сети адрес 209.220.166.34, а виртуальной сети в варианте "host-only" ему присвоен адрес 192.168.0.1. Тогда указанная строка принимает вид:

interfaces = 209.220.166.34/24 192.168.0.1/24

или, задавая маску сети явным образом, так:

interfaces = 209.220.166.34/255.255.255.0 92.168.0.1/255.255.255.0

Подробнее об этом см. man-страницу 5 smb.conf.

Если вы не помните, какой IP-адрес присвоен виртуальному интерфейсу, дайте команду /sbin/ifconfig vmnet1.



Создание виртуальной машины


Для создания виртуальной машины (для краткости будем иногда писать ВМ) проще воспользоваться мастером конфигурации, но гораздо нагляднее этот процесс происходит при использовании "редактора конфигурации" (рис. 18.2), который запускается посредством выбора команды Configuration Editor в меню Settings системы VMware. Первым делом подключим жесткий IDE-диск, щелкнув по значку "+" рядом с надписью "IDE Devices". После того, как появятся 4 дополнительных строки, соответствующих четырем каналам контроллера жестких дисков, щелкните по строке с надписью "P-M. Not installed". Эта строка обозначает жесткий диск на первом канале (Primery Master) и утверждает, что таковой не установлен.


увеличить изображение
Рис. 18.2.  Окно редактора конфигурации

Надо иметь в виду, что нельзя устанавливать второй диск (Slave), если не установлен первый диск (Master) на соответствующем канале контроллера (P-S не устанавливают до P-M, а S-S, соответственно, до S-M). Если не соблюсти это правило, то виртуальная машина не сможет загружаться с заданного таким образом диска. Обычно используют первую позицию, P-M (primary master), для подключения жесткого диска и третью позицию, S-M (secondary master), для диска CD-ROM. Возле надписи "Device Type" находится список выбора типа диска: виртуальный диск, плоский диск (plain disk), реальный диск (raw disk) и CD-ROM. Виртуальный диск (Virtual disk) - это файл в файловой системе базового компьютера, который для ОС виртуальной машины выглядит как реальный физический диск. Этот файл может располагаться как на диске базового компьютера, так и на удаленной файловой системе. Если создается виртуальная машина с виртуальным жестким диском, то можно установить на нее новую ОС без переразбиения физического диска и даже без перезагрузки базового компьютера. Плоский диск (plain disk) подобен виртуальному, но может иметь размеры более 2Гбайт. Он компонуется из нескольких файлов - экстентов (extents), размером не более 2 Гбайт. В отличие от виртуальных дисков при создании плоского диска все отводимое под такой диск пространство сразу занимается и заполняется нулями. Реальный диск (Raw disk) - это жесткий диск или раздел жесткого диска базового компьютера, к которому получает прямой доступ виртуальная машина. При подключении такого диска становится возможным загрузить в виртуальной машине операционную систему, ранее установленную в один из разделов базового компьютера (при условии, что этот раздел находится на локальном IDE или SCSI диске).

После выбора типа диска надо выбрать один из трех возможных режимов его работы: persistent, nonpersisten, undouble.

В режиме "с записью" ("Persistent") все операции записи немедленно производятся на реальный диск (или в файл, моделирующий реальный диск).

В режиме "без записи" ("Nonpersistent") записи на диск, осуществляемые виртуальным компьютером, выглядят как операции записи на реальный диск, но фактически запись данных на физический диск не производится, и данные теряются по завершении сессии работы на виртуальном компьютере (когда "выключается питание" виртуального компьютера или производится перезагрузка ОС). В этом режиме VMware только читает с реального диска, а операции записи в течение сессии производятся во временный файл (redo log file), который уничтожается при завершении сессии. Все блоки данных, которые были модифицированы и записаны в файл .redo, при повторном обращении к ним считываются уже из этого файла, а не с реального диска. По завершению сессии файл уничтожается. Файл .redo располагается в том же каталоге, где по умолчанию располагаются файлы виртуальных дисков, однако его местоположение можно изменить, воспользовавшись командой Misc в меню редактора конфигурации. Режим "без записи" удобен, когда требуется запускать виртуальный компьютер из одного и того же состояния, например при тестировании разрабатываемого или для демонстраций нового ПО. В этом режиме могут работать все типы дисков.

Режим "с отложенной записью" ("Undoable") очень похож на режим "без записи" в том смысле, что все операции записи на диск, осуществляемые виртуальным компьютером, фактически производятся во временный файл (.redo) на реальном диске. Но при отключении питания виртуального компьютера, пользователю предлагается на выбор три возможности: записать все изменения на реальный диск; отказаться от изменений, возвращая диск к его исходному состоянию; запомнить изменения, чтобы в следующей сессии начать работу с того состояния, в котором закончена работа в предыдущем сеансе (сохранить redo-файл). Режим полезен, когда надо поэкспериментировать с установкой нового ПО или выполнением некоторых административных функций, что может вызвать проблемы в работе компьютера. Если сохранить файл redo, то при следующем запуске ВМ будет предложено либо восстановить все изменения, сделанные в ходе предыдущей сессии, либо отказаться от них, либо отключить ВМ.

Если вы только начинаете осваивать систему VMware, то оптимальным вариантом из числа рассмотренных является, на мой взгляд, подключение виртуального диска в режиме "Persistent".

После установки типа диска и режима записи, введите в поле "Name" имя файла, которое будет использоваться для данного виртуального диска и укажите размер виртуального диска (если это просто виртуальный диск, то его объем не может быть больше 2 Гбайт). Первоначально файл виртуального диска имеет объем не более 1 Мбайт, и его размер возрастает только по мере установки программного обеспечения на виртуальную машину. После задания всех параметров виртуального диска щелкните по экранной клавише "Install".

SCSI-диски устанавливаются вполне аналогично IDE-дискам.

Установка CD-ROM еще проще, чем жесткого диска. Тут надо задать только один параметр - имя устройства. Можно еще определить, подключать ли CD-ROM автоматически при запуске виртуальной машины. Для подключения дисковода гибких дисков надо выбрать тип: устройство (Device) или файл (File), и задать или выбрать имя устройства (например, /dev/fd0 или /dev/fd1), определив, будет ли дисковод подключаться автоматически. Необходимо иметь в виду, что физический floppy-дисковод не может использоваться одновременно операционными системами двух (и более) виртуальных машин или виртуальным и базовым компьютером. В процессе работы с виртуальной машиной можно в любой момент отключить дисковод, воспользовавшись командой "Devices" главного меню. И, наоборот, можно подключить дисковод через ту же команду меню, освободив его предварительно в других ВМ и в базовом компьютере. На базовом компьютере для этого надо размонтировать диск (в Linux) или переключиться на какие-то каталоги других дисков во всех запущенных программах (если на базовом компьютере запущена Windows).

Следующим шагом по идее должна быть установка сетевой карты, но пока этот этап пропустим, поскольку, как и в реальном компьютере, подключиться к сети можно и позже. То же самое можно сказать про подключение последовательных и параллельных портов и звуковой карты. А вот подключить мышь и выделить виртуальной машине оперативную память просто необходимо. Система VMware позволяет пользователям задавать как объем оперативной памяти, выделяемой каждому виртуальному компьютеру, так и общее количество ОП, зарезервированное для использования виртуальными машинами. Правильная настройка этих параметров очень важна, поскольку может существенно повлиять на производительность как виртуального компьютера, так и системы в целом. Количество памяти, выделяемое всем виртуальным машинам, задается через меню Settings системы VMware. При работе с редактором конфигурации можно определить только количество ОП, выделенной данной виртуальной машине. Для начала, пока у вас всего одна виртуальная машина, выделите ей половину оперативной памяти базового компьютера.

Остается только выбрать операционную систему и задать значения некоторых дополнительных параметров (команда Misc). Для первого раза проще всего согласиться с тем вариантом, который задается по умолчанию. Единственный из этих дополнительных параметров, значение которого нужно ввести, это путь к файлу .redo, и то только в том случае, когда необходим режим работы "с отложенной записью".

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

Поскольку на созданный таким образом виртуальный компьютер еще не установлена ОС, переходим к ее установке. Процедура установки ОС - обычная (разве что потребуется войти в BIOS виртуального компьютера и установить возможность загрузки с CD-ROM): вставляется загрузочный CD-ROM в дисковод и запускается виртуальный компьютер.

Сразу же после первого запуска ОС на виртуальной машине просто необходимо установить дополнительные компоненты для ОС, которые называются VMware Tools и включают в себя некоторые дополнительные драйверы, в частности драйвер SVGA. Хотя система VMware способна работать и без него, однако из графических режимов на виртуальной машине будет доступен только режим VGA (640 х 480, 16 цветов). Если же установить драйвер SVGA из VMware Tools, то будут поддерживаться высокие разрешения дисплея и глубина цвета до 32 бит, причем повысится и быстродействие графической подсистемы.

Для установки VMware Tools после запуска ОС на виртуальном компьютере передайте управление базовой ОС (комбинацией клавиш <Ctrl>+<Alt>+<Esc>) и выберите команду меню Settings | VMware Tools Install программы VMware. Вы увидите сообщение о том, что конфигурация виртуальной машины временно изменена для установки VMware Tools. Изменение конфигурации виртуальной машины заключается в том, что вместо диска A: подключается образ дискеты, содержащий необходимые для установки VMware Tools файлы. Запустите с этой виртуальной дискеты программу VMwareTools.exe (из подкаталога, соответствующего установленной Вами ОС). В процессе инсталляции программа установки предупреждает, что будет запущена утилита изменения установок видеоадаптера, с чем нужно согласиться, после чего остается только нажать кнопку Finish. Инструкции по конфигурации видео-драйвера даются в открывающемся автоматически окне программы Notepad. После того, как откроется окно свойств экрана, доберитесь до вкладки Адаптер, щелкните по кнопке Изменить и выберите вариант "Установить с диска" (остальное понятно из рис. 18.3).


увеличить изображение
Рис. 18.3.  Установка драйвера SVGA



Список пользователей, которым разрешен доступ к серверу Samba


Одним из последних вопросов, задаваемых конфигурационным скриптом vmware config.pl в том случае, когда вы установили версию Samba-сервера фирмы VMware, является предложение ввести имена и пароли пользователей, которым будет разрешен доступ в Samba-серверу. Если вы отказались от выполнения этой процедуры на этапе конфигурирования или хотите добавить новых пользователей в этот список, вы должны проделать следующее.

Получить права суперпользователя [user]$ suВыполнить команду [root]# /usr/bin/vmware-smbpasswd vmnet1 -a <username>

где <username> - это имя пользователя, которого вы добавляете в список.

Выполнить то, что будет сказано в инструкциях, появляющихся на экране (программа vmware-smbpasswd является вариантом стандартной программы smbpasswd. Если вы знакомы с последней, вы можете использовать любые ее опции).Покинуть бюджет пользователя root: [root]# exit

Если вы получите сообщение "Unknown virtual interface "vmnet1", значит либо у вас не используется сервер Samba от VMware, либо не задействован вариант "Host Only" (который обслуживается этим интерфейсом).



Средства поддержки сетевых возможностей в VMware


Поддержка сетевых возможностей VMware на базовом компьютере осуществляется с помощью специальных драйверов, которые организуют четыре виртуальных сетевых интерфейса: vmnet0, vmnet1, vmnet2 и vmnet3. Каждый интерфейс ассоциируется с виртуальным Ethernet-хабом, через который к базовому хосту может быть подключено любое число виртуальных компьютеров. Обычно vmnet0 используется в варианте "bridged networking", vmnet1 используется в варианте "host-only networking", а оставшиеся два интерфейса служат для организации варианта "bridged networking and host-only networking". В дополнение к этим интерфейсам имеются два приложения: vmnet-bridge и vmnet-dhcpd (соответствующие файлы находятся в каталоге /usr/bin). Программа vmnet-bridge используется в варианте "bridged networking" для поддержки прозрачного взаимодействия между vmnet0 и реальным сетевым интерфейсом, обычно eth0. Программа vmnet-dhcpd запускается как отдельный процесс в варианте "host-only networking". Этот процесс обеспечивает поддержку протокола DHCP для виртуальных машин, запущенных через vmnet1.

Начиная с версии 2.0 VMware Workstation для Linux одновременно с инсталляцией системы VMware на базовом компьютере может быть установлен сервер Samba, который необходим для предоставления ресурсов базового компьютера через сеть. Правда, сервер этот слегка модифицирован по сравнению с обычным Samba-сервером с той целью, чтобы обеспечить поддержку виртуальных Ethernet-адаптеров (в своей документации фирма VMware выражает надежду, что эти изменения войдут в следующие выпуски стандартного Samba-сервера). Если в ОС Linux, запущенной на базовом компьютере, уже запущен Samba-сервер, или вы хотите по каким-то причинам использовать стандартный вариант этого сервера, вы не должны устанавливать Samba-сервер при инсталляции системы VMware.

Вообще говоря, можно запустить на базовом компьютере одновременно как стандартный сервер Samba, так и тот вариант этого сервера, который поставляется вместе с системой VMware Workstation. Однако при этом надо учитывать, что версия стандартного Samba-сервера должна быть не ниже 2.0.6 и он должен быть корректно сконфигурирован. Определить версию стандартного Samba-сервера можно командой smbd -V, а для корректной настройки его фирма VMware предлагает воспользоваться примером конфигурационного файла smb.conf, размещенным на сайте фирмы.

Поддержка сетевых возможностей в операционной системе виртуального компьютера осуществляется с помощью виртуального Ethernet-адаптера(ов). К одному виртуальному компьютеру можно подключить до 3 таких адаптеров и они "представляются" операционной системе как адаптеры типа AMD PCNET PCI. Большинство операционных систем умеют распознавать такие адаптеры и автоматически подключают соответствующий драйвер. Поэтому для завершения конфигурирования сети в ОС виртуального компьютера остается только корректно задать необходимые параметры сетевого подключения (сетевой адрес компьютера, маску подсети, IP-адрес сервера имен и т. д.).



Установка лицензии на использование VMware


Лицензия высылается в виде текстового файла, присоединенного к сообщению. Для ее установки необходимо перейти в домашний каталог, создать в нем подкаталог с именем ".vmware" (mkdir .vmware), и скопировать полученный файл лицензии в этот подкаталог. Убедитесь, что имя файла начинается с подстроки "license". Теперь можно уже запустить систему виртуальных машин командой vmware (исполняемый файл vmware находится в каталоге /usr/bin, так что должен запускаться без указания полного пути) и создать в ней собственно виртуальный компьютер (или несколько таких компьютеров).



Установка средств сетевой поддержки


А теперь, получив необходимые предварительные знания, займемся подключением виртуального компьютера к сети.

Но прежде, чем заниматься таким подключением, вы должны определить для себя, какой из вариантов подключения вы будете использовать: "Host-only" или "Bridged networking" (как было сказано выше вариант "Custom" мы не рассматриваем). Эти два варианта ниже будут рассмотрены отдельно.

Хотя в разделе об инсталляции системы VMware было сказано, при задании конфигурации виртуального компьютера можно отказаться от конфигурирования сетевой поддержки, однако для того, чтобы такую поддержку задействовать, вам придется переустановить систему VMware. К счастью, сделать это очень просто, причем при такой переинсталляции не нарушается конфигурация созданных в системе виртуальных компьютеров (в частности, сохраняется вся информация, записанная на виртуальных дисках). Дело в том, что и конфигурация виртуальных машин и все относящиеся к ним файлы хранятся в двух подкаталогах домашнего каталога пользователя, создавшего виртуальный компьютер: ~/vmware и ~/.vmware. Эти каталоги не изменяются при переустановке ПО VMware, и, после такой переустановки, ранее созданные виртуальные машины будут снова запускаться без проблем (по крайней мере, в том случае, если вы не меняете версии ПО).

Для того, чтобы переустановить систему VMware надо сначала удалить ее, а потом установить заново. Если она устанавливалась из rpm-пакета, то переустановка выполняется командами

[root]# rpm -qa | grep VMware

(позволяет узнать точное имя установленного пакета, которое нужно в следующей команде)

[root]# rpm -e VMware-2.0.3-799 [root]# rpm -Uhv VMware-2.0.3-799.i386.rpm

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

Если вы устанавливали систему из tar-архива, то для ее удаления надо запустить скрипт vmware-uninstall.pl.

После того, как вы переустановили ПО, необходимо (как и при первой инсталляции) запустить скрипт vmware-config.pl, и теперь уже не пропускать этап задания конфигурации сети. Ниже приводится образец диалога, который происходит на этом этапе:

------------------------------------------------------------------------- Do you want this script to automatically configure your system to allow your Virtual Machines to access the host filesystem? (yes/no/help)


The version of Samba used in this version of VMware is licensed as described in the "/usr/share/doc/vmware/SAMBA-LICENSE" file. Hit enter to continue.

Enabling networking (this is required to share the host filesystem). Trying to find a suitable vmnet module for your running kernel.

None of VMware's pre-built vmnet modules is suitable for your running kernel. Do you want this script to try to build the vmnet module for your system (you need to have a C compiler installed on your system)? [yes]

Extracting the sources of the vmnet module. Building the vmnet module. The module loads perfectly in the running kernel.

Enabling host-only networking (this is required to share the host filesystem). Do you want this script to probe for an unused private subnet? (yes/no/help) [yes]

What will be the IP address of your host on the private network? 192.168.36.20 What will be the netmask of your private network? 255.255.255.0 -------------------------------------------------------------------------

Ответ на первый из приведенных в этом примере вопросов определяет, будет ли на базовом компьютере установлен Samba-сервер фирмы VMware. Если вы отвечаете утвердительно ("yes"), то на базовом компьютере устанавливается Samba-сервер vmware-smbd (это специально доработанная фирмой версия сервера Samba, см. выше). После этого Ваше решение требуется еще только для того, чтобы решить, задать ли IP-адреса самому или предоставить их выбор скрипту. Это решение вы принимаете, когда отвечаете на вопрос

"Do you want this script to probe for an unused private subnet? (yes/no/help)"

Если вы решили использовать только вариант "Bridged networking", то лучше ответить "n", и указать в ответе на следующий вопрос реальный адрес, полученный от администратора сети. Если же вы решите создать виртуальную сеть ("Host-only networking"), то лучше предоставить выбор адресов скрипту. Впрочем, и в последнем случае можно задавать адреса самому, придерживаясь соглашений, о которых было кратко рассказано выше.

Если же на первый вопрос в приведенном примере вы отвечаете отрицательно (т. е. отказываетесь от установки Samba-сервера от фирмы VMware), то следующим вопросом будет:

"Do you want to be able to use the network in your Virtual Machines? [yes]"



Как видите, этот вопрос предполагает только один вариант ответа (если вы отвечаете "нет", то оказываетесь от поддержки сети вообще). В случае же утвердительного ответа скрипт еще раз интересуется, не желаете ли вы сконфигурировать и "host-only networking":

Do you want to be able to use host-only networking in your Virtual Machines? [yes]

Если вы ответите "нет", то сможете использовать только вариант "Bridged networking", о чем свидетельствует появление следующего сообщения:

Starting VMware services: Virtual machine monitor [ OK ] Virtual ethernet [ OK ] Bridged networking on /dev/vmnet0 [ OK ]

Если же вы задействовали и вариант "Host-only networking", то это сообщение примет вид:

Starting VMware services: Virtual machine monitor [ OK ] Virtual ethernet [ OK ] Bridged networking on /dev/vmnet0 [ OK ] Host-only networking on /dev/vmnet1 (background) [ OK ]

В заключение скрипт еще попросит вас ввести имя и пароль пользователя, которому будет дан доступ к серверу Samba, и завершит работу.

Как следует из изложенного, интерфейс vmnet0 (используемый для "Bridged networking") задействуется в любом случае, даже если вы пытаетесь настроить сетевые службы системы VMware только на использование варианта "Host-only".

После завершения работы конфигурационного скрипта запустите систему VMware, выберите (если их несколько) нужный вам конфигурационный файл виртуального компьютера (через меню File | Open) и, не запуская виртуальный компьютер, проделайте следующее:

Запустите Редактор конфигурации (меню Settings | Configuration Editor).Щелкните по значку "+" слева от надписи "Ethernet Adapters". Появятся три дополнительные строки, соответствующие трем возможным виртуальным сетевым адаптерам. Переместите подсветку (курсор) на первую из этих строк. В правой части окна (которое до этого было пустым) появится картинка, подобная той, что изображена на рис. 18.7.


увеличить изображение
Рис. 18.7.  Окно настройки сетевого адаптера

Щелкните по треугольнику возле выпадающего меню выбора типа подключения (Connection Type) и выберите один из трех возможных вариантов (Bridged, HostOnly или Custom), в соответствии с принятым Вами ранее решением. Как было сказано выше, вариант Custom выбирать не стоит, пока вы не освоите систему VMware значительно лучше автора этой книги.После этого надо щелкнуть по кнопке Install и сохранить конфигурацию щелчком по кнопке Safe.



На этом установка необходимых сетевых средств системы VMware завершена. Однако требуется еще сконфигурировать сетевые службы операционной системы, запускаемой на виртуальном компьютере (в качестве пояснения приведем рис. 18.8).


увеличить изображение
Рис. 18.8.  Настройка сетевых средств в ОС виртуального компьютера

При этом в качестве сетевой платы надо выбрать плату AMD PCNET Family Ethernet adapter (PCI-ISA), а затем либо задать фиксированный сетевой адрес, либо задействовать динамическое получение адреса по протоколу DHCP. Более подробно о том, как это можно сделать, смотрите в руководствах по ОС, запускаемой на виртуальном компьютере. Стоит только отметить, что если вы установите на виртуальном компьютере несколько ОС и будете выбирать одну из них при загрузке, то надо будет настроить сетевые службы в каждой из этих ОС. Поскольку чаще всего в каждый момент времени может быть запущена только одна из этих ОС, можно использовать один и тот же IP-адрес во всех этих системах. Скорее всего, вам придется перезапустить ОС виртуального компьютера, чтобы сделанные изменения вступили в силу.

Если вы подключаетесь к реальной физической сети, то после этого вы сможете "увидеть" другие компьютеры локальной сети, раскрыв окно "Сетевое окружение" в Windows. А, следовательно, вы получите доступ и к тем ресурсам (дискам, каталогам, принтерам), которые на этих компьютерах отданы "в общее пользование". Однако ресурсы вашего базового компьютера вы, скорее всего, еще не увидите. Для того, чтобы дать доступ из Windows к дискам Linux-компьютера, необходимо запустить на последнем сервер Samba и правильно его настроить. Полностью описывать здесь настройки Samba-сервера нет никакой возможности: об этом написаны отдельные книги.

А теперь рассмотрим несколько примеров настройки для конкретных ситуаций, связанных с системой VMware. Надеюсь, что их рассмотрение позволит понять принципы такой настройки, а в совокупности с ранее приведенными сведениями, - и настроить нужную вам конфигурацию выхода виртуального компьютера в сеть.


Выделение оперативной памяти для VMware


Система VMware позволяет пользователям задавать как объем оперативной памяти, выделяемой каждому виртуальному компьютеру, так и общее количество ОП, зарезервированное для использования виртуальными машинами. Правильная настройка этих параметров очень важна, поскольку может существенно повлиять на производительность как виртуального компьютера, так и системы в целом.

Первый конфигурационный параметр, значение которого может устанавливаться пользователем, - это общее количество памяти, которое резервируется для всех запущенных виртуальных машин. Этот параметр может быть задан перемещением движка в окне, вызываемом через команду Host Reserved Memory в меню Settings.

В общем случае память, используемая каждой виртуальной машиной, берется из того же самого пула памяти, который используется ОС на базовом компьютере и всеми запущенными на нем приложениями. Однако, для повышения общей производительности, система VMware устанавливает задаваемый пользователем лимит памяти для всех виртуальных машин. Когда VMware использует эту память, она недоступна для других приложений, запущенных на базовом компьютере. Но когда VMware не использует эту память, она становится доступной для других приложений. Резервируя память, VMware позволяет виртуальным машинам работать более эффективно.

Память, используемая системой VMware, включает память, отдаваемую операционной системе виртуального компьютера, а также некоторое количество избыточной памяти, необходимой для функционирования самого виртуального компьютера. Объем этой избыточной памяти зависит от нескольких факторов, но обычно не превышает 10 мегабайт. Кроме того, для нормального функционирования ОС виртуальной машины, надо зарезервировать достаточное для этой ОС количество памяти.

Количество реально резервируемой системой VMware оперативной памяти динамически меняется в процессе работы системы. VMware использует зарезервированную память только тогда, когда определяет, что это необходимо для достижения приемлемой производительности виртуального компьютера. Даже если запущены несколько ВМ, реально может использоваться только часть зарезервированной памяти, а неиспользуемая зарезервированная память отдается ОС базового компьютера и запущенным в ней приложениям.

Рекомендуется резервировать для системы VMware 50% физической памяти базового компьютера. Отходить от этого правила могут только опытные пользователи, поскольку изменение этого параметра может существенно повлиять на производительность как базового, так и виртуального компьютера. Если выбрать слишком большое значение этого параметра, это может привести к сильному замедлению работы базового компьютера или даже к его зависанию. Слишком малое значение этого параметра приводит к падению производительности виртуального компьютера и ограничивает число ВМ, которые могут быть одновременно запущены.

Linux плохо ведет себя при нехватке оперативной памяти. По этой причине не стоит запускать одну или несколько виртуальных машин, если им требуется больше ОП, чем остается на базовом компьютере после запуска ОС и других приложений. Точнее, надо придерживаться следующего правила: "Общее количество оперативной памяти, выделяемой для всех одновременно запущенных виртуальных машин, не может превышать количества физической ОП минус объем памяти, которая необходима для работы ОС базового компьютера и запущенных в ней приложений".

Впрочем, система VMware сама ограничивает количество ВМ, которые могут быть одновременно запущены, исходя из количества зарезервированной для нее ОП. Если вы пытаетесь включить питание виртуальной машины, а количества зарезервированной ОП для ее работы недостаточно, включения ВМ не произойдет.

Второй конфигурационный параметр, который могут изменять пользователи системы VMware, - это объем физической оперативной памяти, выделяемый данной виртуальной машине. Значение этого параметра задается в Редакторе конфигурации (Settings > Configuration Editor > Memory). Минимальное значение этого параметра определяется требованиями ОС. Мастер конфигурации вообще не запрашивает у пользователя значение этого параметра, выбирая его исходя из того, какую ОС выбрал пользователь.

Оптимальное значение размера памяти, отводимой виртуальному компьютеру, зависит от нескольких факторов.

Какие приложения будут запускаться на виртуальной машине.Будут ли другие виртуальные машины, запущенные наряду с данной ВМ, конкурировать с ней за разделение оперативной памяти.Какие приложения будут запускаться на базовом компьютере одновременно с данной виртуальной машиной.



Выход в локальную сеть


Подключить физический диск к виртуальному компьютеру удается не всегда. Самая очевидная причина затруднений состоит в том, что на физическом диске создана файловая система, с которой не умеет работать ОС виртуального компьютера. И хотя можно пытаться установить специальные драйверы, но делать это (на мой взгляд) не стоит, поскольку можно организовать обмен данными с базовым компьютером, а также со всем остальным миром, с помощью сетевых средств. Они изначально создавались в расчете на взаимодействие различных ОС, так что предоставляют необходимые средства обмена данными. Судя по моему опыту, это гораздо более реалистичный и безопасный способ организации такого обмена. Но сначала несколько пояснений общего плана.



Выключение ВМ


Как и на реальных компьютерах, перед выключением питания виртуальной машины необходимо выполнить процедуру остановки (Shutdown) запущенной на ней ОС. После того, как ОС будет остановлена (появится соответствующее сообщение, либо окно VMware станет черным) щелкните по клавише Power Off на панели VMware. После этого можно закрыть VMware любым способом из тех, которые служат для закрытия окна (например, воспользовавшись командой меню File | Exit).



Загрузка ОС с физического диска


Раз имеется возможность подключать физические диски к виртуальному компьютеру, то, естественно, возникает вопрос: "А нельзя ли загружать операционную систему виртуального компьютера с физического диска?" Такой вопрос особенно актуален в том случае, когда до установки системы VMware на Вашем компьютере уже были установлены в разные разделы как одна из операционных систем Windows, так и ОС Linux (в которой вы запускаете виртуальный компьютер). И ответ на этот вопрос положителен. Система VMware может даже использовать загрузчики, установленные ранее на компьютере. Загрузчик будет работать внутри VMware и даст возможность пользователю выбрать операционную систему, запускаемую на виртуальном компьютере. Можно и заново установить, например, Windows 98 на физический диск, а потом запускать ее в виртуальной машине.

VMware пока что (в версии 2) поддерживает загрузку с реальных дисков только для IDE устройств (в то время как файл, моделирующий виртуальный диск, может быть расположен как на IDE, так и на SCSI диске)1). Однако использование ОС, установленной на физическом диске, сопряжено с некоторыми особенностями, которые надо учитывать при настройке обеих ОС (даже кроме тех опасностей, о которых мы уже говорили раньше). Первой из таких особенностей является необходимость создания отдельного профиля оборудования для Windows.

Операционные системы фирмы Microsoft (включая Windows 95, Windows 98, Windows NT 4.0) используют понятие "профиля оборудования". Каждый профиль определяет некоторый набор известных системе устройств. Если заданы два или более профиля, пользователю в процессе загрузки предлагается выбрать один из них.

ОС Windows 95, Windows 98 и Windows 2000 благодаря механизму Plug and Play в процессе загрузки проверяют соответствие реальных устройств указанному профилю оборудования. Несоответствие приводит к тому, что снова запускается механизм определения устройств и установки драйверов. Хотя в большинстве случаев этот процесс завершается успешно, это существенно замедляет загрузку.

Windows NT не поддерживает Plug and Play и использует профиль оборудования для инициализации устройств. Несоответствие реального набора тому, что указано в профиле, вызывает выдачу сообщения об ошибке и отключение (точнее неподключение) устройства.

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

Вначале проинсталлируйте операционную систему, которую вы хотите запускать на виртуальном компьютере, на физический IDE-диск реального компьютера (естественно, это делать не нужно, если ОС уже была установлена ранее).До запуска системы VMware загрузите эту ОС (имеется в виду одна из ОС семейства Windows) на реальном компьютере и создайте два профиля оборудования. Для этого откройте Панель управления, войдите в меню Система и переключитесь на вкладку Профиль оборудования. Там уже имеется как минимум один профиль, который называется "Текущий (Original configuration)". Щелкните по кнопке Копировать и назовите новый профиль, например, "Виртуальная машина".Только для Windows NT/2000: Отключите некоторые устройства во вновь созданном профиле. Для этого откройте окно Устройства в Панели управления, выберите отключаемое устройство и нажмите экранную клавишу Остановить. Отключить необходимо аудиоплату, MIDI, джойстик, плату Ethernet и другие сетевые, а также USB устройства (отключать их надо только во вновь созданном профиле, не промахнитесь). Если вы установили и предполагаете запускать в виртуальном компьютере Windows 95 или Windows 98, то отключать устройства не требуется. Они будут отключены автоматически на стадии загрузки ОС.Перезагрузите компьютер и запустите Linux.Убедитесь, что раздел физического диска, который отведен для использования операционной системой виртуального компьютера, не смонтирован в Linux. Удалите или закомментируйте соответствующую строку в файле /etc/fstab, а в данном сеансе размонтируйте этот раздел из командной строки.Установите права доступа к разделам жесткого диска. О том, как это сделать, было сказано раньше. Самый простой и вполне приемлемый способ заключается в том, чтобы включить пользователей системы VMware в группу disk, дав тем самым доступ ко всем физическим устройствам /dev/hd[abcd], которые содержат операционные системы или загрузчик, а в вопросах разграничении доступа положиться на конфигурационные файлы VMware. Таким образом обеспечивается доступ для загрузчика к файлам, необходимым для запуска операционных систем (например, LILO требуется доступ по чтению к каталогу /boot в разделе Linux для запуска операционных систем, отличных от Linux, которые могут быть расположены на других разделах или других дисках).Сконфигурируйте виртуальную машину под вновь установленную операционную систему (используя Мастер конфигурации или Редактор конфигурации). При выполнении процедуры конфигурации для реальных дисков учтите следующие моменты: При выборе типа виртуального диска выберите вариант "Existing Partition".Для раздела диска, в котором находится соответствующая операционная система, установите опцию "read/write" (для этого надо щелкнуть мышкой по экранной кнопке Partitions... в окне Редактора конфигурации, соответствующем нужному жесткому диску). Для основной загрузочной записи (Master boot record - MBR) и для других разделов диска(ов) рекомендуется дать право только на чтение (read only), поскольку, например, загрузчик LILO для загрузки операционной системы должен иметь возможность прочитать файл из каталога /boot в Linux-разделе.

Примечание

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

<
/li>Запустите VMware и проверьте созданную конфигурацию. Для этого можно дать команду vmware <config-file>, где <config-file> - это полный путь к конфигурационному файлу, созданному Мастером конфигурации (имена таких файлов оканчиваются на .cfg). Можно также дать просто команду vmware и открыть файл конфигурации через меню File | Open. После этого откройте меню Settings | Configuration Editor и убедитесь в том, что в конфигурации IDE- дисков указан хотя бы один физический диск ("Raw Disk") и для него введено имя файла описания диска (raw disk description file). Имена этих файлов обычно имеют вид <configuration-name>.hda.dsk, <configuration-name>.hdb.dsk, и т. д. Можно проверить и другие опции конфигурации, особенно такие, для которых вы приняли значения по умолчанию, например, вы можете изменить значение объема памяти, выделяемой виртуальной машине.Включите питание виртуальной машины (кнопка Power On). Система VMware запускает Phoenix BIOS, после чего считывается главная загрузочная запись загрузочного диска (master boot record - MBR). Если вы сконфигурировали систему с использованием нескольких IDE дисков, VMware BIOS будет пытаться произвести загрузку ОС с этих дисков в следующей последовательности: Primary MasterPrimary SlaveSecondary MasterSecondary Slave

Если у вас несколько SCSI-дисков, VMware BIOS производит загрузку в порядке номеров SCSI устройств.

Если в Вашей системе сконфигурированы как SCSI, так и IDE диски, VMware BIOS сначала пытается загрузить ОС со SCSI-устройств, затем - с IDE-дисков. Опрос устройств производится в той же последовательности, как было сказано выше.

Порядок обращения к дискам в процессе загрузки можно изменить через меню Boot в Phoenix BIOS виртуальной машины. Для этого после включения питания VMware нажмите клавишу <F2>, чтобы попасть в меню BIOS.

Если у вас установлено несколько операционных систем (многовариантная загрузка), то выберите нужную ОС тем же способом, как вы делали это до установки системы VMware (из меню, предлагаемого при загрузке).В процессе загрузки ОС должно появиться меню выбора конфигурации (если, конечно, вы создали отдельный профиль оборудования для виртуального компьютера):



Введите номер, соответствующий конфигурации виртуального компьютера (в ситуации, изображенной на рис. 18.6, это будет 2) и нажмите клавишу <Enter>. В процессе дальнейшей загрузки ОС вы получите некоторые сообщения об ошибках и дополнительные задержки в процессе загрузки, но это нормально.


Рис. 18.6.  Выбор профиля оборудования для виртуального компьютера

Только для Windows 2000: После того, как вы запустите Windows 2000 (в качестве ОС на виртуальном компьютере) вы увидите диалоговое окно Найдено новое оборудование (Found New Hardware), в котором предлагается установить новый драйвер для видео-контроллера. Этого делать не нужно. Щелкните по кнопке Отмена (Cancel) для того, чтобы закрыть диалоговое окно и откажитесь от предлагаемой перезагрузки компьютера. Windows 2000 автоматически обнаружит и установит драйвер для сетевой карты AMD PCnet PCI Ethernet. После этого вы должны установить пакет VMware Tools для Windows (на виртуальном компьютере). После того, как будет установлен SVGA-драйвер от фирмы VMware, Inc. (входящий в состав пакета VMware Tools для Windows), перезагрузите ОС Windows 2000 на виртуальной машине. После перезагрузки вы можете поменять разрешение экрана у виртуальной машины (Свойства экрана | Параметры).

Если вы хотите использовать звуковую карту, работая с ОС Windows 2000 на виртуальном компьютере, прочитайте руководство по ее подключению на сайте фирмы VMware.

Только для Windows 95/98: вы увидите диалоговое окно Обнаружено новое оборудование. Windows предложит вам произвести поиск драйверов для него. Для большинства устройств драйверы уже установлены при инсталляции системы, однако, в некоторых случаях может понадобиться установочный CD ROM диск. Windows попросит вас несколько раз перезагрузиться при установке новых драйверов.

В некоторых случаях Windows может не распознать CD-ROM диск, когда выдается запрос на поиск драйверов. В таком случае рекомендуется попытаться указать в качестве пути к драйверу каталог C:\windows\system\ или отказаться от установки драйвера данного конкретного устройства. Подключение таких устройств может быть выполнено позже.



Когда Windows установит виртуальные устройства и драйверы для них, надо удалить из системы неработающие устройства, соответствующие реальному оборудованию. Для этого используйте вкладку Система | Устройства в Панели управления. Выберите неработающее устройство и щелкните по кнопке Удалить. Только учтите, что нужно предварительно выбрать профиль оборудования, соответствующий виртуальному компьютеру, чтобы не удалить устройства, работающие при запуске ОС с физического диска.

Только для Windows NT: После завершения загрузки ОС просмотрите протокол загрузки, чтобы определить те устройства, которые не подключились. Вы можете отключить их в профиле "Виртуальный компьютер", используя менеджер устройств (Панель управления | Устройства).

Убедитесь, что все виртуальные устройства работают корректно, особенно сетевые адаптеры. Помните, что состав оборудования виртуального компьютера существенно отличается от набора устройств, реально имеющихся на Вашем физическом компьютере.

Только для Windows 95/98: Если какое-то виртуальное устройство отсутствует, воспользуйтесь опцией Панель управления | Добавить новое оборудование.

Установите VMware Tools (если вы еще не сделали этого). Пакет VMware tools будет запускаться в обеих конфигурациях оборудования, но окажет какое-то влияние на работу только в конфигурации "Виртуальный компьютер".


Примечания

Когда вы в следующий раз загрузите Windows в реальном компьютере, используя профиль оборудования, соответствующий реальной конфигурации аппаратуры, в списке устройств могут появиться некоторые виртуальные устройства. Вы можете удалить их или отключить тем же самым способом, который был описан выше для отключения реальных устройств из профиля оборудования, соответствующего виртуальному компьютеру.Если вы при задании конфигурации виртуального компьютера установили для реального диска режим "с отложенной записью" (undoable), то при перезагрузке ОС вы должны будете либо согласиться с тем, чтобы все операции с диском, проделанные внутри виртуальной машины были сохранены на диске, либо отказаться от сохранения изменений.