Добавить в корзинуПозвонить
Найти в Дзене
ITFediration

Уроки Linux, виртуализация, диски и создание виртуальной машины Ubuntu. Часть вторая.

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

Всем привет, это продолжение предыдущей статьи, где я остановился на том, что в этой части будет Ubuntu (установка будет производиться на VMware). Фактически это так, но перед этим стоит разобрать некоторые моменты и начнем мы с виртуализации.

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

Технологии виртуализации

Трансляция вызовов

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

Аппаратная виртуализация

В данном случае процессор позволяет гипервизору задавать контекст виртуальных машин, что упрощает переключение кода между гостевым кодом и кодом хоста. Существует несколько неродственных систем виртуализации — Intel VT и AMD-V.

Паравиртуализация

Тот случай, когда для упрощения работы в виртуальной машине запускается не оригинальная операционная система, а слегка измененная. Как правило, речь идет о модификации ядра. Таким образом, операционная система «знает», что она выполняется не на аппаратной платформе, а в условиях виртуальной машины, что позволяет добиться еще лучшей производительности и интеграции с операционной системой-хостом. Не всегда такое представляется возможным, например, для виртуализации Windows. Тем не менее, и при запуске неизмененного ядра операционной системы доступна частичная виртуализация за счет установки специальных утилит, демонов и драйверов, которые рассчитаны на работу с виртуальным оборудованием.

Контейнерная виртуализация

Очень сильно отличающаяся от всего вышесказанного технология. Если используется одна и та же операционная система для виртуализации (либо родственные системы), можно изолировать процессы, пользователей, создать изолированные разделы на дисках, отдельные виртуальные сетевые интерфейсы. В этом случае каждая из таких «групп» представляет своего рода изолированный клон виртуальной системы. Такой механизм называется контейнерной виртуализацией. Все экземпляры виртуальных машин используют одно и то же ядро операционной системы хоста, но операционное окружение каждой из них изолированно, обладает своими пользователями, настройками, IP-адресами, операционными системами. Такой подход позволяет, например, на одном ядре Linux запускать разные операционные системы (Debian и Red Hat например). Таким образом достигается наилучшая производительность, но, с другой стороны, виртуальные машины могут в большей степени конкурировать за аппаратные ресурсы (которые при контейнерной виртуализации превращаются в своего рода коммунальные ресурсы, а не сразу выделяются, как у вышестоящих способов).

Диски, дисковые устройства, разметка

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

В дисковых операционных системах (CP/M, DOS, OS/2, Windows) диски и разделы на дисках именуются буквами (C: D: E:), файлы отсчитывают свой путь от буквы диска (C:\Windows\System32\Drivers\etc\hosts, D:\backup). В UNIX-подобных системах это не так. Есть виртуальная файловая система, к которой подключаются дисковые устройства, в одной иерархии. Скажем / — корень — это точка подключения (монтирования) виртуальной файловой системы, к ней подключается дисковой раздел, используемый файловой системой. CDROM здесь будет уже не E:, а /cdrom или /mnt/cdrom. Таким образом, файл, который в Windows выглядит как E:\autorun.inf, в Linux будет выглядеть как /cdrom/autorun.inf

Но /cdrom — это не имя устройства, равно как и E: — не имя и не тип устройства. Если в Windows E: может быть как CD-диском, так и разделом на жестком диске, так и в Linux CDROM может быть подключен (смонтирован) в /cdrom, /mnt/cdrom или /mnt/disk. Более того, в /mnt/disk может быть подключен (смонтирован) не обязательно CDROM, но и флеш-диск, и раздел на жестком диске, или даже сетевое хранилище. В UNIX-подобных архитектурах имеется концепция, согласно которой все есть файл. Впрочем, подобная особенность была частично реализована и в DOS. В DOS имелись особые файлы устройств, не привязанные к файловой системе. Так как нельзя было создать файл с таким именем, они присутствовали в любой директории — con nul prn. Копирование файла в con выводило его на экран, в nul — не делало ничего, в prn — выводило на принтер. Попытка скопировать con в файл заставляла набирать строчки с клавиатуры, а команда copy nul file создавала в текущей директории пустой файл).
Кстати, обратите внимание, что в c:\ никакого con (как и nul, как и prn) нет. С тем же успехом можно было бы писать d:\con или просто con.

