Установка Xen 3.3 с ядром 2.6.27 на Ubuntu 8.10 (x86_64)

Опубликовано 21.12.2009

Автор: Installing Xen 3.3 With Kernel 2.6.27 On Ubuntu 8.10 (x86_64)
Перевод: Сгибнев Михаил

 В этом руководства показывается, как установить Xen 3.3 на хост Ubuntu 8.10(dom0). Xen 3.3 доступен в репозитарии Ubuntu 8.10, но ядро Ubuntu 8.10 (2.6.27-x) используется как domU, то есть выступает в роли гостевой машины, но не на уровне dom0. Поэтому мы должны собрать наше собственное dom0 ядро.

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

 (1) Предварительное примечание
 Я использую систему Ubuntu 8.10 x86_64 с именем server1.example.com и IP адресом 192.168.0.100 в качестве dom0. В роли domU будет выступать Debian Lenny.

 В этом руководстве будет показано, как создать image-based виртуальную машину и LVM-based виртуальную машину.

 Все действия будут выполняться с привилегиями пользователя root.

 (2) Устанавливаем Xen
 Сперва необходимо обновить систему:

apt-get upgrade

 И установить последнюю версию ядра из репозитария Ubuntu:

apt-get install linux-image-server linux-server

 Затем, установим Xen 3.3 и все необходимое для сборки ядра dom0:

apt-get install ubuntu-xen-server build-essential libncurses5-dev gawk mercurial

 Скачиваем исходные тексты ядра 2.6.27 Xen

mkdir -p ~/build/linux-2.6.27-xen
cd /usr/src/
hg clone http://xenbits.xensource.com/ext/linux-2.6.27-xen.hg

 И конфигурируем это ядро:

cd linux-2.6.27-xen.hg
make O=~/build/linux-2.6.27-xen/ menuconfig

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

General setup ---> Choose SLAB allocator (SLUB (Unqueued Allocator)) ---> (X) SLAB

Processor type and features ---> Subarchitecture Type (PC-compatible) ---> (X) Enable Xen compatible kernel

Bus options (PCI etc.) ---> [*] PCI support
[*] Xen PCI Frontend
[ ] Xen PCI Frontend Debugging (NEW)

 Измените 802.1d Ethernet Bridging на <*> 802.1d Ethernet Bridging:

Networking support ---> Networking options ---> <*> 802.1d Ethernet Bridging

 Отключите поддержку 10000 Mbit Ethernet(в противном случае можно получить ошибку при сборке):

Device Drivers ---> [*] Network device support ---> [ ] Ethernet (10000 Mbit) --->

 Затем обратимся к разделу Xen (вы должны выбрать версию, совместимую с Xen (3.0.4 или более позднюю) вместо версии Xen (3.0.2 или более позднюю)):

Device Drivers ---> XEN ---> [*] Privileged Guest (domain 0)
<*> Backend driver support (NEW)
<*> Block-device backend driver (NEW)
<*> Block-device tap backend driver (NEW)
<*> Network-device backend driver (NEW)
(8) Maximum simultaneous transmit requests (as a power of 2) (NEW)
[ ] Pipelined transmitter (DANGEROUS) (NEW)
< > Network-device loopback driver (NEW)
<*> PCI-device backend driver (NEW)
PCI Backend Mode (Virtual PCI) --->
[ ] PCI Backend Debugging (NEW)
< > TPM-device backend driver (NEW)
SCSI backend driver (NEW)
Block-device frontend driver
Network-device frontend driver
Network-device frontend driver acceleration for Solarflare NICs (NEW)
SCSI frontend driver (NEW)
<*> User-space granted page access driver (NEW)
<*> Framebuffer-device frontend driver (NEW)
<*> Keyboard-device frontend driver (NEW)
[*] Disable serial port drivers (NEW)
<*> Export Xen attributes in sysfs (NEW)
(256) Number of guest devices (NEW)
Xen version compatibility (3.0.4 and later) --->

 После этого мы компилируем и устанавливаем ядро:

make O=~/build/linux-2.6.27-xen/
make O=~/build/linux-2.6.27-xen/ modules_install install

 Обратим свой взор на каталог /boot:

root@server1:~# ls -l /boot
total 78364
-rw-r--r-- 1 root root 504280 2009-01-29 22:23 abi-2.6.27-11-server
-rw-r--r-- 1 root root 503560 2008-11-04 22:22 abi-2.6.27-7-server
-rw-r--r-- 1 root root 85313 2009-01-29 22:23 config-2.6.27-11-server
-rw-r--r-- 1 root root 87256 2009-02-12 20:51 config-2.6.27.5
-rw-r--r-- 1 root root 85319 2008-11-04 22:22 config-2.6.27-7-server
drwxr-xr-x 2 root root 4096 2009-02-12 22:28 grub
-rw-r--r-- 1 root root 8983433 2009-02-12 22:28 initrd.img-2.6.27-11-server
-rw-r--r-- 1 root root 8979323 2009-02-12 22:26 initrd.img-2.6.27-7-server
drwx------ 2 root root 16384 2009-02-12 19:30 lost+found
-rw-r--r-- 1 root root 124152 2008-09-11 22:11 memtest86+.bin
-rw-r--r-- 1 root root 1354638 2009-01-29 22:23 System.map-2.6.27-11-server
-rw-r--r-- 1 root root 1258568 2009-02-12 20:51 System.map-2.6.27.5
-rw-r--r-- 1 root root 1351952 2008-11-04 22:22 System.map-2.6.27-7-server
-rw-r--r-- 1 root root 1130 2009-01-29 22:27 vmcoreinfo-2.6.27-11-server
-rw-r--r-- 1 root root 1129 2008-11-04 22:25 vmcoreinfo-2.6.27-7-server
-rw-r--r-- 1 root root 2341536 2009-01-29 22:23 vmlinuz-2.6.27-11-server
-rw-r--r-- 1 root root 2192827 2009-02-12 20:51 vmlinuz-2.6.27.5
-rw-r--r-- 1 root root 2338976 2008-11-04 22:22 vmlinuz-2.6.27-7-server
-rw-r--r-- 1 root root 470144 2008-10-06 20:15 xen-3.3.gz
root@server1:~#

 Как вы видите, появилось новое ядро 2.6.27.5, без ramdisk, поэтому собираем его:

depmod 2.6.27.5
update-initramfs -c -k 2.6.27.5

 И обновляем загрузчик:

update-grub

 После этого открываем файл /etc/modules и убедимся в том, что в файле присутствует строка loop max_loop=64(этот шаг необходим только при создании image-based виртуальной машины):

vi /etc/modules

[...]
loop max_loop=64

 После чего перезагружаем машину:

reboot

 Выполним команду uname -r для того, чтобы убедиться в правильной установке ядра:

root@server1:~# uname -r
2.6.27.5
root@server1:~#

 (3) Создаем Image-Based виртуальную машину
Для создания виртуальных машин мы будем использовать xen-tools, так как этот инструмент справляется с задачей легко и непринужденно. Для получения дополнительной информации, обратитесь к этому документу.


[ad name=»Google Adsense»]



 Теперь мы редактируем файл /etc/xen-tools/xen-tools.conf. В этом файле содержатся значения по умолчанию для скрипта xen-create-image, которые будут использованы, если вы не измените их из командной строки. Я изменил нижеследущее, оставив остальное нетронутым:

[...]
dir = /home/xen
[...]
memory = 256Mb
[...]
dist = lenny # Default distribution to install.
[...]
gateway = 192.168.0.1
netmask = 255.255.255.0
broadcast = 192.168.0.255
[...]
passwd = 1
[...]
kernel = /boot/vmlinuz-2.6.27-11-server
initrd = /boot/initrd.img-2.6.27-11-server
[...]
mirror = http://ftp.de.debian.org/debian/
[...]
serial_device = hvc0
[...]
disk_device = xvda #default
[...]

 В строках kernel и initrd мы указываем не то ядро, которое мы собрали в предидущей главе, так как оно предназначено только для работы в dom0 и не будет работать как ядро domU. Пожалуйста, используйте одно из ядер Ubuntu, например — 2.6.27-11-server. Так как дефолтное ядро Ubuntu уже собрано с поддержкой Xen, нам нет необходимости в повторной сборке.

 Параметр dir указывает нам на каталог, где будут храниться виртуальные машины. dist указывает на то, какой дистрибутив будет установлен — в данном случае Debian Lenny

 Параметр passwd = 1 указывает на необходимость задания пароля для root при создании нового домена.

 Убедитесь, что вы указали сетевые параметы — gateway, netmask и broadcast address. Если вы этого не сделали и не указали их в командной строке, то рискуете осаться без сети на виртуальной машине.

 Очень важным параметром является serial_device = hvc0 (не xvc0 или tty1!), если вы допустите ошибку, то не сможете попасть на консоль виртуальной машины.

 Прежде, чем мы начнем, создадим каталог для хранения виртуальных машин:

mkdir /home/xen

 Ну, создаем наш первый домен — xen1.example.com, с адресом 192.168.0.101:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --arch=amd64 --role=udev

 Если вы указываете какие-либо параметры в командной строке, то они имеют больший приоритет, чем указанные в файле /etc/xen-tools/xen-tools.conf. Еще раз проверьте, что добавили в файл функцию —role=udev, иначе виртуальная машина не загрузится. Для получения более детальной информации, воспользуйтесь командой man xen-create-image.

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

root@server1:~# xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --arch=amd64 --role=udev

General Information
--------------------
Hostname : xen1.example.com
Distribution : lenny
Partitions : swap 256Mb (swap)
/ 4Gb (ext3)
Image type : sparse
Memory size : 256Mb
Kernel path : /boot/vmlinuz-2.6.27-11-server
Initrd path : /boot/initrd.img-2.6.27-11-server

Networking Information
----------------------
IP Address 1 : 192.168.0.101 [MAC: 00:16:3E:1E:C4:E1]
Netmask : 255.255.255.0
Broadcast : 192.168.0.255
Gateway : 192.168.0.1

Creating partition image: /home/xen/domains/xen1.example.com/swap.img
Done

Creating swap on /home/xen/domains/xen1.example.com/swap.img
Done

Creating partition image: /home/xen/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/xen1.example.com/disk.img
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
root@server1:~#

 Обратимся к файлу /etc/xen/xen1.example.com.cfg, чтобы посмотреть — чтоже там такое?

#
# Configuration file for the Xen instance xen1.example.com, created
# by xen-tools 3.9 on Fri Feb 13 00:28:34 2009.
#

#
# Kernel + memory size
#
kernel = '/boot/vmlinuz-2.6.27-11-server'
ramdisk = '/boot/initrd.img-2.6.27-11-server'
memory = '256'

#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w',
'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w',
]

#
# Hostname
#
name = 'xen1.example.com'

#
# Networking
#
vif = [ 'ip=192.168.0.101,mac=00:16:3E:1E:C4:E1' ]

#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

 Обратите внимание: если у вас dual-core или quad-core CPU и вы хотите, чтобы виртуальная машина использовала все ядра процессора, то добавьте к файлу конфигурации vcpus = ‘2’ или vcpus = ‘4’.

 Перед первым запуском виртуальной машины вам необходимо примонтировать хранилище и скопировать в него ядро domU (команда xen-create-image скопировала в виртуальную машину ядро dom0 kernel 2.6.27.5, а нам его необходимо заменить на 2.6.27-11-server).

mount -o loop /home/xen/domains/xen1.example.com/disk.img /mnt
cd /mnt/lib/modules/
cp -pfr /lib/modules/2.6.27-11-server/ .
cd
umount /mnt

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

xm create /etc/xen/xen1.example.com.cfg

 Для подключения к консоли виртуальной машины, выполните:

xm console xen1.example.com

 Для выхода из консоли нажмите CTRL+], или CTRL+5 if если вы используете PuTTY, или используйте SSH для подключения к 192.168.0.101.

 Для получения списка виртуальных машин, испольуйте команду xm list:

root@server1:~# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 3499 2 r----- 2826.0
xen1.example.com 22 256 1 -b---- 5.8
root@server1:~#

 Для выключения виртуальной машины, испольуйте команду xm shutdown xen1.example.com.

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

ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

 Приведу список самых популярных команд:

  • xm create -c /path/to/config — Старт виртуальной машины.
  • xm shutdown — Останов виртуальной машины.
  • xm destroy — Немедленный останов виртуальной машины. Аналаогично нажатию кнопки питания.
  • xm list — Список запущенных виртуальных машин.
  • xm console — Подключение к виртуальной машине.
  • xm help — Список всех команд.

 Для того, чтобы просмотреть список виртуальных машин, созданных утилитой xen-create-image, воспользуйтесь
командой xen-list-images:

