Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Переводим Debian Squeeze в PV Xen (или устанавливаем PV Debian)

Практика



Предстала передо мной задача установить паравиртуальные ОС Debian на сервер Xen. Версия Xen у меня 4.0.1-2, версия Debian - 6 (Squeeze), не важно - 32 или 64 бита. В интернете есть несколько статей на эту же тему, оперирующих установкой паравиртуального Debian напрямую, без использования HVM. Эти статьи были совершенно бесполезны для Lenny из-за того, что ни по одной из них установить Debian 5 у меня не получилось (неважно - каким методом предлагали совершать установку). На текущий момент по планете шествует Squeeze и его прямую установку я обязательно проверю в ближайшее время (есть хороший задел, чтобы установка сразу паравиртуальной системы получилась).

Итак, эту статью можно смело использовать для:
А) Установки Debian 6 Squeeze с нуля через установку сначала в HVM-домен и далее - преобразование в паравиртуальный,
Б) Для конвертирования уже существующей HVM-версии Debian Squeeze в паравиртуальный режим.


Начнем. Если у Вас Debian уже установлен в HVM DomU - двигайтесь сразу к пункту "после установки".


1) Создаем HVM домен.

# cd /etc/xen
# mkdir vm_debian
# cd vm_debian


Создаем диск для системы, например, 10Гб

# dd if=/dev/zero of=hdd0 bs=1M count=10240


Создаем конфиг HVM-домена для Debian-системы. Назовем файл vm.cfg. Содержание файла:

kernel = 'hvmloader'
builder = 'hvm'
memory = '256'
device_model = '/usr/lib/xen/bin/qemu-dm'
disk = [ 'tap:aio:/etc/xen/vm_debian/hdd0,hda,w', 'tap:aio:/etc/xen/iso/debian-6.0.1a-amd64-i386-netinst.iso,hdc:cdrom,r' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:99' ]
name = 'vm_debian'
boot = 'd'
vnc = 1
sdl = 0
apic = 1
acpi = 1
localtime = 0
vcpus = 1
pae = 1
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
vncconsole = 0
stdvga = 0
videoram = 16
shadow_memory = 8

Предполагается, что образ установочного диска лежит у Вас в /etc/xen/iso/debian-6.0.1a-amd64-i386-netinst.iso, иначе укажите свой путь.


Запускаем домен:

# xm create vm_debian/vm.cfg


2) Присоединяемся с помощью VNC Viewer к Xen к только что созданному домену. Предполагается, что Вы уже работали с Xen и имеете представление - что такое VNC Viewer и как им цепляться. Если нет - на этом же сайте есть статья по Xen с описанием - что это такое и с чем это едят.

Теперь устанавливайте Debian как обычно, как Вы делали бы это на голом железе.


3) После окончания установки и перезагрузки у Вас снова запустится установщик с диска. Но нам нужно попасть в установленную систему, а не в инсталлер. Поэтому останавливаем машину вручную с Xen-сервера и меняем конфиг:

# xm destroy vm_debian

И в файле vm.cfg меняем значение "boot = 'd'" на "boot = 'c'":

boot = 'c'


Запускаем машину и снова подцепляемся к ней через VNC.

# xm create vm_debian/vm.cfg


4) После установки

После установки, либо же, если Вы хотите перевести HVM-машину Debian в паравиртуальную среду - следуем дальше.

Итак, мы подцеплены через VNC к машине и видим ее консоль. Логинимся под root.


5) Нам нужен SSH.

Т.к. мы собираемся установить внутри Debian HVM паравиртуальное ядро, а после этого скопировать его во-вне, на сервер Xen, то нам нужен настроенный SSH-сервер на гостевой машине. Если он уже настроен - великолепно. Если нет - действуем:

# aptitude install openssh-server
# /etc/init.d/ssh start

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


6) Устанавливаем xen-совместимое ядро.

Для того, чтобы Xen смог работать с нашей машиной, нам необходимо xen-совместимое ядро. Самый простой способ - установить это ядро на самой виртуальной машине, а потом - скопировать на сервер Xen.

# aptitude install linux-image-xen-686

Тут предполагается использование мета-пакета, указывающего на самое свежее ядро для текущей ОС по-умолчанию. И 32-битного гостя. Для 64-битного гостя вместо 686 используйте amd64. Если ядро другое - то указывайте соответственно.


7) Теперь правим парочку файлов:

/etc/inittab:
меняем в строке "1:2345:respawn:/sbin/getty 38400 tty1" значение tty1 на hvc0:

1:2345:respawn:/sbin/getty 38400 hvc0


/etc/securetty:
Убедитесь, что в этом файле присутствует запись hvc0:

ЗЫ. В Lenny файл назывался securetab, внимательнее!

# cat /etc/securetty | grep hvc0
hvc0

Если нет - добавьте.

Это позволяет ОС вывод консоли направить на устройство HVC0, которое является Xen-консолью. Иначе ОС будет загружаться до надписи "Starting local scripts" и тут вешаться, т.к. tty1 Xen не видит.


8) Копируем ядро из гостевого домена на сервер Xen.

На сервере Xen:

# cd /etc/xen/vm_debian
# scp root@192.168.0.2:/boot/initrd.img-2.6.32-5-xen-686 ./
# scp root@192.168.0.2:/boot/vmlinuz-2.6.32-5-xen-686 ./

Если доступ под root через ssh у Вас закрыт - используйте другого пользователя. Вместо 192.168.0.2 подставьте IP-адрес гостевой машины.


9) Выключаем гостевую машину и создаем PV-конфиг для нее на сервере.

На госте:

# shutdown -Ph now


На сервере:

# xm list | grep vm_debian

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


Сохраним HVM-конфиг на всякий случай:

# mv vm.cfg vm.hvm


И в файл vm.cfg положим следующий конфиг:

kernel = "/etc/xen/vm_debian/vmlinuz-2.6.26-2-xen-686"
ramdisk = "/etc/xen/vm_debian/initrd.img-2.6.26-2-xen-686"
root = "root=/dev/xvda1 ro console=hvc0"
memory = '256'
disk = [ 'file:/etc/xen/vm_debian/hdd0,xvda,w' ]
vif = [ 'bridge=eth0, mac=fe:16:3e:68:fc:99' ]
name = 'vm_debian'
#boot = 'c'
vnc = 1
sdl = 0
apic = 1
acpi = 1
localtime = 0
vcpus = 1
pae = 1
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
vncconsole = 1
stdvga = 0
videoram = 16
shadow_memory = 8
timer_mode = 1

Тут мы видим, что вместо устройства sda в гостевой домен Debian будет передано устройство xvda. Так-же видим, что вместо "tap:aio:" TAP-интерфейса используется LOOP-интерфейс "file:". К сожалению, даже Squeeze заставить работать с TAP-интерфейсом у меня не получилось, потому пользуем LOOP-интерфейс (с учетом паравиртуализации - скорость там приличная).


10) Запускаем паравиртуализированного гостя

# xm create -c vm_debian/vm.cfg

Ключ -c указывает Xen сразу присоединиться к консоли машины, что позволяет в реал-тайм видеть процесс загрузки ОС.


Отключиться от консоли можно сочетанием клавишь Ctrl+]


В любое другое время подключиться к консоли можно с помощью команды xm console:

# xm console vm_debian

Все, машина загрузилась и радует нас своей работой.
создано: 2017-05-10
обновлено: 2021-03-13
375



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX