initial specific VM formats support
Raw disk images are convenient and universal but there are custom formats like Qemu's qcow2 providing additional features, e.g. copy-on-write or space savings. All of this ultimately belongs to mkimage but in the mean time has been implemented here as well.
This commit is contained in:
parent
90be07fbf8
commit
8a04d9b656
2
Makefile
2
Makefile
@ -26,7 +26,7 @@ endif
|
|||||||
# recursive make considered useful for m-p
|
# recursive make considered useful for m-p
|
||||||
MAKE += -r --no-print-directory
|
MAKE += -r --no-print-directory
|
||||||
|
|
||||||
DIRECT_TARGETS := clean distclean check help help/distro help/ve
|
DIRECT_TARGETS := clean distclean check help help/distro help/ve help/vm
|
||||||
.PHONY: $(DIRECT_TARGETS)
|
.PHONY: $(DIRECT_TARGETS)
|
||||||
$(DIRECT_TARGETS):
|
$(DIRECT_TARGETS):
|
||||||
@$(MAKE) -f main.mk $@
|
@$(MAKE) -f main.mk $@
|
||||||
|
@ -13,6 +13,10 @@ mike ALL=NOPASSWD: /usr/share/mkimage-profiles/bin/tar2vm
|
|||||||
пользователю право выполнять с повышенными привилегиями доступный ему
|
пользователю право выполнять с повышенными привилегиями доступный ему
|
||||||
по записи скрипт равнозначно предоставлению полных привилегий root.
|
по записи скрипт равнозначно предоставлению полных привилегий root.
|
||||||
|
|
||||||
|
Для работы с более специфичными форматами, чем raw ("буквальный"
|
||||||
|
образ диска), потребуется утилита qemu-img из одноименного пакета;
|
||||||
|
см. тж. вывод команды make help/vm
|
||||||
|
|
||||||
Также потребуется пакет multipath-tools (/sbin/kpartx).
|
Также потребуется пакет multipath-tools (/sbin/kpartx).
|
||||||
|
|
||||||
Пример сборки и запуска VM:
|
Пример сборки и запуска VM:
|
||||||
|
@ -9,6 +9,7 @@ IMAGE_PACKAGES = $(SYSTEM_PACKAGES) \
|
|||||||
|
|
||||||
# intermediate chroot archive
|
# intermediate chroot archive
|
||||||
VM_TARBALL := $(IMAGE_OUTDIR)/$(IMAGE_NAME).tar
|
VM_TARBALL := $(IMAGE_OUTDIR)/$(IMAGE_NAME).tar
|
||||||
|
VM_RAWDISK := $(IMAGE_OUTDIR)/$(IMAGE_NAME).raw
|
||||||
|
|
||||||
check-sudo:
|
check-sudo:
|
||||||
@if ! type -t sudo >&/dev/null; then \
|
@if ! type -t sudo >&/dev/null; then \
|
||||||
@ -16,15 +17,29 @@ check-sudo:
|
|||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
convert-image: check-sudo
|
prepare-image: check-sudo
|
||||||
@if ! sudo $(TOPDIR)/bin/tar2vm \
|
@if ! sudo $(TOPDIR)/bin/tar2vm \
|
||||||
"$(VM_TARBALL)" "$(IMAGE_OUTPATH)" $$VM_SIZE; then \
|
"$(VM_TARBALL)" "$(VM_RAWDISK)" $$VM_SIZE; then \
|
||||||
echo "** error: sudo tar2vm failed, see also doc/vm.txt" >&2; \
|
echo "** error: sudo tar2vm failed, see also doc/vm.txt" >&2; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
convert-image: prepare-image
|
||||||
|
@case "$(IMAGE_TYPE)" in \
|
||||||
|
"img") VM_FORMAT="raw";; \
|
||||||
|
"vhd") VM_FORMAT="vpc";; \
|
||||||
|
*) VM_FORMAT="$(IMAGE_TYPE)"; \
|
||||||
|
esac; \
|
||||||
|
if ! type -t qemu-img >&/dev/null; then \
|
||||||
|
echo "** warning: qemu-img not available" >&2; \
|
||||||
|
else \
|
||||||
|
qemu-img convert -O "$$VM_FORMAT" \
|
||||||
|
"$(VM_RAWDISK)" "$(IMAGE_OUTPATH)"; \
|
||||||
|
fi
|
||||||
|
|
||||||
run-image-scripts: GLOBAL_ROOTPW := $(ROOTPW)
|
run-image-scripts: GLOBAL_ROOTPW := $(ROOTPW)
|
||||||
|
|
||||||
|
# override
|
||||||
pack-image: MKI_PACK_RESULTS := tar:$(VM_TARBALL)
|
pack-image: MKI_PACK_RESULTS := tar:$(VM_TARBALL)
|
||||||
|
|
||||||
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
|
all: $(GLOBAL_DEBUG) build-image copy-tree run-image-scripts pack-image \
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
### this might really belong to build-*...
|
||||||
|
|
||||||
# distributions
|
# distributions
|
||||||
DISTRO_EXTS := .iso
|
DISTRO_EXTS := .iso
|
||||||
|
|
||||||
@ -38,6 +40,6 @@ $(foreach c,$(VE_ARCHIVES), \
|
|||||||
$(eval $(call PACK_compressors,$(c),$(z)))))
|
$(eval $(call PACK_compressors,$(c),$(z)))))
|
||||||
|
|
||||||
# virtual machines
|
# virtual machines
|
||||||
VM_EXTS := .img
|
VM_EXTS := .img .qcow2 .vdi .vmdk .vhd
|
||||||
|
|
||||||
use/pack/img: use/pack; @:
|
$(VM_EXTS:.%=use/pack/%): use/pack; @:
|
||||||
|
Loading…
Reference in New Issue
Block a user