LINUX.ORG.RU

Переделать контейнер LXC в полноценную VM

 


1

2

Есть гипервизор proxmox и lxc, хочу переделать контейнер в полноценную VM, слышал что можно использовать ядро гипервизора для загрузки. Или другая идея такая собираешь в VM boot раздел с ядром и загрузчиком, подключаем rootfs от lxc и загрузится. Может есть вариант по проще?


есть

# mkdir initramfs
# mkinitramfs initramfs/ > initrd

# mkdir bootimage
# mkdir bootimage/boot
# cp /boot/vmlinuz bootimage/boot/vmlinuz
# cp initrd bootimage/boot/initrd

# mkbootisofs bootimage/ --overlay lxc-container-chroot/ --cpio --output bootable.iso

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

Spoofing ★★★★★
()
Последнее исправление: Spoofing (всего исправлений: 1)

Собственно, контейнер — это юзерспейс без ядра (используется ядро хостовой системы). Достаточно установить в контейнер ядро и перенести на "диск" (или наоборот).

mord0d ★★★★★
()
Ответ на: комментарий от Spoofing
root@pve-test:/mnt/t# mkbootisofs /mnt/t/bootimage --overlay /mnt/tmp/root --cpio --output bootable.iso
Creating bootable filesystem [/mnt/t/bootimage]
  Prepare overlays
    Creating archive from /mnt/tmp/root to /mnt/t/bootimage/system/10-root.cpio
      Success
  Overlays done
  Writing grub configuration
  Generate BIOS bootloader
  Copying BIOS bootloader
  Generate UEFI bootloader
    Creating UEFI (FAT32) partition
      Writing empty partition
      Formatting empty partition to FAT32
      Mounting UEFI (FAT32) partition
      Copying UEFI bootloader to UEFI (FAT32) partition
      Unmounting UEFI (FAT32) partition
  Writing BIOS/UEFI bootable ISO image [/mnt/t/bootable.iso]
    Failure [0]
Done [/mnt/t/bootimage]'

Ошибка из 10-root.cpio

read -t $delay -p 'Please concentrate... ' || echo
echo 'No brainwave activity detected.  Aborting.'
exit 1
AlBond
() автор топика
Ответ на: комментарий от anonymous

здесь свободный постинг, предлагай свои варианты. а?

Spoofing ★★★★★
()

Дык а в чем цель? можно просто тот же lxc под виртуалкой запустить и не мучаться.

slapin ★★★★★
()
Ответ на: комментарий от Spoofing

вариант с Образом не подходит, получается лишнее звено в схеме iac

AlBond
() автор топика
Ответ на: комментарий от slapin

В Lxc нет ядра и нет диска для установки загрузчика, в lxc только разделы дисков монтируемые в fs.

AlBond
() автор топика
Ответ на: комментарий от AlBond

Дык там же вроде можно архив контейнера сделать и развернуть его уже в виртуалке с установленным lxc.

slapin ★★★★★
()
Ответ на: комментарий от AlBond

Ты не в контейнере это делай, а в chroot. Естественно оно сфейлится — ему не хватает возможностей, в контейнере всё лишнее изолировано через namespaces.

mord0d ★★★★★
()
Ответ на: комментарий от AlBond
  • Вырубаешь контейнер;
  • Бинд-монтируешь в путь контейнера нужные псевдофс;
  • Чрутаешься в путь контейнера;
  • Доустанавливаешь всё что нужно, НЕ обновляешь груп;
  • Выходишь из чрута;
  • Монтируешь псевдодиск виртуалки, размечаешь его по вкусу;
  • Копируешь из пути контейнера всё (rsync, tar, cp -a по вкусу);
  • Монтируешь в виртуалку псевдодиск и лайв;
  • Грузишься с лайва;
  • Бинд-монтируешь нужное;
  • Чрутаешься в диск;
  • Обновляешь груп;
  • Ребутаешься в виртуалке с диска.

Если сделано всё правильно, то оно будет работать.

mord0d ★★★★★
()
Ответ на: комментарий от AlBond

Устанавливаешь обычную ОС в виртуалку, с тем ядром, что есть. Устанавливаешь туда lxc. Пакуешь контейнер на хосте в архив средствами lxc. Копируешь архив в виртуалку. Разворачиваешь архив на виртуалке средствами lxc. Запускаешь контейнер.

slapin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.