diff --git a/Dockerfile b/Dockerfile index 421032e..4f2fce1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,6 +33,7 @@ RUN apt-get update && \ util-linux \ udev \ parted \ + kpartx \ e2fsprogs \ mount \ tar \ diff --git a/builder.go b/builder.go index 216a9e6..0fada63 100644 --- a/builder.go +++ b/builder.go @@ -265,10 +265,10 @@ func (b *builder) mountImg(ctx context.Context) error { return err } b.loDevice = strings.TrimSuffix(o, "\n") - if err := exec.Run(ctx, "partprobe", b.loDevice); err != nil { + if err := exec.Run(ctx, "kpartx", "-a", b.loDevice); err != nil { return err } - b.loPart = fmt.Sprintf("%sp1", b.loDevice) + b.loPart = fmt.Sprintf("/dev/mapper/%sp1", filepath.Base(b.loDevice)) logrus.Infof("creating raw image file system") if err := exec.Run(ctx, "mkfs.ext4", b.loPart); err != nil { return err @@ -285,6 +285,9 @@ func (b *builder) unmountImg(ctx context.Context) error { if err := exec.Run(ctx, "umount", b.mntPoint); err != nil { merr = multierr.Append(merr, err) } + if err := exec.Run(ctx, "kpartx", "-d", b.loDevice); err != nil { + merr = multierr.Append(merr, err) + } if err := exec.Run(ctx, "losetup", "-d", b.loDevice); err != nil { merr = multierr.Append(merr, err) }