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'])
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'])
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'])
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'])
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'])
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"])
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'])
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"])
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'])
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"])
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'])