the suggested vmdebootstrap patch by Michael doesn't set the customized boot mount point in /etc/fstab of the generated images.

i also think, the '--bootdirfmt' and its unusual "%s..." syntax doesn't look very handy. therefore i used a simple '--bootdir' option in my fix.

working patch attached.
diff --git a/bin/vmdebootstrap b/bin/vmdebootstrap
index d9a697d..e4e7e60 100755
--- a/bin/vmdebootstrap
+++ b/bin/vmdebootstrap
@@ -78,6 +78,7 @@ class VmDebootstrap(cliapp.Application):  # pylint: disable=too-many-public-meth
         self.settings.string(['bootflag'], 'specify flag to set for /boot/', default='')
         self.settings.bytesize(['bootoffset'], 'Space to leave at start of the '
                                'image for bootloader', default='0')
+        self.settings.string(['bootdir'], 'Mount point of /boot partition', default='/boot/')
         self.settings.boolean(['use-uefi'], 'Setup image for UEFI boot', default=False)
         self.settings.bytesize(['esp-size'], 'Size of EFI System Partition - '
                                'requires use-uefi', default='5mib')
@@ -248,9 +249,9 @@ class VmDebootstrap(cliapp.Application):  # pylint: disable=too-many-public-meth
         elif bootdev:
             boottype = self.settings['boottype']
             filesystem.mkfs(bootdev, fstype=boottype)
-            self.bootdir = '%s/%s' % (rootdir, 'boot/')
+            self.bootdir = '%s/%s' % (rootdir, self.settings['bootdir'])
             filesystem.devices['bootdir'] = self.bootdir
-            os.mkdir(self.bootdir)
+            os.makedirs(self.bootdir)
             self.mount(bootdev, self.bootdir)
 
         # set user-specified flags, e.g. lba
diff --git a/doc/overview.rst b/doc/overview.rst
index 43693f2..da0f236 100644
--- a/doc/overview.rst
+++ b/doc/overview.rst
@@ -107,6 +107,8 @@ Options
  --boottype=FSTYPE     Filesystem to use for the /boot partition. (default ext2)
  --bootflag=FLAG       Flag to set on the first partition. (default none)
  --bootoffset=SIZE     Space to leave at start of the image for bootloader
+ --bootdir=PATH        Mount point of /boot partition.
+                       Default is ``/boot/``. 
  --roottype=FSTYPE     Filesystem to use for the / (root) partition. (default ext4)
  --part-type=PART-TYPE
                        Partition type to use for this image. (default msdos)
diff --git a/vmdebootstrap/filesystem.py b/vmdebootstrap/filesystem.py
index b911c05..d9241c9 100644
--- a/vmdebootstrap/filesystem.py
+++ b/vmdebootstrap/filesystem.py
@@ -171,8 +171,8 @@ class Filesystem(Base):
             fstab.write('%s / %s %s 0 1\n' %
                         (rootdevstr, roottype, self.get_mount_flags(roottype)))
             if bootdevstr:
-                fstab.write('%s /boot %s %s 0 2\n' %
-                            (bootdevstr, boottype, self.get_mount_flags(boottype)))
+                fstab.write('%s %s %s %s 0 2\n' %
+                            (bootdevstr, self.settings['bootdir'], boottype, self.get_mount_flags(boottype)))
                 if self.settings['swap'] > 0:
                     fstab.write("/dev/sda3 swap swap defaults 0 0\n")
             elif self.settings['swap'] > 0:

Reply via email to