root@server1:~# xen-list-images
Name: xen1.example.com
Memory: 256
IP: 192.168.0.101
root@server1:~#

 (4) Создаем LVM-Based виртуальную машину
 В этой главе мы создадим виртуальную машину использующую в качестве хранилища раздел LVM орневого домена, вместо файла. Виртуальные машины, использующие в качестве хранилища файл, черезвычайно медленны и сильно нагружают систему ввода/вывода.

 В данном примере, я использую Ubuntu 8.10 с LVM группой /dev/vg0, размером 465GB. /dev/vg0 содержит два логических раздела, /dev/vg0/root и /dev/vg0/swap_1, которые занимают 48GB простванства, а остельное может быть использовано для создания логических разделов виртуальных машин.

root@server1:~# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 465.26 GB
PE Size 4.00 MB
Total PE 119106
Alloc PE / Size 12396 / 48.42 GB
Free PE / Size 106710 / 416.84 GB
VG UUID 8t178I-M2Fa-T9U6-8b76-Svjy-E7NW-fYIK1D

root@server1:~#

root@server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/root
VG Name vg0
LV UUID CtAiSe-jr1F-Ibvj-80zR-DRnK-dgPz-OPoxnv
LV Write Access read/write
LV Status available
# open 1
LV Size 46.56 GB
Current LE 11920
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0

--- Logical volume ---
LV Name /dev/vg0/swap_1
VG Name vg0
LV UUID n1DY62-rNBY-LLA9-jYZm-LypC-4LYW-Q4aiQB
LV Write Access read/write
LV Status available
# open 1
LV Size 1.86 GB
Current LE 476
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1

root@server1:~#

 Для создания виртуальных машин мы будем использовать xen-tools, что сделает процесс легким и непринужденным. Для получения дополнительной справочной информации, обратитесь к этому документу. Этот инструментарий установился как зависимость для ubuntu-xen-server и не требует дополнительной инсталляции.

 Теперь отредактируем /etc/xen-tools/xen-tools.conf.

[...]
lvm = vg0
[...]
memory = 256Mb
[...]
dist = lenny # Default distribution to install.
[...]
gateway = 192.168.0.1
netmask = 255.255.255.0
broadcast = 192.168.0.255
[...]
passwd = 1
[...]
kernel = /boot/vmlinuz-2.6.27-11-server
initrd = /boot/initrd.img-2.6.27-11-server
[...]
mirror = http://ftp.de.debian.org/debian/
[...]
serial_device = hvc0
[...]
disk_device = xvda #default
[...]

 В строках kernel и initrd мы указываем не то ядро, которое мы собрали в предыдущей главе, так как оно предназначено только для работы в dom0 и не будет работать как ядро domU. Пожалуйста, используйте одно из ядер Ubuntu, например — 2.6.27-11-server. Так как дефолтное ядро Ubuntu уже собрано с поддержкой Xen, нам нет необходимости в повторной сборке.

 Убедитесь, что раскомментировали строку lvm и указали корректную группу (в моем случае vg0), при этом проверьте, что строка dir закомментирована.

 Параметр passwd = 1 указывает на необходимость задания пароля для root при создании нового домена.

 Убедитесь, что вы указали сетевые параметы — gateway, netmask и broadcast address. Если вы этого не сделали и не указали их в командной строке, то рискуете осаться без сети на виртуальной машине.

 Очень важным параметром является serial_device = hvc0 (не xvc0 или tty1!), если вы допустите ошибку, то не сможете попасть на консоль виртуальной машины.

 Ну, создаем наш первый домен — xen1.example.com, с адресом 192.168.0.101:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --arch=amd64 --role=udev

 Если вы указываете какие-либо параметры в командной строке, то они имеют больший приоритет, чем указанные в файле /etc/xen-tools/xen-tools.conf. Еще раз проверьте, что добавили в файл функцию —role=udev, иначе виртуальная машина не загрузится. Для получения более детальной информации, воспользуйтесь командой man xen-create-image.

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

root@server1:~# xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --arch=amd64 --role=udev

General Information
--------------------
Hostname : xen1.example.com
Distribution : lenny
Partitions : swap 256Mb (swap)
/ 4Gb (ext3)
Image type : full
Memory size : 256Mb
Kernel path : /boot/vmlinuz-2.6.27-11-server
Initrd path : /boot/initrd.img-2.6.27-11-server

Networking Information
----------------------
IP Address 1 : 192.168.0.101 [MAC: 00:16:3E:BF:02:B9]
Netmask : 255.255.255.0
Broadcast : 192.168.0.255
Gateway : 192.168.0.1

Creating swap on /dev/vg0/xen1.example.com-swap
Done