Ctrl-Z (^Z) в Windows посылает спецсимвол конец файла (EOF), после чего управление вновь возвращается в командную оболочку. В Linux Ctrl-Z имеет другое назначение, а чтобы послать EOF, используется комбинация Ctrl-D (^D). Запомните это.

Итак, мы узнали, что в DOS и WINDOWS есть специальные файлы устройств, которые якобы присутствуют в любой директории. Аналогичные устройства есть и в Linux, только, чтобы не замусоривать другие директории, для устройств в Linux есть специальная директория /dev.

Там аналогом con будет файл /dev/tty, аналогом nul — файл /dev/null, аналогом com1 — /dev/ttyS1.

Эта аналогия неспроста. Файлы устройств, как и многие утилиты для DOS, Билл Гейтс подглядел как раз в UNIX.

Все устройства, с которыми предполагается работа, в Linux (и других UNIX-подобных системах) находятся в директории /dev, в том числе и дисковые устройства. Например, /dev/hda, /dev/hda1, /dev/hdb, /dev/sda, /dev/sda1.

Что это такое, мы разберемся чуть позже. Кстати, в Windows тоже присутствует скрытый, не привязанный к диску, раздел \Devices, в котором тоже присутствуют аналогичные дисковые устройства. Во внутреннем представлении путь к файлу может выглядеть так \Devices\Harddisk0\Partition1\Windows\system32\imageres.dll.

Итак, если имеется диск, его можно задействовать под систему полностью. В DOS или Windows он будет выглядеть как диск C:

Что делать, если мы хотим установить две операционные системы? Даже две Windows себя не будут комфортно чувствовать в одном C:, что уж говорить о Windows и Linux, которые даже файловые системы используют разные. В Windows это, как правило, NTFS, в Linux, как правило, ext4.

Таким образом, нам надо сделать на одном диске два раздела. Если оба будут использоваться в Windows, на одном физическом диске будут присутствовать C: и D:. Если мы используем Linux, Windows будет видеть файлы в разделе C: и все, а Linux — файлы в своем разделе, смонтированные в корень /.

Каким образом осуществляется разбиение диска на разделы?

Все зависит от того, какая таблица разделов используется: GPT или содержащая MBR. Ранее все диски использовали MBR, сейчас все большее распространение получает GPT.

Диск с MBR — Master Boot Record (главная загрузочная запись) содержит исполняемый код, необходимый для передачи управления, загрузчик и таблицу разделов (partition table). Может содержать только 4 первичных (primary) раздела, а при необходимости большего количества разделов вместо одного из первичных можно создать расширенный раздел (extended partition). Такой раздел будет содержать внутри себя еще несколько (до 16) разделов, называемых логическими (logical). Есть определенные ограничения, связанные с созданием разделов и установленными на нем ОС. Например, Windows необходимо обязательно устанавливать в первичный раздел, помеченный как активный (загрузочный). Для разделов GNU/Linux таких ограничений сейчас нет.

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

Диски с GPT (GUID Partition Table) в отличие от MBR, больше не содержат загружаемый код в самом начале, эти функции отнесены к UEFI. Более того, GPT является частью стандарта UEFI. Блок MBR все равно присутствует в начале для совместимости и защиты от повреждения утилитами, не умеющими работать с GPT, но понимающими MBR. В совместимом MBR указан один раздел, охватывающий весь диск. Это сделано для предотвращения ошибочной разметки и форматирования диска программами, не распознающими GPT.

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

fdisk не будет работать с gpt, вместо него следует использовать gdisk. Можно использовать и gparted, но надо учитывать, что parted и gparted не могут увеличить размер раздела, если в его конец добавить неразмеченные блоки для расширения.

Если в Windows разделы именуются С:, D:, E: и т.д., в Linux диски именуются в формате /dev/hdX (для ATA) или /dev/sdX (для SATA), где X – буква. Но если в Windows принята нумерация с буквы C, так как A и B использовались для дисковода, здесь диски нумеруются с А. Для дисковода имеется устройство /dev/fd0. Первый HDD-диск будет иметь наименование /dev/sda, второй — /dev/sdb, третий — /dev/sdc.

