diff options
author | Dirk von Suchodoletz | 2006-03-08 20:16:36 +0100 |
---|---|---|
committer | Dirk von Suchodoletz | 2006-03-08 20:16:36 +0100 |
commit | 8bd96400a49762c9c8aae0d2cccd53ae129c827a (patch) | |
tree | db080e5062632254416222c49cce2a08617e3ed0 /initrd | |
parent | started integration of vmware services ... (diff) | |
download | core-8bd96400a49762c9c8aae0d2cccd53ae129c827a.tar.gz core-8bd96400a49762c9c8aae0d2cccd53ae129c827a.tar.xz core-8bd96400a49762c9c8aae0d2cccd53ae129c827a.zip |
added hard disk detection, swap and special partition "44", started with
new vmware environment integration ...
git-svn-id: http://svn.openslx.org/svn/openslx/dxs/ld4@96 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'initrd')
-rw-r--r-- | initrd/distro-specs/suse/config-10.1 | 27 | ||||
-rw-r--r-- | initrd/distro-specs/suse/config-9.3 | 4 | ||||
-rw-r--r-- | initrd/distro-specs/suse/functions-10.1 | 1 | ||||
-rw-r--r-- | initrd/distro-specs/suse/functions-9.3 | 106 | ||||
-rw-r--r-- | initrd/distro-specs/ubuntu/functions-5.10 | 17 | ||||
-rwxr-xr-x | initrd/initrd-stuff/bin/hwautocfg | 34 | ||||
-rwxr-xr-x | initrd/initrd-stuff/bin/servconfig | 25 | ||||
-rw-r--r-- | initrd/initrd-stuff/etc/vmware-prep | 43 | ||||
-rwxr-xr-x | initrd/initrd-stuff/init | 6 | ||||
-rwxr-xr-x | initrd/mkdxsinitrd | 4 |
10 files changed, 187 insertions, 80 deletions
diff --git a/initrd/distro-specs/suse/config-10.1 b/initrd/distro-specs/suse/config-10.1 index e69de29b..712d95f5 100644 --- a/initrd/distro-specs/suse/config-10.1 +++ b/initrd/distro-specs/suse/config-10.1 @@ -0,0 +1,27 @@ +# Description: distro specific settings for SuSE 10.1. This configuration +# is the base for following SuSE versions until the changes +# within them require a major change +# +# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 08-03-2006 +# +# Copyright: (c) 2003, 2005 - RZ Universitaet Freiburg + + +# D_SYSCONFDIR - system wide configuration settings - /etc/sysconfig in SuSE +# and RedHat, /etc/default in Debian and Ubuntu +# D_ETCEXCL - list of files, wildcards to be excluded from /etc when using +# bind mounts +# D_DIRINBINDMNT - lists of directories to be created in bind mounted rw +# part of the client filesystem +# D_RODIRSINRW - ReadOnly Directories in RW part of filesystem to save on +# TempFS usage +# D_DIRINDXS - directories in client filesystem which should be present +# anyhow +# D_BINDMNT - any code which is specific in bind mount environment +# D_RCDIRS - runlevel directories relative to /etc +# D_XF86CONFFILE - name and location of XFree/Xorg config file, e.g. +# /etc/X11/xorg.conf or /etc/X11/XF86config, ... +# D_XFONTPATH - path(es) where X11 fonts are installed (with trailing /*) +# D_DEFAULTCOUNTRY - localization (see common functions) + +D_INITSCRIPTS="boot.udev boot.proc boot.klog boot.loadmodules boot.clock boot.sysctl boot.ipconfig boot.swap" diff --git a/initrd/distro-specs/suse/config-9.3 b/initrd/distro-specs/suse/config-9.3 index 7c2b1466..4dc89eb0 100644 --- a/initrd/distro-specs/suse/config-9.3 +++ b/initrd/distro-specs/suse/config-9.3 @@ -2,7 +2,7 @@ # is the base for following SuSE versions until the changes # within them require a major change # -# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 26-01-2006 +# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 08-03-2006 # # Copyright: (c) 2003, 2005 - RZ Universitaet Freiburg @@ -43,7 +43,7 @@ D_BINDMNT="# spielspass fuer splash" D_INITDIR="/init.d" D_INITBOOTD="${D_INITDIR}/boot.d" D_RCDIRS="/init.d/rc0.d /init.d/rc1.d /init.d/rc2.d /init.d/rc3.d /init.d/rc4.d /init.d/rc5.d /init.d/rc6.d /init.d/rcS.d" -D_INITSCRIPTS="boot.udev boot.proc boot.shm boot.klog boot.loadmodules boot.clock boot.sysctl boot.ipconfig" +D_INITSCRIPTS="boot.udev boot.proc boot.shm boot.klog boot.loadmodules boot.clock boot.sysctl boot.ipconfig boot.swap" D_XF86CONFFILE="/etc/X11/xorg.conf" D_XFONTPATH="/usr/X11R6/lib/X11/fonts/*" D_DEFAULTCOUNTRY="de" diff --git a/initrd/distro-specs/suse/functions-10.1 b/initrd/distro-specs/suse/functions-10.1 index 267b4a53..bfce77ff 100644 --- a/initrd/distro-specs/suse/functions-10.1 +++ b/initrd/distro-specs/suse/functions-10.1 @@ -88,4 +88,3 @@ if [ "x$start_dreshal" = "xyes" ]; then fi fi } - diff --git a/initrd/distro-specs/suse/functions-9.3 b/initrd/distro-specs/suse/functions-9.3 index cd1e527f..ce5af64c 100644 --- a/initrd/distro-specs/suse/functions-9.3 +++ b/initrd/distro-specs/suse/functions-9.3 @@ -145,55 +145,54 @@ if [ "x$start_snmp" = "xyes" ] ; then fi } -# x11 stuff -descsession () { -if [ "x$desktop_session" != "x" ] ; then - windowmanagers="$desktop_session" - # write script for desktop-session chooser - if [ "x$vmware" != "xno" ] ; then - debug="" - [ ${DEBUGLEVEL} -gt 0 ] && debug="--debug 1" - echo -e "#!/bin/sh\n#\n# file generated by\n#\t$0:\n#\t$date\n -OSTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$1}'\` -SPECTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$2}'\`\n -OPTS=\"-o \$OSTYPE \${SPECTYPE:+\"-s \$SPECTYPE\"}\"\n -xterm -bg black -fg white -geometry 170x30+0-0 +sb \ --e \"runvmware \$OPTS $debug\"\n" > /mnt/var/X11R6/bin/desktop-session - chmod a+x /mnt/var/X11R6/bin/desktop-session - addpath="true"; - fi -else - windowmanagers="kde,gnome,icewm,failsafe" -fi +# x11 stuff --> obsoleted by new vmware integration concept +#descsession () { +#if [ "x$desktop_session" != "x" ] ; then +# windowmanagers="$desktop_session" +# # write script for desktop-session chooser +# if [ "x$vmware" != "xno" ] ; then +# debug="" +# [ ${DEBUGLEVEL} -gt 0 ] && debug="--debug 1" +# echo -e "#!/bin/sh\n#\n# file generated by\n#\t$0:\n#\t$date\n +#OSTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$1}'\` +#SPECTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$2}'\`\n +#OPTS=\"-o \$OSTYPE \${SPECTYPE:+\"-s \$SPECTYPE\"}\"\n +#xterm -bg black -fg white -geometry 170x30+0-0 +sb \ +#-e \"runvmware \$OPTS $debug\"\n" > /mnt/var/X11R6/bin/desktop-session +# chmod a+x /mnt/var/X11R6/bin/desktop-session +# addpath="true"; +# fi +#else +# windowmanagers="kde,gnome,icewm,failsafe" +#fi # check if /usr/X11R6/bin is writeable, else use /var/X11R6/bin -if [ -w /mnt/usr/X11R6/bin/WM-Session ] ; then - sesspath="/usr/X11R6/bin" -else - sesspath="/var/X11R6/bin" - addpath="true" -fi +#if [ -w /mnt/usr/X11R6/bin/WM-Session ] ; then +# sesspath="/usr/X11R6/bin" +#else +# sesspath="/var/X11R6/bin" +# addpath="true" +#fi # create links to desktop-session chooser -[ -f /mnt/usr/bin/X11/wmlist ] && wmlist=`cat /mnt/usr/bin/X11/wmlist` -testmkd /mnt/etc/X11/sessions -for i in `echo $windowmanagers|sed -e "s/,/ /g"` ; do - # beware!! quickhack for VMware sessions - strinstr "$i" "$wmlist" || \ - test -x /mnt/usr/X11R6/bin/$i || \ - echo -e "[Desktop Entry]\nX-SuSE-translate=true\nEncoding=UTF-8\n\ -Type=XSession\nExec=$i\nTryExec=$sesspath/$i\n\ -Name=$i\n" > /mnt/etc/X11/sessions/$i.desktop - # does not work correctly (add /var/X11R6/bin to path!!) - test -x /mnt/usr/X11R6/bin/$i || \ - ln -fs /var/X11R6/bin/desktop-session /mnt/$sesspath/$i -done +#[ -f /mnt/usr/bin/X11/wmlist ] && wmlist=`cat /mnt/usr/bin/X11/wmlist` +#testmkd /mnt/etc/X11/sessions +#for i in `echo $windowmanagers|sed -e "s/,/ /g"` ; do +# # beware!! quickhack for VMware sessions +# strinstr "$i" "$wmlist" || \ +# test -x /mnt/usr/X11R6/bin/$i || \ +# echo -e "[Desktop Entry]\nX-SuSE-translate=true\nEncoding=UTF-8\n\ +#Type=XSession\nExec=$i\nTryExec=$sesspath/$i\n\ +#Name=$i\n" > /mnt/etc/X11/sessions/$i.desktop +# # does not work correctly (add /var/X11R6/bin to path!!) +# test -x /mnt/usr/X11R6/bin/$i || \ +# ln -fs /var/X11R6/bin/desktop-session /mnt/$sesspath/$i +#done # add special path /var/X11R6/bin to the PATH variable -[ "x$addpath" != "x" ] && \ - echo -e "# added path component by $0: $date\n\ -PATH=\"\$PATH:/var/X11R6/bin\"" >>/mnt/etc/SuSEconfig/profile - -} +#[ "x$addpath" != "x" ] && \ +# echo -e "# added path component by $0: $date\n\ +#PATH=\"\$PATH:/var/X11R6/bin\"" >>/mnt/etc/SuSEconfig/profile +#} # configure X display manager (/etc/sysconfig/displaymanager) config_dm_entry () { @@ -261,7 +260,8 @@ HaltCommand=/sbin/shutdown -h now SuspendCommand=/usr/bin/powersave --suspend-to-disk BaseXsession=/etc/opt/gnome/gdm/Xsession SessionDesktopDir=/usr/share/xsessions/:/etc/X11/sessions/:\ -/etc/opt/gnome/dm/Sessions/:/opt/gnome/share/gdm/BuiltInSessions/ +/etc/opt/gnome/dm/Sessions/:/opt/gnome/share/gdm/BuiltInSessions/:\ +/var/lib/vmware/import/vmsessions BaseXsession=/etc/opt/gnome/gdm/Xsession SessionDesktopDir=/usr/share/xsessions/:/etc/opt/gnome/dm/Sessions/:\ /opt/gnome/share/gdm/BuiltInSessions/ @@ -446,6 +446,22 @@ config_portmap () { rllinker "portmap" "02" "20" } +# start vmware +config_vmware () { +echo -e "#! /bin/sh\n# /etc/${D_INITDIR}/vmware-prep\n#\n\ +# file generated by $0 within initial ramdisk\n\ +. /etc/rc.status\n. /etc/sysconfig/logfile\n\ +\ncase \"\$1\" in\n start)\ +\techo -n \"Starting preparation of vmware environment \"" \ + >> /mnt/etc/${D_INITDIR}/vmware-prep +cat /etc/vmware-prep >> /mnt/etc/${D_INITDIR}/vmware-prep +echo -e "\trc_status -v\n\t;;\nesac\nrc_exit" \ + >> /mnt/etc/${D_INITDIR}/vmware-prep +chmod u+x /mnt/etc/${D_INITDIR}/vmware-prep +rllinker "vmware-prep" "18" "02" +rllinker "vmware" "20" "02" +} + # initialize boot.ld - skript to be executed during early system startup # (before most of the normal boot init scripts) # this script should operate like a normal runlevel script diff --git a/initrd/distro-specs/ubuntu/functions-5.10 b/initrd/distro-specs/ubuntu/functions-5.10 index 59024122..d26dbea7 100644 --- a/initrd/distro-specs/ubuntu/functions-5.10 +++ b/initrd/distro-specs/ubuntu/functions-5.10 @@ -2,13 +2,13 @@ # linux diskless clients (executed within initial # ramdisk after genconfig) # -# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 16-02-2006 +# Author(s): Dirk von Suchodoletz <dirk@goe.net>, 08-03-2006 # Nico Dietrich # Felix Endres # # Copyright: (c) 2006 - RZ Universitaet Freiburg # -# Version: 0.2.1b +# Version: 0.2.1c # distro specific stuff to initialize preinit () { @@ -274,6 +274,19 @@ config_nscd () { : } +# start vmware +config_vmware () { +echo -e "#! /bin/sh\n#\n# /etc/${D_INITDIR}/vmware-prep\n\ +# file generated by $0 within initial ramdisk\n\ +# hier fehlt noch der uebliche Ubuntu Startskript header" \ + >> /mnt/etc/${D_INITDIR}/vmware-prep +cat /etc/vmware-prep >> /mnt/etc/${D_INITDIR}/vmware-prep +echo -e "# und der Abschluss" >> /mnt/etc/${D_INITDIR}/vmware-prep +chmod u+x /mnt/etc/${D_INITDIR}/vmware-prep +rllinker "vmware-prep" "18" "02" +rllinker "vmware" "20" "02" +} + # configure automounter config_automount () { if [ -f /mnt/etc/init.d/autofs ] ; then diff --git a/initrd/initrd-stuff/bin/hwautocfg b/initrd/initrd-stuff/bin/hwautocfg index ada09a31..bf82c2c2 100755 --- a/initrd/initrd-stuff/bin/hwautocfg +++ b/initrd/initrd-stuff/bin/hwautocfg @@ -403,19 +403,14 @@ if [ -n "$IDE" ] ; then # you might want to check /etc/sysconfig/floppy for more info strinfile "ZIP" /tmp/hwsetup.info && modprobe ${MODPRV} ide_floppy strinfile "CDROM" /tmp/hwsetup.info && modprobe ${MODPRV} ide_cd - strinfile "HD" /tmp/hwsetup.info && modprobe ${MODPRV} ide_disk & + strinfile "HD" /tmp/hwsetup.info && modprobe ${MODPRV} ide_disk fi # not rather precise ... if strinfile "SCSI" /tmp/hwsetup.info ; then strinfile "CDROM" /tmp/hwsetup.info && modprobe -a ${MODPRV} sr_mod sg - strinfile "HD" /tmp/hwsetup.info && modprobe ${MODPRV} sd_mod & + strinfile "HD" /tmp/hwsetup.info && modprobe ${MODPRV} sd_mod fi - -# cdrom/dvd und plattenkonfig. ergaenzen. Module sind hier geladen und -# devices sind klar - - # fixme - psmouse entladen, falls nicht vorhanden # configure some variables from configuration file - wait for dhcp or ldap @@ -427,6 +422,29 @@ data via ldap until now ..." nonfatal . /etc/machine-setup # wait for completion of clients root filesystem in /mnt waitfor /tmp/fscmpl 40000 + +# postpone some commands into normal bootup environment +echo -e "\t# entry added by $0: $date" \ + >>/mnt/etc/${D_INITDIR}/boot.ld +# cdrom/dvd und plattenkonfig. ergaenzen. Module sind hier geladen und +# devices sind klar +for hd in $(cat /tmp/hwsetup.info|sed -n -e '/HD$/,/device:/p'| \ + sed -n -e '/device:/p' | sed -e 's/device: //') ; do + fdisk -l /dev/$hd| sed -n "/^\/dev\//p" > /tmp/hd_part + for hdpartnr in $(cat /tmp/hd_part | \ + sed -n -e "/ 82 /p"|sed -e "s/[[:space:]].*//") ; do + echo -e "$hdpartnr\tswap\t\tswap\t\tdefaults\t0 0" >> /mnt/etc/fstab + done + # we use special non assigned partition type for harddisk scratch space + for hdpartnr in $(cat /tmp/hd_part | \ + sed -n -e "/ 44 /p"|sed -e "s/[[:space:]].*//") ; do + echo -e "\t( mke2fs -q $hdpartnr; mount -n $hdpartnr /mnt/tmp ) &" \ + >>/mnt/etc/${D_INITDIR}/boot.ld + # + break + done +done + # run localizator and configure keyboard and console fonts DEFKEYTABLE="de-latin1-nodeadkeys" localization $country @@ -435,8 +453,6 @@ if [ -z "${KEYTABLE}" ] ; then '${DEFKEYTABLE}' defined\nin $0." KEYTABLE=${DEFKEYTABLE} fi -echo -e "\t# entry added by $0: $date" \ - >>/mnt/etc/${D_INITDIR}/boot.ld echo -e "\tloadkeys -q ${KEYTABLE}\n" >>/mnt/etc/${D_INITDIR}/boot.ld [ -n "${CONSOLE_FONT}" ] && consolefont # run X11 / Xorg configurator diff --git a/initrd/initrd-stuff/bin/servconfig b/initrd/initrd-stuff/bin/servconfig index ce1543ba..a6ce3793 100755 --- a/initrd/initrd-stuff/bin/servconfig +++ b/initrd/initrd-stuff/bin/servconfig @@ -194,7 +194,7 @@ if [ "x$start_x" != "xno" ] ; then chmod a+rwxt /mnt/tmp/.X11-unix echo "" > /mnt/etc/X11/xdm/Xservers # define additional sessions offered to the user (via dhcp/ldap config) - descsession + # descsession -> deprecated by new vmware integration concept # write available X display manager to /etc/X11/xdm/Xaccess [ -n "$x_display_manager" ] && \ echo -e "# /etc/X11/xdm/Xaccess - file generated by $0: \ @@ -307,7 +307,7 @@ if [ "x$nis_domain" != "x" ] && [ "x$nis_servers" != "x" ] ; then echo -e "# /etc/yp.conf - file generated by $0:\n\ #\t$date\n\nypserver "$nis_servers >/mnt/etc/yp.conf # should be last in passwd file - strinfile "+::::::" /mnt/etc/passwd || echo "+::::::" >>/mnt/etc/passwd + strinfile "+::::::" /mnt/etc/passwd||echo "+::::::" >>/mnt/etc/passwd fi ####################################################################### @@ -321,20 +321,13 @@ config_nscd # create needed directories and files if [ "x$vmware" != "x" ] || [ "x$vmware" != "xno" ] ; then -for i in /var/lib/vmware /etc/vmware/vmnet1 /etc/vmware/vmnet8 \ - /var/run/vmware ; do - testmkd /mnt/$i -done -chmod 1777 /mnt/var/run/vmware -rm /mnt/etc/vmware/not_configured -# device creation might not be needed any longer!? -for i in 0 1 2 3 4 5 6 7 8 9; do - [ -c /mnt/dev/vmnet$i ] || mknod /dev/vmnet$i c 119 $i -done -chmod 0700 /mnt/dev/vmnet* -# check for the place of VM images - - + config_vmware + for i in /var/lib/vmware /etc/vmware/vmnet1 /etc/vmware/vmnet8 \ + /var/run/vmware ; do + testmkd /mnt/$i + done + chmod 1777 /mnt/var/run/vmware + rm /mnt/etc/vmware/not_configured 2>/dev/null fi # servconfig finished successfully diff --git a/initrd/initrd-stuff/etc/vmware-prep b/initrd/initrd-stuff/etc/vmware-prep new file mode 100644 index 00000000..c8a21295 --- /dev/null +++ b/initrd/initrd-stuff/etc/vmware-prep @@ -0,0 +1,43 @@ + + # main part of vmware preparation script. The wrapper is + # distro specific ... + # + # Description: Adaptation of a generic runlevel script file + # for use with Diskless X Stations (v4.0) - script prepares + # vmware environment + # + # Author(s): Michael Janczyk, 26-08-2005 + # Dirk von Suchodoletz <dirk@goe.net>, 08-03-2006 + # Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg + # + # Version: 0.1a + + . /etc/machine-setup + + # device creation - the module does not trigger udev properly + for i in 0 1 2 3 4 5 6 7 8 9; do + [ -c /dev/vmnet$i ] || mknod /dev/vmnet$i c 119 $i; done + chmod 0700 /dev/vmnet* + + # loop file for exchanging information between linux and vmware + #cp /var/lib/vmware/import/templ/empty1440.img + + # special start script for vmware with predefined image + if test -w /usr/X11R6/bin ; then + path="/usr/X11R6/bin" + cp /var/lib/vmware/import/templ/runvmware \ + /usr/X11R6/bin + else + path="/var/X11R6/bin" + test -d /var/X11R6/bin || mkdir -p /var/X11R6/bin + cp /var/lib/vmware/import/templ/runvmware \ + /var/X11R6/bin + fi + + echo -e "#!/bin/sh\n#\n# file generated by\n#\t$0:\n#\t$date\n +OSTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$1}'\` +SPECTYPE=\`echo \$0 | sed -e \"s,-, ,\" -e \"s,.*/,,\" | awk '{print \$2}'\`\n +OPTS=\"-o \$OSTYPE \${SPECTYPE:+\"-s \$SPECTYPE\"}\"\n +xterm -bg black -fg white -geometry 170x30+0-0 +sb \ +-e \"$path/runvmware \$OPTS $debug\"\n" > $path/desktop-session + diff --git a/initrd/initrd-stuff/init b/initrd/initrd-stuff/init index b917189e..39280a4d 100755 --- a/initrd/initrd-stuff/init +++ b/initrd/initrd-stuff/init @@ -8,7 +8,7 @@ # # Copyright: (c) 2006 - RZ Universitaet Freiburg # -# Version: 0.2.3a +# Version: 0.2.3b # functions common for all distros errmsg="functions file contains a lot of script \ @@ -379,7 +379,7 @@ echo -e "# /etc/fstab - file generated by\n#\t$0:\n#\tDirk von \ Suchodoletz, dirk@goe.net\n\nrootfs\t\t/\t\trootfs\t\tro\t\t 0 0\n\ proc\t\t/proc\t\tproc\t\tdefaults\t 0 0\ninitramdevs\t/dev\t\ttmpfs\ \t\trw\t\t 0 0\ndevpts\t\t/dev/pts\tdevpts\t\tmode=0620,gid=5\t 0 0\n\ -usbfs\t\t/proc/bus/usb\tusbfs\t\tnoauto\t\t 0 0">/mnt/etc/fstab || \ +usbfs\t\t/proc/bus/usb\tusbfs\t\tnoauto\t\t 0 0" >>/mnt/etc/fstab || \ error "Failed to create /etc/fstab in the clients root filesystem. The\n\ noexistence of the file might produce some unexpected behaviour of\n\ mount commands." @@ -413,7 +413,7 @@ d_mkbootld close # should be killed if started within init killall -9 dhcpcd dhclient pump 2>/dev/null -#bash +bash # post init for some distro specific postinit diff --git a/initrd/mkdxsinitrd b/initrd/mkdxsinitrd index 88782683..968e6c8e 100755 --- a/initrd/mkdxsinitrd +++ b/initrd/mkdxsinitrd @@ -7,7 +7,7 @@ # Nico Dietrich # Blub # -# Version: 0.3.1c +# Version: 0.3.1d # # Copyright: (c) 2003 - 2006 - RZ Universitaet Freiburg @@ -341,7 +341,7 @@ done # needed standard binaries for bbins in \ - cat chmod chown chroot cp expr killall ln mkdir mknod modprobe \ + cat chmod chown chroot cp expr fdisk killall ln mkdir modprobe \ mount portmap rmmod sed tar umount do cobi ${bbins} bin || echo "Program ${bbins} not found" |