Creating ext3 filesystem on /dev/vg0/xen1.example.com-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
root@server1:~#

 Как мы можем увидеть из вывода команды xen-create-image был создан новый логический раздел для виртуальной машины в группе vg0, называющийся /dev/vg0/xen1.example.com-disk, содержащий корневую файловую систему и раздел /dev/vg0/xen1.example.com-swap, содержащий файл подкачки. Посмотрим:

root@server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/vg0/root
VG Name vg0
LV UUID CtAiSe-jr1F-Ibvj-80zR-DRnK-dgPz-OPoxnv
LV Write Access read/write
LV Status available
# open 1
LV Size 46.56 GB
Current LE 11920
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0

--- Logical volume ---
LV Name /dev/vg0/swap_1
VG Name vg0
LV UUID n1DY62-rNBY-LLA9-jYZm-LypC-4LYW-Q4aiQB
LV Write Access read/write
LV Status available
# open 1
LV Size 1.86 GB
Current LE 476
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1

--- Logical volume ---
LV Name /dev/vg0/xen1.example.com-swap
VG Name vg0
LV UUID 0sVqfr-TUoJ-FLeo-qgVn-HIiy-lIeF-dSi3gn
LV Write Access read/write
LV Status available
# open 0
LV Size 256.00 MB
Current LE 64
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:2

--- Logical volume ---
LV Name /dev/vg0/xen1.example.com-disk
VG Name vg0
LV UUID otgxt7-T5cW-zaxd-y7x3-qwnp-gbmo-oriRLt
LV Write Access read/write
LV Status available
# open 0
LV Size 4.00 GB
Current LE 1024
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:3

root@server1:~#

Посмотрим конфигурационный файл виртуальной машины — /etc/xen/xen1.example.com.cfg.

vi /etc/xen/xen1.example.com.cfg

#
# Configuration file for the Xen instance xen1.example.com, created
# by xen-tools 3.9 on Fri Feb 13 00:47:09 2009.
#

#
# Kernel + memory size
#
kernel = '/boot/vmlinuz-2.6.27-11-server'
ramdisk = '/boot/initrd.img-2.6.27-11-server'
memory = '256'

#
# Disk device(s).
#
root = '/dev/xvda2 ro'
disk = [
'phy:/dev/vg0/xen1.example.com-swap,xvda1,w',
'phy:/dev/vg0/xen1.example.com-disk,xvda2,w',
]

#
# Hostname
#
name = 'xen1.example.com'

#
# Networking
#
vif = [ 'ip=192.168.0.101,mac=00:16:3E:BF:02:B9' ]

#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

 Обратите внимание: если у вас dual-core или quad-core CPU и вы хотите, чтобы виртуальная машина использовала все ядра процессора, то добавьте к файлу конфигурации vcpus = ‘2’ или vcpus = ‘4’.

 Если вы сравните с примером выше, то увидите, что при использовании файла в качестве хранилища, соответствующая строка будет выглядеть как disk = [ ‘file:/path/to/xen1.example.com/disk.img,xvda1,w’, ‘file:/path/to/xen1.example.com/swap.img,xvda2,w’ ].

 Перед первым запуском виртуальной машины вам необходимо примонтировать хранилище и скопировать в него ядро domU (команда xen-create-image скопировала в виртуальную машину ядро dom0 kernel 2.6.27.5, а нам его необходимо заменить на 2.6.27-11-server).

mount /dev/vg0/xen1.example.com-disk /mnt
cd /mnt/lib/modules/
cp -pfr /lib/modules/2.6.27-11-server/ .
cd
umount /mnt

 Все остальные шаги повторяют наши действия в прошлой главе.

 Ссылки:


[ad name=»Google Adsense»]



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

3 комментария в Установка Xen 3.3 с ядром 2.6.27 на Ubuntu 8.10 (x86_64)

  1. Хорошо бы кто написал как ставить из исходников.
    cd /usr/src
    скачал hg clone http://xenbits.xensource.com/xen-unstable.hg
    Оказалось последняя это 4 ый XEN релиз кандидат
    распаковал
    сделал make world
    make install
    в grub 2 появилась верхняя строка новая но она не грузится.

  2. У меня и того хуже, hg clone http://xenbits.xensource.com/… вообще не отрабатывает.
    Выдает:
    adding changesets
    adding manifests
    adding file changes — и вот на этом встает намертво, около пол часа ждал — никакого эффекта.
    Может кто подскажет в чем проблема?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*