Using a centos:7 docker image, i run a container and do the following operations.
In my host machine:
#docker pull centos:7
#docker run -it --privileged=true --name hp-dib centos:7 bash
Enter the container:
#git clone https://opendev.org/openstack/diskimage-builder.git
#yum -y install bzip2 util-linux dosfstools gdisk kpartx sudo curl git squashfs-tools qemu-img policycoreutils-python procps-ng
#cd /diskimage-builder
#git checkout 2.9.0 (i use the 2.9.0 tag to support python2)
#pip install -r requirements.txt
#python setup.py install
#diskimage-builder -o /opt/centos7.qcow2 vm centos7
------------------------------------------------------------------>
the error happend :
...
...
...
Calculating image size (this may take a minute)...
2021-04-19 03:56:19.552 INFO diskimage_builder.block_device.blockdevice [-] Wrote final block device config to [/tmp/dib_build.HXVBq69a/states/block-device/config.json]
2021-04-19 03:56:20.186 INFO diskimage_builder.block_device.blockdevice [-] create() called
2021-04-19 03:56:20.188 INFO diskimage_builder.block_device.level0.localloop [-] Create image file [/tmp/dib_image.27AEiozV/image0.raw]
2021-04-19 03:56:20.189 INFO diskimage_builder.block_device.level0.localloop [-] loopdev attach
losetup: /tmp/dib_image.27AEiozV/image0.raw: failed to set up loop device: No such file or directory
2021-04-19 03:56:20.221 ERROR diskimage_builder.block_device.level0.localloop [-] losetup failed
2021-04-19 03:56:20.222 ERROR diskimage_builder.block_device.blockdevice [-] Create failed; rollback initiated
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/blockdevice.py", line 385, in cmd_create
node.create()
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/level0/localloop.py", line 110, in create
block_device = loopdev_attach(self.filename)
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/level0/localloop.py", line 54, in loopdev_attach
raise BlockDeviceSetupException("losetup failed")
BlockDeviceSetupException: losetup failed
2021-04-19 03:56:20.223 INFO diskimage_builder.block_device.level0.localloop [-] Remove image file [/tmp/dib_image.27AEiozV/image0.raw]
2021-04-19 03:56:20.224 ERROR diskimage_builder.block_device.blockdevice [-] Rollback complete, exiting
Traceback (most recent call last):
File "/usr/bin/dib-block-device", line 10, in <module>
sys.exit(main())
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/cmd.py", line 120, in main
return bdc.main()
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/cmd.py", line 115, in main
self.args.func()
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/cmd.py", line 36, in cmd_create
self.bd.cmd_create()
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/blockdevice.py", line 385, in cmd_create
node.create()
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/level0/localloop.py", line 110, in create
block_device = loopdev_attach(self.filename)
File "/usr/lib/python2.7/site-packages/diskimage_builder/block_device/level0/localloop.py", line 54, in loopdev_attach
raise BlockDeviceSetupException("losetup failed")
diskimage_builder.block_device.exception.BlockDeviceSetupException: losetup failed
2021-04-19 03:56:20.881 INFO diskimage_builder.block_device.blockdevice [-] State already cleaned - no way to do anything here
*** /tmp/dib_build.HXVBq69a/mnt is not a directory
<-----------------------------------------------------------------------------------------
the error codes in/usr/lib/python2.7/site-packages/diskimage_builder/block_device/level0/localloop.py :
def loopdev_attach(filename):
logger.info("loopdev attach")
logger.debug("Calling [sudo losetup --show -f %s]", filename)
subp = subprocess.Popen(["sudo", "losetup", "--show", "-f",
filename], stdout=subprocess.PIPE)
rval = subp.wait()
if rval == 0:
# [:-1]: Cut of the newline
block_device = subp.stdout.read()[:-1].decode("utf-8")
logger.info("New block device [%s]", block_device)
return block_device
else:
logger.error("losetup failed")
raise BlockDeviceSetupException("losetup failed")
<---------------------------------------------------------------------------------------->
What should i do to resolve this problem ? thanks~
We use dib in docker for all the nodepool-builders, so it should work. Are you running this as a privileged container?
I'm not aware of anything that would stop 2.9.0 working, but honestly it's so far behind I wouldn't be surprised if things aren't work.