Add auto install, HdInstall and state grid custom install

new file:   AutoInstall/auto_install.py
	new file:   StateGrid/state_grid.py
	modified:   interface/ri_data.py
	modified:   operation/exec_finish_install.sh
	new file:   operation/finish_install.py
	renamed:    operation/99finish_install.sh -> operation/finish_install/99finish_install.sh
	new file:   xml/install.xml
This commit is contained in:
Peng Zhihui
2014-02-24 10:44:53 +08:00
parent 8378d142fc
commit 21c3272eea
7 changed files with 658 additions and 52 deletions

View File

@@ -0,0 +1,64 @@
import os,sys
from xml.dom import minidom
from xml.dom.ext import PrettyPrint
sys.path.append('../interface/')
sys.path.append('../new_partition/')
sys.path.append('../text/')
import ri_data
import partition_data
import interface_partition
import ri_newt
list=['partition','raid','mountpoint']
install_xml = '/var/install/install.xml'
init_partition_from_os_flag = True
init_mountpoint_flag = True
init_raid_from_os = True
count=0
while True :
if count == 0:
if init_raid_from_os:
ri_data.Raid.init_from_os()
init_raid_from_os = False
if init_partition_from_os_flag:
partition_data.Partition.init_from_os(unit='s')
init_partition_from_os_flag = False
s = interface_partition.main()
if init_mountpoint_flag:
ri_data.MountPoint.init_from_internal()
init_mountpoint_flag = False
if len(ri_newt.Raid.init_from_internal()) < 2 and len(ri_data.Raid.dict) == 0:
if list[1] == 'raid':
del list[1]
else:
if list[1] != 'raid':
list.insert(1, 'raid')
else:
if list[count] == 'raid':
ri_newt.Raid()
elif list[count] == 'mountpoint':
ri_newt.MountPoint()
s = ri_newt.Screen.dict[list[count]].set_data()
if int(s) == 0:
count = count + 1
else:
count = count - 1
if count < 0 or count > len(list) - 1:
ri_newt.Screen.screen.finish()
break
if s == '0':
xmldoc = minidom.parse(install_xml)
root = xmldoc.firstChild
f = file(install_xml, 'w')
partition_data.Partition.to_xml(xmldoc, root)
ri_data.Raid.to_xml(xmldoc, root)
PrettyPrint(xmldoc, f)
f.close()
os.system("python ../interface/ri_install.py")

85
StateGrid/state_grid.py Executable file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env python
from snack import *
from xml.dom import minidom
from xml.dom.ext import PrettyPrint
import sys
sys.path.append('../interface/')
sys.path.append('../text/')
import ri_newt
import ri_data
install_xml = '/var/install/install.xml'
class Username(ri_newt.Screen):
def __init__(self):
ri_newt.Screen.__init__(self, name='username',title='StateGrid custom install')
ri_newt.Screen.screen.pushHelpLine('<Tab> moves; <Space> selects; <Enter> activates buttons')
self.text = 'This username will use as State Grid user. Can not be a system user or reserver user. Please enter username:'
ri_newt.Screen.widget_textboxreflowed(80, self.text)
ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])
def set_data(self):
ri_newt.Screen.widget_entry(75, text='')
s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
if s == 0:
ri_data.StateGrid.username = ri_newt.Screen.entry.value()
return s
class HomeDirectory(ri_newt.Screen):
def __init__(self):
ri_newt.Screen.__init__(self, name='home_dir',title='StateGrid custom install')
ri_newt.Screen.screen.pushHelpLine('<Tab> moves; <Space> selects; <Enter> activates buttons')
self.text = 'This directory will use as State Grid user home directory. Can not be /home/{sysadmin,netadmin,secadmin,audadmin}.\n\nPlease enter home directory:'
ri_newt.Screen.widget_textboxreflowed(80, self.text)
ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])
def set_data(self):
ri_newt.Screen.widget_entry(75, text='')
s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
if s == 0:
ri_data.StateGrid.home_dir = ri_newt.Screen.entry.value()
return s
class Shell(ri_newt.Screen):
def __init__(self):
ri_newt.Screen.__init__(self, name='shell',title='StateGrid custom install')
ri_newt.Screen.screen.pushHelpLine('<Tab> moves; <Space> selects; <Enter> activates buttons')
self.text = 'This shell will use as State Grid user shell, Please enter user shell:'
ri_newt.Screen.widget_textboxreflowed(80, self.text)
ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])
def set_data(self):
ri_newt.Screen.widget_entry(75, text='')
s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
if s == 0:
ri_data.StateGrid.shell = ri_newt.Screen.entry.value()
if __name__ == "__main__":
Username()
ri_newt.Screen.dict['username'].set_data()
HomeDirectory()
ri_newt.Screen.dict['home_dir'].set_data()
Shell()
ri_newt.Screen.dict['shell'].set_data()
xmldoc = minidom.parse(install_xml)
root = xmldoc.firstChild
f = file(install_xml,'w')
ri_data.StateGrid.to_xml(xmldoc, root)
PrettyPrint(xmldoc, f)
f.close()
ri_newt.Screen.screen.finish()

View File

@@ -733,6 +733,8 @@ def init_from_xml():
Group.init_from_xml(n)
elif n.nodeName == 'services':
Service.init_from_xml(n)
elif n.nodeName == 'stategrid':
StateGrid.init_from_xml(n)
def init_from_xml_and_os():
''' init all classes in this module from file and os '''
@@ -768,3 +770,27 @@ def to_xml():
PrettyPrint(xmldoc, f)
f.close()
class StateGrid():
''' state grid custom install data '''
username = ''
home_dir = ''
shell = ''
@staticmethod
def init_from_xml(node):
''' init State Grid data from xml node '''
for k in node.attributes.keys():
setattr(StateGrid, k, node.attributes[k].value.encode('ascii'))
@staticmethod
def to_xml(doc, p_node):
''' write State Grid data into xml
doc - xml document instance
p_node - xml node (parent node)'''
stgd = doc.createElement('stategrid')
for st in ('username','home_dir','shell'):
to_xml_attr(doc, stgd, StateGrid, st)
p_node.appendChild(stgd)

View File

@@ -32,67 +32,26 @@ source ./functions
prep ()
{
local mp
for mp in /dev /proc /sys
do
mount --bind -n $mp "$TARGET$mp"
done
if [ ! -d $FINISH_INSTALL_DIR ];then
mkdir -p $FINISH_INSTALL_DIR
fi
for mp in /dev /proc /sys
do
mount --bind -n $mp "$TARGET$mp"
done
# copy the script to $TARGET/opt
cp -r /usr/lib/new_install/operation/finish_install $TARGET/opt
}
# copy the script to $TARGET/opt, and chroot execute it
exec_script ()
{
local src
local src_name
src="$1"
src_name=$(basename $src)
cp $src "$TARGET/opt"
chroot $TARGET "/opt/$src_name" >>$DEV_LOG 2>&1 && rm -f "$TARGET/opt/$src_name"
}
main ()
{
local line
local base
local script
prep
while read line ;do
if [ -n "$line" ];then
cp $line $FINISH_INSTALL_DIR/
else
break
fi
done
# run all the script in /var/finish_install,
# execute sequence through number of script name
for script in "$FINISH_INSTALL_DIR"/*; do
base=$(basename $script | sed 's/[0-9]*//')
if [ -x "$script" ];then
info "Running $base"
exec_script $script
erv
else
warn "Unable to execute $script"
fi
done
info "Running finish install success"
prep
info "Running finish install"
/usr/bin/python finish_install.py >>$DEV_LOG 2>&1
info "Running finish install success"
[ ! -c "$LOG_FILE" ] && cp $LOG_FILE "$TARGET/var/log"
[ ! -c "/var/install/install.xml" ] && cp "/var/install/install.xml" "$TARGET/var/log"
[ ! -c "$DEV_LOG" ] && cp $DEV_LOG "$TARGET/var/log" || true
}
FINISH_INSTALL_DIR="/var/finish_install"
#FINISH_INSTALL_DIR="/var/finish_install"
main "$@"

23
operation/finish_install.py Executable file
View File

@@ -0,0 +1,23 @@
#!/usr/bin/env python
# run finish_install scripts
#
import os,sys
sys.path.append('../interface')
import ri_data
# get data from install.xml
ri_data.init_from_xml()
username = ri_data.StateGrid.username
homedir = ri_data.StateGrid.home_dir
shell = ri_data.StateGrid.shell
# run state grid custom scripts
instmode = os.system("cat /proc/cmdline | sed 's/.*instmode=\([^ ]*\).*/\1/'")
if instmode == 'StateGrid':
os.system("chroot /mnt /opt/finish_install/StateGrid/setup.sh %s %s %s" %(username, homedir, shell))
# run post_add scripts
os.system("chroot /mnt /opt/finish_install/99finish_install.sh")

449
xml/install.xml Normal file
View File

@@ -0,0 +1,449 @@
<?xml version='1.0' encoding='UTF-8'?>
<install>
<serial-number>0123456789</serial-number>
<network domain='in.linx' secondary_dns='' ip='192.168.0.1' hostname='localhost' mask='255.255.255.0' primary_dns='192.168.0.254' configuration='static' gateway='192.168.0.254'/>
<groups>
<group name='development' install='yes'>
<optional selection='all'>
<package name='git-manpages' install='no'/>
<package name='Archive-Zip' install='no'/>
<package name='ant' install='no'/>
<package name='gdb' install='no'/>
<package name='python-genshi' install='no'/>
<package name='dejagnu' install='no'/>
<package name='byacc' install='no'/>
<package name='libxml++' install='no'/>
<package name='IO-Compress-Base' install='no'/>
<package name='IO-Compress-Zlib' install='no'/>
<package name='make' install='no'/>
<package name='autoconf' install='no'/>
<package name='glibmm' install='no'/>
<package name='tls' install='no'/>
<package name='automake' install='no'/>
<package name='subversion' install='no'/>
<package name='m4' install='no'/>
<package name='libstdc++-compat' install='no'/>
<package name='ccache' install='no'/>
<package name='sqlite3' install='no'/>
<package name='ddd' install='no'/>
<package name='flex' install='no'/>
<package name='python-setuptools' install='no'/>
<package name='clearsilver' install='no'/>
<package name='Compress-Raw-Zlib' install='no'/>
<package name='PyXML' install='no'/>
<package name='autogen' install='no'/>
<package name='gperf' install='no'/>
<package name='libidl' install='no'/>
<package name='swig' install='no'/>
<package name='intltool' install='no'/>
<package name='libsigc++' install='no'/>
<package name='git' install='no'/>
<package name='ruby' install='no'/>
<package name='guile' install='no'/>
<package name='bin86' install='no'/>
<package name='subversion-python' install='no'/>
<package name='Compress-Zlib' install='no'/>
<package name='trac' install='no'/>
<package name='jdk' install='no'/>
<package name='strace' install='no'/>
<package name='cvs' install='no'/>
<package name='XML-Parser' install='no'/>
<package name='bison' install='no'/>
<package name='gnupg' install='no'/>
<package name='libtool' install='no'/>
<package name='cscope' install='no'/>
<package name='kernel_source' install='no'/>
<package name='binutils' install='no'/>
<package name='nasm' install='no'/>
</optional>
</group>
<group name='graphic' install='yes'>
<optional selection='all'>
<package name='x11-libX11' install='no'/>
<package name='x11-libXxf86misc' install='no'/>
<package name='x11-libXft' install='no'/>
<package name='x11-libAppleWM' install='no'/>
<package name='x11-libXrandr' install='no'/>
<package name='glitz' install='no'/>
<package name='x11-libXfixes' install='no'/>
<package name='gd' install='no'/>
<package name='x11-libFS' install='no'/>
<package name='x11-xtrans' install='no'/>
<package name='x11-xcursor-themes' install='no'/>
<package name='x11-twm' install='no'/>
<package name='fontconfig' install='no'/>
<package name='gdk-pixbuf' install='no'/>
<package name='tk' install='no'/>
<package name='x11-fonts-chinese' install='no'/>
<package name='pixman' install='no'/>
<package name='freetype' install='no'/>
<package name='x11-libXdmcp' install='no'/>
<package name='x11-libpciaccess' install='no'/>
<package name='kdeedu' install='no'/>
<package name='gtk1' install='no'/>
<package name='gtk2' install='no'/>
<package name='kdegames' install='no'/>
<package name='libdrm' install='no'/>
<package name='pango' install='no'/>
<package name='x11-libXmu' install='no'/>
<package name='lesstif' install='no'/>
<package name='dbus' install='no'/>
<package name='rxvt' install='no'/>
<package name='cairo' install='no'/>
<package name='x11-libXxf86dga' install='no'/>
<package name='x11-libXtst' install='no'/>
<package name='x11-libWindowsWM' install='no'/>
<package name='x11-libXres' install='no'/>
<package name='x11-proto' install='no'/>
<package name='poppler' install='no'/>
<package name='x11-driver' install='no'/>
<package name='x11-font-util' install='no'/>
<package name='scim-tables' install='no'/>
<package name='kdebindings' install='no'/>
<package name='kdewebdev' install='no'/>
<package name='kdepim' install='no'/>
<package name='qt3' install='no'/>
<package name='gpm' install='no'/>
<package name='glib1' install='no'/>
<package name='xcb-proto' install='no'/>
<package name='x11-libXinerama' install='no'/>
<package name='x11-libXext' install='no'/>
<package name='windowmaker' install='no'/>
<package name='x11-doc' install='no'/>
<package name='xchat' install='no'/>
<package name='x11-libXp' install='no'/>
<package name='x11-libXt' install='no'/>
<package name='x11-libXv' install='no'/>
<package name='atk' install='no'/>
<package name='xosview' install='no'/>
<package name='kdegraphics' install='no'/>
<package name='x11-libxkbfile' install='no'/>
<package name='x11-libXi' install='no'/>
<package name='glib2' install='no'/>
<package name='kdesdk' install='no'/>
<package name='x11-xinit' install='no'/>
<package name='x11-libXfont' install='no'/>
<package name='x11-libXdamage' install='no'/>
<package name='x11-libXScrnSaver' install='no'/>
<package name='xkeyboard-config' install='no'/>
<package name='libxcb' install='no'/>
<package name='tightvnc' install='no'/>
<package name='x11-util' install='no'/>
<package name='x11-libXcursor' install='no'/>
<package name='amsn' install='no'/>
<package name='arts' install='no'/>
<package name='emacs' install='no'/>
<package name='Mesa' install='no'/>
<package name='x11-libXpm' install='no'/>
<package name='x11-libXcomposite' install='no'/>
<package name='kdeaddons' install='no'/>
<package name='x11-libXau' install='no'/>
<package name='x11-libXaw' install='no'/>
<package name='x11-xorg-server' install='no'/>
<package name='x11-libfontenc' install='no'/>
<package name='kdeaccessibility' install='no'/>
<package name='x11-libXfontcache' install='no'/>
<package name='kdelibs' install='no'/>
<package name='x11-libXxf86vm' install='no'/>
<package name='hicolor-icon-theme' install='no'/>
<package name='x11-xbitmaps' install='no'/>
<package name='qemu-kvm' install='no'/>
<package name='imlib' install='no'/>
<package name='fcitx' install='no'/>
<package name='x11-libICE' install='no'/>
<package name='curl' install='no'/>
<package name='libpthread-stubs' install='no'/>
<package name='kde-i18n-zh_CN' install='no'/>
<package name='x11-libXvMC' install='no'/>
<package name='kdevelop' install='no'/>
<package name='kdebase' install='no'/>
<package name='x11-libSM' install='no'/>
<package name='kdetoys' install='no'/>
<package name='kdemultimedia' install='no'/>
<package name='x11-app' install='no'/>
<package name='x11-libXrender' install='no'/>
<package name='scim' install='no'/>
<package name='dbus-glib-1' install='no'/>
<package name='kdeartwork' install='no'/>
<package name='kdeutils' install='no'/>
<package name='kdenetwork' install='no'/>
<package name='x11-libdmx' install='no'/>
<package name='font-x11' install='no'/>
<package name='gamin' install='no'/>
<package name='fribidi' install='no'/>
<package name='scim-pinyin' install='no'/>
<package name='kdeadmin' install='no'/>
<package name='SDL' install='no'/>
</optional>
</group>
<group name='office' install='yes'>
<optional selection='all'>
<package name='firefox' install='no'/>
<package name='libedit' install='no'/>
<package name='pandoc' install='no'/>
<package name='thunderbird' install='no'/>
<package name='openoffice' install='no'/>
<package name='ghc' install='no'/>
<package name='flashplayer' install='no'/>
</optional>
</group>
<group name='server' install='yes'>
<optional selection='all'>
<package name='alsa-utils' install='no'/>
<package name='netkit-telnet' install='no'/>
<package name='proftpd' install='no'/>
<package name='libtiff' install='no'/>
<package name='fetchmail' install='no'/>
<package name='netkit-rsh' install='no'/>
<package name='nail' install='no'/>
<package name='mfs' install='no'/>
<package name='dvd+rw-tools' install='no'/>
<package name='libart_lgpl' install='no'/>
<package name='libmng' install='no'/>
<package name='libungif' install='no'/>
<package name='cups' install='no'/>
<package name='uml-utilities' install='no'/>
<package name='multipath-tools' install='no'/>
<package name='rsync' install='no'/>
<package name='samba' install='no'/>
<package name='net-snmp' install='no'/>
<package name='linux-identd' install='no'/>
<package name='alsa-lib' install='no'/>
<package name='libpcap' install='no'/>
<package name='pine' install='no'/>
<package name='apr' install='no'/>
<package name='mod_perl' install='no'/>
<package name='libpng' install='no'/>
<package name='dhcp' install='no'/>
<package name='bridge-utils' install='no'/>
<package name='tcpdump' install='no'/>
<package name='alsa-oss' install='no'/>
<package name='wireshark' install='no'/>
<package name='squid' install='no'/>
<package name='esound' install='no'/>
<package name='ntp' install='no'/>
<package name='procmail' install='no'/>
<package name='portmap' install='no'/>
<package name='rdate' install='no'/>
<package name='libogg' install='no'/>
<package name='nfs-utils' install='no'/>
<package name='bindutils' install='no'/>
<package name='apache' install='no'/>
<package name='dhcpcd' install='no'/>
<package name='mod_php' install='no'/>
<package name='numactl' install='no'/>
<package name='libjpeg' install='no'/>
<package name='bind' install='no'/>
<package name='lukemftp' install='no'/>
<package name='fuse' install='no'/>
<package name='postfix' install='no'/>
<package name='openldap' install='no'/>
<package name='snort' install='no'/>
<package name='webfs' install='no'/>
<package name='lynx' install='no'/>
<package name='ppp' install='no'/>
<package name='libvorbis' install='no'/>
<package name='audiofile' install='no'/>
<package name='lcms' install='no'/>
</optional>
</group>
<group name='adds_bags' install='yes'>
<optional selection='all'>
<package name='krb5' install='no'/>
<package name='gstreamer' install='no'/>
<package name='fonts-arphic-ukai' install='no'/>
<package name='gsfonts' install='no'/>
<package name='iputils' install='no'/>
<package name='sudo' install='no'/>
<package name='xz' install='no'/>
<package name='yasm' install='no'/>
<package name='gtkmm' install='no'/>
<package name='ttf-dejavu' install='no'/>
<package name='wmctrl' install='no'/>
<package name='xfonts-mathml' install='no'/>
<package name='gparted' install='no'/>
<package name='pycairo' install='no'/>
<package name='libgpg-error' install='no'/>
<package name='gst-plugins-base' install='no'/>
<package name='pygtk' install='no'/>
<package name='nas' install='no'/>
<package name='pynetifaces' install='no'/>
<package name='slang' install='no'/>
<package name='sshpass' install='no'/>
<package name='ttf-arphic-uming' install='no'/>
<package name='fdisk' install='no'/>
<package name='boost' install='no'/>
<package name='unixodbc' install='no'/>
<package name='xfonts-encodings' install='no'/>
<package name='wqy-bitmapfont-gb18030' install='no'/>
<package name='xfonts-wqy' install='no'/>
<package name='smplayer' install='no'/>
<package name='ttf-indic-fonts' install='no'/>
<package name='mplayer' install='no'/>
<package name='pygobject' install='no'/>
<package name='cmake' install='no'/>
<package name='dos2unix' install='no'/>
<package name='libgcrypt' install='no'/>
<package name='newt' install='no'/>
<package name='ghostscript' install='no'/>
<package name='indent' install='no'/>
<package name='fonts-arphic-uming' install='no'/>
<package name='xpdf' install='no'/>
<package name='hplip' install='no'/>
<package name='minicom' install='no'/>
<package name='cairomm' install='no'/>
<package name='dbus-qt3' install='no'/>
<package name='jasper' install='no'/>
<package name='wqy-microhei-lite' install='no'/>
<package name='libglade' install='no'/>
<package name='ttf-freefont' install='no'/>
<package name='boost-jam' install='no'/>
</optional>
</group>
<group name='base' install='yes'>
<mandatory>
<package name='less'/>
<package name='acpid'/>
<package name='kbd'/>
<package name='sysvinit'/>
<package name='tcl'/>
<package name='findutils'/>
<package name='popt'/>
<package name='gdbm'/>
<package name='shadow'/>
<package name='cpufrequtils'/>
<package name='util-linux'/>
<package name='grub2'/>
<package name='pam_make'/>
<package name='lm_sensors'/>
<package name='iptables'/>
<package name='unzip'/>
<package name='python'/>
<package name='db'/>
<package name='cpio'/>
<package name='rpm2targz'/>
<package name='reiserfsprogs'/>
<package name='patch'/>
<package name='psmisc'/>
<package name='netkit-telnetd'/>
<package name='net-tools'/>
<package name='help2man'/>
<package name='man-pages'/>
<package name='texi2html'/>
<package name='ports'/>
<package name='pkg-config'/>
<package name='termcap'/>
<package name='parted'/>
<package name='smartmontools'/>
<package name='ed'/>
<package name='dosfstools'/>
<package name='mysql'/>
<package name='adjtimex'/>
<package name='udev'/>
<package name='dialog'/>
<package name='kernel-source'/>
<package name='sed'/>
<package name='expect'/>
<package name='libxslt'/>
<package name='netkit-base'/>
<package name='mktemp'/>
<package name='unrar'/>
<package name='elfutils'/>
<package name='libcgroup'/>
<package name='linux-firmware'/>
<package name='bc'/>
<package name='gawk'/>
<package name='raidtools'/>
<package name='wget'/>
<package name='kernel-image'/>
<package name='bash'/>
<package name='openssh'/>
<package name='openssl'/>
<package name='sysstat'/>
<package name='libarchive'/>
<package name='slocate'/>
<package name='sysklogd'/>
<package name='lsof'/>
<package name='lvm2'/>
<package name='tcp_wrappers'/>
<package name='vim'/>
<package name='kernel-header'/>
<package name='acct'/>
<package name='rpm'/>
<package name='pcre'/>
<package name='perf'/>
<package name='zip'/>
<package name='perl'/>
<package name='time'/>
<package name='groff'/>
<package name='cracklib'/>
<package name='killproc'/>
<package name='traceroute'/>
<package name='ncurses'/>
<package name='memtest86+'/>
<package name='linx_init'/>
<package name='libusb'/>
<package name='hdparm'/>
<package name='sysfsutils'/>
<package name='beecrypt'/>
<package name='linux-pam'/>
<package name='gmp'/>
<package name='grep'/>
<package name='attr'/>
<package name='zlib'/>
<package name='tree'/>
<package name='cdrtools'/>
<package name='perl-gettext'/>
<package name='diffutils'/>
<package name='procps'/>
<package name='xfsprogs'/>
<package name='tar'/>
<package name='libxml2'/>
<package name='expat'/>
<package name='hotplug'/>
<package name='logrotate'/>
<package name='at'/>
<package name='file'/>
<package name='timezone'/>
<package name='ispell'/>
<package name='texinfo'/>
<package name='pkgutils'/>
<package name='acl'/>
<package name='gcc'/>
<package name='mdadm'/>
<package name='gettext'/>
<package name='coreutils'/>
<package name='vixie-cron'/>
<package name='which'/>
<package name='libcap'/>
<package name='libaio'/>
<package name='star'/>
<package name='jfsutils'/>
<package name='tcsh'/>
<package name='pciutils'/>
<package name='quota'/>
<package name='gzip'/>
<package name='readline'/>
<package name='man'/>
<package name='audit'/>
<package name='eject'/>
<package name='mt-st'/>
<package name='usbutils'/>
<package name='e2fsprogs'/>
<package name='module-init-tools'/>
<package name='filesystem'/>
<package name='iproute2'/>
<package name='mpfr'/>
<package name='glibc'/>
<package name='bzip2'/>
</mandatory>
</group>
</groups>
<services>
<service start='yes' package='proftpd' script='proftpd' name='ftp' number='S280'/>
<service start='yes' package='openssh' script='sshd' name='ssh' number='S205'/>
<service start='yes' package='netkit-rsh' script='inetd' name='rlogin' number='S310'/>
<service start='yes' package='netkit-telnetd' script='inetd' name='telnet' number='S310'/>
<service start='yes' package='fuse' script='fuse' name='fuse' number='S315'/>
</services>
</install>