Разделы обозначаются цифрами. Если два HDD будут в Windows иметь разделы с именами C:, D:, E:, вне зависимости от их местоположения, в Linux будут разделы /dev/sda1, /dev/sda2, /dev/sdb1, /dev/sdb2 и т.д. При этом имена с /dev/sda1 по /dev/sda4 предназначены для первичных разделов, логические разделы именуются /dev/sda5, /dev/sda6 и т.д.

Это не единственный подход именования в UNIX-подобных системах. Например, /dev/da0s1a, dev/da1s1b и т.д.

В загрузчике GRUB применяется свое именование разделов. Первый раздел /dev/sda1 будет иметь вид (hd0,msdos1), /dev/sda5 будет иметь вид (hd0,msdos5), /dev/sdb1 — (hd1, msdos1).

Пример разметки (система используется в Windows, тем не менее, даны наименования разделов и для Linux).

-2

Скачавание ISO образа Ubuntu

Какую версию выбрать, 32-битную или 64-битную?

Существует расхожее утверждение, что 64-битная операционная система поддерживает работу с оперативной памятью более 4Гб, и поэтому, если нужно использовать компьютер с более чем 4Гб RAM, нужен 64-битный процессор и 64-битная ОС. Можно поставить 32-битную систему, но тогда можно использовать только 4Гб.

Отчасти это так, но дело в том, что 64-битная архитектура процессора — не только разрядность адресной шины и шины данных, но и новый машинный код. Часто встречаются 64-битные процессоры на машинах с RAM менее 4Гб. Так стоит ли устанавливать 64-битную ОС? Ответ — стоит. Используя 32-битную ОС на 64-битном процессоре, вы заставляете его работать в режиме совместимости с 32-битной архитектурой, следовательно, новые возможности процессора не используются.

Скачиваем образ Ubuntu

Теперь идем на https://www.ubuntu.com/.

При работе с Ubuntu берем во внимание, что релизы с нечетными номерами являются экспериментальными и не поддерживаемыми (например 15, 17, 19, 21), релизы с четными номерами являются стабильными, опробованными и поддерживаемыми (14, 16, 18, 20). Все изменения сначала вносятся в экспериментальную версию, а потом уже добавляются в поддерживаемую. Для полноценной работы требуется использовать стабильную версию.

В данном пособии работа ориентируется на Ubuntu 20.04 LTS.

LTS означает Long Term Service, соответственно, в течение 5 лет можно быть уверенным, что будут выпускаться обновления, исправления, закрытия уязвимостей.

Заходим на страницу: https://ubuntu.com/download/desktop.

Нам предлагают скачать Desktop-версию. Desktop от Server-версии отличается поддержкой X-Server и установленными графическими приложениями. Для изучения и домашнего использования подойдет Desktop, тем более что он умеет то же самое, что и Server.

Скачиваем образ ISO.

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

Начинаем создание виртуальной машины.

-3

На данном этапе предлагается два варианта: доверить конфигурацию виртуальной машины VMware или сделать это вручную. Я выбираю второй вариант.

-4

Тут без изменений.

-5

Выбираем «Установить систему позже», потому что ОС установит себя сама, не дав выбрать язык и другие настройки.

-6

Выбираем: «Ubuntu 64-bit». Если у вас отсутствует при выборе вариант на 64 бит, включите виртуализацию в BIOS/UEFI.

-7

Здесь указываем название виртуальной машины и директорию где будут храниться ее файлы на ваше усмотрение.

-8

Выставляем количество ядер процессора на ваше усмотрение, я поставлю два ядра, так как в рамках обучения этого достаточно.

-9

И так же выбираем количество оперативной памяти на ваше усмотрение.

-10

Для удобства в будущем, стоит выбрать сетевую конфигурацию «мост»

-11

Изменения на ваше усмотрение.

-12

Изменения на ваше усмотрение.

-13

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

-14

Изменения на ваше усмотрение. Я оставлю параметры по умолчанию.

-15

Оставляем как есть.

-16

Проверяем конфигурацию и корректируем при необходимости. После переходим в параметры по кнопке: «Customize Hardware».

-17

В настройках CD/DVD выбираем использование ISO образа и выбираем образ Ubuntu Desktop. После выходим из параметров и завершаем создание виртуальной машины.

-18

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

-19

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

А пока на этом все, до встречи на следующих уроках!