Makefile: use losetup instead of qemu-nbd for loop mounting.
It's more dynamic, is faster, and the newer versions support auto-creating device nodes for partions. So it's prefereable to qemu-nbd.
This commit is contained in:
parent
f79cc8a353
commit
4b01342bf1
17
Makefile
17
Makefile
|
@ -31,7 +31,6 @@ M4 = m4
|
||||||
EMERGE = /usr/bin/emerge --jobs=4
|
EMERGE = /usr/bin/emerge --jobs=4
|
||||||
M4_DEFS = -D HOSTNAME=$(HOSTNAME)
|
M4_DEFS = -D HOSTNAME=$(HOSTNAME)
|
||||||
M4C = $(M4) $(M4_DEFS)
|
M4C = $(M4) $(M4_DEFS)
|
||||||
NBD_DEV = /dev/nbd0
|
|
||||||
USEPKG = --usepkg --binpkg-respect-use=y
|
USEPKG = --usepkg --binpkg-respect-use=y
|
||||||
RSYNC_MIRROR = rsync://rsync.gtlib.gatech.edu/gentoo/
|
RSYNC_MIRROR = rsync://rsync.gtlib.gatech.edu/gentoo/
|
||||||
EMERGE_RSYNC = NO
|
EMERGE_RSYNC = NO
|
||||||
|
@ -84,7 +83,7 @@ gcc_config = $(inroot) gcc-config 1
|
||||||
export APPLIANCE ACCEPT_KEYWORDS CHROOT EMERGE HEADLESS M4 M4C inroot
|
export APPLIANCE ACCEPT_KEYWORDS CHROOT EMERGE HEADLESS M4 M4C inroot
|
||||||
export HOSTNAME MAKEOPTS PRUNE_CRITICAL TIMEZONE USEPKG WORLD OVERLAY
|
export HOSTNAME MAKEOPTS PRUNE_CRITICAL TIMEZONE USEPKG WORLD OVERLAY
|
||||||
|
|
||||||
unexport PKGDIR ARCH NBD_DEV
|
unexport PKGDIR ARCH
|
||||||
|
|
||||||
all: image
|
all: image
|
||||||
|
|
||||||
|
@ -97,10 +96,10 @@ partitions: $(RAW_IMAGE)
|
||||||
parted -s $(RAW_IMAGE) mkpart primary 1 $(DISK_SIZE)
|
parted -s $(RAW_IMAGE) mkpart primary 1 $(DISK_SIZE)
|
||||||
parted -s $(RAW_IMAGE) set 1 boot on
|
parted -s $(RAW_IMAGE) set 1 boot on
|
||||||
|
|
||||||
qemu-nbd -c $(NBD_DEV) "`realpath $(RAW_IMAGE)`"
|
losetup --show --find --partscan $(RAW_IMAGE) > partitions.tmp
|
||||||
sleep 3
|
mv partitions.tmp partitions
|
||||||
mkfs.ext4 -O sparse_super,^has_journal -L "$(APPLIANCE)"_root -m 0 $(NBD_DEV)p1
|
sync
|
||||||
touch partitions
|
mkfs.ext4 -O sparse_super,^has_journal -L "$(APPLIANCE)"_root -m 0 `cat partitions`p1
|
||||||
|
|
||||||
mounts: stage3
|
mounts: stage3
|
||||||
@scripts/echo Creating chroot in $(CHROOT)
|
@scripts/echo Creating chroot in $(CHROOT)
|
||||||
|
@ -310,7 +309,7 @@ device-map: $(RAW_IMAGE)
|
||||||
image: $(STAGE4_TARBALL) partitions device-map scripts/grub.shell scripts/motd.sh
|
image: $(STAGE4_TARBALL) partitions device-map scripts/grub.shell scripts/motd.sh
|
||||||
@scripts/echo Installing files to $(RAW_IMAGE)
|
@scripts/echo Installing files to $(RAW_IMAGE)
|
||||||
mkdir -p loop
|
mkdir -p loop
|
||||||
mount -o noatime $(NBD_DEV)p1 loop
|
mount -o noatime `cat partitions`p1 loop
|
||||||
tar -Sxf $(STAGE4_TARBALL) --numeric-owner $(COPY_ARGS) -C loop
|
tar -Sxf $(STAGE4_TARBALL) --numeric-owner $(COPY_ARGS) -C loop
|
||||||
scripts/motd.sh $(EXTERNAL_KERNEL) $(VIRTIO) $(DISK_SIZE) $(SWAP_SIZE) $(UDEV) $(DASH) $(ARCH) > loop/etc/motd
|
scripts/motd.sh $(EXTERNAL_KERNEL) $(VIRTIO) $(DISK_SIZE) $(SWAP_SIZE) $(UDEV) $(DASH) $(ARCH) > loop/etc/motd
|
||||||
ifneq ($(EXTERNAL_KERNEL),YES)
|
ifneq ($(EXTERNAL_KERNEL),YES)
|
||||||
|
@ -318,7 +317,8 @@ ifneq ($(EXTERNAL_KERNEL),YES)
|
||||||
endif
|
endif
|
||||||
umount -l loop
|
umount -l loop
|
||||||
rmdir loop
|
rmdir loop
|
||||||
qemu-nbd -d $(NBD_DEV)
|
sync
|
||||||
|
losetup --detach `cat partitions`
|
||||||
|
|
||||||
$(QCOW_IMAGE): image
|
$(QCOW_IMAGE): image
|
||||||
@scripts/echo Creating $(QCOW_IMAGE)
|
@scripts/echo Creating $(QCOW_IMAGE)
|
||||||
|
@ -415,7 +415,6 @@ help:
|
||||||
@echo 'HEADLESS=YES - Build a headless (serial console) image.'
|
@echo 'HEADLESS=YES - Build a headless (serial console) image.'
|
||||||
@echo 'REMOVE_PORTAGE_TREE=NO - Do not exclude the portage tree from the image'
|
@echo 'REMOVE_PORTAGE_TREE=NO - Do not exclude the portage tree from the image'
|
||||||
@echo 'PKGDIR= - Directory to use/store binary packages'
|
@echo 'PKGDIR= - Directory to use/store binary packages'
|
||||||
@echo 'NBD_DEV=/dev/nbd0 - NBD device to use when manipulating images'
|
|
||||||
@echo 'ENABLE_SSHD=YES - Enable sshd to start automatically in the image'
|
@echo 'ENABLE_SSHD=YES - Enable sshd to start automatically in the image'
|
||||||
@echo
|
@echo
|
||||||
@scripts/echo 'Example'
|
@scripts/echo 'Example'
|
||||||
|
|
Loading…
Reference in New Issue