Ejemplo n.º 1
0
    def build(self):
        """
        Append screen binary from host to the initramfs
        
        @return: bool
        """
        logging.debug('>>> entering initramfs.append.bin_screen')
        screen_bin = '/usr/bin/screen'

        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-screen-temp/bin', self.verbose)

         # use from host
        logging.debug('initramfs.append.bin_screen from %s' % white('host'))
        process('cp %s %s/initramfs-bin-screen-temp/bin' % (screen_bin, self.temp['work']), self.verbose)
        process('chmod +rx %s/initramfs-bin-screen-temp/bin/screen' % self.temp['work'], self.verbose)

        if not isstatic(screen_bin, self.verbose) and self.cli['dynlibs'] is True:
            screen_libs = listdynamiclibs(screen_bin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-screen-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+screen_bin+' is dynamically linked, copying detected libraries')
            for i in screen_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-screen-temp/lib'), self.verbose)

        # add required /usr/share/terminfo/l/linux for screen
        # FIXME: to support other arch copy accordingly
        os.makedirs(self.temp['work']+'/initramfs-bin-screen-temp/usr/share/terminfo/l')
        process('cp /usr/share/terminfo/l/linux %s' % self.temp['work']+'/initramfs-bin-screen-temp/usr/share/terminfo/l', self.verbose)

        os.chdir(self.temp['work']+'/initramfs-bin-screen-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 2
0
Archivo: strace.py Proyecto: r1k0/kigen
    def build(self):
        """
        Append strace host binary to the initramfs
        for debugging purposes

        @return: bool
        """
        logging.debug('>>> entering initramfs.append.bin.strace')
        strace_bin = '/usr/bin/strace'

        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-strace-temp/bin', self.verbose)

        # use from host
        logging.debug('initramfs.append.bin_strace from ' + white('host'))
        process('cp %s %s/initramfs-bin-strace-temp/bin' % (strace_bin, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-strace-temp/bin/strace' % self.temp['work'], self.verbose)

        if not isstatic(strace_bin, self.verbose) and self.cli['dynlibs'] is True:
            strace_libs = listdynamiclibs(strace_bin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-strace-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+strace_bin+' is dynamically linked, copying detected libraries')
            for i in strace_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-strace-temp/lib'), self.verbose)
        else:
            logging.debug(strace_bin+' is statically linked nothing to do')

        os.chdir(self.temp['work']+'/initramfs-bin-strace-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 3
0
    def build(self):
        """
        Append the LUKS static binary to the initramfs
    
        @return: bool
        """
        logging.debug('>>> entering initramfs.append.bin_luks')
        cryptsetup_sbin = '/sbin/cryptsetup'

        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-luks-temp/lib/luks', self.verbose)
        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-luks-temp/sbin', self.verbose)

        # use from host
        logging.debug('initramfs.append.bin_luks from %s' % white('host'))
        process('cp %s %s/initramfs-bin-luks-temp/sbin' % (cryptsetup_sbin, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-luks-temp/sbin/cryptsetup' % self.temp['work'], self.verbose)

        if not isstatic(cryptsetup_sbin, self.verbose) and self.cli['dynlibs'] is True:
            luks_libs = listdynamiclibs(cryptsetup_sbin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-luks-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+cryptsetup_sbin+' is dynamically linked, copying detected libraries')
            for i in luks_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-luks-temp/lib'), self.verbose)
        else:
            logging.debug(cryptsetup_sbin+' is statically linked nothing to do')

        os.chdir(self.temp['work']+'/initramfs-bin-luks-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 4
0
    def build(self):
        """
        Append blkid binary from the host
        
        @return: bool
        """
        logging.debug('>>> entering initramfs.append.bin_disklabel')
        blkid_sbin = '/sbin/blkid'

        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-disklabel-temp/bin', self.verbose)

        # use from host
        logging.debug('initramfs.append.bin_disklabelfrom %s' % white('host'))
        process('cp %s %s/initramfs-bin-disklabel-temp/bin' % (blkid_sbin, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-disklabel-temp/bin/blkid' % self.temp['work'], self.verbose)

        if not isstatic(blkid_sbin, self.verbose) and self.cli['dynlibs'] is True:
            blkid_libs = listdynamiclibs(blkid_sbin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-blkid-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+blkid_sbin+' is dynamically linked, copying detected libraries')
            for i in blkid_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-blkid-temp/lib'), self.verbose)
        else:
            logging.debug(blkid_sbin+' is statically linked nothing to do')

        os.chdir(self.temp['work']+'/initramfs-bin-disklabel-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 5
0
    def build(self):
        """
        Append dmraid to initramfs from the host
    
        @return: bool
        """
        logging.debug('>>> entering initramfs.append.bin.dmraid')

        dmraid_bin = '/usr/sbin/dmraid'

        process('mkdir -p ' + self.temp['work']+'/initramfs-bin-dmraid-temp/bin', self.verbose)

        # use from host
        logging.debug('initramfs.append.bin_dmraid from %s' % white('host'))
        process('cp %s %s/initramfs-bin-dmraid-temp/bin' % (dmraid_bin, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-dmraid-temp/bin/dmraid' % self.temp['work'], self.verbose)

        if not isstatic(dmraid_bin, self.verbose) and self.cli['dynlibs'] is True:
            dmraid_libs = listdynamiclibs(dmraid_bin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-dmraid-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+dmraid_bin+' is dynamically linked, copying detected libraries')
            for i in dmraid_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-dmraid-temp/lib'), self.verbose)
        else:
            logging.debug(dmraid_bin+' is statically linked nothing to do')

        # FIXME ln -sf raid456.ko raid45.ko ?
        # FIXME is it ok to have no raid456.ko? if so shouldn't we check .config for inkernel feat?
        #   or should we raise an error and make the user enabling the module manually? warning?

        os.chdir(self.temp['work']+'/initramfs-bin-dmraid-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 6
0
    def build(self):
        """
        Append blkid binary from the host

        @return: bool
        """
        logging.debug(">>> entering initramfs.append.bin_disklabel")
        blkid_sbin = "/sbin/blkid"

        process("mkdir -p %s" % self.temp["work"] + "/initramfs-bin-disklabel-temp/bin", self.verbose)

        # use from host
        logging.debug("initramfs.append.bin_disklabelfrom %s" % white("host"))
        process("cp %s %s/initramfs-bin-disklabel-temp/bin" % (blkid_sbin, self.temp["work"]), self.verbose)
        process("chmod +x %s/initramfs-bin-disklabel-temp/bin/blkid" % self.temp["work"], self.verbose)

        if not isstatic(blkid_sbin, self.verbose) and self.cli["dynlibs"] is True:
            blkid_libs = listdynamiclibs(blkid_sbin, self.verbose)
            process("mkdir -p %s" % self.temp["work"] + "/initramfs-bin-blkid-temp/lib", self.verbose)
            print(
                yellow(" * ")
                + "... "
                + yellow("warning")
                + ": "
                + blkid_sbin
                + " is dynamically linked, copying detected libraries"
            )
            for i in blkid_libs:
                print(green(" * ") + "... " + i)
                process("cp %s %s" % (i, self.temp["work"] + "/initramfs-bin-blkid-temp/lib"), self.verbose)
        else:
            logging.debug(blkid_sbin + " is statically linked nothing to do")

        os.chdir(self.temp["work"] + "/initramfs-bin-disklabel-temp")
        return os.system("find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio" % self.temp["cache"])
Ejemplo n.º 7
0
    def build(self):
        """
        Append busybox binary from the host

        @return: bool
        """
        logging.debug('>>> entering initramfs.append.bin.busybox')
        bb_bin = '/bin/busybox'

        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-busybox-temp/bin', self.verbose)

        # use from host
        logging.debug('initramfs.append.bin.busybox from %s' % white('host'))
        process('cp %s %s/initramfs-bin-busybox-temp/bin' % (bb_bin, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-busybox-temp/bin/busybox' % self.temp['work'], self.verbose)

        if not isstatic(bb_bin, self.verbose) and self.cli['dynlibs'] is True:
            bb_libs = listdynamiclibs(bb_bin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-busybox-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+bb_bin+' is dynamically linked, copying detected libraries')
            for i in bb_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-busybox-temp/lib'), self.verbose)
        else:
            logging.debug(bb_bin+' is statically linked nothing to do')

        os.chdir(self.temp['work']+'/initramfs-bin-busybox-temp')
        process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-busybox-temp/usr/share/udhcpc/', self.verbose)
        process('cp %s/defaults/udhcpc.scripts %s/initramfs-bin-busybox-temp/usr/share/udhcpc/default.script' % (self.libdir, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-busybox-temp/usr/share/udhcpc/default.script' % self.temp['work'], self.verbose)

        # TO BE REMOVED : linuxrc's bb --install -s takes care of it
        # FIXME if busybox not exist then ln the default set -> [ ash sh mount uname echo cut cat
        for i in self.busyboxprogs.split():
            process('ln -s busybox %s/initramfs-bin-busybox-temp/bin/%s' % (self.temp['work'], i), self.verbose)

        os.chdir(self.temp['work']+'/initramfs-bin-busybox-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 8
0
    def build(self):
        """
        Append strace host binary to the initramfs
        for debugging purposes
        
        @return: bool
        """
        logging.debug(">>> entering initramfs.append.bin.strace")
        strace_bin = "/usr/bin/strace"

        process("mkdir -p %s" % self.temp["work"] + "/initramfs-bin-strace-temp/bin", self.verbose)

        # use from host
        logging.debug("initramfs.append.bin_strace from " + white("host"))
        process("cp %s %s/initramfs-bin-strace-temp/bin" % (strace_bin, self.temp["work"]), self.verbose)
        process("chmod +x %s/initramfs-bin-strace-temp/bin/strace" % self.temp["work"], self.verbose)

        if not isstatic(strace_bin, self.verbose) and self.cli["dynlibs"] is True:
            strace_libs = listdynamiclibs(strace_bin, self.verbose)
            process("mkdir -p %s" % self.temp["work"] + "/initramfs-bin-strace-temp/lib", self.verbose)
            print(
                yellow(" * ")
                + "... "
                + yellow("warning")
                + ": "
                + strace_bin
                + " is dynamically linked, copying detected libraries"
            )
            for i in strace_libs:
                print(green(" * ") + "... " + i)
                process("cp %s %s" % (i, self.temp["work"] + "/initramfs-bin-strace-temp/lib"), self.verbose)
        else:
            logging.debug(strace_bin + " is statically linked nothing to do")

        os.chdir(self.temp["work"] + "/initramfs-bin-strace-temp")
        return os.system("find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio" % self.temp["cache"])
Ejemplo n.º 9
0
    def build(self):
        """
        Append lvm2 static binary from host to the initramfs
    
        @return: bool
        """
        logging.debug('>>> entering initramfs.append.host.lvm2')
        lvm2_static_bin = '/sbin/lvm.static'
        lvm2_bin        = '/sbin/lvm'

        process('mkdir -p ' + self.temp['work']+'/initramfs-bin-lvm2-temp/etc/lvm', self.verbose)
        process('mkdir -p ' + self.temp['work']+'/initramfs-bin-lvm2-temp/bin', self.verbose)

        # copy binary from host
        logging.debug('initramfs.append.bin_lvm2')
        process('cp %s      %s/initramfs-bin-lvm2-temp/bin/lvm'         % (lvm2_static_bin, self.temp['work']), self.verbose)
        process('cp %s      %s/initramfs-bin-lvm2-temp/bin/lvm_static'  % (lvm2_static_bin, self.temp['work']), self.verbose)
        process('chmod +x   %s/initramfs-bin-lvm2-temp/bin/lvm'         % self.temp['work'], self.verbose)
        process('chmod +x   %s/initramfs-bin-lvm2-temp/bin/lvm_static'  % self.temp['work'], self.verbose)

        if not isstatic(lvm2_static_bin, self.verbose) and self.cli['dynlibs'] is True:
            lvm2_libs = listdynamiclibs(lvm2_static_bin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-lvm2-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+lvm2_bin+' is dynamically linked, copying detected libraries')
            for i in lvm2_libs:
                print (green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-lvm2-temp/lib'), self.verbose)
        else:
            logging.debug(lvm2_static_bin+' is statically linked nothing to do')

        # FIXME print something to the user about it so he knows and can tweak it before
        if os.path.isfile(lvm2_static_bin) or os.path.isfile(lvm2_bin):
            process('cp /etc/lvm/lvm.conf %s/initramfs-bin-lvm2-temp/etc/lvm/' % self.temp['work'], self.verbose)

        os.chdir(self.temp['work']+'/initramfs-bin-lvm2-temp')
        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])
Ejemplo n.º 10
0
    def build(self):
        """
        Append dropbear support to the initramfs
    
        @return: bool
        """
        logging.debug(">>> entering initramfs.append.host.dropbear")
        for i in ["bin", "sbin", "dev", "usr/bin", "usr/sbin", "lib", "etc", "var/log", "var/run", "root"]:
            process("mkdir -p %s/%s" % (self.temp["work"] + "/initramfs-bin-dropbear-temp/", i), self.verbose)

        dropbear_sbin = "/usr/sbin/dropbear"

        dbscp_bin = "/usr/bin/dbscp"  # FIXME assumes host version is patched w/ scp->dbscp because of openssh.
        # FIXME compilation of dropbear sources are not patched hence
        # FIXME if --dropbear --hostbin
        # FIXME then /usr/bin/scp
        # FIXME else /usr/bin/dbscp
        dbclient_bin = "/usr/bin/dbclient"
        dropbearkey_bin = "/usr/bin/dropbearkey"
        dropbearconvert_bin = "/usr/bin/dropbearconvert"

        process("cp %s %s/initramfs-bin-dropbear-temp/bin" % (dbscp_bin, self.temp["work"]), self.verbose)
        process("cp %s %s/initramfs-bin-dropbear-temp/bin" % (dbclient_bin, self.temp["work"]), self.verbose)
        process("cp %s %s/initramfs-bin-dropbear-temp/bin" % (dropbearkey_bin, self.temp["work"]), self.verbose)
        process("cp %s %s/initramfs-bin-dropbear-temp/bin" % (dropbearconvert_bin, self.temp["work"]), self.verbose)
        process("cp %s %s/initramfs-bin-dropbear-temp/sbin" % (dropbear_sbin, self.temp["work"]), self.verbose)
        process("chmod +x %s/initramfs-bin-dropbear-temp/bin/dbscp" % self.temp["work"], self.verbose)
        process("chmod +x %s/initramfs-bin-dropbear-temp/bin/dbclient" % self.temp["work"], self.verbose)
        process("chmod +x %s/initramfs-bin-dropbear-temp/bin/dropbearkey" % self.temp["work"], self.verbose)
        process("chmod +x %s/initramfs-bin-dropbear-temp/bin/dropbearconvert" % self.temp["work"], self.verbose)
        process("chmod +x %s/initramfs-bin-dropbear-temp/sbin/dropbear" % self.temp["work"], self.verbose)

        # FIXME check if dropbearkey dropbearconvert dbclient dbscp static too? NO ldd says they all use the same as /usr/sbin/dropbear
        if not isstatic(dropbear_sbin, self.verbose) and self.cli["dynlibs"] is True:
            dropbear_libs = listdynamiclibs(dropbear_sbin, self.verbose)
            process("mkdir -p %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/lib", self.verbose)
            print(
                yellow(" * ")
                + "... "
                + yellow("warning")
                + ": "
                + dropbear_sbin
                + " is dynamically linked, copying detected libraries"
            )
            for i in dropbear_libs:
                print(green(" * ") + "... " + i)
                process("cp %s %s" % (i, self.temp["work"] + "/initramfs-bin-dropbear-temp/lib"), self.verbose)
        else:
            logging.debug("dropbear is static nothing to do")

        process("cp /etc/localtime %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/etc", self.verbose)
        process("cp /etc/nsswitch.conf %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/etc", self.verbose)
        process("cp /etc/hosts %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/etc", self.verbose)
        process("touch %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/var/log/lastlog", self.verbose)
        process("touch %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/var/log/wtmp", self.verbose)
        process("touch %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/var/run/utmp", self.verbose)

        # ship the boot* scripts too
        #        process('cp %s/scripts/boot-luks-lvm.sh %s' % (self.libdir, self.temp['work']+'/initramfs-bin-dropbear-temp/root'), self.verbose)
        #        process('chmod +x %s' % self.temp['work']+'/initramfs-bin-dropbear-temp/root/boot-luks-lvm.sh', self.verbose)
        #        process('cp %s/scripts/boot-luks.sh %s' % (self.libdir, self.temp['work']+'/initramfs-bin-dropbear-temp/root'), self.verbose)
        #        process('chmod +x %s' % self.temp['work']+'/initramfs-bin-dropbear-temp/root/boot-luks.sh', self.verbose)
        process(
            "cp %s/scripts/boot.sh %s" % (self.libdir, self.temp["work"] + "/initramfs-bin-dropbear-temp/root"),
            self.verbose,
        )
        process("chmod +x %s" % self.temp["work"] + "/initramfs-bin-dropbear-temp/root/boot.sh", self.verbose)

        os.chdir(self.temp["work"] + "/initramfs-bin-dropbear-temp/dev")
        process("mknod urandom c 1 9", self.verbose)
        process("mknod ptmx c 5 2", self.verbose)
        process("mknod tty c 5 0", self.verbose)
        process("chmod 0666 urandom", self.verbose)
        process("chmod 0666 ptmx", self.verbose)
        process("chmod 0666 tty", self.verbose)

        # create keys
        process("mkdir -p %s/initramfs-bin-dropbear-temp/etc/dropbear" % self.temp["work"], self.verbose)
        print(green(" * ") + "... creating dss key")
        process(
            "%s/initramfs-bin-dropbear-temp/bin/dropbearkey -t dss -f %s/initramfs-bin-dropbear-temp/etc/dropbear/dropbear_dss_host_key"
            % (self.temp["work"], self.temp["work"]),
            self.verbose,
        )
        print(green(" * ") + "... creating rsa key")
        process(
            "%s/initramfs-bin-dropbear-temp/bin/dropbearkey -t rsa -s 4096 -f %s/initramfs-bin-dropbear-temp/etc/dropbear/dropbear_rsa_host_key"
            % (self.temp["work"], self.temp["work"]),
            self.verbose,
        )

        os.chdir(self.temp["work"] + "/initramfs-bin-dropbear-temp")

        return os.system("find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio" % self.temp["cache"])
Ejemplo n.º 11
0
    def build(self):
        """
        Append dropbear support to the initramfs

        @return: bool
        """
        logging.debug('>>> entering initramfs.append.host.dropbear')
        for i in ['bin', 'sbin', 'dev', 'usr/bin', 'usr/sbin', 'lib', 'etc', 'var/log', 'var/run', 'root']:
            process('mkdir -p %s/%s' % (self.temp['work']+'/initramfs-bin-dropbear-temp/', i), self.verbose)

        dropbear_sbin       = '/usr/sbin/dropbear'

        dbscp_bin           = '/usr/bin/dbscp'  # FIXME assumes host version is patched w/ scp->dbscp because of openssh.
                                                # FIXME compilation of dropbear sources are not patched hence
                                                # FIXME if --dropbear --hostbin
                                                # FIXME then /usr/bin/scp
                                                # FIXME else /usr/bin/dbscp
        dbclient_bin        = '/usr/bin/dbclient'
        dropbearkey_bin     = '/usr/bin/dropbearkey'
        dropbearconvert_bin = '/usr/bin/dropbearconvert'

        process('cp %s %s/initramfs-bin-dropbear-temp/bin'                  % (dbscp_bin, self.temp['work']), self.verbose)
        process('cp %s %s/initramfs-bin-dropbear-temp/bin'                  % (dbclient_bin, self.temp['work']), self.verbose)
        process('cp %s %s/initramfs-bin-dropbear-temp/bin'                  % (dropbearkey_bin, self.temp['work']), self.verbose)
        process('cp %s %s/initramfs-bin-dropbear-temp/bin'                  % (dropbearconvert_bin, self.temp['work']), self.verbose)
        process('cp %s %s/initramfs-bin-dropbear-temp/sbin'                 % (dropbear_sbin, self.temp['work']), self.verbose)
        process('chmod +x %s/initramfs-bin-dropbear-temp/bin/dbscp'         % self.temp['work'], self.verbose)
        process('chmod +x %s/initramfs-bin-dropbear-temp/bin/dbclient'      % self.temp['work'], self.verbose)
        process('chmod +x %s/initramfs-bin-dropbear-temp/bin/dropbearkey'   % self.temp['work'], self.verbose)
        process('chmod +x %s/initramfs-bin-dropbear-temp/bin/dropbearconvert' % self.temp['work'], self.verbose)
        process('chmod +x %s/initramfs-bin-dropbear-temp/sbin/dropbear'     % self.temp['work'], self.verbose)

# FIXME check if dropbearkey dropbearconvert dbclient dbscp static too? NO ldd says they all use the same as /usr/sbin/dropbear
        if not isstatic(dropbear_sbin, self.verbose) and self.cli['dynlibs'] is True:
            dropbear_libs = listdynamiclibs(dropbear_sbin, self.verbose)
            process('mkdir -p %s' % self.temp['work']+'/initramfs-bin-dropbear-temp/lib', self.verbose)
            print(yellow(' * ') + '... ' + yellow('warning')+': '+dropbear_sbin+' is dynamically linked, copying detected libraries')
            for i in dropbear_libs:
                print(green(' * ') + '... ' + i)
                process('cp %s %s' % (i, self.temp['work']+'/initramfs-bin-dropbear-temp/lib'), self.verbose)
        else:
            logging.debug('dropbear is static nothing to do')

        process('cp /etc/localtime %s'          % self.temp['work']+'/initramfs-bin-dropbear-temp/etc', self.verbose)
        process('cp /etc/nsswitch.conf %s'      % self.temp['work']+'/initramfs-bin-dropbear-temp/etc', self.verbose)
        process('cp /etc/hosts %s'              % self.temp['work']+'/initramfs-bin-dropbear-temp/etc', self.verbose)
        process('touch %s'                      % self.temp['work']+'/initramfs-bin-dropbear-temp/var/log/lastlog', self.verbose)
        process('touch %s'                      % self.temp['work']+'/initramfs-bin-dropbear-temp/var/log/wtmp', self.verbose)
        process('touch %s'                      % self.temp['work']+'/initramfs-bin-dropbear-temp/var/run/utmp', self.verbose)

        # ship the boot* scripts too
#        process('cp %s/scripts/boot-luks-lvm.sh %s' % (self.libdir, self.temp['work']+'/initramfs-bin-dropbear-temp/root'), self.verbose)
#        process('chmod +x %s' % self.temp['work']+'/initramfs-bin-dropbear-temp/root/boot-luks-lvm.sh', self.verbose)
#        process('cp %s/scripts/boot-luks.sh %s' % (self.libdir, self.temp['work']+'/initramfs-bin-dropbear-temp/root'), self.verbose)
#        process('chmod +x %s' % self.temp['work']+'/initramfs-bin-dropbear-temp/root/boot-luks.sh', self.verbose)
        process('cp %s/scripts/boot.sh %s' % (self.libdir, self.temp['work']+'/initramfs-bin-dropbear-temp/root'), self.verbose)
        process('chmod +x %s' % self.temp['work']+'/initramfs-bin-dropbear-temp/root/boot.sh', self.verbose)

        os.chdir(self.temp['work']+'/initramfs-bin-dropbear-temp/dev')
        process('mknod urandom c 1 9', self.verbose)
        process('mknod ptmx c 5 2', self.verbose)
        process('mknod tty c 5 0', self.verbose)
        process('chmod 0666 urandom', self.verbose)
        process('chmod 0666 ptmx', self.verbose)
        process('chmod 0666 tty', self.verbose)

        # create keys
        process('mkdir -p %s/initramfs-bin-dropbear-temp/etc/dropbear' % self.temp['work'], self.verbose)
        print(green(' * ') + '... creating dss key')
        process('%s/initramfs-bin-dropbear-temp/bin/dropbearkey -t dss -f %s/initramfs-bin-dropbear-temp/etc/dropbear/dropbear_dss_host_key' % (self.temp['work'], self.temp['work']), self.verbose)
        print(green(' * ') + '... creating rsa key')
        process('%s/initramfs-bin-dropbear-temp/bin/dropbearkey -t rsa -s 4096 -f %s/initramfs-bin-dropbear-temp/etc/dropbear/dropbear_rsa_host_key' % (self.temp['work'], self.temp['work']), self.verbose)

        os.chdir(self.temp['work']+'/initramfs-bin-dropbear-temp')

        return os.system('find . -print | cpio --quiet -o -H newc --append -F %s/initramfs-cpio' % self.temp['cache'])