diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rwxr-xr-x | examples/beagleboneblack.sh | 2 | ||||
-rwxr-xr-x | examples/cubietruck-customise.sh | 18 | ||||
-rwxr-xr-x | examples/cubietruck.sh | 4 | ||||
-rwxr-xr-x | vmdebootstrap | 39 |
5 files changed, 52 insertions, 13 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..710c495 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.img +*.log diff --git a/examples/beagleboneblack.sh b/examples/beagleboneblack.sh index 3923949..30d0c4a 100755 --- a/examples/beagleboneblack.sh +++ b/examples/beagleboneblack.sh @@ -17,5 +17,5 @@ sudo vmdebootstrap \ --distribution sid \ --serial-console-command "'/sbin/getty -L ttyO0 115200 vt100'" \ --customize "beagleboneblack-customise.sh" \ - --bootsize 50m --boottype vfat \ + --bootsize 100mib --boottype vfat \ "$@" diff --git a/examples/cubietruck-customise.sh b/examples/cubietruck-customise.sh index 74a0d5b..4d436ae 100755 --- a/examples/cubietruck-customise.sh +++ b/examples/cubietruck-customise.sh @@ -3,10 +3,22 @@ set -e rootdir=$1 +image=$2 -# u-boot needs to be dd'd to the partition -#cp /usr/lib/u-boot/Cubietruck/uboot.elf /boot/ -#cp /usr/lib/u-boot/Cubietruck/u-boot-sunxi-with-spl.bin /boot/ +if [ -z "${image}" ]; then + echo "Image not specified" + exit +fi + +if [ ! -f '/usr/lib/u-boot/Cubietruck/u-boot-sunxi-with-spl.bin' ]; then + echo "Unable to find cubietruck u-boot file" + exit +fi + +# u-boot needs to be dd'd to the device, not a partition +# but kpartx does not setup the device, just the partitions + +dd if=/usr/lib/u-boot/Cubietruck/u-boot-sunxi-with-spl.bin of=${image} bs=1k seek=8 mkdir -p $rootdir/boot/dtbs cp $rootdir/usr/lib/linux-image-*-armmp/* $rootdir/boot/dtbs diff --git a/examples/cubietruck.sh b/examples/cubietruck.sh index 2da46af..a904e07 100755 --- a/examples/cubietruck.sh +++ b/examples/cubietruck.sh @@ -18,6 +18,6 @@ sudo vmdebootstrap \ --distribution sid \ --serial-console-command "/sbin/getty -L ttyS0 115200 vt100" \ --customize "cubietruck-customise.sh" \ - --serial-console-command \ - --bootsize 50m --boottype vfat \ + --bootoffset=2mib \ + --bootsize 100mib --boottype vfat \ "$@" diff --git a/vmdebootstrap b/vmdebootstrap index aae437a..6f104da 100755 --- a/vmdebootstrap +++ b/vmdebootstrap @@ -292,17 +292,41 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth str(self.settings['size'])]) def partition_image(self): + """ + Uses fat16 (msdos) partitioning by default, use part-type to change. + If bootoffset is specified, the first actual partition + starts at that offset to allow customisation scripts to + put bootloader images into the space, e.g. u-boot. + """ self.message('Creating partitions') self.runcmd(['parted', '-s', self.settings['image'], - 'mklabel', 'msdos']) + 'mklabel', self.settings['part-type']]) + partoffset = 0 + bootsize = 0 + if self.settings['bootoffset'] and self.settings['bootoffset'] is not '0': + # turn v.small offsets into something at least possible to create. + if self.settings['bootoffset'] < 1048576: + partoffset = 1 + logging.info( + "Setting bootoffset %smib to allow for %s bytes", + partoffset, self.settings['bootoffset']) + else: + partoffset = self.settings['bootoffset'] / (1024 * 1024) + self.message("Using bootoffset: %smib %s bytes" % (partoffset, self.settings['bootoffset'])) if self.settings['bootsize'] and self.settings['bootsize'] is not '0%': - bootsize = str(self.settings['bootsize'] / (1024 * 1024)) + bootsize = self.settings['bootsize'] / (1024 * 1024) + bootsize += partoffset + self.message("Using bootsize %smib: %s bytes" % (bootsize, self.settings['bootsize'])) + logging.debug("Starting boot partition at %sMb", bootsize) self.runcmd(['parted', '-s', self.settings['image'], - 'mkpart', 'primary', 'fat16', '0%', bootsize]) + 'mkpart', 'primary', 'fat16', str(partoffset), str(bootsize)]) + if partoffset == 0: + self.runcmd(['parted', '-s', self.settings['image'], + 'mkpart', 'primary', '0%', '100%']) else: - bootsize = '0%' - self.runcmd(['parted', '-s', self.settings['image'], - 'mkpart', 'primary', bootsize, '100%']) + logging.debug("Starting root partition at %sMb", partoffset) + self.runcmd(['parted', '-s', self.settings['image'], + 'mkpart', 'primary', str(bootsize), '100%']) self.runcmd(['parted', '-s', self.settings['image'], 'set', '1', 'boot', 'on']) @@ -662,8 +686,9 @@ append initrd=%(initrd)s root=UUID=%(uuid)s ro %(kserial)s return script = example self.message('Running customize script %s' % script) + logging.info("rootdir=%s image=%s", rootdir, self.settings['image']) with open('/dev/tty', 'w') as tty: - cliapp.runcmd([script, rootdir], stdout=tty, stderr=tty) + cliapp.runcmd([script, rootdir, self.settings['image']], stdout=tty, stderr=tty) def create_tarball(self, rootdir): # Create a tarball of the disk's contents |